diff --git a/.gitignore b/.gitignore
index d3d724b79..46d67dd30 100644
--- a/.gitignore
+++ b/.gitignore
@@ -39,7 +39,7 @@ node_modules/
*.tmp
*.cmd
~*
-upload.py
+
/test/fis-tmp/target/cache
/doc/output
@@ -47,3 +47,4 @@ upload.py
/test/downloads/
/test/xpy/
/test/xpy2/
+.svn
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/build.sh b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/build.sh
new file mode 100755
index 000000000..8c4abf160
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/build.sh
@@ -0,0 +1,48 @@
+#!/bin/bash
+
+MOD_NAME="common"
+TAR="$MOD_NAME.tar.gz"
+
+# add path
+export PATH=/home/fis/npm/bin:$PATH
+#show fisp version
+fisp --version --no-color
+
+#通过fisp release 命令进行模块编译 开启optimize、md5、打包功能,同时需开启-u 独立缓存编译方式,产出到同目录下output中
+fisp release -cuompd output
+
+php ./json2php.php $MOD_NAME
+
+#进入output目录
+cd output
+#删除产出的test目录
+rm -rf test
+
+#整理output目录
+mkdir webroot
+mkdir views
+rm json2php.php
+mv static/ webroot/static
+mv static304/ webroot/static304
+mv template/ views/templates
+mv config/ views/templates/config
+#mv server.conf webroot/
+rm -f plugin/compiler.fis_require.php
+mkdir libs
+mkdir libs/Third
+mkdir libs/Third/Smarty
+mv plugin/ libs/Third/Smarty/plugins
+
+
+#将output目录进行打包
+tar zcf $TAR ./*
+mv $TAR ../
+
+cd ..
+rm -rf output
+
+mkdir output
+
+mv $TAR output/
+
+echo "build end"
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/common-autopack.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/common-autopack.json
new file mode 100755
index 000000000..10dc56053
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/common-autopack.json
@@ -0,0 +1,9 @@
+{
+ "pack" : {
+ "pkg/autopack_common_base.js": [
+ "/static/lazyload.js",
+ "/static/mod.js",
+ "/static/BigPipe.js"
+ ]
+ }
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/config/xss.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/config/xss.php
new file mode 100755
index 000000000..d1923badd
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/config/xss.php
@@ -0,0 +1,40 @@
+ '<%', //smarty左界符
+ 'TPL_RIGHT_DELIMITER' => '%>', //smarty右界符
+ 'TPL_SUFFIX' => 'tpl', //模板文件扩展名
+ 'func_name_callback' => '/callback/', //回调函数名,$callback(json),正则匹配,防止多个变量名,不需要则可以关闭check_callback
+ 'name_callback' => 'callback', //smarty.get.callback(json),不需要则可以关闭check_callback
+
+ //添加各场景开关检查功能,on 或者 off,默认为on,即全部要检查
+ 'check_callback' => 'on',
+ 'check_html' => 'off',
+ 'check_js' => 'on',
+ 'check_data' => 'on',
+ 'check_path' => 'on',
+ 'check_event' => 'on',
+
+ //各场景对应的安全转义函数,正则配置
+ 'escape_js' => '/sp_escape_js|escape:("|\'?)javascript\1/', //js转义函数配置
+ 'escape_html' => '/sp_escape_html|escape:("|\'?)html\1|(escape$)|(escape\|)/', //html转义函数配置
+ 'escape_event' => '/sp_escape_event|escape:("|\'?)javascript\1\|escape:("|\'?)html\2/', //标签事件属性值场景转义函数配置
+ 'escape_data' => '/sp_escape_data/', //json数据转义配置
+ 'escape_path' => '/sp_path|escape:("|\'?)url\1|escape:("|\'?)html\2|(escape$)|(escape\|)/', //url属性里转义
+ 'escape_callback' => '/sp_escape_callback/', //callback最小化转义
+
+ //如果某个特定变量不需要转义,可以加上|escape:none ,正则配置
+ 'noescape' => '/escape:[\'|\"]?none[\'|\"]?/',
+
+ //全局白名单,变量名与正则匹配则可信,不对其进行检查,明妃,坤哥,如果你们从cms中读取的变量取了新的名称请把名称填写到这里
+ 'XSS_SAFE_VAR' => array( //安全变量列表,必须是正则,不包含$
+ '/(?:body|html|head|value|hotSiteCon|listValue|entry|link|linksValue|defaultClass|data|sBoxTag|sysInfo|uaq|mod|root\.html\.content|country|host|smarty|engine|tag|params|root\.conf)/ies',
+ '/(?:_pv|_num|_id)/ies'
+ ),
+ //精确白名单,某特定文件名,或其内某个变量是完全可信的
+ 'file_safe_var' =>array( //filename为相对路径(非中文),$varname为变量,表明filename下的所有$varname都是白名单。
+ 'filename::$varname'
+ )
+
+);
+?>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-conf2.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-conf2.js
new file mode 100755
index 000000000..663395c6d
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-conf2.js
@@ -0,0 +1,630 @@
+//rtl,ltr首页公共模块
+var common_commonCss = [
+ // include CSS BASE:节省请求
+ // /^\/widget\/ui\/css-framework-base\/(.*\.css)$/i,
+ // merge the ui
+
+ // icon, remove form: css-base
+ // "/widget/ui/css-icon/rtl/rtl.css",
+ '/widget/ui/prompt/prompt.css',
+ '/widget/ui/suggest/suggest.css',
+ '/widget/ui/jquery/widget/jquery.ui.autocomplete/jquery.ui.autocomplete.css',
+ '/widget/ui/jquery/widget/jquery.ui.datepicker/jquery.ui.datepicker.css',
+ // widget
+ '/widget/header/add-fav-bar/add-fav-bar.css',
+ '/widget/header/logo/logo.css',
+ // '/widget/keyboard/keyboard.css',
+ '/widget/ui/lottery/lottery.css',
+ '/widget/ui/dropdownlist/dropdownlist.css',
+ '/widget/ui/scrollable/scrollable.css',
+ '/widget/ui/popup/popup.css',
+ '/widget/ui/css-ui/css-ui.css',
+ '/widget/ui/calendar/calendar.css',
+ '/widget/ui/sns-share/sns-share.css',
+ '/widget/ui/dialog/dialog.css'
+];
+
+
+
+// fis.config.merge({
+// namespace : 'common',
+// //roadmap: {
+// // domain: {
+// // "image": "<%$root.head.cdn%>"
+// // }
+// //},
+// pack: {
+// //合并打包配置
+// // JS文件打包配置
+// // BASE
+// 'pkg/js_framework.js': [
+// /^\/widget\/ui\/jquery\/([^\/]*\.js)$/i,
+// '/widget/ui/jquery/1.8.3/jquery.min.js',
+// '/static/lazyload.js',
+// '/static/BigPipe.js',
+// '/widget/ui/jquery/widget/jquery.lazyload/jquery.lazyload.js',
+// '/widget/ui/message/src/message.js',
+// /^\/widget\/ui\/helper\/(.*\.js)$/i,
+// /^\/widget\/ui\/localstorage\/(.*\.js)$/i,
+// /^\/widget\/ui\/localcookie\/(.*\.js)$/i,
+// /^\/widget\/ui\/ut\/(.*\.js)$/i,
+// /^\/widget\/ui\/eventcenter\/(.*\.js)$/i,
+// /^\/widget\/ui\/monitor\/(.*\.js)$/i,
+// 'widget/ui/cookieless/cookieless.js'
+// ],
+// // common modules' js
+// 'pkg/module_common.js': [
+// '/widget/ui/cycletabs/cycletabs.js',
+// // UI
+// '/widget/ui/date/date.js',
+// '/widget/ui/date-new/date.js',
+// '/widget/ui/md5/md5.js',
+// '/widget/ui/time/time.js',
+// '/widget/ui/side-render/side-render.js',
+// '/widget/ui/multicookie/multicookie.js',
+// '/widget/ui/suggest/suggest.js',
+// '/widget/ui/popup/popup.js',
+// '/widget/ui/jquery/widget/jquery.ui.button/jquery.ui.button.js',
+// '/widget/ui/jquery/widget/jquery.lazyload/jquery.lazyload.js',
+// '/widget/ui/jquery/widget/jquery.ui.tip/jquery.ui.tip.js',
+// '/widget/ui/jquery/widget/jquery.ui.autocomplete/jquery.ui.autocomplete.js',
+// '/widget/ui/jquery/widget/jquery.ui.autocomplete.html/jquery.ui.autocomplete.html.js',
+// '/widget/ui/jquery/widget/jquery.ui.position/jquery.ui.position.js',
+// '/widget/ui/jquery/widget/jquery.sethome/jquery.sethome.js',
+// '/widget/ui/jquery/widget/jquery.addfav/jquery.addfav.js',
+// '/widget/ui/jquery/widget/jquery.placeholder/jquery.placeholder.js',
+
+// '/widget/ui/bubble/src/bubble.js',
+// '/widget/ui/scrollable/scrollable.js',
+
+// // widget
+// // search box
+// '/widget/search-box/search-box-async.js',
+// '/widget/search-box-4ps/search-box-4ps-async.js',
+// // keybord AR/SA ONLY
+// '/widget/keyboard/keyboard-async.js'
+// // lottery
+// // '/widget/ui/lottery/lottery.js',
+// // dropdownlist
+// //'/widget/ui/dropdownlist/dropdownlist.js',
+// // notice popup
+// //'/widget/ui/notice-pop/notice-pop.js'
+// ],
+// // head & foot
+// 'pkg/common_heot.js': [
+// '/widget/header/logo/logo-async.js',
+// '/widget/footer/footer.js',
+// '/widget/header/clock/clock-async.js',
+// '/widget/header/account/account-async.js',
+// '/widget/header/site-switch/site-switch-async.js',
+// '/widget/ui/weather/weather.js',
+// '/widget/header/userbar-btn/userbar-btn-async.js',
+// '/widget/header/tear-page/tear-page-async.js',
+// '/widget/header/add-fav-bar/add-fav-bar-async.js'
+// ],
+// // calendar
+// 'pkg/calen_async.js': [
+// '/widget/header/clock/calendar-async.js',
+// '/widget/ui/calendar/calendar.js',
+// '/widget/ui/date-new/plugin/buddhist.js',
+// '/widget/ui/date-new/plugin/isl.js',
+// '/widget/ui/date-new/plugin/lunar.js',
+// '/widget/ui/date-new/plugin/rokuyou.js'
+// ],
+// // heederTest's async js
+// 'pkg/headerTest_async.js': [
+// '/widget/header/header-com/header-com-async.js',
+// '/widget/header/account-test/account-test-async.js',
+// '/widget/header/userbar-btn-test/userbar-btn-test-async.js',
+// '/widget/header/skinbox/skinbox-async.js',
+// '/widget/header/message/message-async.js',
+// '/widget/header/userbar-btn-header/userbar-btn-header-async.js',
+// '/widget/header/skin-trans/skin-trans-async.js',
+// '/widget/header/skinbox/skin-mod.js'
+// ],
+// // common modules headerTest css
+// 'pkg/module_headerTest_ltr.css': [
+// '/widget/header/header-com/ltr-s/ltr.more.css',
+// '/widget/header/userbar-btn-test/ltr-s/ltr.more.css',
+// '/widget/header/account-test/ltr-s/ltr.more.css',
+// '/widget/header/skinbox/ltr/ltr.more.css',
+// '/widget/header/message/ltr/ltr.more.css',
+// '/widget/header/userbar-btn-header/ltr-s/ltr.more.css'
+// ],
+// // common modules headerTest css
+// 'pkg/module_headerTest_rtl.css': [
+// '/widget/header/header-com/rtl-s/rtl.more.css',
+// '/widget/header/userbar-btn-test/rtl-s/rtl.more.css',
+// '/widget/header/account-test/rtl-s/rtl.more.css',
+// '/widget/header/skinbox/rtl/rtl.more.css',
+// '/widget/header/message/rtl/rtl.more.css',
+// '/widget/header/userbar-btn-header/rtl-s/rtl.more.css'
+// ],
+// 'pkg/header_flat_ltr.css': [
+// '/widget/header-flat/ltr/ltr.more.css',
+// '/widget/header-flat/account/ltr/ltr.more.css',
+// '/widget/header-flat/clock/ltr/ltr.more.css',
+// '/widget/header-flat/logo/ltr/ltr.more.css',
+// '/widget/header-flat/message/ltr/ltr.more.css',
+// '/widget/header-flat/site-switch/ltr/ltr.more.css',
+// '/widget/header-flat/userbar-btn-header/ltr/ltr.more.css',
+// '/widget/header-flat/weather/ltr/ltr.more.css',
+// '/widget/header-flat/banner-site/ltr/ltr.more.css',
+// '/widget/userbar-btn-searchside/ltr/ltr.more.css',
+// '/widget/header-flat/fontsize-switch/ltr/ltr.more.css',
+// '/widget/header-flat/add-fav-bar/ltr/ltr.more.css'
+// ],
+// 'pkg/header_flat_rtl.css': [
+// '/widget/header-flat/rtl/rtl.more.css',
+// '/widget/header-flat/account/rtl/rtl.more.css',
+// '/widget/header-flat/clock/rtl/rtl.more.css',
+// '/widget/header-flat/logo/rtl/rtl.more.css',
+// '/widget/header-flat/message/rtl/rtl.more.css',
+// '/widget/header-flat/site-switch/rtl/rtl.more.css',
+// '/widget/header-flat/userbar-btn-header/rtl/rtl.more.css',
+// '/widget/header-flat/weather/rtl/rtl.more.css',
+// '/widget/header-flat/banner-site/rtl/rtl.more.css',
+// '/widget/userbar-btn-searchside/rtl/rtl.more.css',
+// '/widget/header-flat/fontsize-switch/rtl/rtl.more.css',
+// '/widget/header-flat/add-fav-bar/rtl/rtl.more.css'
+// ],
+// 'pkg/module_common.css': common_commonCss,
+// // ltr's HEADER & FOOTER & common
+// 'pkg/module_common_ltr.css': [
+// // include CSS BASE:节省请求
+
+// // merge icons
+// "/widget/ui/css-icon/ltr/ltr.css",
+// '/widget/ui/cycletabs/ltr/ltr.css', // cycletabs
+// // merge the ui
+// // '/widget/ui/jquery/widget/jquery.ui.button/ltr/ltr.css',
+// '/widget/ui/jquery/widget/jquery.ui.tip/ltr/ltr.css',
+// // widget
+
+// // /^\/widget\/header\/ltr\/([^.]+\..+\.css)$/i,
+// // /^\/widget\/footer\/ltr\/(.*\.css)$/i,
+// // /^\/widget\/header\/[^\/]*\/ltr\/([^.]+\..+\.css)$/i,
+
+// // searchbox
+// // '/widget/search-box/ltr/ltr.css',
+// // notice popup
+// '/widget/ui/notice-pop/ltr/ltr.css',
+// //login popup
+// '/widget/login-popup/ltr/ltr.css'
+// ],
+// 'pkg/module_common_rtl.css': [
+// // include CSS BASE:节省请求
+
+// // merge icons
+// "/widget/ui/css-icon/rtl/rtl.css",
+// '/widget/ui/cycletabs/rtl/rtl.css',// cycletabs
+// // merge the ui
+// // '/widget/ui/jquery/widget/jquery.ui.button/rtl/rtl.css',
+// '/widget/ui/jquery/widget/jquery.ui.tip/rtl/rtl.css',
+// // widget
+// // /^\/widget\/footer\/rtl\/(.*\.css)$/i,
+// // searchbox
+// // '/widget/search-box/rtl/rtl.css',
+// "/widget/rtl/rtl/rtl.css",
+// // notice popup
+// '/widget/ui/notice-pop/rtl/rtl.css',
+// //login popup
+// '/widget/login-popup/rtl/rtl.css',
+// //keyboard
+// '/widget/keyboard/rtl/rtl.css'
+// ],
+// 'pkg/module_sidebar_ltr.css': [
+// '/widget/css-base/dist/base.ltr.css',
+// '/widget/css-base/dist/base.ltr.ie.css',
+// '/widget/css-flatbase/ltr/ltr.css'
+// ],
+// 'pkg/module_sidebar_rtl.css': [
+// '/widget/css-base/dist/base.rtl.css',
+// '/widget/css-base/dist/base.rtl.ie.css',
+// '/widget/css-flatbase/rtl/rtl.css'
+// ]
+
+// },
+// settings: {
+// smarty : {
+// 'left_delimiter' : '<%',
+// 'right_delimiter' : '%>'
+// },
+// spriter: {
+// csssprites: {
+// //图之间的边距
+// margin: 5
+// }
+// },
+// optimizer : {
+// 'png-compressor' : {
+// type : 'pngquant' //default is pngcrush
+// }
+// },
+// preprocessor: {
+// 'widget-inline': {
+// include: /.+/i,
+// exclude: /(rightcolumn|bottombar|footer|\$)/i
+// }
+// }
+// }
+// });
+
+// fis.config.get('roadmap.path').unshift({
+// reg : '/widget/ui/keyboard/keyboard.js',
+// useCompile : false,
+// release : '/static/common/widget/ui/keyboard/keyboard.js'
+// });
+// fis.config.get('roadmap.path').unshift({
+// reg: "/static/sidebar-base.js",
+// useHash: false,
+// useMap: false,
+// release: "/static304/sidebar-base.js"
+// });
+// fis.config.get('roadmap.path').unshift({
+// reg: "/static/ar_hao123_sug.js",
+// useHash: false,
+// useMap: false,
+// release: "/static304/ar_hao123_sug.js"
+// });
+// fis.config.get('roadmap.path').unshift({
+// reg: "/static/br_hao123_sug.js",
+// useHash: false,
+// useMap: false,
+// release: "/static304/br_hao123_sug.js"
+// });
+// fis.config.get('roadmap.path').unshift({
+// reg: "/static/th_hao123_sug.js",
+// useHash: false,
+// useMap: false,
+// release: "/static304/th_hao123_sug.js"
+// });
+
+// fis.config.set('modules.optimizer.tpl','html-compress');
+
+// fis.config.merge({
+// modules: {
+// postpackager: 'ext-map',
+// packager : 'autopack'
+// },
+// //插件参数设置
+// settings: {
+// packager : {
+// autopack : {
+// //fid为接入自动合并后分配的产品线FID字符串
+// 'fid' : 'globalhao123'
+// }
+// }
+// }
+// });
+
+
+
+
+//wangrui
+fis.require('smarty')(fis);
+
+fis.set('namespace', "common");
+
+fis
+ .media('dev')
+ .match('**' , {
+ useHash: false
+ });
+
+fis.set('smarty', {
+ 'left_delimiter': '<%',
+ 'right_delimiter': '%>'
+});
+
+fis.set('spriter', {
+ csssprites: {
+ //图之间的边距
+ margin: 5
+ }
+});
+
+fis.set('optimizer', {
+ 'png-compressor' : {
+ type : 'pngquant' //default is pngcrush
+ }
+});
+
+fis.set('preprocessor', {
+ 'widget-inline': {
+ include: /.+/i,
+ exclude: /(rightcolumn|bottombar|footer|\$)/i
+ }
+});
+
+fis.set('pack', {
+ //合并打包配置
+ // JS文件打包配置
+ // BASE
+ 'pkg/js_framework.js': [
+ /^\/widget\/ui\/jquery\/([^\/]*\.js)$/i,
+ '/widget/ui/jquery/1.8.3/jquery.min.js',
+ '/static/lazyload.js',
+ '/static/BigPipe.js',
+ '/widget/ui/jquery/widget/jquery.lazyload/jquery.lazyload.js',
+ '/widget/ui/message/src/message.js',
+ /^\/widget\/ui\/helper\/(.*\.js)$/i,
+ /^\/widget\/ui\/localstorage\/(.*\.js)$/i,
+ /^\/widget\/ui\/localcookie\/(.*\.js)$/i,
+ /^\/widget\/ui\/ut\/(.*\.js)$/i,
+ /^\/widget\/ui\/eventcenter\/(.*\.js)$/i,
+ /^\/widget\/ui\/monitor\/(.*\.js)$/i,
+ 'widget/ui/cookieless/cookieless.js'
+ ],
+ // common modules' js
+ 'pkg/module_common.js': [
+ '/widget/ui/cycletabs/cycletabs.js',
+ // UI
+ '/widget/ui/date/date.js',
+ '/widget/ui/date-new/date.js',
+ '/widget/ui/md5/md5.js',
+ '/widget/ui/time/time.js',
+ '/widget/ui/side-render/side-render.js',
+ '/widget/ui/multicookie/multicookie.js',
+ '/widget/ui/suggest/suggest.js',
+ '/widget/ui/popup/popup.js',
+ '/widget/ui/jquery/widget/jquery.ui.button/jquery.ui.button.js',
+ '/widget/ui/jquery/widget/jquery.lazyload/jquery.lazyload.js',
+ '/widget/ui/jquery/widget/jquery.ui.tip/jquery.ui.tip.js',
+ '/widget/ui/jquery/widget/jquery.ui.autocomplete/jquery.ui.autocomplete.js',
+ '/widget/ui/jquery/widget/jquery.ui.autocomplete.html/jquery.ui.autocomplete.html.js',
+ '/widget/ui/jquery/widget/jquery.ui.position/jquery.ui.position.js',
+ '/widget/ui/jquery/widget/jquery.sethome/jquery.sethome.js',
+ '/widget/ui/jquery/widget/jquery.addfav/jquery.addfav.js',
+ '/widget/ui/jquery/widget/jquery.placeholder/jquery.placeholder.js',
+
+ '/widget/ui/bubble/src/bubble.js',
+ '/widget/ui/scrollable/scrollable.js',
+
+ // widget
+ // search box
+ '/widget/search-box/search-box-async.js',
+ '/widget/search-box-4ps/search-box-4ps-async.js',
+ // keybord AR/SA ONLY
+ '/widget/keyboard/keyboard-async.js'
+ // lottery
+ // '/widget/ui/lottery/lottery.js',
+ // dropdownlist
+ //'/widget/ui/dropdownlist/dropdownlist.js',
+ // notice popup
+ //'/widget/ui/notice-pop/notice-pop.js'
+ ],
+ // head & foot
+ 'pkg/common_heot.js': [
+ '/widget/header/logo/logo-async.js',
+ '/widget/footer/footer.js',
+ '/widget/header/clock/clock-async.js',
+ '/widget/header/account/account-async.js',
+ '/widget/header/site-switch/site-switch-async.js',
+ '/widget/ui/weather/weather.js',
+ '/widget/header/userbar-btn/userbar-btn-async.js',
+ '/widget/header/tear-page/tear-page-async.js',
+ '/widget/header/add-fav-bar/add-fav-bar-async.js'
+ ],
+ // calendar
+ 'pkg/calen_async.js': [
+ '/widget/header/clock/calendar-async.js',
+ '/widget/ui/calendar/calendar.js',
+ '/widget/ui/date-new/plugin/buddhist.js',
+ '/widget/ui/date-new/plugin/isl.js',
+ '/widget/ui/date-new/plugin/lunar.js',
+ '/widget/ui/date-new/plugin/rokuyou.js'
+ ],
+ // heederTest's async js
+ 'pkg/headerTest_async.js': [
+ '/widget/header/header-com/header-com-async.js',
+ '/widget/header/account-test/account-test-async.js',
+ '/widget/header/userbar-btn-test/userbar-btn-test-async.js',
+ '/widget/header/skinbox/skinbox-async.js',
+ '/widget/header/message/message-async.js',
+ '/widget/header/userbar-btn-header/userbar-btn-header-async.js',
+ '/widget/header/skin-trans/skin-trans-async.js',
+ '/widget/header/skinbox/skin-mod.js'
+ ],
+ // common modules headerTest css wangrui
+ // 'pkg/module_headerTest_ltr.css': [
+ // '/widget/header/header-com/ltr-s/ltr.more.css',
+ // '/widget/header/userbar-btn-test/ltr-s/ltr.more.css',
+ // '/widget/header/account-test/ltr-s/ltr.more.css',
+ // '/widget/header/skinbox/ltr/ltr.more.css',
+ // '/widget/header/message/ltr/ltr.more.css',
+ // '/widget/header/userbar-btn-header/ltr-s/ltr.more.css'
+ // ],
+ // common modules headerTest css
+ 'pkg/module_headerTest_rtl.css': [
+ '/widget/header/header-com/rtl-s/rtl.more.css',
+ '/widget/header/userbar-btn-test/rtl-s/rtl.more.css',
+ '/widget/header/account-test/rtl-s/rtl.more.css',
+ '/widget/header/skinbox/rtl/rtl.more.css',
+ '/widget/header/message/rtl/rtl.more.css',
+ '/widget/header/userbar-btn-header/rtl-s/rtl.more.css'
+ ],
+ 'pkg/header_flat_ltr.css': [
+ '/widget/header-flat/ltr/ltr.more.css',
+ '/widget/header-flat/account/ltr/ltr.more.css',
+ '/widget/header-flat/clock/ltr/ltr.more.css',
+ '/widget/header-flat/logo/ltr/ltr.more.css',
+ '/widget/header-flat/message/ltr/ltr.more.css',
+ '/widget/header-flat/site-switch/ltr/ltr.more.css',
+ '/widget/header-flat/userbar-btn-header/ltr/ltr.more.css',
+ '/widget/header-flat/weather/ltr/ltr.more.css',
+ '/widget/header-flat/banner-site/ltr/ltr.more.css',
+ '/widget/userbar-btn-searchside/ltr/ltr.more.css',
+ '/widget/header-flat/fontsize-switch/ltr/ltr.more.css',
+ '/widget/header-flat/add-fav-bar/ltr/ltr.more.css'
+ ],
+ 'pkg/header_flat_rtl.css': [
+ '/widget/header-flat/rtl/rtl.more.css',
+ '/widget/header-flat/account/rtl/rtl.more.css',
+ '/widget/header-flat/clock/rtl/rtl.more.css',
+ '/widget/header-flat/logo/rtl/rtl.more.css',
+ '/widget/header-flat/message/rtl/rtl.more.css',
+ '/widget/header-flat/site-switch/rtl/rtl.more.css',
+ '/widget/header-flat/userbar-btn-header/rtl/rtl.more.css',
+ '/widget/header-flat/weather/rtl/rtl.more.css',
+ '/widget/header-flat/banner-site/rtl/rtl.more.css',
+ '/widget/userbar-btn-searchside/rtl/rtl.more.css',
+ '/widget/header-flat/fontsize-switch/rtl/rtl.more.css',
+ '/widget/header-flat/add-fav-bar/rtl/rtl.more.css'
+ ],
+ 'pkg/module_common.css': common_commonCss,
+ // ltr's HEADER & FOOTER & common
+ 'pkg/module_common_ltr.css': [
+ // include CSS BASE:节省请求
+
+ // merge icons
+ "/widget/ui/css-icon/ltr/ltr.css",
+ '/widget/ui/cycletabs/ltr/ltr.css', // cycletabs
+ // merge the ui
+ // '/widget/ui/jquery/widget/jquery.ui.button/ltr/ltr.css',
+ '/widget/ui/jquery/widget/jquery.ui.tip/ltr/ltr.css',
+ // widget
+
+ // /^\/widget\/header\/ltr\/([^.]+\..+\.css)$/i,
+ // /^\/widget\/footer\/ltr\/(.*\.css)$/i,
+ // /^\/widget\/header\/[^\/]*\/ltr\/([^.]+\..+\.css)$/i,
+
+ // searchbox
+ // '/widget/search-box/ltr/ltr.css',
+ // notice popup
+ '/widget/ui/notice-pop/ltr/ltr.css',
+ //login popup
+ '/widget/login-popup/ltr/ltr.css'
+ ],
+ 'pkg/module_common_rtl.css': [
+ // include CSS BASE:节省请求
+
+ // merge icons
+ "/widget/ui/css-icon/rtl/rtl.css",
+ '/widget/ui/cycletabs/rtl/rtl.css',// cycletabs
+ // merge the ui
+ // '/widget/ui/jquery/widget/jquery.ui.button/rtl/rtl.css',
+ '/widget/ui/jquery/widget/jquery.ui.tip/rtl/rtl.css',
+ // widget
+ // /^\/widget\/footer\/rtl\/(.*\.css)$/i,
+ // searchbox
+ // '/widget/search-box/rtl/rtl.css',
+ "/widget/rtl/rtl/rtl.css",
+ // notice popup
+ '/widget/ui/notice-pop/rtl/rtl.css',
+ //login popup
+ '/widget/login-popup/rtl/rtl.css',
+ //keyboard
+ '/widget/keyboard/rtl/rtl.css'
+ ],
+ 'pkg/module_sidebar_ltr.css': [
+ '/widget/css-base/dist/base.ltr.css',
+ '/widget/css-base/dist/base.ltr.ie.css',
+ '/widget/css-flatbase/ltr/ltr.css'
+ ],
+ 'pkg/module_sidebar_rtl.css': [
+ '/widget/css-base/dist/base.rtl.css',
+ '/widget/css-base/dist/base.rtl.ie.css',
+ '/widget/css-flatbase/rtl/rtl.css'
+ ]
+});
+
+fis.match('::package', {
+ packager: fis.plugin('map', {
+ 'pkg/module_headerTest_ltr.css': [
+ '/widget/header/header-com/ltr-s/ltr.more.css',
+ '/widget/header/userbar-btn-test/ltr-s/ltr.more.css',
+ '/widget/header/account-test/ltr-s/ltr.more.css',
+ '/widget/header/skinbox/ltr/ltr.more.css',
+ '/widget/header/message/ltr/ltr.more.css',
+ '/widget/header/userbar-btn-header/ltr-s/ltr.more.css'
+ ],
+ 'pkg/common_heot.js':[
+ '/widget/header/logo/logo-async.js',
+ '/widget/footer/footer.js',
+ '/widget/header/clock/clock-async.js',
+ '/widget/header/account/account-async.js',
+ '/widget/header/site-switch/site-switch-async.js',
+ '/widget/ui/weather/weather.js',
+ '/widget/header/userbar-btn/userbar-btn-async.js',
+ '/widget/header/tear-page/tear-page-async.js',
+ // '/widget/header/add-fav-bar/add-fav-bar-async.js'
+ ]
+ })
+});
+
+
+fis.match('/widget/header/skinbox/ltr/ltr.more.css', {
+ packTo: 'pkg/module_headerTest_ltr.css',
+ packOrder: -100
+});
+
+fis.match('/widget/header/add-fav-bar/add-fav-bar-async.js', {
+ isMod: true, // 设置 comp 下都是一些组件,组件建议都是匿名方式 define
+ release: '/pkg/$0',
+ lint: fis.plugin('jshint', {
+ ignored: [/jquery\.js$/i],
+
+ //using Chinese reporter
+ i18n: 'zh-CN',
+ es3: true,
+ //jshint options
+ camelcase: true,
+ curly: true,
+ eqeqeq: true,
+ forin: true,
+ immed: true,
+ latedef: true,
+ newcap: true,
+ noarg: true,
+ noempty: true
+ })
+});
+
+fis.set('modules', {
+ postpackager: 'ext-map',
+ packager : 'autopack'
+});
+
+
+fis.set('settings', {
+ //插件参数设置
+
+ packager : {
+ autopack : {
+ //fid为接入自动合并后分配的产品线FID字符串
+ 'fid' : 'globalhao123'
+ }
+ }
+});
+fis.config.set('modules.optimizer.tpl','html-compress');
+
+
+fis.match('/widget/ui/keyboard/keyboard.js' , {
+ useCompile : false,
+ release : '/static/common/widget/ui/keyboard/keyboard.js'
+});
+fis.match("/static/sidebar-base.js" , {
+ useHash: false,
+ useMap: false,
+ release: "/static304/sidebar-base.js"
+});
+fis.match("/static/ar_hao123_sug.js" , {
+ useHash: false,
+ useMap: false,
+ release: "/static304/ar_hao123_sug.js"
+});
+fis.match("/static/br_hao123_sug.js" , {
+ useHash: false,
+ useMap: false,
+ release: "/static304/br_hao123_sug.js"
+});
+
+fis.match("/static/th_hao123_sug.js" , {
+ useHash: false,
+ useMap: false,
+ release: "/static304/th_hao123_sug.js"
+});
+
+
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-ae.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-ae.json
new file mode 100755
index 000000000..e576afd15
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-ae.json
@@ -0,0 +1,104 @@
+{
+ "pkg/autopack_common_base.js": [
+ "/static/lazyload.js",
+ "/static/mod.js",
+ "/static/BigPipe.js"
+ ],
+ "pkg/common_sync_pri1_js_0_ae.js": [
+ "/static/open-api/lazyload.js",
+ "/widget/ui/cookieless/cookieless.js",
+ "/widget/ui/date-new/date.js",
+ "/widget/ui/date/date.js",
+ "/widget/ui/helper/helper.js",
+ "/widget/ui/jquery/1.8.3/jquery.min.js",
+ "/widget/ui/jquery/jquery.cookie.js",
+ "/widget/ui/jquery/jquery.json.js",
+ "/widget/ui/jquery/jquery.mousewheel.js",
+ "/widget/ui/jquery/jquery.ui.core.js",
+ "/widget/ui/jquery/jquery.ui.widget.js",
+ "/widget/ui/md5/md5.js",
+ "/widget/ui/message/src/message.js",
+ "/widget/ui/ut/ut.js",
+ "/widget/ui/jquery/jquery.js",
+ "/widget/ui/jquery/widget/jquery.addfav/jquery.addfav.js",
+ "/widget/ui/jquery/widget/jquery.lazyload/jquery.lazyload.js",
+ "/widget/ui/jquery/widget/jquery.sethome/jquery.sethome.js",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete.html/jquery.ui.autocomplete.html.js",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete/jquery.ui.autocomplete.js",
+ "/widget/ui/jquery/widget/jquery.ui.button/jquery.ui.button.js",
+ "/widget/ui/jquery/widget/jquery.ui.position/jquery.ui.position.js",
+ "/widget/ui/jquery/widget/jquery.ui.tip/jquery.ui.tip.js",
+ "/widget/ui/localstorage/localstorage.js",
+ "/widget/ui/suggest/suggest.js",
+ "/widget/ui/time/time.js",
+ "/widget/ui/weather/ae/ae.js",
+ "/widget/ui/bubble/src/bubble.js",
+ "/widget/ui/cycletabs/cycletabs.js"
+ ],
+ "pkg/common_sync_pri1_css_0_ae.css": [
+ "/widget/footer/ltr/ltr.css",
+ "/widget/keyboard/rtl/rtl.css",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete/jquery.ui.autocomplete.css",
+ "/widget/ui/prompt/prompt.css",
+ "/widget/ui/scrollable/scrollable.css",
+ "/widget/ui/suggest/suggest.css"
+ ],
+ "pkg/common_sync_pri1_css_1_ae.css": [
+ "/widget/header/account/ltr/ltr.more.css",
+ "/widget/header/add-fav-bar/ltr/ltr.more.css",
+ "/widget/header/clock/ltr/ltr.more.css",
+ "/widget/header/logo/ltr/ltr.more.css",
+ "/widget/header/ltr/ltr.more.css",
+ "/widget/header/site-switch/ltr/ltr.more.css",
+ "/widget/header/userbar-btn/ltr/ltr.more.css",
+ "/widget/header/weather/ltr/ltr.more.css",
+ "/widget/login-popup/ltr/ltr.css",
+ "/widget/search-box/ltr/ltr.more.css",
+ "/widget/ui/jquery/widget/jquery.ui.button/ltr/ltr.css"
+ ],
+ "pkg/common_sync_pri1_css_2_ae.css": [
+ "/widget/footer/rtl/rtl.css",
+ "/widget/header/account/rtl/rtl.more.css",
+ "/widget/header/add-fav-bar/rtl/rtl.more.css",
+ "/widget/header/clock/rtl/rtl.more.css",
+ "/widget/header/logo/rtl/rtl.more.css",
+ "/widget/header/rtl/rtl.more.css",
+ "/widget/header/site-switch/rtl/rtl.more.css",
+ "/widget/header/userbar-btn/rtl/rtl.more.css",
+ "/widget/header/weather/rtl/rtl.more.css",
+ "/widget/search-box/rtl/rtl.more.css",
+ "/widget/ui/jquery/widget/jquery.ui.button/rtl/rtl.css"
+ ],
+ "pkg/common_async_pri1_js_0_ae.js": [
+ "/widget/header/account/account-async.js",
+ "/widget/header/userbar-btn/userbar-btn-async.js",
+ "/widget/search-box/search-box-async.js",
+ "/widget/ui/date-new/plugin/buddhist.js",
+ "/widget/ui/date-new/plugin/rokuyou.js",
+ "/widget/ui/localcookie/localcookie.js",
+ "/widget/ui/popup/popup.js",
+ "/widget/ui/scrollable/scrollable.js",
+ "/widget/ui/weather/weather.js"
+ ],
+ "pkg/common_async_pri1_js_1_ae.js": [
+ "/widget/header/add-fav-bar/add-fav-bar-async.js",
+ "/widget/header/logo/logo-async.js",
+ "/widget/header/site-switch/site-switch-async.js",
+ "/widget/ui/calendar/calendar.js",
+ "/widget/ui/date-new/plugin/isl.js",
+ "/widget/ui/date-new/plugin/lunar.js",
+ "/widget/ui/dropdownlist/dropdownlist.js",
+ "/widget/ui/sethome-ff/sethome-ff-c.js",
+ "/widget/header/clock/calendar-async.js",
+ "/widget/header/clock/clock-async.js"
+ ],
+ "pkg/common_async_pri1_js_2_ae.js": [
+ "/widget/keyboard/keyboard-main.js",
+ "/widget/keyboard/keyboard-async.js"
+ ],
+ "pkg/common_async_pri1_css_0_ae.css": [
+ "/widget/ui/calendar/calendar.css",
+ "/widget/ui/dropdownlist/dropdownlist.css",
+ "/widget/ui/popup/popup.css"
+ ]
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-ar.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-ar.json
new file mode 100755
index 000000000..5fc4410d0
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-ar.json
@@ -0,0 +1,177 @@
+{
+ "pkg/autopack_common_base.js": [
+ "/static/lazyload.js",
+ "/static/mod.js",
+ "/static/BigPipe.js"
+ ],
+ "pkg/common_sync_pri1_js_0_ar.js": [
+ "/static/open-api/lazyload.js",
+ "/widget/ui/date-new/date.js",
+ "/widget/ui/jquery/widget/jquery.addfav/jquery.addfav.js",
+ "/widget/ui/jquery/widget/jquery.sethome/jquery.sethome.js",
+ "/widget/ui/jquery/widget/jquery.ui.button/jquery.ui.button.js",
+ "/widget/ui/localstorage/localstorage.js",
+ "/widget/ui/suggest/suggest.js",
+ "/widget/ui/weather/ar/ar_flat.js",
+ "/widget/ui/localcookie/localcookie.js"
+ ],
+ "pkg/common_sync_pri1_js_1_ar.js": [
+ "/widget/ui/weather/ar/ar.js"
+ ],
+ "pkg/common_sync_pri1_js_2_ar.js": [
+ "/widget/header/skinbox/skin-mod.js",
+ "/widget/header/skinbox/skinbox-async.js",
+ "/widget/ui/bubble/src/bubble.js",
+ "/widget/ui/jquery/widget/jquery.placeholder/jquery.placeholder.js",
+ "/widget/ui/jquery/widget/jquery.ui.tip/jquery.ui.tip.js"
+ ],
+ "pkg/common_sync_pri2_css_0_ar.css": [
+ "/widget/ui/dialog/dialog.css",
+ "/widget/ui/dropdownlist/dropdownlist.css",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete/jquery.ui.autocomplete.css",
+ "/widget/ui/scrollable/scrollable.css",
+ "/widget/ui/sns-share/sns-share.css"
+ ],
+ "pkg/common_sync_pri2_css_1_ar.css": [
+ "/widget/css-base/dist/base.rtl.css",
+ "/widget/css-base/dist/base.rtl.ie.css",
+ "/widget/css-flatbase/rtl/rtl.css",
+ "/widget/ui/css-ui/css-ui.css"
+ ],
+ "pkg/common_sync_pri1_css_0_ar.css": [
+ "/widget/ui/suggest/suggest.css"
+ ],
+ "pkg/common_sync_pri1_css_1_ar.css": [
+ "/widget/footer/rtl/rtl.css",
+ "/widget/header-flat/account/rtl/rtl.more.css",
+ "/widget/header-flat/add-fav-bar/rtl/rtl.more.css",
+ "/widget/header-flat/clock/rtl/rtl.more.css",
+ "/widget/header-flat/logo/rtl/rtl.more.css",
+ "/widget/header-flat/rtl/rtl.more.css",
+ "/widget/header-flat/site-switch/rtl/rtl.more.css",
+ "/widget/header-flat/userbar-btn-header/rtl/rtl.more.css",
+ "/widget/keyboard/rtl/rtl.css",
+ "/widget/search-box-new/rtl/rtl.more.css",
+ "/widget/ui/prompt/prompt.css",
+ "/widget/header-flat/weather/rtl/rtl.more.css"
+ ],
+ "pkg/common_sync_pri1_css_2_ar.css": [
+ "/widget/header/account/rtl/rtl.more.css",
+ "/widget/header/add-fav-bar/rtl/rtl.more.css",
+ "/widget/header/clock/rtl/rtl.more.css",
+ "/widget/header/logo/rtl/rtl.more.css",
+ "/widget/header/rtl/rtl.more.css",
+ "/widget/header/site-switch/rtl/rtl.more.css",
+ "/widget/header/userbar-btn/rtl/rtl.more.css",
+ "/widget/header/weather/rtl/rtl.more.css"
+ ],
+ "pkg/common_sync_pri1_css_3_ar.css": [
+ "/widget/header-flat/message/rtl/rtl.more.css",
+ "/widget/search-box-flat/flow/rtl/rtl.flow.css",
+ "/widget/search-box-flat/rtl/rtl.more.css",
+ "/widget/search-box/rtl/rtl.more.css"
+ ],
+ "pkg/common_sync_pri1_css_4_ar.css": [
+ "/widget/header/account-test/rtl-s/rtl.more.css",
+ "/widget/header/header-com/rtl-s/rtl.lv2.more.css",
+ "/widget/header/header-com/rtl-s/rtl.more.css",
+ "/widget/header/message/rtl/rtl.more.css",
+ "/widget/header/skin-trans/rtl/rtl.more.css",
+ "/widget/header/skinbox/rtl/rtl.more.css",
+ "/widget/header/userbar-btn-header/rtl-s/rtl.more.css",
+ "/widget/header/userbar-btn-test/rtl-s/rtl.more.css",
+ "/widget/login-popup/rtl/rtl.css",
+ "/widget/ui/jquery/widget/jquery.ui.button/rtl/rtl.css"
+ ],
+ "pkg/common_sync_pri1_css_5_ar.css": [
+ "/widget/ui/text-overflow/rtl/rtl.css"
+ ],
+ "pkg/common_async_pri1_js_0_ar.js": [
+ "/widget/header-flat/header-flat-async.js",
+ "/widget/search-box-new/search-box-new-async.js"
+ ],
+ "pkg/common_async_pri1_js_1_ar.js": [
+ "/widget/header-flat/account/account-async.js",
+ "/widget/header-flat/logo/logo-async.js",
+ "/widget/header-flat/site-switch/site-switch-async.js",
+ "/widget/header-flat/userbar-btn-header/userbar-btn-header-async.js",
+ "/widget/ui/calendar/calendar.js",
+ "/widget/ui/date-new/plugin/buddhist.js",
+ "/widget/ui/date-new/plugin/isl.js",
+ "/widget/ui/date-new/plugin/lunar.js",
+ "/widget/ui/date-new/plugin/rokuyou.js",
+ "/widget/ui/weather/weather_flat.js",
+ "/widget/header-flat/clock/calendar-async.js",
+ "/widget/header-flat/clock/clock-async.js"
+ ],
+ "pkg/common_async_pri1_js_2_ar.js": [
+ "/widget/header-flat/add-fav-bar/add-fav-bar-async.js",
+ "/widget/keyboard/keyboard-main.js",
+ "/widget/keyboard/keyboard-async.js"
+ ],
+ "pkg/common_async_pri1_js_3_ar.js": [
+ "/widget/header/account/account-async.js",
+ "/widget/header/add-fav-bar/add-fav-bar-async.js",
+ "/widget/header/clock/calendar-async.js",
+ "/widget/header/clock/clock-async.js",
+ "/widget/header/header-com/header-com-async.js",
+ "/widget/header/logo/logo-async.js",
+ "/widget/header/site-switch/site-switch-async.js",
+ "/widget/ui/popup/popup.js",
+ "/widget/ui/sethome-ff/sethome-ff-c.js",
+ "/widget/ui/weather/weather.js",
+ "/widget/header/userbar-btn/userbar-btn-async.js"
+ ],
+ "pkg/common_async_pri1_js_4_ar.js": [
+ "/widget/header/account-test/account-test-async.js",
+ "/widget/header/message/message-async.js",
+ "/widget/header/skin-trans/skin-trans-async.js",
+ "/widget/header/userbar-btn-header/userbar-btn-header-async.js",
+ "/widget/header/userbar-btn-test/userbar-btn-test-async.js",
+ "/widget/search-box/search-box-async.js",
+ "/widget/ui/notice-pop/notice-pop.js"
+ ],
+ "pkg/common_async_pri1_js_5_ar.js": [
+ "/widget/header-flat/message/message-async.js"
+ ],
+ "pkg/common_async_pri1_js_6_ar.js": [
+ "/widget/search-box-4ps/search-box-4ps-async.js"
+ ],
+ "pkg/common_sync_pri2_js_0_ar.js": [
+ "/widget/ui/cookieless/cookieless.js",
+ "/widget/ui/date/date.js",
+ "/widget/ui/helper/helper.js",
+ "/widget/ui/jquery/1.8.3/jquery.min.js",
+ "/widget/ui/jquery/jquery.cookie.js",
+ "/widget/ui/jquery/jquery.json.js",
+ "/widget/ui/jquery/jquery.mousewheel.js",
+ "/widget/ui/jquery/jquery.ui.core.js",
+ "/widget/ui/jquery/jquery.ui.widget.js",
+ "/widget/ui/ut/ut.js",
+ "/widget/ui/jquery/jquery.js",
+ "/widget/ui/time/time.js"
+ ],
+ "pkg/common_sync_pri2_js_1_ar.js": [
+ "/widget/ui/cycletabs/cycletabs.js",
+ "/widget/ui/drap/drap.js",
+ "/widget/ui/jquery/widget/jquery.lazyload/jquery.lazyload.js",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete.html/jquery.ui.autocomplete.html.js",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete/jquery.ui.autocomplete.js",
+ "/widget/ui/jquery/widget/jquery.ui.position/jquery.ui.position.js",
+ "/widget/ui/md5/md5.js",
+ "/widget/ui/message/src/message.js",
+ "/widget/ui/slide/slide.js",
+ "/widget/ui/dialog/dialog.js"
+ ],
+ "pkg/common_async_pri2_js_0_ar.js": [
+ "/widget/ui/monitor/monitor.js",
+ "/widget/ui/scrollable/scrollable.js",
+ "/widget/ui/slide/plugin/animate.js",
+ "/widget/ui/slide/plugin/control.js",
+ "/widget/ui/slide/plugin/pagination.js",
+ "/widget/ui/slide/plugin/play.js",
+ "/widget/ui/slide/plugin/stop-at-edge.js",
+ "/widget/ui/sns-share/sns-share.js",
+ "/widget/ui/dropdownlist/dropdownlist.js"
+ ]
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-br.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-br.json
new file mode 100755
index 000000000..d562ac0fb
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-br.json
@@ -0,0 +1,199 @@
+{
+ "pkg/autopack_common_base.js": [
+ "/static/lazyload.js",
+ "/static/mod.js",
+ "/static/BigPipe.js"
+ ],
+ "pkg/common_sync_pri1_js_0_br.js": [
+ "/static/open-api/lazyload.js",
+ "/widget/ui/suggest/suggest.js"
+ ],
+ "pkg/common_sync_pri1_js_1_br.js": [
+ "/widget/ui/date-new/date.js",
+ "/widget/ui/jquery/widget/jquery.addfav/jquery.addfav.js",
+ "/widget/ui/jquery/widget/jquery.sethome/jquery.sethome.js",
+ "/widget/ui/jquery/widget/jquery.ui.button/jquery.ui.button.js",
+ "/widget/ui/weather/br/br_flat.js"
+ ],
+ "pkg/common_sync_pri1_js_2_br.js": [
+ "/widget/ui/weather/br/br.js"
+ ],
+ "pkg/common_sync_pri1_js_3_br.js": [
+ "/widget/ui/bubble/src/bubble.js",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete.html/jquery.ui.autocomplete.html.js",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete/jquery.ui.autocomplete.js",
+ "/widget/ui/jquery/widget/jquery.ui.position/jquery.ui.position.js",
+ "/widget/ui/jquery/widget/jquery.ui.tip/jquery.ui.tip.js"
+ ],
+ "pkg/common_sync_pri1_js_4_br.js": [
+ "/widget/header/skinbox/skin-mod.js",
+ "/widget/header/skinbox/skinbox-async.js",
+ "/widget/ui/jquery/widget/jquery.ui.datepicker/jquery.ui.datepicker.js"
+ ],
+ "pkg/common_sync_pri1_js_5_br.js": [
+ "/widget/ui/slide/plugin/stop-at-edge.js"
+ ],
+ "pkg/common_sync_pri2_css_0_br.css": [
+ "/widget/ui/scrollable/scrollable.css"
+ ],
+ "pkg/common_sync_pri2_css_1_br.css": [
+ "/widget/css-base/dist/base.ltr.css",
+ "/widget/css-base/dist/base.ltr.ie.css",
+ "/widget/css-flatbase/ltr/ltr.css",
+ "/widget/ui/css-ui/css-ui.css"
+ ],
+ "pkg/common_sync_pri2_css_2_br.css": [
+ "/widget/ui/dialog/dialog.css"
+ ],
+ "pkg/common_sync_pri1_css_0_br.css": [
+ "/widget/ui/suggest/suggest.css"
+ ],
+ "pkg/common_sync_pri1_css_1_br.css": [
+ "/widget/header-flat/account/ltr/ltr.more.css",
+ "/widget/header-flat/clock/ltr/ltr.more.css",
+ "/widget/header-flat/logo/ltr/ltr.more.css",
+ "/widget/header-flat/ltr/ltr.more.css",
+ "/widget/header-flat/site-switch/ltr/ltr.more.css",
+ "/widget/header-flat/userbar-btn-header/ltr/ltr.more.css",
+ "/widget/search-box-new/ltr/ltr.more.css",
+ "/widget/ui/dropdownlist/dropdownlist.css",
+ "/widget/ui/prompt/prompt.css",
+ "/widget/header-flat/weather/ltr/ltr.more.css"
+ ],
+ "pkg/common_sync_pri1_css_2_br.css": [
+ "/widget/footer/ltr/ltr.css"
+ ],
+ "pkg/common_sync_pri1_css_3_br.css": [
+ "/widget/header/account/ltr/ltr.more.css",
+ "/widget/header/add-fav-bar/ltr/ltr.more.css",
+ "/widget/header/clock/ltr/ltr.more.css",
+ "/widget/header/logo/ltr/ltr.more.css",
+ "/widget/header/ltr/ltr.more.css",
+ "/widget/header/site-switch/ltr/ltr.more.css",
+ "/widget/header/userbar-btn/ltr/ltr.more.css",
+ "/widget/header/weather/ltr/ltr.more.css",
+ "/widget/ui/sns-share/sns-share.css"
+ ],
+ "pkg/common_sync_pri1_css_4_br.css": [
+ "/widget/header/userbar-btn-test/ltr-s/ltr.more.css",
+ "/widget/search-box-flat/flow/ltr/ltr.flow.css",
+ "/widget/search-box-flat/ltr/ltr.more.css",
+ "/widget/search-box/ltr/ltr.more.css",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete/jquery.ui.autocomplete.css",
+ "/widget/ui/jquery/widget/jquery.ui.datepicker/jquery.ui.datepicker.css"
+ ],
+ "pkg/common_sync_pri1_css_5_br.css": [
+ "/widget/header/account-test/ltr-s/ltr.more.css",
+ "/widget/header/header-com/ltr-s/ltr.more.css",
+ "/widget/header/message/ltr/ltr.more.css",
+ "/widget/header/skin-trans/ltr/ltr.more.css",
+ "/widget/header/skinbox/ltr/ltr.more.css",
+ "/widget/header/userbar-btn-header/ltr-s/ltr.more.css",
+ "/widget/login-popup/ltr/ltr.css",
+ "/widget/ui/jquery/widget/jquery.ui.button/ltr/ltr.css",
+ "/widget/ui/lottery/lottery.css"
+ ],
+ "pkg/common_sync_pri1_css_6_br.css": [
+ "/widget/header-flat/simple-nav/ltr/ltr.more.css"
+ ],
+ "pkg/common_sync_pri1_css_7_br.css": [
+ "/widget/header/header-com/ltr-s/ltr.lv2.more.css",
+ "/widget/ui/text-overflow/ltr/ltr.css"
+ ],
+ "pkg/common_sync_pri1_css_8_br.css": [
+ "/widget/header-flat/add-fav-bar/ltr/ltr.more.css",
+ "/widget/header-flat/message/ltr/ltr.more.css",
+ "/widget/userbar-btn-searchside/ltr/ltr.more.css"
+ ],
+ "pkg/common_async_pri1_js_0_br.js": [
+ "/widget/header-flat/header-flat-async.js",
+ "/widget/search-box-new/search-box-new-async.js"
+ ],
+ "pkg/common_async_pri1_js_1_br.js": [
+ "/widget/header-flat/account/account-async.js",
+ "/widget/header-flat/logo/logo-async.js",
+ "/widget/header-flat/site-switch/site-switch-async.js",
+ "/widget/header-flat/userbar-btn-header/userbar-btn-header-async.js",
+ "/widget/ui/calendar/calendar.js",
+ "/widget/ui/date-new/plugin/buddhist.js",
+ "/widget/ui/date-new/plugin/isl.js",
+ "/widget/ui/date-new/plugin/lunar.js",
+ "/widget/ui/date-new/plugin/rokuyou.js",
+ "/widget/ui/dropdownlist/dropdownlist.js",
+ "/widget/ui/weather/weather_flat.js",
+ "/widget/header-flat/clock/calendar-async.js",
+ "/widget/header-flat/clock/clock-async.js"
+ ],
+ "pkg/common_async_pri1_js_2_br.js": [
+ "/widget/header/account/account-async.js",
+ "/widget/header/add-fav-bar/add-fav-bar-async.js",
+ "/widget/header/clock/calendar-async.js",
+ "/widget/header/clock/clock-async.js",
+ "/widget/header/logo/logo-async.js",
+ "/widget/header/site-switch/site-switch-async.js",
+ "/widget/ui/sethome-ff/sethome-ff-c.js",
+ "/widget/ui/weather/weather.js",
+ "/widget/header/userbar-btn/userbar-btn-async.js"
+ ],
+ "pkg/common_async_pri1_js_3_br.js": [
+ "/widget/header/account-test/account-test-async.js",
+ "/widget/header/header-com/header-com-async.js",
+ "/widget/header/message/message-async.js",
+ "/widget/header/skin-trans/skin-trans-async.js",
+ "/widget/header/userbar-btn-header/userbar-btn-header-async.js",
+ "/widget/header/userbar-btn-test/userbar-btn-test-async.js",
+ "/widget/search-box/search-box-async.js",
+ "/widget/ui/lottery/lottery.js",
+ "/widget/ui/notice-pop/notice-pop.js",
+ "/widget/ui/popup/popup.js",
+ "/widget/ui/sns-share/sns-share.js"
+ ],
+ "pkg/common_async_pri1_js_4_br.js": [
+ "/widget/header-flat/simple-nav/simple-nav-async.js"
+ ],
+ "pkg/common_async_pri1_js_5_br.js": [
+ "/widget/header-flat/add-fav-bar/add-fav-bar-async.js",
+ "/widget/header-flat/message/message-async.js",
+ "/widget/userbar-btn-searchside/userbar-btn-searchside-async.js"
+ ],
+ "pkg/common_async_pri1_js_6_br.js": [
+ "/widget/search-box-4ps/search-box-4ps-async.js"
+ ],
+ "pkg/common_async_pri1_js_7_br.js": [
+ "/widget/header-flat/nav/nav-async.js"
+ ],
+ "pkg/common_sync_pri2_js_0_br.js": [
+ "/widget/ui/cookieless/cookieless.js",
+ "/widget/ui/date/date.js",
+ "/widget/ui/helper/helper.js",
+ "/widget/ui/jquery/1.8.3/jquery.min.js",
+ "/widget/ui/jquery/jquery.cookie.js",
+ "/widget/ui/jquery/jquery.json.js",
+ "/widget/ui/jquery/jquery.mousewheel.js",
+ "/widget/ui/jquery/jquery.ui.core.js",
+ "/widget/ui/jquery/jquery.ui.widget.js",
+ "/widget/ui/md5/md5.js",
+ "/widget/ui/message/src/message.js",
+ "/widget/ui/ut/ut.js",
+ "/widget/ui/jquery/jquery.js",
+ "/widget/ui/jquery/widget/jquery.lazyload/jquery.lazyload.js",
+ "/widget/ui/jquery/widget/jquery.placeholder/jquery.placeholder.js",
+ "/widget/ui/localstorage/localstorage.js",
+ "/widget/ui/scrollable/scrollable.js",
+ "/widget/ui/slide/plugin/control.js",
+ "/widget/ui/slide/plugin/pagination.js",
+ "/widget/ui/slide/plugin/play.js",
+ "/widget/ui/slide/slide.js",
+ "/widget/ui/time/time.js",
+ "/widget/ui/cycletabs/cycletabs.js",
+ "/widget/ui/drap/drap.js",
+ "/widget/ui/localcookie/localcookie.js",
+ "/widget/ui/slide/plugin/animate.js"
+ ],
+ "pkg/common_sync_pri2_js_1_br.js": [
+ "/widget/ui/tpl/tpl.js"
+ ],
+ "pkg/common_sync_pri2_js_2_br.js": [
+ "/widget/ui/dialog/dialog.js"
+ ]
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-en.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-en.json
new file mode 100755
index 000000000..8d132057b
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-en.json
@@ -0,0 +1,105 @@
+{
+ "pkg/autopack_common_base.js": [
+ "/static/lazyload.js",
+ "/static/mod.js",
+ "/static/BigPipe.js"
+ ],
+ "pkg/common_sync_pri1_js_0_en.js": [
+ "/static/open-api/lazyload.js",
+ "/widget/ui/date-new/date.js",
+ "/widget/ui/jquery/widget/jquery.addfav/jquery.addfav.js",
+ "/widget/ui/jquery/widget/jquery.sethome/jquery.sethome.js",
+ "/widget/ui/jquery/widget/jquery.ui.button/jquery.ui.button.js",
+ "/widget/ui/suggest/suggest.js"
+ ],
+ "pkg/common_sync_pri1_js_1_en.js": [
+ "/widget/ui/bubble/src/bubble.js",
+ "/widget/ui/jquery/widget/jquery.ui.tip/jquery.ui.tip.js",
+ "/widget/ui/weather/en/en.js"
+ ],
+ "pkg/common_sync_pri1_css_0_en.css": [
+ "/widget/ui/suggest/suggest.css"
+ ],
+ "pkg/common_sync_pri1_css_1_en.css": [
+ "/widget/header-flat/clock/ltr/ltr.more.css",
+ "/widget/header-flat/logo/ltr/ltr.more.css",
+ "/widget/header-flat/ltr/ltr.more.css",
+ "/widget/header-flat/site-switch/ltr/ltr.more.css",
+ "/widget/search-box-new/ltr/ltr.more.css",
+ "/widget/ui/prompt/prompt.css"
+ ],
+ "pkg/common_sync_pri1_css_2_en.css": [
+ "/widget/header/account/ltr/ltr.more.css",
+ "/widget/header/add-fav-bar/ltr/ltr.more.css",
+ "/widget/header/clock/ltr/ltr.more.css",
+ "/widget/header/logo/ltr/ltr.more.css",
+ "/widget/header/ltr/ltr.more.css",
+ "/widget/header/site-switch/ltr/ltr.more.css",
+ "/widget/header/userbar-btn/ltr/ltr.more.css",
+ "/widget/header/weather/ltr/ltr.more.css",
+ "/widget/login-popup/ltr/ltr.css",
+ "/widget/ui/jquery/widget/jquery.ui.button/ltr/ltr.css"
+ ],
+ "pkg/common_async_pri1_js_0_en.js": [
+ "/widget/header-flat/header-flat-async.js",
+ "/widget/search-box-new/search-box-new-async.js"
+ ],
+ "pkg/common_async_pri1_js_1_en.js": [
+ "/widget/header-flat/logo/logo-async.js",
+ "/widget/header-flat/site-switch/site-switch-async.js",
+ "/widget/ui/calendar/calendar.js",
+ "/widget/ui/date-new/plugin/buddhist.js",
+ "/widget/ui/date-new/plugin/isl.js",
+ "/widget/ui/date-new/plugin/lunar.js",
+ "/widget/ui/date-new/plugin/rokuyou.js",
+ "/widget/ui/scrollable/scrollable.js",
+ "/widget/ui/dropdownlist/dropdownlist.js",
+ "/widget/header-flat/clock/calendar-async.js",
+ "/widget/header-flat/clock/clock-async.js"
+ ],
+ "pkg/common_async_pri1_js_2_en.js": [
+ "/widget/header/account/account-async.js",
+ "/widget/header/add-fav-bar/add-fav-bar-async.js",
+ "/widget/header/clock/calendar-async.js",
+ "/widget/header/clock/clock-async.js",
+ "/widget/header/logo/logo-async.js",
+ "/widget/header/site-switch/site-switch-async.js",
+ "/widget/search-box/search-box-async.js",
+ "/widget/ui/popup/popup.js",
+ "/widget/ui/sethome-ff/sethome-ff-c.js",
+ "/widget/ui/weather/weather.js",
+ "/widget/header/userbar-btn/userbar-btn-async.js"
+ ],
+ "pkg/common_async_pri1_css_0_en.css": [
+ "/widget/ui/calendar/calendar.css",
+ "/widget/ui/dropdownlist/dropdownlist.css",
+ "/widget/ui/scrollable/scrollable.css"
+ ],
+ "pkg/common_async_pri1_css_1_en.css": [
+ "/widget/ui/popup/popup.css"
+ ],
+ "pkg/common_sync_pri2_js_0_en.js": [
+ "/widget/ui/cookieless/cookieless.js",
+ "/widget/ui/date/date.js",
+ "/widget/ui/helper/helper.js",
+ "/widget/ui/jquery/1.8.3/jquery.min.js",
+ "/widget/ui/jquery/jquery.cookie.js",
+ "/widget/ui/jquery/jquery.json.js",
+ "/widget/ui/jquery/jquery.mousewheel.js",
+ "/widget/ui/jquery/jquery.ui.core.js",
+ "/widget/ui/jquery/jquery.ui.widget.js",
+ "/widget/ui/md5/md5.js",
+ "/widget/ui/message/src/message.js",
+ "/widget/ui/ut/ut.js",
+ "/widget/ui/drap/drap.js",
+ "/widget/ui/jquery/jquery.js",
+ "/widget/ui/jquery/widget/jquery.lazyload/jquery.lazyload.js",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete.html/jquery.ui.autocomplete.html.js",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete/jquery.ui.autocomplete.js",
+ "/widget/ui/jquery/widget/jquery.ui.position/jquery.ui.position.js",
+ "/widget/ui/localstorage/localstorage.js",
+ "/widget/ui/time/time.js",
+ "/widget/ui/dialog/dialog.js",
+ "/widget/ui/localcookie/localcookie.js"
+ ]
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-id.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-id.json
new file mode 100755
index 000000000..2af45a6a3
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-id.json
@@ -0,0 +1,172 @@
+{
+ "pkg/autopack_common_base.js": [
+ "/static/lazyload.js",
+ "/static/mod.js",
+ "/static/BigPipe.js"
+ ],
+ "pkg/common_sync_pri1_js_0_id.js": [
+ "/static/open-api/lazyload.js",
+ "/widget/ui/suggest/suggest.js"
+ ],
+ "pkg/common_sync_pri1_js_1_id.js": [
+ "/widget/ui/date-new/date.js",
+ "/widget/ui/jquery/widget/jquery.addfav/jquery.addfav.js",
+ "/widget/ui/jquery/widget/jquery.placeholder/jquery.placeholder.js",
+ "/widget/ui/jquery/widget/jquery.sethome/jquery.sethome.js",
+ "/widget/ui/jquery/widget/jquery.ui.button/jquery.ui.button.js",
+ "/widget/ui/slide/plugin/control.js",
+ "/widget/ui/slide/plugin/pagination.js",
+ "/widget/ui/slide/plugin/play.js",
+ "/widget/ui/slide/slide.js",
+ "/widget/ui/weather/id/id_flat.js",
+ "/widget/ui/slide/plugin/animate.js"
+ ],
+ "pkg/common_sync_pri1_js_2_id.js": [
+ "/widget/ui/weather/id/id.js"
+ ],
+ "pkg/common_sync_pri1_js_3_id.js": [
+ "/widget/header/skinbox/skin-mod.js",
+ "/widget/header/skinbox/skinbox-async.js",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete.html/jquery.ui.autocomplete.html.js",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete/jquery.ui.autocomplete.js",
+ "/widget/ui/jquery/widget/jquery.ui.position/jquery.ui.position.js",
+ "/widget/ui/jquery/widget/jquery.ui.tip/jquery.ui.tip.js"
+ ],
+ "pkg/common_sync_pri1_js_4_id.js": [
+ "/widget/ui/slide/plugin/animate-carousel.js"
+ ],
+ "pkg/common_sync_pri1_js_5_id.js": [
+ "/widget/ui/slide/plugin/stop-at-edge.js"
+ ],
+ "pkg/common_sync_pri2_css_0_id.css": [
+ "/widget/ui/scrollable/scrollable.css",
+ "/widget/ui/sns-share/sns-share.css"
+ ],
+ "pkg/common_sync_pri2_css_1_id.css": [
+ "/widget/css-base/dist/base.ltr.css",
+ "/widget/css-base/dist/base.ltr.ie.css",
+ "/widget/css-flatbase/ltr/ltr.css",
+ "/widget/ui/css-ui/css-ui.css"
+ ],
+ "pkg/common_sync_pri1_css_0_id.css": [
+ "/widget/ui/suggest/suggest.css"
+ ],
+ "pkg/common_sync_pri1_css_1_id.css": [
+ "/widget/header-flat/account/ltr/ltr.more.css",
+ "/widget/header-flat/clock/ltr/ltr.more.css",
+ "/widget/header-flat/logo/ltr/ltr.more.css",
+ "/widget/header-flat/ltr/ltr.more.css",
+ "/widget/header-flat/site-switch/ltr/ltr.more.css",
+ "/widget/header-flat/userbar-btn-header/ltr/ltr.more.css",
+ "/widget/search-box-new/ltr/ltr.more.css",
+ "/widget/ui/dropdownlist/dropdownlist.css",
+ "/widget/ui/prompt/prompt.css",
+ "/widget/header-flat/weather/ltr/ltr.more.css"
+ ],
+ "pkg/common_sync_pri1_css_2_id.css": [
+ "/widget/footer/ltr/ltr.css",
+ "/widget/search-box-flat/flow/ltr/ltr.flow.css",
+ "/widget/search-box-flat/ltr/ltr.more.css",
+ "/widget/search-box/ltr/ltr.more.css"
+ ],
+ "pkg/common_sync_pri1_css_3_id.css": [
+ "/widget/header/account-test/ltr-s/ltr.more.css",
+ "/widget/header/add-fav-bar/ltr/ltr.more.css",
+ "/widget/header/clock/ltr/ltr.more.css",
+ "/widget/header/header-com/ltr-s/ltr.lv2.more.css",
+ "/widget/header/header-com/ltr-s/ltr.more.css",
+ "/widget/header/logo/ltr/ltr.more.css",
+ "/widget/header/message/ltr/ltr.more.css",
+ "/widget/header/site-switch/ltr/ltr.more.css",
+ "/widget/header/userbar-btn-header/ltr-s/ltr.more.css",
+ "/widget/header/weather/ltr/ltr.more.css",
+ "/widget/login-popup/ltr/ltr.css",
+ "/widget/ui/jquery/widget/jquery.ui.button/ltr/ltr.css",
+ "/widget/ui/text-overflow/ltr/ltr.css"
+ ],
+ "pkg/common_sync_pri1_css_4_id.css": [
+ "/widget/header/skin-trans/ltr/ltr.more.css",
+ "/widget/header/skinbox/ltr/ltr.more.css",
+ "/widget/header/userbar-btn-test/ltr-s/ltr.more.css",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete/jquery.ui.autocomplete.css"
+ ],
+ "pkg/common_sync_pri1_css_5_id.css": [
+ "/widget/header/account/ltr/ltr.more.css",
+ "/widget/header/ltr/ltr.more.css",
+ "/widget/header/userbar-btn/ltr/ltr.more.css"
+ ],
+ "pkg/common_sync_pri1_css_6_id.css": [
+ "/widget/header-flat/add-fav-bar/ltr/ltr.more.css",
+ "/widget/header-flat/message/ltr/ltr.more.css"
+ ],
+ "pkg/common_async_pri1_js_0_id.js": [
+ "/widget/header-flat/header-flat-async.js",
+ "/widget/search-box-new/search-box-new-async.js"
+ ],
+ "pkg/common_async_pri1_js_1_id.js": [
+ "/widget/header-flat/account/account-async.js",
+ "/widget/header-flat/logo/logo-async.js",
+ "/widget/header-flat/site-switch/site-switch-async.js",
+ "/widget/header-flat/userbar-btn-header/userbar-btn-header-async.js",
+ "/widget/ui/calendar/calendar.js",
+ "/widget/ui/date-new/plugin/buddhist.js",
+ "/widget/ui/date-new/plugin/isl.js",
+ "/widget/ui/date-new/plugin/lunar.js",
+ "/widget/ui/date-new/plugin/rokuyou.js",
+ "/widget/ui/dropdownlist/dropdownlist.js",
+ "/widget/ui/weather/weather_flat.js",
+ "/widget/header-flat/clock/calendar-async.js",
+ "/widget/header-flat/clock/clock-async.js"
+ ],
+ "pkg/common_async_pri1_js_2_id.js": [
+ "/widget/header/account-test/account-test-async.js",
+ "/widget/header/add-fav-bar/add-fav-bar-async.js",
+ "/widget/header/clock/calendar-async.js",
+ "/widget/header/clock/clock-async.js",
+ "/widget/header/header-com/header-com-async.js",
+ "/widget/header/logo/logo-async.js",
+ "/widget/header/message/message-async.js",
+ "/widget/header/site-switch/site-switch-async.js",
+ "/widget/ui/popup/popup.js",
+ "/widget/ui/sethome-ff/sethome-ff-c.js",
+ "/widget/ui/weather/weather.js",
+ "/widget/header/userbar-btn-header/userbar-btn-header-async.js"
+ ],
+ "pkg/common_async_pri1_js_3_id.js": [
+ "/widget/header/skin-trans/skin-trans-async.js",
+ "/widget/header/userbar-btn-test/userbar-btn-test-async.js",
+ "/widget/search-box/search-box-async.js",
+ "/widget/ui/notice-pop/notice-pop.js"
+ ],
+ "pkg/common_async_pri1_js_4_id.js": [
+ "/widget/header/account/account-async.js",
+ "/widget/header/userbar-btn/userbar-btn-async.js"
+ ],
+ "pkg/common_async_pri1_js_5_id.js": [
+ "/widget/header-flat/add-fav-bar/add-fav-bar-async.js",
+ "/widget/header-flat/message/message-async.js"
+ ],
+ "pkg/common_sync_pri2_js_0_id.js": [
+ "/widget/ui/cookieless/cookieless.js",
+ "/widget/ui/date/date.js",
+ "/widget/ui/helper/helper.js",
+ "/widget/ui/jquery/1.8.3/jquery.min.js",
+ "/widget/ui/jquery/jquery.cookie.js",
+ "/widget/ui/jquery/jquery.json.js",
+ "/widget/ui/jquery/jquery.mousewheel.js",
+ "/widget/ui/jquery/jquery.ui.core.js",
+ "/widget/ui/jquery/jquery.ui.widget.js",
+ "/widget/ui/md5/md5.js",
+ "/widget/ui/message/src/message.js",
+ "/widget/ui/ut/ut.js",
+ "/widget/ui/jquery/jquery.js",
+ "/widget/ui/jquery/widget/jquery.lazyload/jquery.lazyload.js",
+ "/widget/ui/localstorage/localstorage.js",
+ "/widget/ui/scrollable/scrollable.js",
+ "/widget/ui/time/time.js",
+ "/widget/ui/bubble/src/bubble.js",
+ "/widget/ui/cycletabs/cycletabs.js",
+ "/widget/ui/drap/drap.js",
+ "/widget/ui/localcookie/localcookie.js"
+ ]
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-image.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-image.json
new file mode 100644
index 000000000..565b3cdd5
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-image.json
@@ -0,0 +1,90 @@
+{
+ "pkg/autopack_common_base.js": [
+ "/static/lazyload.js",
+ "/static/mod.js",
+ "/static/BigPipe.js"
+ ],
+ "pkg/common_sync_pri1_js_0_image.js": [
+ "/static/open-api/lazyload.js",
+ "/widget/ui/date-new/date.js",
+ "/widget/ui/jquery/widget/jquery.addfav/jquery.addfav.js",
+ "/widget/ui/jquery/widget/jquery.sethome/jquery.sethome.js",
+ "/widget/ui/jquery/widget/jquery.ui.button/jquery.ui.button.js",
+ "/widget/ui/suggest/suggest.js"
+ ],
+ "pkg/common_sync_pri1_js_1_image.js": [
+ "/widget/ui/bubble/src/bubble.js",
+ "/widget/ui/jquery/widget/jquery.ui.tip/jquery.ui.tip.js",
+ "/widget/ui/weather/en/en.js"
+ ],
+ "pkg/common_async_pri1_js_0_image.js": [
+ "/widget/header-flat/header-flat-async.js",
+ "/widget/search-box-new/search-box-new-async.js"
+ ],
+ "pkg/common_async_pri1_js_1_image.js": [
+ "/widget/header/account/account-async.js",
+ "/widget/header/add-fav-bar/add-fav-bar-async.js",
+ "/widget/header/logo/logo-async.js",
+ "/widget/header/site-switch/site-switch-async.js",
+ "/widget/search-box/search-box-async.js",
+ "/widget/ui/calendar/calendar.js",
+ "/widget/ui/date-new/plugin/buddhist.js",
+ "/widget/ui/date-new/plugin/isl.js",
+ "/widget/ui/date-new/plugin/lunar.js",
+ "/widget/ui/date-new/plugin/rokuyou.js",
+ "/widget/ui/popup/popup.js",
+ "/widget/ui/scrollable/scrollable.js",
+ "/widget/ui/sethome-ff/sethome-ff-c.js",
+ "/widget/ui/weather/weather.js",
+ "/widget/header/userbar-btn/userbar-btn-async.js",
+ "/widget/ui/dropdownlist/dropdownlist.js",
+ "/widget/header/clock/calendar-async.js",
+ "/widget/header/clock/clock-async.js"
+ ],
+ "pkg/common_sync_pri1_css_0_image.css": [
+ "/widget/ui/prompt/prompt.css",
+ "/widget/ui/suggest/suggest.css"
+ ],
+ "pkg/common_sync_pri1_css_1_image.css": [
+ "/widget/header/account/ltr/ltr.more.css",
+ "/widget/header/add-fav-bar/ltr/ltr.more.css",
+ "/widget/header/clock/ltr/ltr.more.css",
+ "/widget/header/logo/ltr/ltr.more.css",
+ "/widget/header/ltr/ltr.more.css",
+ "/widget/header/site-switch/ltr/ltr.more.css",
+ "/widget/header/userbar-btn/ltr/ltr.more.css",
+ "/widget/header/weather/ltr/ltr.more.css",
+ "/widget/login-popup/ltr/ltr.css",
+ "/widget/ui/jquery/widget/jquery.ui.button/ltr/ltr.css",
+ "/widget/ui/scrollable/scrollable.css"
+ ],
+ "pkg/common_async_pri1_css_0_image.css": [
+ "/widget/ui/calendar/calendar.css",
+ "/widget/ui/dropdownlist/dropdownlist.css",
+ "/widget/ui/popup/popup.css"
+ ],
+ "pkg/common_sync_pri2_js_0_image.js": [
+ "/widget/ui/cookieless/cookieless.js",
+ "/widget/ui/date/date.js",
+ "/widget/ui/helper/helper.js",
+ "/widget/ui/jquery/1.8.3/jquery.min.js",
+ "/widget/ui/jquery/jquery.cookie.js",
+ "/widget/ui/jquery/jquery.json.js",
+ "/widget/ui/jquery/jquery.mousewheel.js",
+ "/widget/ui/jquery/jquery.ui.core.js",
+ "/widget/ui/jquery/jquery.ui.widget.js",
+ "/widget/ui/md5/md5.js",
+ "/widget/ui/message/src/message.js",
+ "/widget/ui/ut/ut.js",
+ "/widget/ui/drap/drap.js",
+ "/widget/ui/jquery/jquery.js",
+ "/widget/ui/jquery/widget/jquery.lazyload/jquery.lazyload.js",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete.html/jquery.ui.autocomplete.html.js",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete/jquery.ui.autocomplete.js",
+ "/widget/ui/jquery/widget/jquery.ui.position/jquery.ui.position.js",
+ "/widget/ui/localstorage/localstorage.js",
+ "/widget/ui/time/time.js",
+ "/widget/ui/dialog/dialog.js",
+ "/widget/ui/localcookie/localcookie.js"
+ ]
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-imagesearch.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-imagesearch.json
new file mode 100644
index 000000000..22f47830e
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-imagesearch.json
@@ -0,0 +1,65 @@
+{
+ "pkg/autopack_common_base.js": [
+ "/static/lazyload.js",
+ "/static/mod.js",
+ "/static/BigPipe.js"
+ ],
+ "pkg/common_sync_pri1_js_0_imagesearch.js": [
+ "/static/open-api/lazyload.js",
+ "/widget/ui/date-new/date.js",
+ "/widget/ui/jquery/widget/jquery.sethome/jquery.sethome.js",
+ "/widget/ui/suggest/suggest.js"
+ ],
+ "pkg/common_async_pri1_js_0_imagesearch.js": [
+ "/widget/header-flat/header-flat-async.js",
+ "/widget/header-flat/logo/logo-async.js",
+ "/widget/header-flat/site-switch/site-switch-async.js",
+ "/widget/search-box-new/search-box-new-async.js",
+ "/widget/ui/calendar/calendar.js",
+ "/widget/ui/date-new/plugin/buddhist.js",
+ "/widget/ui/date-new/plugin/isl.js",
+ "/widget/ui/date-new/plugin/lunar.js",
+ "/widget/ui/date-new/plugin/rokuyou.js",
+ "/widget/ui/scrollable/scrollable.js",
+ "/widget/ui/dropdownlist/dropdownlist.js",
+ "/widget/header-flat/clock/calendar-async.js",
+ "/widget/header-flat/clock/clock-async.js"
+ ],
+ "pkg/common_sync_pri1_css_0_imagesearch.css": [
+ "/widget/header-flat/clock/ltr/ltr.more.css",
+ "/widget/header-flat/logo/ltr/ltr.more.css",
+ "/widget/header-flat/ltr/ltr.more.css",
+ "/widget/header-flat/site-switch/ltr/ltr.more.css",
+ "/widget/search-box-new/ltr/ltr.more.css",
+ "/widget/ui/suggest/suggest.css"
+ ],
+ "pkg/common_async_pri1_css_0_imagesearch.css": [
+ "/widget/ui/calendar/calendar.css",
+ "/widget/ui/dropdownlist/dropdownlist.css",
+ "/widget/ui/scrollable/scrollable.css"
+ ],
+ "pkg/common_sync_pri2_js_0_imagesearch.js": [
+ "/widget/ui/cookieless/cookieless.js",
+ "/widget/ui/date/date.js",
+ "/widget/ui/helper/helper.js",
+ "/widget/ui/jquery/1.8.3/jquery.min.js",
+ "/widget/ui/jquery/jquery.cookie.js",
+ "/widget/ui/jquery/jquery.json.js",
+ "/widget/ui/jquery/jquery.mousewheel.js",
+ "/widget/ui/jquery/jquery.ui.core.js",
+ "/widget/ui/jquery/jquery.ui.widget.js",
+ "/widget/ui/md5/md5.js",
+ "/widget/ui/message/src/message.js",
+ "/widget/ui/ut/ut.js",
+ "/widget/ui/drap/drap.js",
+ "/widget/ui/jquery/jquery.js",
+ "/widget/ui/jquery/widget/jquery.lazyload/jquery.lazyload.js",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete.html/jquery.ui.autocomplete.html.js",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete/jquery.ui.autocomplete.js",
+ "/widget/ui/jquery/widget/jquery.ui.position/jquery.ui.position.js",
+ "/widget/ui/localstorage/localstorage.js",
+ "/widget/ui/time/time.js",
+ "/widget/ui/dialog/dialog.js",
+ "/widget/ui/localcookie/localcookie.js"
+ ]
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-jp.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-jp.json
new file mode 100755
index 000000000..52f127c47
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-jp.json
@@ -0,0 +1,172 @@
+{
+ "pkg/autopack_common_base.js": [
+ "/static/lazyload.js",
+ "/static/mod.js",
+ "/static/BigPipe.js"
+ ],
+ "pkg/common_sync_pri1_js_0_jp.js": [
+ "/static/open-api/lazyload.js",
+ "/widget/ui/suggest/suggest.js"
+ ],
+ "pkg/common_sync_pri1_js_1_jp.js": [
+ "/widget/ui/date-new/date.js",
+ "/widget/ui/jquery/widget/jquery.addfav/jquery.addfav.js",
+ "/widget/ui/jquery/widget/jquery.sethome/jquery.sethome.js",
+ "/widget/ui/jquery/widget/jquery.ui.button/jquery.ui.button.js",
+ "/widget/ui/slide/plugin/play.js",
+ "/widget/ui/weather/jp/jp_flat.js"
+ ],
+ "pkg/common_sync_pri1_js_2_jp.js": [
+ "/widget/ui/bubble/src/bubble.js"
+ ],
+ "pkg/common_sync_pri1_js_3_jp.js": [
+ "/widget/ui/weather/jp/jp.js"
+ ],
+ "pkg/common_sync_pri1_js_4_jp.js": [
+ "/widget/header/skinbox/skin-mod.js",
+ "/widget/header/skinbox/skinbox-async.js",
+ "/widget/ui/jquery/widget/jquery.ui.tip/jquery.ui.tip.js"
+ ],
+ "pkg/common_async_pri2_js_0_jp.js": [
+ "/widget/footer-seo/footer-seo-async.js",
+ "/widget/ui/monitor/monitor.js",
+ "/widget/ui/scrollable/scrollable.js",
+ "/widget/ui/sns-share/sns-share.js"
+ ],
+ "pkg/common_sync_pri2_css_0_jp.css": [
+ "/widget/footer-seo/ltr/ltr.css",
+ "/widget/footer/ltr/ltr.css",
+ "/widget/ui/css-ui/css-ui.css",
+ "/widget/ui/dialog/dialog.css",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete/jquery.ui.autocomplete.css",
+ "/widget/ui/scrollable/scrollable.css",
+ "/widget/ui/sns-share/sns-share.css",
+ "/widget/ui/text-overflow/ltr/ltr.css"
+ ],
+ "pkg/common_async_pri1_js_0_jp.js": [
+ "/widget/header-flat/clock/calendar-async.js",
+ "/widget/header-flat/header-flat-async.js",
+ "/widget/search-box-new/search-box-new-async.js"
+ ],
+ "pkg/common_async_pri1_js_1_jp.js": [
+ "/widget/header-flat/account/account-async.js",
+ "/widget/header-flat/logo/logo-async.js",
+ "/widget/header-flat/userbar-btn-header/userbar-btn-header-async.js",
+ "/widget/ui/calendar/calendar.js",
+ "/widget/ui/date-new/plugin/buddhist.js",
+ "/widget/ui/date-new/plugin/isl.js",
+ "/widget/ui/date-new/plugin/lunar.js",
+ "/widget/ui/date-new/plugin/rokuyou.js",
+ "/widget/ui/dropdownlist/dropdownlist.js",
+ "/widget/ui/weather/weather_flat.js",
+ "/widget/header-flat/clock/clock-async.js"
+ ],
+ "pkg/common_async_pri1_js_2_jp.js": [
+ "/widget/search-box/search-box-async.js"
+ ],
+ "pkg/common_async_pri1_js_3_jp.js": [
+ "/widget/header/account-test/account-test-async.js",
+ "/widget/header/add-fav-bar/add-fav-bar-async.js",
+ "/widget/header/clock/calendar-async.js",
+ "/widget/header/clock/clock-async.js",
+ "/widget/header/header-com/header-com-async.js",
+ "/widget/header/logo/logo-async.js",
+ "/widget/header/message/message-async.js",
+ "/widget/header/site-switch/site-switch-async.js",
+ "/widget/header/skin-trans/skin-trans-async.js",
+ "/widget/ui/popup/popup.js",
+ "/widget/ui/sethome-ff/sethome-ff-c.js",
+ "/widget/ui/weather/weather.js",
+ "/widget/header/userbar-btn-header/userbar-btn-header-async.js",
+ "/widget/header/userbar-btn-test/userbar-btn-test-async.js"
+ ],
+ "pkg/common_async_pri1_js_4_jp.js": [
+ "/widget/header/account/account-async.js",
+ "/widget/header/userbar-btn/userbar-btn-async.js"
+ ],
+ "pkg/common_async_pri1_js_5_jp.js": [
+ "/widget/header-flat/add-fav-bar/add-fav-bar-async.js",
+ "/widget/header-flat/fontsize-switch/fontsize-switch-async.js",
+ "/widget/header-flat/message/message-async.js"
+ ],
+ "pkg/common_async_pri1_js_6_jp.js": [
+ "/widget/ui/jquery/widget/jquery.textarealimit/jquery.textarealimit.js"
+ ],
+ "pkg/common_sync_pri1_css_0_jp.css": [
+ "/widget/header-flat/userbar-btn-header/ltr/ltr.more.css",
+ "/widget/header-flat/weather/ltr/ltr.more.css",
+ "/widget/ui/suggest/suggest.css"
+ ],
+ "pkg/common_sync_pri1_css_1_jp.css": [
+ "/widget/header-flat/account/ltr/ltr.more.css",
+ "/widget/header-flat/clock/ltr/ltr.more.css",
+ "/widget/header-flat/logo/ltr/ltr.more.css",
+ "/widget/header-flat/ltr/ltr.more.css",
+ "/widget/search-box-new/ltr/ltr.more.css",
+ "/widget/ui/dropdownlist/dropdownlist.css",
+ "/widget/ui/prompt/prompt.css"
+ ],
+ "pkg/common_sync_pri1_css_2_jp.css": [
+ "/widget/search-box-flat/flow/ltr/ltr.flow.css",
+ "/widget/search-box-flat/ltr/ltr.more.css",
+ "/widget/search-box/ltr/ltr.more.css"
+ ],
+ "pkg/common_sync_pri1_css_3_jp.css": [
+ "/widget/header/account-test/ltr-s/ltr.more.css",
+ "/widget/header/add-fav-bar/ltr/ltr.more.css",
+ "/widget/header/clock/ltr/ltr.more.css",
+ "/widget/header/header-com/ltr-s/ltr.lv2.more.css",
+ "/widget/header/header-com/ltr-s/ltr.more.css",
+ "/widget/header/logo/ltr/ltr.more.css",
+ "/widget/header/message/ltr/ltr.more.css",
+ "/widget/header/site-switch/ltr/ltr.more.css",
+ "/widget/header/skin-trans/ltr/ltr.more.css",
+ "/widget/header/skinbox/ltr/ltr.more.css",
+ "/widget/header/userbar-btn-header/ltr-s/ltr.more.css",
+ "/widget/header/userbar-btn-test/ltr-s/ltr.more.css",
+ "/widget/header/weather/ltr/ltr.more.css",
+ "/widget/login-popup/ltr/ltr.css",
+ "/widget/ui/jquery/widget/jquery.ui.button/ltr/ltr.css"
+ ],
+ "pkg/common_sync_pri1_css_4_jp.css": [
+ "/widget/header/account/ltr/ltr.more.css",
+ "/widget/header/ltr/ltr.more.css",
+ "/widget/header/userbar-btn/ltr/ltr.more.css"
+ ],
+ "pkg/common_sync_pri1_css_5_jp.css": [
+ "/widget/header-flat/add-fav-bar/ltr/ltr.more.css",
+ "/widget/header-flat/fontsize-switch/ltr/ltr.more.css",
+ "/widget/header-flat/message/ltr/ltr.more.css"
+ ],
+ "pkg/common_sync_pri2_js_0_jp.js": [
+ "/widget/ui/cookieless/cookieless.js",
+ "/widget/ui/date/date.js",
+ "/widget/ui/helper/helper.js",
+ "/widget/ui/jquery/1.8.3/jquery.min.js",
+ "/widget/ui/jquery/jquery.cookie.js",
+ "/widget/ui/jquery/jquery.json.js",
+ "/widget/ui/jquery/jquery.mousewheel.js",
+ "/widget/ui/jquery/jquery.ui.core.js",
+ "/widget/ui/jquery/jquery.ui.widget.js",
+ "/widget/ui/md5/md5.js",
+ "/widget/ui/message/src/message.js",
+ "/widget/ui/ut/ut.js",
+ "/widget/ui/drap/drap.js",
+ "/widget/ui/jquery/jquery.js",
+ "/widget/ui/jquery/widget/jquery.lazyload/jquery.lazyload.js",
+ "/widget/ui/jquery/widget/jquery.placeholder/jquery.placeholder.js",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete.html/jquery.ui.autocomplete.html.js",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete/jquery.ui.autocomplete.js",
+ "/widget/ui/jquery/widget/jquery.ui.position/jquery.ui.position.js",
+ "/widget/ui/localstorage/localstorage.js",
+ "/widget/ui/slide/plugin/control.js",
+ "/widget/ui/slide/plugin/pagination.js",
+ "/widget/ui/slide/plugin/stop-at-edge.js",
+ "/widget/ui/slide/slide.js",
+ "/widget/ui/time/time.js",
+ "/widget/ui/cycletabs/cycletabs.js",
+ "/widget/ui/dialog/dialog.js",
+ "/widget/ui/localcookie/localcookie.js",
+ "/widget/ui/slide/plugin/animate.js"
+ ]
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-ma.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-ma.json
new file mode 100755
index 000000000..ad0cb999d
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-ma.json
@@ -0,0 +1,92 @@
+{
+ "pkg/autopack_common_base.js": [
+ "/static/lazyload.js",
+ "/static/mod.js",
+ "/static/BigPipe.js"
+ ],
+ "pkg/common_sync_pri1_js_0_ma.js": [
+ "/static/open-api/lazyload.js",
+ "/widget/ui/cookieless/cookieless.js",
+ "/widget/ui/date-new/date.js",
+ "/widget/ui/date/date.js",
+ "/widget/ui/helper/helper.js",
+ "/widget/ui/jquery/1.8.3/jquery.min.js",
+ "/widget/ui/jquery/jquery.cookie.js",
+ "/widget/ui/jquery/jquery.json.js",
+ "/widget/ui/jquery/jquery.mousewheel.js",
+ "/widget/ui/jquery/jquery.ui.core.js",
+ "/widget/ui/jquery/jquery.ui.widget.js",
+ "/widget/ui/md5/md5.js",
+ "/widget/ui/message/src/message.js",
+ "/widget/ui/ut/ut.js",
+ "/widget/ui/jquery/jquery.js",
+ "/widget/ui/jquery/widget/jquery.addfav/jquery.addfav.js",
+ "/widget/ui/jquery/widget/jquery.lazyload/jquery.lazyload.js",
+ "/widget/ui/jquery/widget/jquery.sethome/jquery.sethome.js",
+ "/widget/ui/jquery/widget/jquery.ui.button/jquery.ui.button.js",
+ "/widget/ui/localstorage/localstorage.js",
+ "/widget/ui/time/time.js",
+ "/widget/ui/weather/ma/ma.js",
+ "/widget/ui/bubble/src/bubble.js",
+ "/widget/ui/cycletabs/cycletabs.js"
+ ],
+ "pkg/common_sync_pri1_js_1_ma.js": [
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete.html/jquery.ui.autocomplete.html.js",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete/jquery.ui.autocomplete.js",
+ "/widget/ui/jquery/widget/jquery.ui.position/jquery.ui.position.js",
+ "/widget/ui/jquery/widget/jquery.ui.tip/jquery.ui.tip.js",
+ "/widget/ui/suggest/suggest.js"
+ ],
+ "pkg/common_sync_pri1_css_0_ma.css": [
+ "/widget/footer/rtl/rtl.css",
+ "/widget/header/account/rtl/rtl.more.css",
+ "/widget/header/add-fav-bar/rtl/rtl.more.css",
+ "/widget/header/clock/rtl/rtl.more.css",
+ "/widget/header/logo/rtl/rtl.more.css",
+ "/widget/header/rtl/rtl.more.css",
+ "/widget/header/site-switch/rtl/rtl.more.css",
+ "/widget/header/userbar-btn/rtl/rtl.more.css",
+ "/widget/keyboard/rtl/rtl.css",
+ "/widget/login-popup/rtl/rtl.css",
+ "/widget/search-box/rtl/rtl.more.css",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete/jquery.ui.autocomplete.css",
+ "/widget/ui/jquery/widget/jquery.ui.button/rtl/rtl.css",
+ "/widget/ui/prompt/prompt.css",
+ "/widget/ui/scrollable/scrollable.css",
+ "/widget/ui/sns-share/sns-share.css",
+ "/widget/ui/suggest/suggest.css",
+ "/widget/header/weather/rtl/rtl.more.css"
+ ],
+ "pkg/common_async_pri1_js_0_ma.js": [
+ "/widget/search-box/search-box-async.js",
+ "/widget/ui/localcookie/localcookie.js",
+ "/widget/ui/notice-pop/notice-pop.js",
+ "/widget/ui/popup/popup.js",
+ "/widget/ui/scrollable/scrollable.js",
+ "/widget/ui/sns-share/sns-share.js"
+ ],
+ "pkg/common_async_pri1_js_1_ma.js": [
+ "/widget/header/account/account-async.js",
+ "/widget/header/add-fav-bar/add-fav-bar-async.js",
+ "/widget/header/logo/logo-async.js",
+ "/widget/header/site-switch/site-switch-async.js",
+ "/widget/keyboard/keyboard-main.js",
+ "/widget/ui/calendar/calendar.js",
+ "/widget/ui/date-new/plugin/buddhist.js",
+ "/widget/ui/date-new/plugin/isl.js",
+ "/widget/ui/date-new/plugin/lunar.js",
+ "/widget/ui/date-new/plugin/rokuyou.js",
+ "/widget/ui/dropdownlist/dropdownlist.js",
+ "/widget/ui/sethome-ff/sethome-ff-c.js",
+ "/widget/ui/weather/weather.js",
+ "/widget/header/clock/calendar-async.js",
+ "/widget/header/clock/clock-async.js",
+ "/widget/header/userbar-btn/userbar-btn-async.js",
+ "/widget/keyboard/keyboard-async.js"
+ ],
+ "pkg/common_async_pri1_css_0_ma.css": [
+ "/widget/ui/calendar/calendar.css",
+ "/widget/ui/dropdownlist/dropdownlist.css",
+ "/widget/ui/popup/popup.css"
+ ]
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-sa.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-sa.json
new file mode 100755
index 000000000..c58a613cf
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-sa.json
@@ -0,0 +1,172 @@
+{
+ "pkg/autopack_common_base.js": [
+ "/static/lazyload.js",
+ "/static/mod.js",
+ "/static/BigPipe.js"
+ ],
+ "pkg/common_sync_pri1_js_0_sa.js": [
+ "/static/open-api/lazyload.js",
+ "/widget/ui/jquery/widget/jquery.addfav/jquery.addfav.js",
+ "/widget/ui/slide/plugin/animate.js",
+ "/widget/ui/slide/plugin/control.js",
+ "/widget/ui/slide/plugin/pagination.js",
+ "/widget/ui/slide/plugin/play.js",
+ "/widget/ui/suggest/suggest.js"
+ ],
+ "pkg/common_sync_pri1_js_1_sa.js": [
+ "/widget/ui/date-new/date.js",
+ "/widget/ui/jquery/widget/jquery.sethome/jquery.sethome.js",
+ "/widget/ui/jquery/widget/jquery.ui.button/jquery.ui.button.js",
+ "/widget/ui/weather/sa/sa_flat.js"
+ ],
+ "pkg/common_sync_pri1_js_2_sa.js": [
+ "/widget/ui/weather/sa/sa.js"
+ ],
+ "pkg/common_sync_pri1_js_3_sa.js": [
+ "/widget/header/account-test/account-test-async.js",
+ "/widget/header/skinbox/skin-mod.js",
+ "/widget/header/skinbox/skinbox-async.js",
+ "/widget/ui/jquery/widget/jquery.ui.tip/jquery.ui.tip.js"
+ ],
+ "pkg/common_sync_pri2_css_0_sa.css": [
+ "/widget/ui/dialog/dialog.css",
+ "/widget/ui/dropdownlist/dropdownlist.css",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete/jquery.ui.autocomplete.css",
+ "/widget/ui/scrollable/scrollable.css",
+ "/widget/ui/sns-share/sns-share.css"
+ ],
+ "pkg/common_sync_pri2_css_1_sa.css": [
+ "/widget/css-base/dist/base.rtl.css",
+ "/widget/css-base/dist/base.rtl.ie.css",
+ "/widget/css-flatbase/rtl/rtl.css",
+ "/widget/ui/css-ui/css-ui.css"
+ ],
+ "pkg/common_sync_pri1_css_0_sa.css": [
+ "/widget/ui/suggest/suggest.css"
+ ],
+ "pkg/common_sync_pri1_css_1_sa.css": [
+ "/widget/footer/rtl/rtl.css",
+ "/widget/header-flat/account/rtl/rtl.more.css",
+ "/widget/header-flat/add-fav-bar/rtl/rtl.more.css",
+ "/widget/header-flat/clock/rtl/rtl.more.css",
+ "/widget/header-flat/logo/rtl/rtl.more.css",
+ "/widget/header-flat/rtl/rtl.more.css",
+ "/widget/header-flat/site-switch/rtl/rtl.more.css",
+ "/widget/header-flat/userbar-btn-header/rtl/rtl.more.css",
+ "/widget/keyboard/rtl/rtl.css",
+ "/widget/search-box-new/rtl/rtl.more.css",
+ "/widget/ui/prompt/prompt.css",
+ "/widget/header-flat/weather/rtl/rtl.more.css"
+ ],
+ "pkg/common_sync_pri1_css_2_sa.css": [
+ "/widget/header/account/rtl/rtl.more.css",
+ "/widget/header/add-fav-bar/rtl/rtl.more.css",
+ "/widget/header/clock/rtl/rtl.more.css",
+ "/widget/header/logo/rtl/rtl.more.css",
+ "/widget/header/rtl/rtl.more.css",
+ "/widget/header/site-switch/rtl/rtl.more.css",
+ "/widget/header/userbar-btn/rtl/rtl.more.css",
+ "/widget/header/weather/rtl/rtl.more.css"
+ ],
+ "pkg/common_sync_pri1_css_3_sa.css": [
+ "/widget/header-flat/message/rtl/rtl.more.css",
+ "/widget/search-box-flat/flow/rtl/rtl.flow.css",
+ "/widget/search-box-flat/rtl/rtl.more.css",
+ "/widget/search-box/rtl/rtl.more.css"
+ ],
+ "pkg/common_sync_pri1_css_4_sa.css": [
+ "/widget/header/account-test/rtl-s/rtl.more.css",
+ "/widget/header/header-com/rtl-s/rtl.lv2.more.css",
+ "/widget/header/header-com/rtl-s/rtl.more.css",
+ "/widget/header/message/rtl/rtl.more.css",
+ "/widget/header/skin-trans/rtl/rtl.more.css",
+ "/widget/header/skinbox/rtl/rtl.more.css",
+ "/widget/header/userbar-btn-header/rtl-s/rtl.more.css",
+ "/widget/header/userbar-btn-test/rtl-s/rtl.more.css",
+ "/widget/login-popup/rtl/rtl.css",
+ "/widget/ui/jquery/widget/jquery.ui.button/rtl/rtl.css",
+ "/widget/ui/text-overflow/rtl/rtl.css"
+ ],
+ "pkg/common_async_pri1_js_0_sa.js": [
+ "/widget/header-flat/header-flat-async.js",
+ "/widget/search-box-new/search-box-new-async.js"
+ ],
+ "pkg/common_async_pri1_js_1_sa.js": [
+ "/widget/header-flat/account/account-async.js",
+ "/widget/header-flat/logo/logo-async.js",
+ "/widget/header-flat/site-switch/site-switch-async.js",
+ "/widget/header-flat/userbar-btn-header/userbar-btn-header-async.js",
+ "/widget/ui/calendar/calendar.js",
+ "/widget/ui/date-new/plugin/buddhist.js",
+ "/widget/ui/date-new/plugin/isl.js",
+ "/widget/ui/date-new/plugin/lunar.js",
+ "/widget/ui/date-new/plugin/rokuyou.js",
+ "/widget/ui/weather/weather_flat.js",
+ "/widget/header-flat/clock/calendar-async.js",
+ "/widget/header-flat/clock/clock-async.js"
+ ],
+ "pkg/common_async_pri1_js_2_sa.js": [
+ "/widget/header-flat/add-fav-bar/add-fav-bar-async.js",
+ "/widget/keyboard/keyboard-main.js",
+ "/widget/keyboard/keyboard-async.js"
+ ],
+ "pkg/common_async_pri1_js_3_sa.js": [
+ "/widget/header/account/account-async.js",
+ "/widget/header/add-fav-bar/add-fav-bar-async.js",
+ "/widget/header/clock/calendar-async.js",
+ "/widget/header/clock/clock-async.js",
+ "/widget/header/logo/logo-async.js",
+ "/widget/header/site-switch/site-switch-async.js",
+ "/widget/ui/sethome-ff/sethome-ff-c.js",
+ "/widget/ui/weather/weather.js",
+ "/widget/header/userbar-btn-header/userbar-btn-header-async.js",
+ "/widget/header/userbar-btn/userbar-btn-async.js"
+ ],
+ "pkg/common_async_pri1_js_4_sa.js": [
+ "/widget/search-box/search-box-async.js"
+ ],
+ "pkg/common_async_pri1_js_5_sa.js": [
+ "/widget/header/header-com/header-com-async.js",
+ "/widget/header/message/message-async.js",
+ "/widget/header/skin-trans/skin-trans-async.js",
+ "/widget/header/userbar-btn-test/userbar-btn-test-async.js",
+ "/widget/ui/popup/popup.js"
+ ],
+ "pkg/common_async_pri1_js_6_sa.js": [
+ "/widget/header-flat/message/message-async.js"
+ ],
+ "pkg/common_sync_pri2_js_0_sa.js": [
+ "/widget/ui/cookieless/cookieless.js",
+ "/widget/ui/date/date.js",
+ "/widget/ui/helper/helper.js",
+ "/widget/ui/jquery/1.8.3/jquery.min.js",
+ "/widget/ui/jquery/jquery.cookie.js",
+ "/widget/ui/jquery/jquery.json.js",
+ "/widget/ui/jquery/jquery.mousewheel.js",
+ "/widget/ui/jquery/jquery.ui.core.js",
+ "/widget/ui/jquery/jquery.ui.widget.js",
+ "/widget/ui/md5/md5.js",
+ "/widget/ui/message/src/message.js",
+ "/widget/ui/ut/ut.js",
+ "/widget/ui/drap/drap.js",
+ "/widget/ui/jquery/jquery.js",
+ "/widget/ui/jquery/widget/jquery.lazyload/jquery.lazyload.js",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete.html/jquery.ui.autocomplete.html.js",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete/jquery.ui.autocomplete.js",
+ "/widget/ui/jquery/widget/jquery.ui.position/jquery.ui.position.js",
+ "/widget/ui/localstorage/localstorage.js",
+ "/widget/ui/slide/slide.js",
+ "/widget/ui/time/time.js",
+ "/widget/ui/bubble/src/bubble.js",
+ "/widget/ui/cycletabs/cycletabs.js",
+ "/widget/ui/dialog/dialog.js",
+ "/widget/ui/localcookie/localcookie.js"
+ ],
+ "pkg/common_async_pri2_js_0_sa.js": [
+ "/widget/ui/monitor/monitor.js",
+ "/widget/ui/scrollable/scrollable.js",
+ "/widget/ui/slide/plugin/stop-at-edge.js",
+ "/widget/ui/sns-share/sns-share.js",
+ "/widget/ui/dropdownlist/dropdownlist.js"
+ ]
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-th.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-th.json
new file mode 100755
index 000000000..da3fb7a7c
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-th.json
@@ -0,0 +1,192 @@
+{
+ "pkg/autopack_common_base.js": [
+ "/static/lazyload.js",
+ "/static/mod.js",
+ "/static/BigPipe.js"
+ ],
+ "pkg/common_sync_pri1_js_0_th.js": [
+ "/static/open-api/lazyload.js",
+ "/widget/ui/suggest/suggest.js"
+ ],
+ "pkg/common_sync_pri1_js_1_th.js": [
+ "/widget/ui/date-new/date.js",
+ "/widget/ui/jquery/widget/jquery.addfav/jquery.addfav.js",
+ "/widget/ui/jquery/widget/jquery.sethome/jquery.sethome.js",
+ "/widget/ui/jquery/widget/jquery.ui.button/jquery.ui.button.js",
+ "/widget/ui/slide/plugin/control.js",
+ "/widget/ui/slide/plugin/pagination.js",
+ "/widget/ui/slide/plugin/play.js",
+ "/widget/ui/slide/slide.js",
+ "/widget/ui/weather/th/th_flat.js",
+ "/widget/ui/slide/plugin/animate.js"
+ ],
+ "pkg/common_sync_pri1_js_2_th.js": [
+ "/widget/ui/weather/th/th.js"
+ ],
+ "pkg/common_sync_pri1_js_3_th.js": [
+ "/widget/ui/bubble/src/bubble.js",
+ "/widget/ui/dialog/dialog.js",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete.html/jquery.ui.autocomplete.html.js",
+ "/widget/ui/tpl/tpl.js"
+ ],
+ "pkg/common_sync_pri1_js_4_th.js": [
+ "/widget/header/skinbox/skin-mod.js",
+ "/widget/header/skinbox/skinbox-async.js",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete/jquery.ui.autocomplete.js",
+ "/widget/ui/jquery/widget/jquery.ui.datepicker/jquery.ui.datepicker.js",
+ "/widget/ui/jquery/widget/jquery.ui.position/jquery.ui.position.js",
+ "/widget/ui/jquery/widget/jquery.ui.tip/jquery.ui.tip.js"
+ ],
+ "pkg/common_sync_pri2_css_0_th.css": [
+ "/widget/ui/scrollable/scrollable.css",
+ "/widget/ui/sns-share/sns-share.css"
+ ],
+ "pkg/common_sync_pri2_css_1_th.css": [
+ "/widget/css-base/dist/base.ltr.css",
+ "/widget/css-base/dist/base.ltr.ie.css",
+ "/widget/css-flatbase/ltr/ltr.css",
+ "/widget/ui/css-ui/css-ui.css"
+ ],
+ "pkg/common_sync_pri1_css_0_th.css": [
+ "/widget/ui/suggest/suggest.css"
+ ],
+ "pkg/common_sync_pri1_css_1_th.css": [
+ "/widget/header-flat/account/ltr/ltr.more.css",
+ "/widget/header-flat/banner-site/ltr/ltr.more.css",
+ "/widget/header-flat/clock/ltr/ltr.more.css",
+ "/widget/header-flat/logo/ltr/ltr.more.css",
+ "/widget/header-flat/ltr/ltr.more.css",
+ "/widget/header-flat/site-switch/ltr/ltr.more.css",
+ "/widget/header-flat/userbar-btn-header/ltr/ltr.more.css",
+ "/widget/search-box-new/ltr/ltr.more.css",
+ "/widget/ui/dropdownlist/dropdownlist.css",
+ "/widget/ui/prompt/prompt.css",
+ "/widget/header-flat/weather/ltr/ltr.more.css"
+ ],
+ "pkg/common_sync_pri1_css_2_th.css": [
+ "/widget/footer/ltr/ltr.css"
+ ],
+ "pkg/common_sync_pri1_css_3_th.css": [
+ "/widget/header/account/ltr/ltr.more.css",
+ "/widget/header/add-fav-bar/ltr/ltr.more.css",
+ "/widget/header/clock/ltr/ltr.more.css",
+ "/widget/header/logo/ltr/ltr.more.css",
+ "/widget/header/ltr/ltr.more.css",
+ "/widget/header/site-switch/ltr/ltr.more.css",
+ "/widget/header/userbar-btn/ltr/ltr.more.css",
+ "/widget/header/weather/ltr/ltr.more.css",
+ "/widget/ui/jquery/widget/jquery.ui.datepicker/jquery.ui.datepicker.css"
+ ],
+ "pkg/common_sync_pri1_css_4_th.css": [
+ "/widget/search-box-flat/flow/ltr/ltr.flow.css",
+ "/widget/search-box-flat/ltr/ltr.more.css",
+ "/widget/search-box/ltr/ltr.more.css",
+ "/widget/ui/dialog/dialog.css"
+ ],
+ "pkg/common_sync_pri1_css_5_th.css": [
+ "/widget/header/header-com/ltr-s/ltr.lv2.more.css",
+ "/widget/ui/text-overflow/ltr/ltr.css"
+ ],
+ "pkg/common_sync_pri1_css_6_th.css": [
+ "/widget/header/account-test/ltr-s/ltr.more.css",
+ "/widget/header/header-com/ltr-s/ltr.more.css",
+ "/widget/header/message/ltr/ltr.more.css",
+ "/widget/header/skin-trans/ltr/ltr.more.css",
+ "/widget/header/skinbox/ltr/ltr.more.css",
+ "/widget/header/userbar-btn-header/ltr-s/ltr.more.css",
+ "/widget/header/userbar-btn-test/ltr-s/ltr.more.css",
+ "/widget/login-popup/ltr/ltr.css",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete/jquery.ui.autocomplete.css",
+ "/widget/ui/jquery/widget/jquery.ui.button/ltr/ltr.css",
+ "/widget/ui/lottery/lottery.css"
+ ],
+ "pkg/common_sync_pri1_css_7_th.css": [
+ "/widget/header-flat/simple-nav/ltr/ltr.more.css"
+ ],
+ "pkg/common_sync_pri1_css_8_th.css": [
+ "/widget/header-flat/add-fav-bar/ltr/ltr.more.css",
+ "/widget/header-flat/message/ltr/ltr.more.css"
+ ],
+ "pkg/common_async_pri1_js_0_th.js": [
+ "/widget/header-flat/header-flat-async.js",
+ "/widget/search-box-new/search-box-new-async.js"
+ ],
+ "pkg/common_async_pri1_js_1_th.js": [
+ "/widget/header-flat/account/account-async.js",
+ "/widget/header-flat/banner-site/banner-site-async.js",
+ "/widget/header-flat/logo/logo-async.js",
+ "/widget/header-flat/site-switch/site-switch-async.js",
+ "/widget/header-flat/userbar-btn-header/userbar-btn-header-async.js",
+ "/widget/ui/calendar/calendar.js",
+ "/widget/ui/date-new/plugin/buddhist.js",
+ "/widget/ui/date-new/plugin/isl.js",
+ "/widget/ui/date-new/plugin/lunar.js",
+ "/widget/ui/date-new/plugin/rokuyou.js",
+ "/widget/ui/dropdownlist/dropdownlist.js",
+ "/widget/ui/weather/weather_flat.js",
+ "/widget/header-flat/clock/calendar-async.js",
+ "/widget/header-flat/clock/clock-async.js"
+ ],
+ "pkg/common_async_pri1_js_2_th.js": [
+ "/widget/header/account-test/account-test-async.js",
+ "/widget/header/account/account-async.js",
+ "/widget/header/add-fav-bar/add-fav-bar-async.js",
+ "/widget/header/clock/calendar-async.js",
+ "/widget/header/clock/clock-async.js",
+ "/widget/header/logo/logo-async.js",
+ "/widget/header/site-switch/site-switch-async.js",
+ "/widget/ui/sethome-ff/sethome-ff-c.js",
+ "/widget/ui/weather/weather.js",
+ "/widget/header/userbar-btn/userbar-btn-async.js"
+ ],
+ "pkg/common_async_pri1_js_3_th.js": [
+ "/widget/header/header-com/header-com-async.js",
+ "/widget/header/userbar-btn-header/userbar-btn-header-async.js",
+ "/widget/header/userbar-btn-test/userbar-btn-test-async.js",
+ "/widget/search-box/search-box-async.js",
+ "/widget/ui/notice-pop/notice-pop.js",
+ "/widget/ui/popup/popup.js"
+ ],
+ "pkg/common_async_pri1_js_4_th.js": [
+ "/widget/header/message/message-async.js",
+ "/widget/header/skin-trans/skin-trans-async.js",
+ "/widget/ui/lottery/lottery.js"
+ ],
+ "pkg/common_async_pri1_js_5_th.js": [
+ "/widget/header-flat/simple-nav/simple-nav-async.js"
+ ],
+ "pkg/common_async_pri1_js_6_th.js": [
+ "/widget/header-flat/add-fav-bar/add-fav-bar-async.js",
+ "/widget/header-flat/message/message-async.js"
+ ],
+ "pkg/common_async_pri1_js_7_th.js": [
+ "/widget/search-box-4ps/search-box-4ps-async.js"
+ ],
+ "pkg/common_sync_pri2_js_0_th.js": [
+ "/widget/ui/cookieless/cookieless.js",
+ "/widget/ui/date/date.js",
+ "/widget/ui/helper/helper.js",
+ "/widget/ui/jquery/1.8.3/jquery.min.js",
+ "/widget/ui/jquery/jquery.cookie.js",
+ "/widget/ui/jquery/jquery.json.js",
+ "/widget/ui/jquery/jquery.mousewheel.js",
+ "/widget/ui/jquery/jquery.ui.core.js",
+ "/widget/ui/jquery/jquery.ui.widget.js",
+ "/widget/ui/md5/md5.js",
+ "/widget/ui/message/src/message.js",
+ "/widget/ui/ut/ut.js",
+ "/widget/ui/jquery/jquery.js",
+ "/widget/ui/jquery/widget/jquery.lazyload/jquery.lazyload.js",
+ "/widget/ui/jquery/widget/jquery.placeholder/jquery.placeholder.js",
+ "/widget/ui/localstorage/localstorage.js",
+ "/widget/ui/time/time.js",
+ "/widget/ui/cycletabs/cycletabs.js",
+ "/widget/ui/drap/drap.js",
+ "/widget/ui/localcookie/localcookie.js"
+ ],
+ "pkg/common_async_pri2_js_0_th.js": [
+ "/widget/ui/monitor/monitor.js",
+ "/widget/ui/scrollable/scrollable.js",
+ "/widget/ui/sns-share/sns-share.js"
+ ]
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-tw.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-tw.json
new file mode 100755
index 000000000..e48ae9da0
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-tw.json
@@ -0,0 +1,139 @@
+{
+ "pkg/autopack_common_base.js": [
+ "/static/lazyload.js",
+ "/static/mod.js",
+ "/static/BigPipe.js"
+ ],
+ "pkg/common_sync_pri1_js_0_tw.js": [
+ "/static/open-api/lazyload.js",
+ "/widget/ui/date-new/date.js",
+ "/widget/ui/jquery/widget/jquery.addfav/jquery.addfav.js",
+ "/widget/ui/jquery/widget/jquery.sethome/jquery.sethome.js",
+ "/widget/ui/jquery/widget/jquery.ui.button/jquery.ui.button.js",
+ "/widget/ui/suggest/suggest.js",
+ "/widget/ui/weather/tw/tw_flat.js"
+ ],
+ "pkg/common_sync_pri1_js_1_tw.js": [
+ "/widget/ui/weather/tw/tw.js"
+ ],
+ "pkg/common_sync_pri1_js_2_tw.js": [
+ "/widget/header/skinbox/skin-mod.js",
+ "/widget/header/skinbox/skinbox-async.js",
+ "/widget/ui/bubble/src/bubble.js",
+ "/widget/ui/jquery/widget/jquery.ui.tip/jquery.ui.tip.js"
+ ],
+ "pkg/common_sync_pri2_css_0_tw.css": [
+ "/widget/ui/dialog/dialog.css",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete/jquery.ui.autocomplete.css",
+ "/widget/ui/scrollable/scrollable.css",
+ "/widget/ui/sns-share/sns-share.css"
+ ],
+ "pkg/common_sync_pri2_css_1_tw.css": [
+ "/widget/css-base/dist/base.ltr.css",
+ "/widget/css-base/dist/base.ltr.ie.css",
+ "/widget/css-flatbase/ltr/ltr.css",
+ "/widget/ui/css-ui/css-ui.css"
+ ],
+ "pkg/common_sync_pri1_css_0_tw.css": [
+ "/widget/header-flat/account/ltr/ltr.more.css",
+ "/widget/header-flat/userbar-btn-header/ltr/ltr.more.css",
+ "/widget/ui/suggest/suggest.css"
+ ],
+ "pkg/common_sync_pri1_css_1_tw.css": [
+ "/widget/header-flat/clock/ltr/ltr.more.css",
+ "/widget/header-flat/logo/ltr/ltr.more.css",
+ "/widget/header-flat/ltr/ltr.more.css",
+ "/widget/search-box-new/ltr/ltr.more.css",
+ "/widget/ui/dropdownlist/dropdownlist.css",
+ "/widget/ui/prompt/prompt.css",
+ "/widget/header-flat/weather/ltr/ltr.more.css"
+ ],
+ "pkg/common_sync_pri1_css_2_tw.css": [
+ "/widget/footer/ltr/ltr.css",
+ "/widget/header/account-test/ltr-s/ltr.more.css",
+ "/widget/header/add-fav-bar/ltr/ltr.more.css",
+ "/widget/header/clock/ltr/ltr.more.css",
+ "/widget/header/header-com/ltr-s/ltr.more.css",
+ "/widget/header/header-com/ltr-s/ltr.ps.css",
+ "/widget/header/logo/ltr/ltr.more.css",
+ "/widget/header/message/ltr/ltr.more.css",
+ "/widget/header/site-switch/ltr/ltr.more.css",
+ "/widget/header/skin-trans/ltr/ltr.more.css",
+ "/widget/header/userbar-btn-header/ltr-s/ltr.more.css",
+ "/widget/header/userbar-btn-test/ltr-s/ltr.more.css",
+ "/widget/header/weather/ltr/ltr.more.css",
+ "/widget/login-popup/ltr/ltr.css",
+ "/widget/ui/jquery/widget/jquery.ui.button/ltr/ltr.css"
+ ],
+ "pkg/common_sync_pri1_css_3_tw.css": [
+ "/widget/header/skinbox/ltr/ltr.more.css"
+ ],
+ "pkg/common_async_pri1_js_0_tw.js": [
+ "/widget/header-flat/clock/calendar-async.js",
+ "/widget/header-flat/header-flat-async.js",
+ "/widget/search-box-new/search-box-new-async.js"
+ ],
+ "pkg/common_async_pri1_js_1_tw.js": [
+ "/widget/header-flat/account/account-async.js",
+ "/widget/header-flat/logo/logo-async.js",
+ "/widget/header-flat/userbar-btn-header/userbar-btn-header-async.js",
+ "/widget/ui/calendar/calendar.js",
+ "/widget/ui/date-new/plugin/buddhist.js",
+ "/widget/ui/date-new/plugin/isl.js",
+ "/widget/ui/date-new/plugin/lunar.js",
+ "/widget/ui/date-new/plugin/rokuyou.js",
+ "/widget/ui/dropdownlist/dropdownlist.js",
+ "/widget/ui/weather/weather_flat.js",
+ "/widget/header-flat/clock/clock-async.js"
+ ],
+ "pkg/common_async_pri1_js_2_tw.js": [
+ "/widget/header/account-test/account-test-async.js",
+ "/widget/header/add-fav-bar/add-fav-bar-async.js",
+ "/widget/header/clock/calendar-async.js",
+ "/widget/header/clock/clock-async.js",
+ "/widget/header/header-com/header-com-async.js",
+ "/widget/header/logo/logo-async.js",
+ "/widget/header/message/message-async.js",
+ "/widget/header/site-switch/site-switch-async.js",
+ "/widget/search-box-4ps/search-box-4ps-async.js",
+ "/widget/ui/popup/popup.js",
+ "/widget/ui/sethome-ff/sethome-ff-c.js",
+ "/widget/ui/weather/weather.js",
+ "/widget/header/userbar-btn-header/userbar-btn-header-async.js",
+ "/widget/header/userbar-btn-test/userbar-btn-test-async.js"
+ ],
+ "pkg/common_async_pri1_js_3_tw.js": [
+ "/widget/header/skin-trans/skin-trans-async.js",
+ "/widget/ui/notice-pop/notice-pop.js"
+ ],
+ "pkg/common_sync_pri2_js_0_tw.js": [
+ "/widget/ui/cookieless/cookieless.js",
+ "/widget/ui/date/date.js",
+ "/widget/ui/helper/helper.js",
+ "/widget/ui/jquery/1.8.3/jquery.min.js",
+ "/widget/ui/jquery/jquery.cookie.js",
+ "/widget/ui/jquery/jquery.json.js",
+ "/widget/ui/jquery/jquery.mousewheel.js",
+ "/widget/ui/jquery/jquery.ui.core.js",
+ "/widget/ui/jquery/jquery.ui.widget.js",
+ "/widget/ui/md5/md5.js",
+ "/widget/ui/message/src/message.js",
+ "/widget/ui/ut/ut.js",
+ "/widget/ui/drap/drap.js",
+ "/widget/ui/jquery/jquery.js",
+ "/widget/ui/jquery/widget/jquery.lazyload/jquery.lazyload.js",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete.html/jquery.ui.autocomplete.html.js",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete/jquery.ui.autocomplete.js",
+ "/widget/ui/jquery/widget/jquery.ui.position/jquery.ui.position.js",
+ "/widget/ui/localstorage/localstorage.js",
+ "/widget/ui/time/time.js",
+ "/widget/ui/cycletabs/cycletabs.js",
+ "/widget/ui/dialog/dialog.js",
+ "/widget/ui/localcookie/localcookie.js"
+ ],
+ "pkg/common_async_pri2_js_0_tw.js": [
+ "/widget/ui/monitor/monitor.js",
+ "/widget/ui/scrollable/scrollable.js",
+ "/widget/ui/sns-share/sns-share.js"
+ ]
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-vn.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-vn.json
new file mode 100755
index 000000000..904749c07
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-vn.json
@@ -0,0 +1,140 @@
+{
+ "pkg/autopack_common_base.js": [
+ "/static/lazyload.js",
+ "/static/mod.js",
+ "/static/BigPipe.js"
+ ],
+ "pkg/common_sync_pri1_js_0_vn.js": [
+ "/static/open-api/lazyload.js",
+ "/widget/ui/date-new/date.js",
+ "/widget/ui/date/date.js",
+ "/widget/ui/jquery/widget/jquery.addfav/jquery.addfav.js",
+ "/widget/ui/jquery/widget/jquery.sethome/jquery.sethome.js",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete.html/jquery.ui.autocomplete.html.js",
+ "/widget/ui/jquery/widget/jquery.ui.button/jquery.ui.button.js",
+ "/widget/ui/suggest/suggest.js",
+ "/widget/ui/weather/vn/vn_flat.js"
+ ],
+ "pkg/common_sync_pri1_js_1_vn.js": [
+ "/widget/ui/bubble/src/bubble.js"
+ ],
+ "pkg/common_sync_pri1_js_2_vn.js": [
+ "/widget/ui/weather/vn/vn.js"
+ ],
+ "pkg/common_sync_pri1_js_3_vn.js": [
+ "/widget/header/skinbox/skin-mod.js",
+ "/widget/header/skinbox/skinbox-async.js",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete/jquery.ui.autocomplete.js",
+ "/widget/ui/jquery/widget/jquery.ui.datepicker/jquery.ui.datepicker.js",
+ "/widget/ui/jquery/widget/jquery.ui.position/jquery.ui.position.js",
+ "/widget/ui/jquery/widget/jquery.ui.tip/jquery.ui.tip.js"
+ ],
+ "pkg/common_sync_pri1_css_0_vn.css": [
+ "/widget/ui/dropdownlist/dropdownlist.css",
+ "/widget/ui/jquery/widget/jquery.ui.autocomplete/jquery.ui.autocomplete.css",
+ "/widget/ui/prompt/prompt.css",
+ "/widget/ui/scrollable/scrollable.css",
+ "/widget/ui/suggest/suggest.css"
+ ],
+ "pkg/common_sync_pri1_css_1_vn.css": [
+ "/widget/header-flat/account/ltr/ltr.more.css",
+ "/widget/header-flat/clock/ltr/ltr.more.css",
+ "/widget/header-flat/logo/ltr/ltr.more.css",
+ "/widget/header-flat/ltr/ltr.more.css",
+ "/widget/header-flat/site-switch/ltr/ltr.more.css",
+ "/widget/header-flat/userbar-btn-header/ltr/ltr.more.css",
+ "/widget/header-flat/weather/ltr/ltr.more.css",
+ "/widget/search-box-new/ltr/ltr.more.css"
+ ],
+ "pkg/common_sync_pri1_css_2_vn.css": [
+ "/widget/footer/ltr/ltr.css",
+ "/widget/search-box-flat/flow/ltr/ltr.flow.css",
+ "/widget/search-box-flat/ltr/ltr.more.css",
+ "/widget/search-box/ltr/ltr.more.css"
+ ],
+ "pkg/common_sync_pri1_css_3_vn.css": [
+ "/widget/header/account-test/ltr-s/ltr.more.css",
+ "/widget/header/account/ltr/ltr.more.css",
+ "/widget/header/add-fav-bar/ltr/ltr.more.css",
+ "/widget/header/clock/ltr/ltr.more.css",
+ "/widget/header/header-com/ltr-s/ltr.more.css",
+ "/widget/header/logo/ltr/ltr.more.css",
+ "/widget/header/ltr/ltr.more.css",
+ "/widget/header/message/ltr/ltr.more.css",
+ "/widget/header/site-switch/ltr/ltr.more.css",
+ "/widget/header/skin-trans/ltr/ltr.more.css",
+ "/widget/header/skinbox/ltr/ltr.more.css",
+ "/widget/header/tear-page/ltr/ltr.more.css",
+ "/widget/header/userbar-btn-header/ltr-s/ltr.more.css",
+ "/widget/header/userbar-btn-test/ltr-s/ltr.more.css",
+ "/widget/header/userbar-btn/ltr/ltr.more.css",
+ "/widget/header/weather/ltr/ltr.more.css",
+ "/widget/login-popup/ltr/ltr.css",
+ "/widget/ui/jquery/widget/jquery.ui.button/ltr/ltr.css",
+ "/widget/ui/jquery/widget/jquery.ui.datepicker/jquery.ui.datepicker.css",
+ "/widget/ui/lottery/lottery.css"
+ ],
+ "pkg/common_async_pri1_js_0_vn.js": [
+ "/widget/header-flat/header-flat-async.js",
+ "/widget/search-box-new/search-box-new-async.js",
+ "/widget/ui/date-new/plugin/lunar.js",
+ "/widget/ui/scrollable/scrollable.js"
+ ],
+ "pkg/common_async_pri1_js_1_vn.js": [
+ "/widget/header-flat/account/account-async.js",
+ "/widget/header-flat/logo/logo-async.js",
+ "/widget/header-flat/site-switch/site-switch-async.js",
+ "/widget/header-flat/userbar-btn-header/userbar-btn-header-async.js",
+ "/widget/ui/calendar/calendar.js",
+ "/widget/ui/date-new/plugin/buddhist.js",
+ "/widget/ui/date-new/plugin/isl.js",
+ "/widget/ui/date-new/plugin/rokuyou.js",
+ "/widget/ui/dropdownlist/dropdownlist.js",
+ "/widget/ui/weather/weather_flat.js",
+ "/widget/header-flat/clock/calendar-async.js",
+ "/widget/header-flat/clock/clock-async.js"
+ ],
+ "pkg/common_async_pri1_js_2_vn.js": [
+ "/widget/search-box/search-box-async.js"
+ ],
+ "pkg/common_async_pri1_js_3_vn.js": [
+ "/widget/header/account-test/account-test-async.js",
+ "/widget/header/account/account-async.js",
+ "/widget/header/add-fav-bar/add-fav-bar-async.js",
+ "/widget/header/clock/calendar-async.js",
+ "/widget/header/clock/clock-async.js",
+ "/widget/header/header-com/header-com-async.js",
+ "/widget/header/logo/logo-async.js",
+ "/widget/header/message/message-async.js",
+ "/widget/header/site-switch/site-switch-async.js",
+ "/widget/header/skin-trans/skin-trans-async.js",
+ "/widget/header/tear-page/tear-page-async.js",
+ "/widget/ui/lottery/lottery.js",
+ "/widget/ui/notice-pop/notice-pop.js",
+ "/widget/ui/popup/popup.js",
+ "/widget/ui/sethome-ff/sethome-ff-c.js",
+ "/widget/ui/weather/weather.js",
+ "/widget/header/userbar-btn-header/userbar-btn-header-async.js",
+ "/widget/header/userbar-btn-test/userbar-btn-test-async.js",
+ "/widget/header/userbar-btn/userbar-btn-async.js"
+ ],
+ "pkg/common_sync_pri2_js_0_vn.js": [
+ "/widget/ui/cookieless/cookieless.js",
+ "/widget/ui/helper/helper.js",
+ "/widget/ui/jquery/1.8.3/jquery.min.js",
+ "/widget/ui/jquery/jquery.cookie.js",
+ "/widget/ui/jquery/jquery.json.js",
+ "/widget/ui/jquery/jquery.mousewheel.js",
+ "/widget/ui/jquery/jquery.ui.core.js",
+ "/widget/ui/jquery/jquery.ui.widget.js",
+ "/widget/ui/md5/md5.js",
+ "/widget/ui/message/src/message.js",
+ "/widget/ui/ut/ut.js",
+ "/widget/ui/jquery/jquery.js",
+ "/widget/ui/jquery/widget/jquery.lazyload/jquery.lazyload.js",
+ "/widget/ui/localstorage/localstorage.js",
+ "/widget/ui/time/time.js",
+ "/widget/ui/cycletabs/cycletabs.js",
+ "/widget/ui/localcookie/localcookie.js"
+ ]
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-www.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-www.json
new file mode 100644
index 000000000..51226e8e0
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fis-pack-www.json
@@ -0,0 +1,41 @@
+{
+ "pkg/autopack_common_base.js": [
+ "/static/lazyload.js",
+ "/static/mod.js",
+ "/static/BigPipe.js"
+ ],
+ "pkg/common_sync_pri1_js_0_www.js": [
+ "/static/open-api/lazyload.js",
+ "/widget/ui/suggest/suggest.js"
+ ],
+ "pkg/common_sync_pri2_js_0_www.js": [
+ "/widget/ui/cookieless/cookieless.js",
+ "/widget/ui/date/date.js",
+ "/widget/ui/helper/helper.js",
+ "/widget/ui/jquery/1.8.3/jquery.min.js",
+ "/widget/ui/jquery/jquery.cookie.js",
+ "/widget/ui/jquery/jquery.json.js",
+ "/widget/ui/jquery/jquery.mousewheel.js",
+ "/widget/ui/jquery/jquery.ui.core.js",
+ "/widget/ui/jquery/jquery.ui.widget.js",
+ "/widget/ui/md5/md5.js",
+ "/widget/ui/message/src/message.js",
+ "/widget/ui/ut/ut.js",
+ "/widget/ui/jquery/jquery.js",
+ "/widget/ui/jquery/widget/jquery.lazyload/jquery.lazyload.js",
+ "/widget/ui/jquery/widget/jquery.placeholder/jquery.placeholder.js",
+ "/widget/ui/localstorage/localstorage.js",
+ "/widget/ui/scrollable/scrollable.js",
+ "/widget/ui/slide/plugin/control.js",
+ "/widget/ui/slide/plugin/pagination.js",
+ "/widget/ui/slide/plugin/play.js",
+ "/widget/ui/slide/slide.js",
+ "/widget/ui/time/time.js",
+ "/widget/ui/cycletabs/cycletabs.js",
+ "/widget/ui/localcookie/localcookie.js",
+ "/widget/ui/slide/plugin/animate.js"
+ ],
+ "pkg/common_sync_pri2_js_1_www.js": [
+ "/widget/ui/tpl/tpl.js"
+ ]
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fix-tpldir.sh b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fix-tpldir.sh
new file mode 100755
index 000000000..8fadeed36
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/fix-tpldir.sh
@@ -0,0 +1,4 @@
+find test/data -name data.php | xargs perl -pi -e "s|'tplDir' => 'page/lv2/|'tplDir' => 'lv2/page/|g"
+find test/data -name data.php | xargs perl -pi -e "s|'tplDir' => 'page/home/|'tplDir' => 'home/page/|g"
+
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/json2php.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/json2php.php
new file mode 100755
index 000000000..a279d2c0c
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/json2php.php
@@ -0,0 +1,32 @@
+'
+ );
+ }
+ }
+}else{
+
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/page/layout/base.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/page/layout/base.tpl
new file mode 100755
index 000000000..73c2f245b
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/page/layout/base.tpl
@@ -0,0 +1,173 @@
+<%* FIS迁移后,将base.tpl/base-rtl.tpl合并为一个,因为它们最大的差别就是dir="ltr/rtl"的区别;后续,这个可以在cms的base中配置$head.dir *%>
+<%assign var="head" value=$root.head%>
+<%assign var="body" value=$root.body%>
+<%assign var="html" value=$root.html%>
+<%cdn url="<%$head.cdn%>"%>
+
+<%if empty($head.dir)%>
+ <%$head.dir='ltr'%>
+<%/if%>
+
+<%$htmlParam = "xmlns:ie<%if !empty($head.dir)%> dir=\"<%$head.dir%>\"<%/if%><%if !empty($body.snsShare)%> itemscope itemtype=\"http://schema.org/Article\" xmlns:fb=\"http://ogp.me/ns/fb#\"<%/if%><%if !empty($head.lang)%> lang=\"<%$head.lang%>\"<%/if%><%if $head.flowLayout === "2"%> class=\"w960\"<%elseif $head.flowLayout === "3"%> class=\"w1020\"<%/if%>"%>
+
+<%html framework="common:static/mod.js" "<%$htmlParam%>" fid="globalhao123" smapleRate="1"%>
+ <%head%>
+
+ <%* 预取dns*%>
+ <%if !empty($head.prefetch)%>
+ <%foreach $head.prefetch as $prefetch%>
+ dns-<%/if%>prefetch" href="<%$prefetch%>" />
+ <%/foreach%>
+ <%if !empty($head.prefetchOff)%>
+
+ <%/if%>
+ <%/if%>
+
+
<%$head.title|escape:"html"%>
+ ">
+ ">
+ <%*巴西GOOGLE SEO meta*%>
+ <%if !empty($head.forGoogleSeo)%>
+
+ <%/if%>
+ <%* 其它meta信息 *%>
+ <%if !empty($head.metas)%>
+ <%foreach $head.metas as $item%>
+
+ <%/foreach%>
+ <%/if%>
+ <%* SEO canonical参数*%>
+ <%if !empty($head.canonical)%>
+
+ <%/if%>
+ <%if !empty($body.snsShare)%>
+
+
+
+
+ <%/if%>
+ <%if !empty($html.prefetchContents)%><%$html.prefetchContents%><%/if%>
+ <%*Global var*%>
+ <%widget name="common:widget/global-conf/global-conf.tpl"%>
+
+ <%block name="headInfo"%><%/block%>
+ <%if empty($head.noBaseCss)%>
+ <%widget name="common:widget/css-base/css-base.tpl"%>
+ <%/if%>
+ <%foreach $head.confCSS as $value%>
+ <%if !empty($value.href)%> <%/if%>
+ <%/foreach%>
+ <%strip%>
+
+
+
+ <%/strip%>
+ <%* 标示fis产出的 inline 、link css位置*%>
+ <%cssposition%>
+ <%if !empty($head.fontFamily) || !empty($head.fontSize)%>
+ <%style%>
+ <%if !empty($head.fontFamily)%>
+ html body {font-family:<%$head.fontFamily%>;}
+ <%/if%>
+ <%if !empty($head.fontSize)%>
+ body {font-size:<%$head.fontSize%>;}
+ <%/if%>
+ <%/style%>
+ <%/if%>
+ <%$html.head%>
+ <%$html.baseHead%>
+ <%$html.hotsiteMergeHead%>
+ <%/head%>
+ <%* web speed 打点*%>
+ <%block name="vsWebspeedHead"%><%/block%>
+
+ <%body class="<%if !empty($head.flowLayout)%>flow-on<%/if%>"%>
+ <%if $head.pageLevel == 1 && !$head.noCssHook %>
+ <%csshook%>
+ <%/if%>
+ <%*Flow layout*%>
+ <%if !empty($head.flowLayout)%>
+
+ <%*引入动态判断布局js*%>
+
+ <%/if%>
+ <%* UT log *%>
+
+ <%if !empty($head.trackSAction) && !empty($head.trackSAction.tnExp) && preg_match($head.trackSAction.tnExp, $root.urlparam['tn'])%>
+ <%* 特殊统计代码验证 *%>
+ <%$head.trackSAction.code%>
+ <%/if%>
+
+ <%if !empty($head.effectiveMeature)%>
+
+ <%/if%>
+
+ <%if empty($head.noBaseUt)%>
+ <%widget name="common:widget/ut-log/ut-log.tpl"%>
+ <%/if%>
+
+ <%block name="layout"%><%/block%>
+
+
+ <%if !empty($head.statusOK)%><%$head.statusOK%><%/if%>
+ <%* web speed 打点*%>
+ <%block name="vsWebspeedBody"%><%/block%>
+ <%/body%>
+
+ <%foreach $head.confJS as $value%>
+ <%if !empty($value.src)%>
+
+ <%/if%>
+ <%/foreach%>
+ <%$html.foot%>
+ <%$html.baseFoot%>
+<%/html%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/block.widget_inline.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/block.widget_inline.php
new file mode 100755
index 000000000..e3ea1c0df
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/block.widget_inline.php
@@ -0,0 +1,26 @@
+ $value){
+ if($value instanceof Smarty_Variable){
+ $tpl_vars[$key] = $value;
+ } else {
+ $tpl_vars[$key] = new Smarty_Variable($value);
+ }
+ }
+ }
+ public static function pop(&$tpl_vars){
+ $tpl_vars = array_pop(self::$_vars);
+ }
+}
+
+function smarty_block_widget_inline($params, $content, Smarty_Internal_Template $template, &$repeat){
+ if(!$repeat){//block 定义结束
+ FISBlockFisWidget::pop($template->tpl_vars);
+ return $content;
+ }else{//block 定义开始
+ FISBlockFisWidget::push($params, $template->tpl_vars);
+ }
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/compiler.cdn.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/compiler.cdn.php
new file mode 100755
index 000000000..e7b285c65
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/compiler.cdn.php
@@ -0,0 +1,13 @@
+';
+ return $strCode;
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/compiler.csshook.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/compiler.csshook.php
new file mode 100755
index 000000000..72fb929b2
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/compiler.csshook.php
@@ -0,0 +1,10 @@
+';
+ return $strCode;
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/compiler.cssposition.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/compiler.cssposition.php
new file mode 100755
index 000000000..e299c15d5
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/compiler.cssposition.php
@@ -0,0 +1,10 @@
+';
+ return $strCode;
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/compiler.fis_require.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/compiler.fis_require.php
new file mode 100755
index 000000000..bf3e0b474
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/compiler.fis_require.php
@@ -0,0 +1,230 @@
+ array('', ''),
+ 'symbols' => array()
+ );
+ }
+ //如果是lib,先探测是否在common里
+ if($info['is_lib']){
+ if((isset(self::$map[$framework]['common']) || self::loadMap('common',$framework)) && isset(self::$map[$framework]['common']['resource'][$id])){
+ $map = &self::$map[$framework]['common'];
+ $info = &$map['resource'][$id];
+ }
+ }
+ $collections = &self::$collection[$ext];
+ //加载依赖文件
+ foreach($info['requires'] as &$require){
+ //if(isset($collections['symbols'][$id])) continue;
+ self::addSymbol($require[0], $require[1], $framework);
+ }
+ //如果方案中已经有了,就退出
+ if($collections['symbols'][$id]) return;
+ //获取包id
+ $pacakges_id = $map['resource'][$id]['packages'];
+
+ if($pacakges_id){
+ //如果有包,就用这个包
+ $info = &$map['package'][$pacakges_id];
+ $collections['symbols'] = array_merge($collections['symbols'], $info['symbols_map']);
+ } else {
+ //无包就用单独文件
+ $collections['symbols'][$id] = 1;
+ }
+ $collections['html'] = self::renderResource($info, $collections['html']);
+ }
+
+ private static function renderResource(&$info, $ret = array('', '')){
+ $crlf = "\n";
+ $html = '';
+ if($info['ext'] == 'js'){
+ if($info['is_sync']){
+ $html = $crlf . '';
+ } else {
+ if(isset($info['symbols'])){
+ $html = $crlf . '';
+ } else {
+ $html = $crlf . '';
+ }
+ }
+ } else if($info['ext'] == 'css') {
+ $html = $crlf . ' ';
+ }
+ if($info['module'] == 'common'){
+ $ret[0] .= $html;
+ } else {
+ $ret[1] .= $html;
+ }
+ return $ret;
+ }
+
+ public function registerResourceMap($map, $module, $key = 'pc2') {
+ self::$map[$key][$module] = &$map;
+ }
+
+ public static function renderResponse($output){
+ $ret = '';
+
+ $collection = &self::$collection['css'];
+ if($collection){
+ $ret .= $collection['html'][0] . $collection['html'][1];
+ }
+
+ $collection = &self::$collection['js'];
+ if($collection){
+ $ret .= $collection['html'][0] . $collection['html'][1];
+ }
+ return str_replace('', $ret, $output);
+ }
+}
+
+
+function smarty_compiler_fis_require($params, Smarty $smarty){
+ $static_path = array();
+ if (isset($params['static'])) {
+ $static_path = $params['static'];
+ //在不修改smartysyntax的情况下,获取到的static_path为字符串而非php数组结构
+ //array("/static/common/lib/fis/template/template.js")
+ $static_path = substr($static_path, 6, -1);
+ //如果以后传入的是多个元素的数组
+ //array("/static/common/lib/fis/template/template.js","/static/common/lib/fis/template/template.js")
+ $static_path = str_replace(array('"','\''), '', $static_path);
+ $static_path = explode(',',$static_path);
+ }else{
+ trigger_error('This params have no static params!',E_USER_WARNING);
+ }
+ if(isset($params['module'])){
+ $require_module = $params['module'];
+ $require_module = substr($require_module, 1, -1);
+ }else{
+ $static = implode(',', $static_path);
+ trigger_error("This params have no module params,when use $static", E_USER_WARNING);
+ }
+ if(isset($params['framework'])){
+ $require_framework = $params['framework'];
+ $require_framework = substr($require_framework, 1, -1);
+ }else{
+ $require_framework = null;
+ }
+
+ /**@var ResourceAPI $api*/
+ $return_code = 'smarty->getConfigDir();
+ foreach($config_dir as $dir){
+ if($require_module != 'common'){
+ if($require_framework){
+ $common_php = $dir . 'common/common_' . $require_framework .'_resource_map.php';
+ if(is_file($common_php)){
+ $return_code .= 'ResourceAPI::registerMapPath("'.$common_php.'", "common", "'.$require_framework.'");';
+ }
+ }else{
+ $common_php = $dir . 'common/common_resource_map.php';
+ if(is_file($common_php)){
+ $return_code .= 'ResourceAPI::registerMapPath("'.$common_php.'", "common");';
+
+ }else{
+ trigger_error("Please use pc2-1.3.4 or later to compare common module!",E_USER_ERROR);
+ }
+ }
+ }
+ if($require_framework){
+ $require_php = $dir . $require_module . '/' . $require_module . '_' . $require_framework . '_resource_map.php';
+ if(is_file($require_php)){
+ $return_code .= 'ResourceAPI::registerMapPath("'.$require_php.'", "'.$require_module.'", "'.$require_framework.'");';
+ break;
+ }
+ }else{
+ $require_php = $dir . $require_module . '/' . $require_module . '_resource_map.php';
+ if(is_file($require_php)){
+ $return_code .= 'ResourceAPI::registerMapPath("'.$require_php.'", "'.$require_module.'");';
+ break;
+ }
+ }
+ }
+ }
+ foreach($static_path as $static){
+ if($require_framework){
+ $return_code .= 'ResourceAPI::addSymbol("'.$static.'", "'.$require_module.'", "'.$require_framework.'");';
+ }else{
+ $return_code .= 'ResourceAPI::addSymbol("'.$static.'", "'.$require_module.'");';
+ }
+ }
+ $cdn = '';
+ if($root = $smarty->smarty->getTemplateVars('root')){
+ if($head = $root['head']){
+ if($cdn = $head['cdn']){
+ $cdn = rtrim($cdn, '/');
+ }
+ }
+ }
+ $return_code .= 'ResourceAPI::setCdn("' . $cdn . '");' ;
+ $return_code .= '
+ if(!ResourceAPI::$registered){
+ $_smarty_tpl->registerFilter("output", array("ResourceAPI", "renderResponse"));
+ ResourceAPI::$registered = true;
+ }';
+ $return_code .= '?>';
+ return $return_code;
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/compiler.setfs.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/compiler.setfs.php
new file mode 100755
index 000000000..48c8c8a6a
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/compiler.setfs.php
@@ -0,0 +1,11 @@
+';
+ return $strCode;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/compiler.style.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/compiler.style.php
new file mode 100755
index 000000000..cca6f91d0
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/compiler.style.php
@@ -0,0 +1,31 @@
+';
+ return $strCode;
+}
+
+function smarty_compiler_styleclose($params, $smarty){
+ $strResourceApiPath = preg_replace('/[\\/\\\\]+/', '/', dirname(__FILE__) . '/lib/FISPagelet.class.php');
+ $strCode = '';
+ return $strCode;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/function.fis_require.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/function.fis_require.php
new file mode 100755
index 000000000..8b105fa26
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/function.fis_require.php
@@ -0,0 +1,304 @@
+destroy();
+ self::$instance = null;
+ }
+
+ public function destroy(){
+ unset($this->map);
+ unset($this->map_path);
+ unset($this->collection);
+ unset($this->processed_symbol);
+ unset($this->smarty);
+ }
+
+ public function registerMapPath($path, $module, $key = 'pc2'){
+ $this->map_path[$key][$module] = $path;
+ }
+
+ private function loadMap($module, $key = 'pc2'){
+ $map = &$this->map_path;
+ if(isset($map[$key][$module])){
+ include($map[$key][$module]);
+ return true;
+ } else {
+ trigger_error("Unregistered module map [{$module}].", E_USER_WARNING);
+ return false;
+ }
+ }
+
+ public function setSmarty(Smarty_Internal_Template $template){
+ $this->smarty = $template->smarty;
+ }
+
+ private function getPackages(&$info, &$map){
+ $ret = array();
+ $id = $info['id'];
+ $pacakges = &$map['resource'][$id]['packages'];
+ foreach($pacakges as $package){
+ $ret[] = &$map['package'][$package];
+ }
+ return $ret;
+ }
+
+ public function addSymbol($id, $module, $framework = 'pc2'){
+ if(isset($this->processed_symbol[$id])) return;
+ $this->processed_symbol[$id] = true;
+ if(!isset($this->map[$framework][$module]) && !$this->loadMap($module, $framework)){
+ //加载模块map文件失败
+ trigger_error("Unknown [{$module}] map.", E_USER_WARNING);
+ return;
+ }
+ if(!isset($this->map[$framework][$module]['resource'][$id])){
+ trigger_error("Unknown resource [{$id}].", E_USER_WARNING);
+ return;
+ }
+ $map = &$this->map[$framework][$module];
+ $info = &$map['resource'][$id];
+ if($info['is_lib']){
+ //如果是lib,先探测是否在common里
+ if((isset($this->map[$framework]['common']) || $this->loadMap('common', $framework)) && isset($this->map[$framework]['common']['resource'][$id])){
+ $map = &$this->map[$framework]['common'];
+ $info = &$map['resource'][$id];
+ }
+ }
+ foreach($info['requires'] as &$require){
+ $this->addSymbol($require[0], $require[1], $framework);
+ }
+ $ext = $info['ext'];
+ if(!isset($this->collection[$ext])){
+ $this->collection[$ext] = array();
+ }
+ $collections = &$this->collection[$ext];
+ $packages = $this->getPackages($info, $map);
+ if(empty($collections)){
+ $collections[] = array(
+ 'html' => $this->renderResource($info),
+ 'count' => 1,
+ 'size' => $info['size'],
+ 'pos' => 0,
+ 'symbols' => array($id => 1)
+ );
+ foreach($packages as &$package){
+ $collections[] = array(
+ 'html' => $this->renderResource($package),
+ 'count' => 1,
+ 'size' => $package['size'],
+ 'pos' => 0,
+ 'symbols' => $package['symbols_map']
+ );
+ }
+ } else {
+ $collections_new = array();
+ $packages[] = &$info;
+ foreach($collections as &$collection){
+ $add_fail = true;
+ foreach($packages as &$package){
+ $symbols = $collection['symbols'];
+ if($package === $info){
+ if(isset($symbols[$id])) {
+ continue;
+ } else {
+ $symbols[$id] = 1;
+ }
+ } else {
+ foreach($package['symbols'] as $symbol) {
+ if(isset($symbols[$symbol])){
+ continue 2;
+ } else {
+ $symbols[$symbol] = 1;
+ }
+ }
+ }
+ $add_fail = false;
+ $collections_new[] = array(
+ 'html' => $this->renderResource($package, $collection['html']),
+ 'count' => $collection['count'] + 1,
+ 'size' => $collection['size'] + $package['size'],
+ 'pos' => $collection['pos'] + 0,
+ 'symbols' => $symbols
+ );
+ }
+ if($add_fail) {
+ $collections_new[] = &$collection;
+ }
+ //if(count($collections_new) > 100) break;
+ }
+ $this->collection[$ext] = &$collections_new;
+ }
+ }
+
+ private function renderResource(&$info, $ret = array('', '')){
+ $crlf = "\n";
+ $html = '';
+ $cdn = '';
+ if($root = $this->smarty->getTemplateVars('root')){
+ if($head = $root['head']){
+ if($cdn = $head['cdn']){
+ $cdn = rtrim($cdn, '/');
+ }
+ }
+ }
+ if($info['ext'] == 'js'){
+ if($info['is_sync']){
+ $html = $crlf . '';
+ } else {
+ if(isset($info['symbols'])){
+ $html = $crlf . '';
+ } else {
+ $html = $crlf . '';
+ }
+ }
+ } else if($info['ext'] == 'css') {
+ $html = $crlf . ' ';
+ }
+ if($info['module'] == 'common'){
+ $ret[0] .= $html;
+ } else {
+ $ret[1] .= $html;
+ }
+ return $ret;
+ }
+
+ public function registerResourceMap($map, $module, $key = 'pc2') {
+ $this->map[$key][$module] = &$map;
+ }
+
+ public function getCollection($type){
+ return $this->collection[$type];
+ }
+
+ public function renderResponse($output, Smarty_Internal_Template $template){
+ $ret = '';
+ $collection = $this->calResultCollection('css');
+ if($collection){
+ $ret .= $collection['html'][0] . $collection['html'][1];
+ }
+ $collection = $this->calResultCollection('js');
+ if($collection){
+ $ret .= $collection['html'][0] . $collection['html'][1];
+ }
+ return str_replace('', $ret, $output);
+ }
+
+ private function calResultCollection($type){
+ if(empty($this->collection[$type])) return false;
+ $len = count($this->collection[$type]);
+ $ret = &$this->collection[$type][0];
+ if($len > 1){
+ $s1 = $ret;
+ for($i = 1 ; $i < $len ; $i++){
+ $curr = &$this->collection[$type][$i];
+ $s2 = &$curr ;
+ if($s1['count'] < $s2['count']) {
+ continue;
+ } elseif($s1['count'] > $s2['count']) {
+ $s1 = &$s2;
+ $ret = &$curr;
+ } else if($s1['pos'] < $s2['pos']) {
+ //count相等时, 比较postion
+ continue;
+ } else if($s1['pos'] > $s2['pos']) {
+ //count相等时, 比较postion
+ $s1 = &$s2;
+ $ret = &$curr;
+ } else if($s1['size'] < $s2['size']) {
+ //count、postion相等时, 比较size
+ continue;
+ } else if($s1['size'] > $s2['size']) {
+ //count、postion相等时, 比较size
+ $s1 = &$s2;
+ $ret = &$curr;
+ }
+ }
+
+ }
+ return $ret;
+ }
+}
+
+function smarty_function_fis_require($params, Smarty_Internal_Template $template){
+ $static_path = array();
+ if (isset($params['static'])) {
+ $static_path = $params['static'];
+ }else{
+ trigger_error('This params have no static params!',E_USER_WARNING);
+ }
+ if(isset($params['module'])){
+ $require_module = $params['module'];
+ }else{
+ $static = implode(',', $static_path);
+ trigger_error("This params have no module params,when use $static", E_USER_WARNING);
+ }
+ if(isset($params['framework'])){
+ $require_framework = $params['framework'];
+ }else{
+ $require_framework = null;
+ }
+
+ /**@var ResourceAPI $api*/
+ $api = ResourceAPI::getInstance();
+ //加载resource_map.php
+ $config_dir = $template->smarty->getConfigDir();
+ foreach($config_dir as $dir){
+ if($require_module != 'common'){
+ if($require_framework){
+ $common_php = $dir . 'common/common_' . $require_framework .'_resource_map.php';
+ if(is_file($common_php)){
+ $api->registerMapPath($common_php, 'common', $require_framework);
+ }
+ }else{
+ $common_php = $dir . 'common/common_resource_map.php';
+ if(is_file($common_php)){
+ $api->registerMapPath($common_php, 'common');
+ }else{
+ trigger_error("Please use pc2-1.3.4 or later to compare common module!", E_USER_WARNING);
+ }
+ }
+ }
+ if($require_framework){
+ $require_php = $dir . $require_module . '/' . $require_module . '_' . $require_framework . '_resource_map.php';
+ if(is_file($require_php)){
+ $api->registerMapPath($require_php, $require_module, $require_framework);
+ break;
+ }
+ }else{
+ $require_php = $dir . $require_module . '/' . $require_module . '_resource_map.php';
+ if(is_file($require_php)){
+ $api->registerMapPath($require_php, $require_module);
+ break;
+ }
+ }
+ }
+ $api->setSmarty($template);
+ foreach($static_path as $static){
+ if($require_framework){
+ $api->addSymbol($static, $require_module, $require_framework);
+ }else{
+ $api->addSymbol($static, $require_module);
+ }
+
+ }
+ $template->smarty->registerFilter('output', array($api,'renderResponse'));
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/function.http_header.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/function.http_header.php
new file mode 100755
index 000000000..9fb307938
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/function.http_header.php
@@ -0,0 +1,40 @@
+ 'text/html',
+ 'json' => 'application/json',
+ 'javascript' => 'application/x-javascript',
+ 'js' => 'application/x-javascript',
+ 'xml' => 'text/xml',
+ 'stream' => 'application/octet-stream'
+ );
+ if (array_key_exists($type, $mimeTypes)) {
+ $mime = $mimeTypes[$type];
+ } else {
+ $mime = "text/plain";
+ }
+ header("Content-Type:$mime; charset=$charset;");
+}
+
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/lib/FISAutoPack.class.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/lib/FISAutoPack.class.php
new file mode 100755
index 000000000..4ecb418fb
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/lib/FISAutoPack.class.php
@@ -0,0 +1,104 @@
+ array(),'other'=> array()); //静态资源数组
+
+ //设置fis id 一般为项目ID
+ public static function setFid($fid){
+ self::$fid = $fid;
+ }
+
+ //获取fis id
+ public static function getFid(){
+ return self::$fid;
+ }
+
+ //设置采样率
+ public static function setSampleRate($rate){
+ self::$sampleRate = $rate;
+ }
+
+ //获取采样率
+ public static function getSampleRate(){
+ return self::$sampleRate;
+ }
+
+ //根据采样率判断是否命中
+ private static function isSample($sample){
+ $tmp_sample = rand(1, 10000) / 10000;
+ return $sample >= $tmp_sample;
+ }
+
+ //获取页面名称
+ public static function getPageName(){
+ return self::$pageName;
+ }
+
+ //设置页面名称
+ public static function setPageName($page){
+ self::$pageName = $page;
+ }
+
+
+ public static function addHashTable($strId, $smarty){
+ $staticInfo = FISResource::getStaticInfo($strId, $smarty);
+ if($staticInfo['hash']){
+ self::addStatic($staticInfo['hash']);
+ }
+ }
+
+
+ //添加静态资源,首屏完成之后添加的资源标记为非首屏资源
+ public static function addStatic($hash){
+ $type = self::$fsFinish ? "other" : "first_screen"; //是否是首屏资源
+ self::$usedStatics[$type][] = $hash;
+ }
+
+ //设置是否已完成首屏
+ public static function setFRender(){
+ self::$fsFinish = true;
+ }
+
+ //获取渲染到前端的js统计代码
+ public static function getCountUrl(){
+ $code = "";
+ $sampleRate = self::getSampleRate();
+ $fid = self::getFid();
+ if(self::isSample($sampleRate) && $fid){
+ $pageName = self::getPageName();
+ //去重,另外如果资源同时存在于首屏与非首屏中,当成首屏资源
+ $first_screen = array_filter(array_unique(self::$usedStatics['first_screen']));
+ $other = array_filter(array_unique(self::$usedStatics['other']));
+ if(count($other) >0){
+ foreach ($other as $k => $val) {
+ if(in_array($val, $first_screen) ){
+ unset($other[$k]);
+ }
+ }
+ }
+
+ if (count($first_screen) >0 || count($other) >0 ) {
+ $timeStamp = time();
+ $hashStr = '';
+ $fsStr = implode(',', $first_screen);
+ $otherStr = implode(',', $other);
+ $hashStr .= ($fsStr . $otherStr);
+
+ $code .= '(new Image()).src="http://static.tieba.baidu.com/tb/pms/img/st.gif?pid=242&v=' . self::$VER . '&fs=' . $fsStr . "&otherStr=" . $otherStr . "&page=" . $pageName . '&sid=' . $timeStamp . '&hash=' . '&fid=' . $fid . '";';
+ $code = str_replace("", substr(md5($hashStr), 0, 10), $code);
+ }
+ }
+ return $code;
+ }
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/lib/FISPagelet.class.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/lib/FISPagelet.class.php
new file mode 100755
index 000000000..063a9a07a
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/lib/FISPagelet.class.php
@@ -0,0 +1,581 @@
+';
+ const JS_SCRIPT_HOOK = '';
+ const CSS_STYLE_HOOK = '';
+ //国际化特殊stylehook
+ const CSS_GLBAL_LINKS_HOOK = '';
+
+ static private $hide_link = false;
+
+ static private $global_link = false;
+
+ const MODE_NOSCRIPT = 0;
+ const MODE_QUICKLING = 1;
+ const MODE_BIGPIPE = 2;
+
+ //缺省的textarea类
+ const DEFAULT_TEXTAREA_CLASS = 'g_fis_bigrender';
+ //缺省的textarea style
+ const DEFAULT_TEXTAREA_STYLE = 'visibility: hidden;';
+ //是否自动输出容器
+ static private $rend_div = true;
+ //传递group class,style
+ static private $group_class = "";
+ static private $group_style = "";
+ /**
+ * 收集widget内部使用的静态资源
+ * array(
+ * 0: array(), 1: array(), 2: array()
+ * )
+ * @var array
+ */
+ static protected $inner_widget = array(
+ array(),
+ array(),
+ array()
+ );
+ static private $_session_id = 0;
+ static private $_context = array();
+ static private $_contextMap = array();
+ static private $_pagelets = array();
+ static private $_title = '';
+ static private $_pagelet_group = array();
+ /**
+ * 解析模式
+ * @var number
+ */
+ static protected $mode = null;
+
+ static protected $default_mode = null;
+
+ //url强迫模式
+ static protected $force_mode = false;
+
+ /**
+ * 某一个widget使用那种模式渲染
+ * @var number
+ */
+ static protected $widget_mode;
+
+ static protected $filter;
+
+ static public $cp;
+ static public $arrEmbeded = array();
+
+ static public function init() {
+ self::$default_mode = self::MODE_NOSCRIPT;
+ $is_ajax = isset($_SERVER['HTTP_X_REQUESTED_WITH'])
+ && (strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest');
+ // url指定模式,暂时只能指定为default_mode
+ if( !empty( $_GET['fispagemode'] ) ){
+ self::setMode(self::$default_mode);
+ self::$force_mode = self::$default_mode;
+ } else {
+ if ($is_ajax || $_GET['pagelets']) {
+ self::setMode(self::MODE_QUICKLING);
+ } else {
+ self::setMode(self::$default_mode);
+ }
+ }
+
+ self::setFilter($_GET['pagelets']);
+ }
+
+ static public function setCdn($url) {
+ FISResource::setCdn($url);
+ }
+
+ static public function setMode($mode){
+ if (self::$mode === null) {
+ self::$mode = isset($mode) ? intval($mode) : 1;
+ }
+ }
+
+ static public function setFilter($ids) {
+ if (!is_array($ids)) {
+ $ids = array($ids);
+ }
+ foreach ($ids as $id) {
+ self::$filter[$id] = true;
+ }
+ }
+
+ static public function setTitle($title) {
+ self::$_title = $title;
+ }
+
+ static public function getUri($strName, $smarty) {
+ return FISResource::getUri($strName, $smarty);
+ }
+
+ static public function addScript($code) {
+ if(self::$_context['hit'] || self::$mode == self::$default_mode){
+ FISResource::addScriptPool($code);
+ }
+ }
+
+ static public function addStyle($code) {
+ if(self::$_context['hit'] || self::$mode == self::$default_mode){
+ FISResource::addStylePool($code);
+ }
+ }
+
+ public static function cssHook() {
+ return self::CSS_LINKS_HOOK;
+ }
+
+ public static function cssStyleHook() {
+ self::$hide_link = true;
+ return self::CSS_STYLE_HOOK;
+ }
+
+
+ //国际化定制化link,可定制位置
+ public static function cssGlobalLinkHook(){
+ self::$global_link = true;
+ return self::CSS_GLBAL_LINKS_HOOK;
+ }
+
+ public static function jsHook() {
+ return self::JS_SCRIPT_HOOK;
+ }
+
+ static function load($str_name, $smarty, $async = false) {
+ if(self::$_context['hit'] || self::$mode == self::$default_mode){
+ FISResource::load($str_name, $smarty, $async);
+ }
+ }
+
+ static private function _parseMode($str_mode) {
+ $str_mode = strtoupper($str_mode);
+ $mode = self::$mode;
+ //url强迫模式
+
+ switch($str_mode) {
+ case 'BIGPIPE':
+ $mode = self::MODE_BIGPIPE;
+ break;
+ case 'QUICKLING':
+ $mode = self::MODE_QUICKLING;
+ break;
+ case 'NOSCRIPT':
+ $mode = self::MODE_NOSCRIPT;
+ break;
+ }
+
+ return $mode;
+ }
+ /**
+ * WIDGET START
+ * 解析参数,收集widget所用到的静态资源
+ * @param $id
+ * @param $mode
+ * @param $group
+ * @param $class
+ * @return bool
+ */
+ static public function start($id, $mode = null, $group = null, $class = null, $is_rend = 1, $textarea_style=null, $fetch_widget=null) {
+ $has_parent = !empty(self::$_context);
+ $special_flag = false;
+ if ($mode !== null) {
+ $special_flag = true;
+ }
+
+ if ($mode) {
+ self::$widget_mode = self::_parseMode($mode);
+ } else {
+ self::$widget_mode = self::$mode;
+ }
+
+ //是否渲染div
+ self::$rend_div = $is_rend;
+ $parent_id = $has_parent ? self::$_context['id'] : '';
+ $qk_flag = self::$mode == self::MODE_QUICKLING ? '_qk_' : '';
+ $id = empty($id) ? '__elm_' . $parent_id . '_' . $qk_flag . self::$_session_id ++ : $id;
+ $class = empty($class) ? self::DEFAULT_TEXTAREA_CLASS : $class;
+ $textarea_style = empty($textarea_style) ? self::DEFAULT_TEXTAREA_STYLE : $textarea_style;
+ //widget是否命中,没有指定fetch_widget默认命中,否则默认不命中
+ $hit = empty($fetch_widget) ? true : false;
+
+
+ //url强迫模式,优先级最高
+ if ( self::$force_mode !== false ) {
+ self::$widget_mode = self::$force_mode;
+ $hit = true;
+ }
+
+
+ switch(self::$widget_mode) {
+ case self::MODE_NOSCRIPT:
+ break;
+ case self::MODE_QUICKLING:
+ $hit = self::$filter[$id];
+ case self::MODE_BIGPIPE:
+ $context = array( 'id' => $id, 'async' => false);
+ //widget调用时mode='quickling',so,打出异步加载代码
+ if ($special_flag && !$hit) {
+ if (!$group) {
+ echo "';
+ } else {
+ if (isset(self::$_pagelet_group[$group])) {
+ self::$_pagelet_group[$group]["ids"][] = $id;
+ self::$_pagelet_group[$group]["class"][] = $class;
+ self::$_pagelet_group[$group]["style"][] = $textarea_style;
+ } else {
+ self::$_pagelet_group[$group] = array(
+ "ids"=>array($id),
+ "class"=>array($class),
+ "style"=>array($textarea_style),
+ "url"=> $fetch_widget
+ );
+ echo "";
+ }
+ }
+ $context['async'] = true;
+ }
+
+ $parent = self::$_context;
+ if(!empty($parent)) {
+ $parent_id = $parent['id'];
+ self::$_contextMap[$parent_id] = $parent;
+ $context['parent_id'] = $parent_id;
+ if($parent['hit']) {
+ $hit = true;
+ } else if($hit && self::$mode === self::MODE_QUICKLING){
+ unset($context['parent_id']);
+ }
+ }
+ $context['hit'] = $hit;
+
+
+ self::$_context = $context;
+
+ if (empty($parent) && $hit) {
+ FISResource::widgetStart();
+ } else if (!empty($parent) && !$parent['hit'] && $hit) {
+ FISResource::widgetStart();
+ }
+ //指定自动渲染div
+ if( !empty(self::$rend_div) ){
+ echo '';
+ }
+ ob_start();
+ break;
+ }
+ return $hit;
+ }
+
+ /**
+ * WIDGET END
+ * 收集html,收集静态资源
+ */
+ static public function end() {
+ $ret = true;
+ if (self::$widget_mode !== self::MODE_NOSCRIPT) {
+ $html = ob_get_clean();
+ $pagelet = self::$_context;
+ //end
+ if (isset($pagelet['parent_id'])) {
+ $parent = self::$_contextMap[$pagelet['parent_id']];
+ if (!$parent['hit'] && $pagelet['hit']) {
+ self::$inner_widget[self::$widget_mode][] = FISResource::widgetEnd();
+
+ }
+ } else {
+ if ($pagelet['hit']) {
+ self::$inner_widget[self::$widget_mode][] = FISResource::widgetEnd();
+ }
+ }
+
+ if($pagelet['hit'] && !$pagelet['async']){
+ unset($pagelet['hit']);
+ unset($pagelet['async']);
+ $pagelet['html'] = $html;
+ self::$_pagelets[] = &$pagelet;
+ unset($pagelet);
+ } else {
+ $ret = false;
+ }
+ $parent_id = self::$_context['parent_id'];
+ if(isset($parent_id)){
+ self::$_context = self::$_contextMap[$parent_id];
+ unset(self::$_contextMap[$parent_id]);
+ } else {
+ self::$_context = null;
+ }
+ self::$widget_mode = self::$mode;
+ //指定渲染的位置
+ if( !empty(self::$rend_div) ){
+ echo '
';
+ } else{
+ self::$rend_div = true;
+ }
+ }
+ return $ret;
+ }
+
+ /**
+ * 渲染静态资源
+ * @param $html
+ * @param $arr
+ * @param bool $clean_hook
+ * @return mixed
+ */
+ static public function renderStatic($html, $arr, $clean_hook = false) {
+ if (!empty($arr)) {
+ $code = '';
+ $resource_map = $arr['async'];
+ $loadModJs = (FISResource::getFramework() && ($arr['js'] || $resource_map));
+ if ($loadModJs) {
+ foreach ($arr['js'] as $js) {
+ $code .= '';
+ if ($js == FISResource::getFramework()) {
+ if ($resource_map) {
+ $code .= '';
+ }
+ }
+ }
+ }
+
+ if (!empty($arr['script'])) {
+ $code .= '';
+ }
+
+ /**************autopack getCountUrl for sending log*********************/
+ $jsCode = FISAutoPack::getCountUrl($arr);
+ if($jsCode != ""){
+ $code .= '';
+ }
+ /**************autopack end*********************/
+
+ $html = str_replace(self::JS_SCRIPT_HOOK, $code . self::JS_SCRIPT_HOOK, $html);
+ //收集style和link
+ $code = '';
+ //通过编译插件可控制inline,link的样式位置
+ $linkPosition = self::$global_link ? self::CSS_GLBAL_LINKS_HOOK : self::CSS_LINKS_HOOK;
+ if (!empty($arr['style'])) {
+ $code .= '';
+ }
+ //替换
+ $html = str_replace($linkPosition, $code . $linkPosition, $html);
+
+
+ //国际化定制
+ if (!empty($arr['css'])) {
+ $s_code = '';
+ $s_code .= ' ';
+ if (self::$hide_link) {
+ $s_code = '';
+ $html = str_replace(self::CSS_STYLE_HOOK, $s_code . self::CSS_STYLE_HOOK, $html);
+ } else {
+ $html = str_replace($linkPosition, $s_code . $linkPosition, $html);
+ }
+ }
+
+
+ }
+ if ($clean_hook) {
+ $html = str_replace(array($linkPosition, self::JS_SCRIPT_HOOK, self::CSS_STYLE_HOOK), '', $html);
+ }
+ return $html;
+ }
+
+ /**
+ * @param $html string html页面内容
+ * @return mixed
+ */
+ static public function insertPageletGroup($html) {
+ if (empty(self::$_pagelet_group)) {
+ return $html;
+ }
+ $search = array();
+ $replace = array();
+ foreach (self::$_pagelet_group as $group => $groupInfo) {
+ $search[] = '';
+ $ids = $groupInfo['ids'];
+ $class = implode( " ", array_unique( $groupInfo["class"] ) );
+ $style = implode( " ", array_unique( $groupInfo["style"] ) );
+ $url = $groupInfo['url'];
+ $replace[] = '';
+ }
+ return str_replace($search, $replace, $html);
+ }
+
+ static public function display($html) {
+ $html = self::insertPageletGroup($html);
+ $pagelets = self::$_pagelets;
+ $mode = self::$mode;
+ $res = array(
+ 'js' => array(),
+ 'css' => array(),
+ 'script' => array(),
+ 'style' => array(),
+ 'async' => array(
+ 'res' => array(),
+ 'pkg' => array()
+ )
+ );
+ //{{{
+ foreach (self::$inner_widget[$mode] as $item) {
+ foreach ($res as $key => $val) {
+ if (isset($item[$key]) && is_array($item[$key])) {
+ if ($key != 'async') {
+ $arr = array_merge($res[$key], $item[$key]);
+ $arr = array_merge(array_unique($arr));
+ } else {
+ $arr = array(
+ 'res' => array_merge($res['async']['res'], (array)$item['async']['res']),
+ 'pkg' => array_merge($res['async']['pkg'], (array)$item['async']['pkg'])
+ );
+ }
+ //合并收集
+ $res[$key] = $arr;
+ }
+ }
+ }
+ //if empty, unset it!
+ foreach ($res as $key => $val) {
+ if (empty($val)) {
+ unset($res[$key]);
+ }
+ }
+ //}}}
+ //tpl信息没有必要打到页面
+ switch($mode) {
+ case self::MODE_NOSCRIPT:
+ //渲染widget以外静态文件
+ $all_static = FISResource::getArrStaticCollection();
+ $html = self::renderStatic(
+ $html,
+ $all_static,
+ true
+ );
+ break;
+ case self::MODE_QUICKLING:
+ header('Content-Type: text/plain;');
+ if ($res['script']) {
+ $res['script'] = implode("\n", $res['script']);
+ }
+ if ($res['style']) {
+ $res['style'] = implode("\n", $res['style']);
+ }
+ foreach ($pagelets as &$pagelet) {
+ $pagelet['html'] = self::insertPageletGroup($pagelet['html']);
+ }
+ unset($pagelet);
+
+ /*********************autopack *****************************/
+ $jsCode = FISAutoPack::getCountUrl($res);
+ if($jsCode != "" && !$_GET['fis_widget']){
+ $res['script'] = $res['script'] ? $res['script'] . $jsCode : $jsCode;
+ }
+ /*********************autopack end************************/
+
+ //开放api
+ if( $_GET["method"] === "jsonp" ){
+ $html = "hao123.process(".json_encode(array(
+ 'title' => self::$_title,
+ 'pagelets' => $pagelets,
+ 'resource_map' => $res
+ )). ",'". $_GET['containerId'] ."')" ;
+ //正常模式
+ } else {
+ $html = json_encode(array(
+ 'title' => self::$_title,
+ 'pagelets' => $pagelets,
+ 'resource_map' => $res
+ ));
+ }
+ break;
+ case self::MODE_BIGPIPE:
+ $external = FISResource::getArrStaticCollection();
+ $page_script = $external['script'];
+ unset($external['script']);
+ $html = self::renderStatic(
+ $html,
+ $external,
+ true
+ );
+ $html .= "\n";
+ $html .= '';
+ $html .= "\n";
+
+ if ($res['script']) {
+ $res['script'] = implode("\n", $res['script']);
+ }
+ if ($res['style']) {
+ $res['style'] = implode("\n", $res['style']);
+ }
+ $html .= "\n";
+ foreach($pagelets as $index => $pagelet){
+ $id = '__cnt_' . $index;
+ $html .= ''),
+ array('\\\\', '--\\>'),
+ self::insertPageletGroup($pagelet['html'])
+ );
+ unset($pagelet['html']);
+ $pagelet['html_id'] = $id;
+ $html .= ' -->
';
+ $html .= "\n";
+ $html .= '';
+ $html .= "\n";
+ }
+ $html .= '';
+ break;
+ }
+
+ return $html;
+ }
+
+ //smarty output filter
+ static function renderResponse($content, $smarty) {
+ return self::display($content);
+ }
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/modifier.f_escape_callback.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/modifier.f_escape_callback.php
new file mode 100755
index 000000000..f3d91b318
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/modifier.f_escape_callback.php
@@ -0,0 +1,12 @@
+ '<',
+ '>' => '>',
+ "'" => "\\'",
+ '"' => '\\"',
+ "\\" => "\\\\",
+ "\n" => "\\n",
+ "\r" => "\\r",
+ "/" => "\\/"
+ );
+ $patterns = array_keys($arr_js_char);
+ $targets = array_values($arr_js_char);
+ $ret = str_replace($patterns, $targets, $str);
+ return $ret;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/modifier.f_escape_event.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/modifier.f_escape_event.php
new file mode 100755
index 000000000..e366cae41
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/modifier.f_escape_event.php
@@ -0,0 +1,18 @@
+ '&',
+ '<' => '<',
+ '>' => '>',
+ "\\" => "\\\\",
+ "'" => "\\'",
+ '"' => "\\"",
+ "\n" => "\\n",
+ "\r" => "\\r",
+ "/" => "\\/"
+ );
+ $patterns = array_keys($char_map);
+ $targets = array_values($char_map);
+ return str_replace($patterns, $targets, $str);
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/modifier.f_escape_js.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/modifier.f_escape_js.php
new file mode 100755
index 000000000..e93e0d0df
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/modifier.f_escape_js.php
@@ -0,0 +1,15 @@
+ "\\\\",
+ "'" => "\\x27",
+ "\"" => "\\x22",
+ "/" => "\\/",
+ "\n" => "\\n",
+ "\r" => "\\r"
+ );
+ $patterns = array_keys($char_map);
+ $targets = array_values($char_map);
+ return str_replace($patterns, $targets, $str);
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/modifier.f_escape_path.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/modifier.f_escape_path.php
new file mode 100755
index 000000000..035f3fb37
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/plugin/modifier.f_escape_path.php
@@ -0,0 +1,14 @@
+', '\'', '"'),
+ array('&', '<', '>', ''', '"'),
+ strval($str)
+ );
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/relay_list.conf b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/relay_list.conf
new file mode 100755
index 000000000..809a3c861
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/relay_list.conf
@@ -0,0 +1 @@
+flat-home
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/server.conf b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/server.conf
new file mode 100755
index 000000000..f6090124b
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/server.conf
@@ -0,0 +1,9 @@
+rewrite ^\/resource(\/.*)$ test/common/resource.php
+rewrite ^\/openapi\/?(\?.+)?$ test/common/route.php
+rewrite ^\/fetchwidget\/?(\?.+)?$ test/common/route.php
+rewrite ^\/hotsitecustom\/?(\?.+)?$ test/common/route.php
+rewrite ^\/applistapi.*$ test/common/route.php
+rewrite ^\/api\.php\/?(\?.+)?$ test/common/route.php
+rewrite ^\/[a-z]{2}\/?(\?.+)?$ test/common/route.php
+rewrite ^\/[a-z]{2}\/[^?]+(\?.+)?$ test/common/route.php
+rewrite ^\/static304(\/.*)$ test/common/route.php
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/smarty.conf b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/smarty.conf
new file mode 100755
index 000000000..d61ab79da
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/smarty.conf
@@ -0,0 +1,2 @@
+left_delimiter=<%
+right_delimiter=%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/BigPipe.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/BigPipe.js
new file mode 100755
index 000000000..cf3612bd9
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/BigPipe.js
@@ -0,0 +1,172 @@
+var BigPipe = function() {
+
+ function ajax(url, cb, data) {
+ var xhr = new XMLHttpRequest;
+ xhr.onreadystatechange = function() {
+ if (this.readyState == 4) {
+ cb(this.responseText);
+ }
+ };
+ xhr.open(data?'POST':'GET', url + '&t=' + ~~(1e6 * Math.random()), true);
+ if (data) xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
+ xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
+ xhr.send(data);
+ }
+
+
+ function renderPagelet(obj, pageletsMap, rendered, specificId) {
+ if (obj.id in rendered) {
+ return;
+ }
+ rendered[obj.id] = true;
+
+ if (obj.parent_id) {
+ renderPagelet(
+ pageletsMap[obj.parent_id], pageletsMap, rendered);
+ }
+
+ //
+ // 将pagelet填充到对应的DOM里
+ //
+
+ //有指定的id
+
+ if( specificId ){
+ var dom = document.getElementById(specificId),
+ fragment = document.createElement("div");
+ fragment.innerHTML = obj.html;
+ dom.appendChild(fragment);
+ } else{
+ var dom = document.getElementById(obj.id);
+ if (!dom) {
+ dom = document.createElement('div');
+ dom.id = obj.id;
+ document.body.appendChild(dom);
+ }
+ dom.innerHTML = obj.html;
+ }
+
+ var fragment = document.createElement("div"),
+ scriptText = [],
+ text = "",
+ node;
+ fragment.innerHTML = obj.html;
+ scriptText = fragment.getElementsByTagName("script");
+ for (var i = scriptText.length - 1; i >= 0; i--) {
+ node = scriptText[i];
+ text = node.text || node.textContent || node.innerHTML || "";
+ window[ "eval" ].call( window, text );
+ };
+ }
+
+
+ function render(pagelets, specificId) {
+ var i, n = pagelets.length;
+ var pageletsMap = {};
+ var rendered = {};
+
+ //
+ // 初始化 pagelet.id => pagelet 映射表
+ //
+ for(i = 0; i < n; i++) {
+ var obj = pagelets[i];
+ pageletsMap[obj.id] = obj;
+ }
+
+ for(i = 0; i < n; i++) {
+ renderPagelet(pagelets[i], pageletsMap, rendered, specificId);
+ }
+ }
+
+
+ function process(data, specificId) {
+ var rm = data.resource_map;
+
+ if (rm.async) {
+ require.resourceMap(rm.async);
+ }
+
+
+ if (rm.css) {
+ LazyLoad.css(rm.css, function() {
+ if (rm.style) {
+ var dom = document.createElement('style');
+ dom["type"] = "text/css";
+ if (dom.styleSheet) { // IE
+ dom.styleSheet.cssText = rm.style;
+ } else {
+ dom.innerHTML = rm.style;
+ }
+ document.getElementsByTagName('head')[0].appendChild(dom);
+ }
+ render(data.pagelets, specificId);
+ if (rm.js) {
+ LazyLoad.js(rm.js, function() {
+ rm.script && window.eval(rm.script);
+ });
+ }
+ else {
+ rm.script && window.eval(rm.script);
+ }
+ });
+ } else {
+ if (rm.style) {
+ var dom = document.createElement('style');
+ dom["type"] = "text/css";
+ if (dom.styleSheet) { // IE
+ dom.styleSheet.cssText = rm.style;
+ } else {
+ dom.innerHTML = rm.style;
+ }
+ document.getElementsByTagName('head')[0].appendChild(dom);
+ }
+ render(data.pagelets, specificId);
+ if (rm.js) {
+ LazyLoad.js(rm.js, function() {
+ rm.script && window.eval(rm.script);
+ });
+ }
+ else {
+ rm.script && window.eval(rm.script);
+ }
+ }
+ }
+
+
+ function asyncLoad(arg, widgetPath, specificId) {
+ if (!(arg instanceof Array)) {
+ arg = [arg];
+ }
+ var obj, arr = [];
+ for (var i = arg.length - 1; i >= 0; i--) {
+ obj = arg[i];
+ if (!obj.id) {
+ throw new Error('missing pagelet id');
+ }
+ arr.push('pagelets[]=' + obj.id);
+ }
+ var apiPath = "/fetchwidget",
+ //判断是否使用api接口获取widget内容
+ url = widgetPath ? (location.protocol + "//" + location.host + apiPath + location.search) : location.href,
+ //判断是否传递参数给api
+ param = widgetPath ? ["&name="+ widgetPath] : [];
+ //过滤url中的锚点定位
+ url = url.split("#")[0];
+ //补全url
+ url = url + ( url.indexOf("?") > -1 ? "&" : "?") + arr.join('&') + param.join('&');
+ //test ajax no debug's `mode=`
+ url=url.replace(/mode=\d*&/, '');
+
+ ajax(url, function(res) {
+ var data = window.JSON?
+ JSON.parse(res) :
+ eval('(' + res + ')');
+
+ process(data, specificId);
+ });
+ }
+
+ return {
+ asyncLoad: asyncLoad
+ }
+}();
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/alog.min.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/alog.min.js
new file mode 100755
index 000000000..6291a75b5
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/alog.min.js
@@ -0,0 +1 @@
+void function(e,t){function n(e){var n=ut.get("alias")||{},r=n[e]||e+".js";if(!it[r]){it[r]=!0;var i="script",a=t.createElement(i),o=t.getElementsByTagName(i)[0];a.async=!0,a.src=r,o.parentNode.insertBefore(a,o)}}function r(e){if(!e[g]){for(var t=!0,r=[],a=e[D],o=0;a&&a[y]>o;o++){var f=a[o],s=st[f]=st[f]||{};s[g]||s==e?r[L](s[P]):(t=!1,s[E]||n(f),s[N]=s[N]||{},s[N][e[b]]=e)}t&&(e[g]=!0,e[k]&&(e[P]=e[k][j](e,r)),i(e))}}function i(e){for(var t in e[N])r(e[N][t])}function a(e){return(e||new Date)-tt}function o(e,t,n){if(e){typeof e==S&&(n=t,t=e,e=at);try{if(e==at)return ot[t]=ot[t]||[],ot[t].unshift(n),void 0;e[U]?e[U](t,n,!1):e[m]&&e[m](J+t,n)}catch(r){}}}function f(e,t,n){if(e){typeof e==S&&(n=t,t=e,e=at);try{if(e==at){var r=ot[t];if(!r)return;for(var i=r[y];i--;)r[i]===n&&r.splice(i,1);return}e[x]?e[x](t,n,!1):e[C]&&e[C](J+t,n)}catch(a){}}}function s(e){var t=ot[e],n=0;if(t){for(var r=[],i=arguments,a=1;i[y]>a;a++)r[L](i[a]);for(var a=t[y];a--;)t[a][j](this,r)&&n++;return n}}function u(e,t){if(e&&t){var n=new Image(1,1),r=[],i="img_"+ +new Date;for(var a in t)t[a]&&r[L](a+"="+encodeURIComponent(t[a]));at[i]=n,n[I]=n[V]=function(){at[i]=n=n[I]=n[V]=null,delete at[i]},n.src=e+"?"+r.join("&")}}function c(e,t){if(!e)return t;var n={};for(var r in t)null!==e[r]&&(n[e[r]||r]=t[r]);return n}function l(){var e=arguments,t=e[0];if(this[$]||/^(on|un|set|get|create)$/.test(t)){for(var n=p[B][t],r=[],i=1,a=e[y];a>i;i++)r[L](e[i]);typeof n==G&&n[j](this,r)}else this[O][L](e)}function v(e,t){var n={};for(var r in e)e[T](r)&&(n[r]=e[r]);for(var r in t)t[T](r)&&(n[r]=t[r]);return n}function p(e){this[b]=e,this[_]={protocolParameter:{postUrl:null,protocolParameter:null}},this[O]=[],this[F]=at}function h(e){var t;if(e=e||"default","*"==e){t=[];for(var n in ft)t[L](ft[n]);return t}var r=ft[e];return r||(r=ft[e]=new p(e)),r}function d(){if(!(et&&50>new Date-Y||Z)){Z=!0;var e=0;for(var t in ft){var n=ft[t];n[$]&&(e+=n[A](Q))}if(e)for(var r=new Date;100>new Date-r;);}}var g="defined",m="attachEvent",w="toString",y="length",b="name",D="requires",k="creator",E="defining",j="apply",q="tracker",L="push",P="instance",N="waiting",U="addEventListener",x="removeEventListener",C="detachEvent",I="onload",V="onerror",$="created",B="prototype",O="argsList",T="hasOwnProperty",_="fields",A="fire",F="alog",M="define",R="require",S="string",z="object",G="function",H="send",J="on",K="protocolParameter",Q="unload",W=e.alogObjectName||F,X=e[W];if(!X||!X[g]){var Y,Z,et=t.all&&e[m],tt=X&&X.l||+new Date,nt=e.logId||(+new Date)[w](36)+Math.random()[w](36).substr(2,3),rt=0,it={},at=function(e){var t,n,i,a,o=arguments;if(e==M||e==R){for(var f=1;o[y]>f;f++)switch(typeof o[f]){case S:t=o[f];break;case z:i=o[f];break;case G:a=o[f]}return e==R&&(t&&!i&&(i=[t]),t=null),t=t?t:"#"+rt++,n=st[t]=st[t]||{},n[g]||(n[b]=t,n[D]=i,n[k]=a,e==M&&(n[E]=!0),r(n)),void 0}return typeof e==G?(e(at),void 0):((e+"").replace(/^(?:([\w$_]+)\.)?(\w+)$/,function(e,t,n){o[0]=n,l[j](at[q](t),o)}),void 0)},ot={},ft={},st={alog:{name:F,defined:!0,instance:at}};p[B].create=function(e){if(!this[$]){typeof e==z&&this.set(e),this[$]=new Date,this[A]("create",this);for(var t;t=this[O].shift();)l[j](this,t)}},p[B][H]=function(e,t){var n=v({ts:a()[w](36),t:e,sid:nt},this[_]);if(typeof t==z)n=v(n,t);else{var r=arguments;switch(e){case"pageview":r[1]&&(n.page=r[1]),r[2]&&(n.title=r[2]);break;case"event":r[1]&&(n.eventCategory=r[1]),r[2]&&(n.eventAction=r[2]),r[3]&&(n.eventLabel=r[3]),r[4]&&(n.eventValue=r[4]);break;case"timing":r[1]&&(n.timingCategory=r[1]),r[2]&&(n.timingVar=r[2]),r[3]&&(n.timingValue=r[3]),r[4]&&(n.timingLabel=r[4]);break;case"exception":r[1]&&(n.exDescription=r[1]),r[2]&&(n.exFatal=r[2]);break;default:return}}this[A](H,n),u(this[_].postUrl,c(this[_][K],n))},p[B].set=function(e,t){if(typeof e==S)e==K&&(t=v({postUrl:null,protocolParameter:null},t)),this[_][e]=t;else if(typeof e==z)for(var n in e)this.set(n,e[n])},p[B].get=function(e,t){var n=this[_][e];return typeof t==G&&t(n),n},p[B][A]=function(e,t){return at[A](this[b]+"."+e,t)},p[B][J]=function(e,t){at[J](this[b]+"."+e,t)},p[B].un=function(e,t){at.un(this[b]+"."+e,t)},at[b]=F,at.sid=nt,at[g]=!0,at.timestamp=a,at.un=f,at[J]=o,at[A]=s,at[q]=h,at("init");var ut=h();if(ut.set(K,{alias:null}),X){var ct=[].concat(X.p||[],X.q||[]);X.p=X.q=null;for(var lt in at)at[T](lt)&&(X[lt]=at[lt]);at.p=at.q={push:function(e){at[j](at,e)}};for(var vt=0;ct[y]>vt;vt++)at[j](at,ct[vt])}e[W]=at,et&&o(t,"mouseup",function(e){var t=e.target||e.srcElement;1==t.nodeType&&/^ajavascript:/i.test(t.tagName+t.href)&&(Y=new Date)}),o(e,"beforeunload",d),o(e,Q,d)}}(window,document);
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/ar_hao123_sug.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/ar_hao123_sug.js
new file mode 100755
index 000000000..78b72880e
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/ar_hao123_sug.js
@@ -0,0 +1,47 @@
+(function(){function G(id){return document.getElementById(id)}function C(tagName){return document.createElement(tagName)}function TagQ(tag,obj){obj=obj?obj:document;return obj.getElementsByTagName(tag)}var Cookie={set:function(name,value,domain,path,expires,not_escape){if(typeof expires=="undefined"){expires=new Date(new Date().getTime()+365*24*3600*100)}document.cookie=name+"="+(not_escape?value:escape(value))+((expires)?"; expires="+expires.toGMTString():"")+((path)?"; path="+path:"; path=/")+((domain)?"; domain="+domain:"")},get:function(name,_default){var arr=document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));if(arr!=null){return unescape(arr[2])}return _default},clear:function(name,path,domain){if(this.get(name)){document.cookie=name+"="+((path)?"; path="+path:"; path=/")+((domain)?"; domain="+domain:"")+";expires=Fri, 02-Jan-1970 00:00:00 GMT"}}};function isAr(str){var code=str.charCodeAt(0);if(code>1536&&code<1791){return true}if(code>65136&&code<65279){return true}return false
+}function autoltr(val){var language=(window.bds&&bds.comm.language)||window.__language||{ar:"ar-EG",th:"th-TH",br:"pt-BR"}[location.host.split(".")[0]]||"pt-BR";if(val===undefined){return""}return language=="ar-EG"&&!isAr(val)?" dir='ltr' ":""}if(!String.prototype.trim){String.prototype.trim=function(){var str=this.replace(/^\s+/,""),end=str.length-1,ws=/\s/;while(ws.test(str.charAt(end))){end--}return str.slice(0,end+1)}}String.prototype.escapeHTML=function(){return this.replace(/&/g,"&").replace(//g,">")};String.prototype.hashCode=function(){var hash=0,i,c;if(this.length==0){return hash}for(i=0,l=this.length;i0){done[1]=otherArgs}dones.push(done)}if(stat=="resolve"){while(dones.length>0){done=dones.shift();
+if(!done[1]){done[0].call()}else{var i,lib;for(i=0;i0){var func=arr.shift();try{func()}catch(e){if(window.console&&console.debug){console.debug(e)}}}}}};var TrimPath;(function(){if(TrimPath==null){TrimPath=new Object()}if(TrimPath.evalEx==null){TrimPath.evalEx=function(src){return eval(src)}}var UNDEFINED;if(Array.prototype.pop==null){Array.prototype.pop=function(){if(this.length===0){return UNDEFINED}return this[--this.length]
+}}if(Array.prototype.push==null){Array.prototype.push=function(){for(var i=0;i /g,">")},capitalize:function(s){return String(s).toUpperCase()},"default":function(s,d){return s!=null?s:d}};TrimPath.parseTemplate_etc.modifierDef.h=TrimPath.parseTemplate_etc.modifierDef.escape;TrimPath.parseTemplate_etc.Template=function(tmplName,tmplContent,funcSrc,func,etc){this.process=function(context,flags){if(context==null){context={}}if(context._MODIFIERS==null){context._MODIFIERS={}}if(context.defined==null){context.defined=function(str){return(context[str]!=undefined)}}for(var k in etc.modifierDef){if(context._MODIFIERS[k]==null){context._MODIFIERS[k]=etc.modifierDef[k]}}if(flags==null){flags={}}var resultArr=[];var resultOut={write:function(m){resultArr.push(m)}};try{func(resultOut,context,flags)}catch(e){if(flags.throwExceptions==true){throw e
+}var result=new String(resultArr.join("")+"[ERROR: "+e.toString()+(e.message?"; "+e.message:"")+"]");result.exception=e;return result}return resultArr.join("")};this.name=tmplName;this.source=tmplContent;this.sourceFunc=funcSrc;this.toString=function(){return"TrimPath.Template ["+tmplName+"]"}};TrimPath.parseTemplate_etc.ParseError=function(name,line,message){this.name=name;this.line=line;this.message=message};TrimPath.parseTemplate_etc.ParseError.prototype.toString=function(){return("TrimPath template ParseError in "+this.name+": line "+this.line+", "+this.message)};var parse=function(body,tmplName,etc){body=cleanWhiteSpace(body);var funcText=["var TrimPath_Template_TEMP = function(_OUT, _CONTEXT, _FLAGS) { with (_CONTEXT) {"];var state={stack:[],line:1};var endStmtPrev=-1;while(endStmtPrev+1=0){var endStmt=body.indexOf("}",begStmt+1);var stmt=body.substring(begStmt,endStmt);var blockrx=stmt.match(/^\{(cdata|minify|eval)/);
+if(blockrx){var blockType=blockrx[1];var blockMarkerBeg=begStmt+blockType.length+1;var blockMarkerEnd=body.indexOf("}",blockMarkerBeg);if(blockMarkerEnd>=0){var blockMarker;if(blockMarkerEnd-blockMarkerBeg<=0){blockMarker="{/"+blockType+"}"}else{blockMarker=body.substring(blockMarkerBeg+1,blockMarkerEnd)}var blockEnd=body.indexOf(blockMarker,blockMarkerEnd+1);if(blockEnd>=0){emitSectionText(body.substring(endStmtPrev+1,begStmt),funcText);var blockText=body.substring(blockMarkerEnd+1,blockEnd);if(blockType=="cdata"){emitText(blockText,funcText)}else{if(blockType=="minify"){emitText(scrubWhiteSpace(blockText),funcText)}else{if(blockType=="eval"){if(blockText!=null&&blockText.length>0){funcText.push("_OUT.write( (function() { "+blockText+" })() );")}}}}begStmt=endStmtPrev=blockEnd+blockMarker.length-1}}}else{if(body.charAt(begStmt-1)!="$"&&body.charAt(begStmt-1)!="\\"){var offset=(body.charAt(begStmt+1)=="/"?2:1);if(body.substring(begStmt+offset,begStmt+10+offset).search(TrimPath.parseTemplate_etc.statementTag)==0){break
+}}}begStmt=body.indexOf("{",begStmt+1)}if(begStmt<0){break}var endStmt=body.indexOf("}",begStmt+1);if(endStmt<0){break}emitSectionText(body.substring(endStmtPrev+1,begStmt),funcText);emitStatement(body.substring(begStmt,endStmt+1),state,funcText,tmplName,etc);endStmtPrev=endStmt}emitSectionText(body.substring(endStmtPrev+1),funcText);if(state.stack.length!=0){throw new etc.ParseError(tmplName,state.line,"unclosed, unmatched statement(s): "+state.stack.join(","))}funcText.push("}}; TrimPath_Template_TEMP");return funcText.join("")};var emitStatement=function(stmtStr,state,funcText,tmplName,etc){var parts=stmtStr.slice(1,-1).split(" ");var stmt=etc.statementDef[parts[0]];if(stmt==null){emitSectionText(stmtStr,funcText);return}if(stmt.delta<0){if(state.stack.length<=0){throw new etc.ParseError(tmplName,state.line,"close tag does not match any previous statement: "+stmtStr)}state.stack.pop()}if(stmt.delta>0){state.stack.push(stmtStr)}if(stmt.paramMin!=null&&stmt.paramMin>=parts.length){throw new etc.ParseError(tmplName,state.line,"statement needs more parameters: "+stmtStr)
+}if(stmt.prefixFunc!=null){funcText.push(stmt.prefixFunc(parts,state,tmplName,etc))}else{funcText.push(stmt.prefix)}if(stmt.suffix!=null){if(parts.length<=1){if(stmt.paramDefault!=null){funcText.push(stmt.paramDefault)}}else{for(var i=1;i1){funcText.push(" ")}funcText.push(parts[i])}}funcText.push(stmt.suffix)}};var emitSectionText=function(text,funcText){if(text.length<=0){return}var nlPrefix=0;var nlSuffix=text.length-1;while(nlPrefix=0&&(text.charAt(nlSuffix)==" "||text.charAt(nlSuffix)=="\t")){nlSuffix--}if(nlSuffix0){funcText.push('if (_FLAGS.keepWhitespace == true) _OUT.write("');var s=text.substring(0,nlPrefix).replace("\n","\\n");if(s.charAt(s.length-1)=="\n"){s=s.substring(0,s.length-1)}funcText.push(s);funcText.push('");')}var lines=text.substring(nlPrefix,nlSuffix+1).split("\n");for(var i=0;i1){funcText.push(",");funcText.push(parts[1])}funcText.push(")")};var cleanWhiteSpace=function(result){result=result.replace(/\t/g," ");result=result.replace(/\r\n/g,"\n");result=result.replace(/\r/g,"\n");result=result.replace(/^(\s*\S*(\s+\S+)*)\s*$/,"$1");return result};var scrubWhiteSpace=function(result){result=result.replace(/^\s+/g,"");result=result.replace(/\s+$/g,"");
+result=result.replace(/\s+/g," ");result=result.replace(/^(\s*\S*(\s+\S+)*)\s*$/,"$1");return result};TrimPath.parseDOMTemplate=function(elementId,optDocument,optEtc){if(optDocument==null){optDocument=document}var element=optDocument.getElementById(elementId);var content=element.value;if(content==null){content=element.innerHTML}content=content.replace(/</g,"<").replace(/>/g,">");return TrimPath.parseTemplate(content,elementId,optEtc)};TrimPath.parseDataTemplate=function(content,data){content=content.replace(/</g,"<").replace(/>/g,">");return TrimPath.parseTemplate(content,"everyid",undefined).process(data,undefined)};TrimPath.processDOMTemplate=function(elementId,context,optFlags,optDocument,optEtc){return TrimPath.parseDOMTemplate(elementId,optDocument,optEtc).process(context,optFlags)}})();var STORE=(function(){var l={},h=window,k=h.document,c="localStorage",o="globalStorage",d="__storejs__",g;l.disabled=false;l.set=function(e,p){};l.get=function(e){};l.remove=function(e){};
+l.clear=function(){};l.transact=function(e,r,p){var q=l.get(e);if(p==null){p=r;r=null}if(typeof q=="undefined"){q=r||{}}p(q);l.set(e,q)};l.getAll=function(){};l.serialize=function(e){return String(e)};l.deserialize=function(e){if(typeof e!="string"){return undefined}return e};function b(){try{return(c in h&&h[c])}catch(e){return false}}function n(){try{return(o in h&&h[o]&&h[o][h.location.hostname])}catch(e){return false}}if(b()){g=h[c];l.set=function(e,p){if(p===undefined){return l.remove(e)}g.setItem(e,l.serialize(p))};l.get=function(e){return l.deserialize(g.getItem(e))};l.remove=function(e){g.removeItem(e)};l.clear=function(){g.clear()};l.getAll=function(){var e={};for(var q=0;qdocument.w=window<\/script>");f.close();j=f.w.frames[0].document;g=j.createElement("div")}catch(i){g=k.createElement("div");j=k.body}function a(e){return function(){var q=Array.prototype.slice.call(arguments,0);q.unshift(g);j.appendChild(g);g.addBehavior("#default#userData");g.load(c);var p=e.apply(l,q);j.removeChild(g);return p}}function m(e){return"_"+e}l.set=a(function(q,e,p){e=m(e);if(p===undefined){return l.remove(e)}q.setAttribute(e,l.serialize(p));q.save(c)});l.get=a(function(p,e){e=m(e);return l.deserialize(p.getAttribute(e))});l.remove=a(function(p,e){e=m(e);p.removeAttribute(e);p.save(c)});l.clear=a(function(r){var p=r.XMLDocument.documentElement.attributes;r.load(c);for(var q=0,e;e=p[q];q++){r.removeAttribute(e.name)}r.save(c)});l.getAll=a(function(s){var p=s.XMLDocument.documentElement.attributes;
+s.load(c);var q={};for(var r=0,e;e=p[r];++r){q[e]=l.get(e)}return q})}}}try{l.set(d,d);if(l.get(d)!=d){l.disabled=true}l.remove(d)}catch(i){l.disabled=true}return l})();function bdsug(opts){var me=this,opts=me.opts=opts||{};me.form=opts.form||document.forms[0]||null;me.input=opts.input||me.form.wd||null;me.storestr=me.storestr||"";me.storearr=me.storearr||[];me.query=me.input&&me.input.value||"";me.inputValue=me.query;me.showValue=me.query;me.sugValue="";me.queryValue="";me.reqValue="";me.value=me.query;me._curSelect=-1;me.dataCached={};me.data_cache={};me.dataArray=[];me.dataStored=[];me.dataAladdin=[];me.timer;me.sideRenderTimeout;me.SIDE_TIMEOUT=300;me.sideHideTimeout;me.container;me.side_container=null;me.container_wrap=null;me.async_started;me.spData={};me.side_current_keyword="";me.bindResultLog=window.bindResultLog||null;me.submitType="";me.rsv_crdisp=0;me.rsv_hisdisp=0;me.sugT=0;me.jqXhr=null;me.language=opts.language||(window.bds&&bds.comm&&bds.comm.language)||"";me.clear=opts.clear||$("#clear");
+me.emptySugWord="baiduhotrs4ar";me.empty_data;me.dataDefer=new Deferred();me.sug_template=sug_template(me)}bdsug.prototype={updateInitData:function(){var me=this;me.query=bds.comm.query;me.pinyin=bds.comm.pinyin||"";me.value=me.showValue=me.input.value;try{me.writeStore()}catch(e){}},startCircle:function(){var me=this;if(me.timer){return}me.timer=setTimeout(function(){if(me.value!=me.input.value&&me.showValue!=me.input.value){me.showValue=me.value=me.input.value;me.request()}me.timer=setTimeout(arguments.callee,20)},20)},stopCircle:function(){var me=this;if(me.timer){clearTimeout(me.timer);me.timer=null}},sug_callback:function(data){var me=this;if(data.q){if(window.submit_to){me.data_cache[window.submit_to]=me.data_cache[window.submit_to]||{};me.data_cache[window.submit_to][data.q]=data}else{me.data_cache[data.q]=data}}me.dataArray=me.changeData(data);me.render(me.dataArray)},isZh:function(str){var code=str.charCodeAt(0);if(code>19968&&code<40895){return true}return false},buildUrl:function(val){var me=this;
+var requestUrl=bds.comm.sugHost||"http://suggestion.baidu.com/su";var lang={"th-TH":"thai","ar-EG":"eg","pt-BR":"br"}[me.language];if(window.submit_to=="images"){lang={"th-TH":"image_thai","ar-EG":"image_eg","pt-BR":"image_brazil"}[me.language];requestUrl={"th-TH":"http://sugimg.hao123.co.th/su","ar-EG":"http://sugimg.hao123.com.eg/su","pt-BR":"http://sugimg.hao123.com.br/su"}[me.language]}else{lang=(lang&&bds&&bds.comm&&(bds.comm.gvideo=="1"||window.submit_to=="videos")?"video_":"")+lang}if(lang){me.addTj({req_prod:lang})}lang=lang?"&prod="+lang:"";var getCookieSwitch=function(){var _switch=Cookie.get("sug",3);getCookieSwitch=function(){return _switch};return _switch};return requestUrl+"?wd="+encodeURIComponent(val)+lang+"&p="+getCookieSwitch()+"&sid="+bds.comm.sid+"&t="+new Date().getTime()},request:function(){var me=this;if(me.value.trim()==""){if(me.clear){me.clear.hide()}me.inputClick();return}else{me.clear&&me.clear.css("display","block")}if(window.submit_to&&me.data_cache[window.submit_to]&&me.data_cache[window.submit_to][me.value]){me.sug_callback(me.data_cache[window.submit_to][me.value]);
+return}if(me.data_cache[me.value]){me.sug_callback(me.data_cache[me.value]);return}if(me.jqXhr){me.jqXhr.abort()}var val=me.reqValue=me.value;me.jqXhr=$.ajax({dataType:"jsonp",async:true,scriptCharset:"utf-8",url:me.buildUrl(me.value),jsonp:"cb",timeout:5000,success:function(data){if(me.reqValue==val){me.sug_callback(data)}},always:function(){me.jqXhr=null}})},writeStore:function(pinyin,query){var me=this;pinyin=(pinyin||me.pinyin||"").toLowerCase();query=(query||me.query||"").toLowerCase();if(query&&query.length>2&&query.length<65){me.getStore();var q=encodeURIComponent(query);var p=encodeURIComponent(pinyin);$.each(me.storearr,function(i,a){if(a&&a.q==q){me.storearr.splice(i,1)}});me.storearr.push({q:q,p:p});if(me.storearr.length>50){me.storearr.shift()}me.setStore()}},checkStore:function(){var me=this;me.dataStored=[];if(me.value.length>2){me.getStore();$.each(me.storearr,function(i,a){var q=decodeURIComponent(a.q).toLowerCase();var p=decodeURIComponent(a.p).toLowerCase();if(q.indexOf(me.value.toLowerCase())==0||p.indexOf(me.value.toLowerCase())==0){me.dataStored.unshift({value:q,pinyin:p})
+}})}},getStore:function(){var me=this;me.storestr=STORE.get("BDSUGSTORED");me.storearr=(me.storestr&&$.parseJSON(me.storestr))||[]},setStore:function(){var me=this;var str="";$.each(me.storearr,function(i,a){str+=(i==0?"":",")+'{"q":"'+a.q+'","p":"'+a.p+'"}'});me.storestr="["+str+"]";STORE.set("BDSUGSTORED",me.storestr)},mergeData:function(data){var me=this;me.checkStore();var his_arr=me.dataStored.slice(0,2);var start=0;$.each(his_arr,function(index,item){for(var i=0;i0){input.val(o[p])}else{$(me.form).append(' ')}}}},rmTj:function(o){var me=this;for(var i in o){var input=$("input[name="+i+"]",me.form);if(i=="f"&&input.length){if(input[0].id=="bdsug_ipt_f"){input.remove()
+}else{input.val("8")}}else{input.remove()}}},inputClick:function(e){var me=this,url=me.buildUrl(me.emptySugWord);me.inputEmptySug(url,me.changeData).call(this,e)},setBold:function(q,str,data){if(data&&data.showValue){return data.showValue}if(q&&str){q=q.trim();str=""+str+" "}return str},ct:function(){var me=this;me.lis&&me.lis.removeClass("cur")},hide:function(){var me=this;me.container_wrap&&me.container_wrap.hide();me.hideSideContainer();me.btn_down&&me.btn_down()},hideSideContainer:function(){var me=this;if(me.side_container){me.side_container.hide();me.lis&&me.lis.removeClass("cur_side")}if(me.container_wrap){me.container.removeClass("side_show")}},keydown:function(e){var me=this;if(me.sugT==0){me.sugT=new Date().getTime()}if(e.keyCode==9||e.keyCode==27){me.hide()}if(e.keyCode==13){if(me.container_wrap&&me.container_wrap.css("display")=="block"&&me._curSelect>0){me.submitType="sug_enter"}else{me.submitType="key_enter"}}if(me.container_wrap&&me.container_wrap.css("display")!="none"){if(e.keyCode==38){e.preventDefault();
+me.input.focus();me.select_prev()}if(e.keyCode==40){me.select_next();me.input.focus()}}else{if(e.keyCode==38||e.keyCode==40){me.showValue=me.value=me.input.value;me.request()}}},select:function(i,updateInput){var me=this;me.ct();me._curSelect=i;if(me._curSelect>0){if(updateInput){me.showValue=me.input.value=me.dataArray[me._curSelect-1].value}me.lis.eq(me._curSelect-1).addClass("cur")}else{if(updateInput){me.showValue=me.input.value=me.value}}},renderRightSide:function(data,i){var me=this;if(!me.dataArray[i]||!me.dataArray[i].value||!data||!data.template||me.dataArray[i].from=="history"||me.dataArray[i].from=="url"){return false}var keyword=me.dataArray[i].value;me.side_container.attr("data-click","{'fm':'se','rsv_richsug':'"+(data.template?data.template:"")+"','wd':'"+keyword+"','rsp':'"+i+"',rsv_sugtype:'rsr'}");c({fm:"inlo",rsv_richsug:data.template,rsp:""+i,rsv_sugtype:"rsl"});me.lis.eq(i).addClass("cur_side");if(keyword!=me.side_current_keyword){if(me.sug_template[data.template]&&me.sug_template[data.template].render){me.sug_template[data.template].render(data,i)
+}else{return}me.side_current_keyword=keyword}me.side_container.show();me.container.addClass("side_show")},side_container_mouseover:function(){var me=this;me.stop_hide_side();clearTimeout(me.sideRenderTimeout);me.sideRenderTimeout=null;for(var i=0;i0&&me.dataArray[me._curSelect-1]&&me.dataArray[me._curSelect-1].from=="url"&&me.submitType=="sug_enter"){me.submitType="url_click";e.stopPropagation();e.preventDefault();
+is_url=true}if(me.dataArray&&me._curSelect>0&&me.dataArray[me._curSelect-1]&&me.dataArray[me._curSelect-1].from=="history"){me.addTj({rsv_sugtype:"his"})}else{me.rmTj({rsv_sugtype:0})}if(me.submitType=="url_click"){c({fm:"se",st:"3",rsv_crdisp:me.rsv_crdisp,rsv_sugtype:"cr",wd:me.dataArray[me._curSelect-1].value,title:me.dataArray[me._curSelect-1].value,url:me.dataArray[me._curSelect-1].url,rsp:""+(me._curSelect-1),prefixsug:me.value})}if(me.submitType&&me.submitType.indexOf("sug")==0){me.addTj({st:3,rsp:""+(me._curSelect-1),prefixsug:(me.value=="")?me.emptySugWord:me.value})}else{me.rmTj({st:0,rsp:0,prefixsug:(me.value=="")?me.emptySugWord:me.value,rsv_sugtype:0})}if(me.submitType&&!me.submitType.indexOf("sug")==0&&window.bds&&window.bds.comm&&window.bds.comm.query){me.addTj({st:8})}me.rmTj({rsv_richsug:0});if(me.spData&&me.dataArray&&me.dataArray[me._curSelect-1]&&me.dataArray[me._curSelect-1].from!="history"&&me.spData[me.dataArray[me._curSelect-1].value]&&me.spData[me.dataArray[me._curSelect-1].value].template){me.addTj({rsv_sugtype:"rsl",rsv_richsug:me.spData[me.dataArray[me._curSelect-1].value].template})
+}me.addTj({input_t:me.sugT>0?(new Date().getTime()-me.sugT):0});me.sugT=0;$.each(["rsv_crdisp","rsv_hisdisp"],function(index,item){var o={};if(me[item]=="1"){o[item]=me[item];me.addTj(o);me[item]="0"}else{o[item]=0;me.rmTj(o)}});if(me.dataArray&&me.spData){var sp_disp={},sp_disp_arr=[];$.each(me.dataArray,function(index,item){if(item.from==0&&me.spData[item.value]&&!sp_disp[me.spData[item.value].template]){sp_disp[me.spData[item.value].template]=1;sp_disp_arr.push(me.spData[item.value].template)}});if(sp_disp_arr.length){me.addTj({rsv_richdisp:sp_disp_arr.join()})}else{me.rmTj({rsv_richdisp:0})}}me.submitType=null;if(me.dataArray&&me.dataArray[me._curSelect-1]&&me.dataArray[me._curSelect-1].value){me.showValue=me.value=me.input.value=me.dataArray[me._curSelect-1].value}else{me.showValue=me.value=me.input.value}me._curSelect=0;if(is_url){return false}if(window.submit_to){return webSubmit(e)}else{if(window.form_submit_result){return form_submit_result.call(me.form)}else{return true}}},keypress:function(e){var me=this;
+if(me.dataArray&&me.dataArray[me._curSelect-1]&&me.dataArray[me._curSelect-1].from=="url"&&e.keyCode==13){window.open(me.dataArray[me._curSelect-1].url)}},searchBtn_mouseup:function(){var me=this;me.submitType="clk_submit"},document_click:function(e){var me=this,node=e.target,hideFlag=true;do{if(node==me.form){hideFlag=false;break}}while(node=node.parentNode);if(hideFlag){me.hide()}},insertSug:function(){var me=this;me.form.insertBefore(me.container_wrap[0],me.form.firstChild)},createContainer:function(){var me=this,container=$('');me.container=$(".sg",container);me.side_container=$(".sg_side",container);me.container_wrap=container;me.side_container.on("mouseover",function(e){me.side_container_mouseover(e)}).on("mouseout",function(e){me.side_container_mouseout(e)}).on("click",function(e){var nd=e.target;do{if(nd!=me.side_container&&nd.nodeName=="A"){me.hide();me.stopCircle();break}}while(nd=nd.parentNode)
+});me.container.delegate("a.history_delete","click",function(e){var _this=$(this).parent(),index=me.lis.index(_this),q=encodeURIComponent(_this.attr("data-q")),p=encodeURIComponent(_this.attr("data-p"));for(var i=0,len=me.storearr.length;i0){return}loadedData=true;me.jqXhr=$.ajax({dataType:"jsonp",async:true,scriptCharset:"utf-8",url:url,jsonp:"cb",timeout:5000,success:function(data){me.empty_data=data;if(me.empty_data&&me.empty_data.s.length>0){me.dataDefer.resolve()}},always:function(){me.jqXhr=null}})};return function(type_str){if(window.submit_to=="images"||window.submit_to=="videos"){me.hide();return}if(type_str!="triangle"&&me.input.value!=""){return}loadData();me.dataDefer.done(function(){if(me.reqValue==me.emptySugWord){var data=dataProcess.call(me,me.empty_data);me.render(data);if(data.length<=0&&me.container){me.container[0].innerHTML=""}}})}},keyword2url:function(){var me=this;$("a",me.side_container).each(function(){var a=this;if(a.getAttribute("keyword")){a.href=(me.build_search_url||window.build_search_url).call(me,{params:{wd:a.getAttribute("keyword")},exclude:["pn"]})
+}})},init:function(){var me=this;me.updateInitData();$(me.input).on("keydown",function(e){me.keydown(e)}).on("focus",function(){me.startCircle()}).on("blur",function(){me.stopCircle()}).on("click",function(){me.inputClick()}).on("keypress",function(e){me.keypress(e)});$("#su").on("mouseup",function(){me.searchBtn_mouseup()});$(document).bind("mousedown",function(e){me.document_click(e)}).bind("document_reload",function(){me.updateInitData()});$(me.form).on("submit",function(e){me.form_submit(e)});if(me.clear){}}};function sug_template(me){return{right1:{html:' {if d.url} ${d.title} {else} ${d.title} {/if} {if d.rate_flag}
{/if} {if d.attr} {for p in d.attr} {if p.value && p.name}
${p.name} ${p.value}
{if p.link}
{for lk in p.link} ${lk.text} &bnsp; {/for}
{/if}
{/if} {/for} {/if}
',render:function(data){data.wid="";
+data.hei="";if(data.img_width){data.wid="width:"+data.img_width+"px;"}if(data.img_height){data.hei="height:"+data.img_height+"px;"}data.img_style=data.wid+data.hei;if(data.rate&&data.rate_all){var percentage=data.rate/data.rate_all;var star_width="width:"+Math.round(73*percentage)+"px;"}var backgroundx="";if(me.language=="ar-EG"){backgroundx=data.rate/data.rate_all-Math.round(data.rate/data.rate_all*5)/5;backgroundx=backgroundx*73;backgroundx=backgroundx?"background-position:"+backgroundx+"px 0;":"";data.backgroundx=backgroundx+star_width}if(data.img_height){data.img_height20=data.img_height-20+"px";data.img_height18=data.img_height-18+"px"}if(data.img_width){data.img_width5=data.img_width-5+"px";data.img_width_px=data.img_width+"px"}if(data.rate&&data.rate_all){data.rate_flag=true}me.side_container[0].innerHTML=process_rich(TrimPath.parseDataTemplate(this.html,{d:data}));me.keyword2url();function process_rich(str){var re=/<([^>]*)>/g;re=/\[(\/?(a|br)[^\]]*)\]/g;str=str.replace(re,"<$1>");
+return str}}},sug_freebase_basic:{html:'',render:function(data,i){if(!data.abs){data.abs=data.attr.pop().value}data.keyword=me.dataArray[i].value;me.side_container[0].innerHTML=TrimPath.parseDataTemplate(this.html,{d:data});me.keyword2url()}},url:{render:function(data){var str=me.setBold(me.value,data.value,data);var title=data.icon?'':'
'+data.show_url+"
"}},normal:{render:function(data){var str=me.setBold(me.value,data.value,data),className=false,ret="";ret+="
"+str;if(me.spData&&me.spData[data.value]&&me.spData[data.value].template&&me.sug_template[me.spData[data.value].template]){ret+=" "}ret+=" ";return ret}},history:{render:function(data){return'
'+data.value+'حذف '}}}}var $=window.$||window.jQuery;var language;language={ar:"ar-EG",th:"th-TH",br:"pt-BR"}[location.host.split(".")[0]];if(!language){language="pt-BR"}var mode="google";var domain={"ar-EG":"search.hao123.com.eg","pt-BR":"search.hao123.com.br","th-TH":"search.hao123.co.th"}[language];language=window.__language?window.__language:language;domain=window.__domain?window.__domain:domain;
+var ubsurl="http://"+domain+"/r/cl/i18n.gif";var addedTj={};var statusOn=false;function _baidu_sug(opts){var me=this,opts=me.opts=opts||{};bdsug.apply(me);$.extend(true,me,{form:$("#searchGroupForm")[0],input:$("#searchGroupInput").attr("autocomplete","off").get(0),searchBtn:$("#searchGroupBtn"),data_cache:{baidu:{},google:{}},containerClassName:"baidu_sug",language:language,upDown:null,tip_num:null,sug_template:{"new":{render:function(data){var hl=data._index<4?"hl":"";return'
'+data._index+" "+data.value+'الأحدث '}},sequence:{render:function(data){var hl=data._index<4?"hl":"";return'
'+data._index+" "+data.value+""}}},modeConfig:{baidu:{dataProcess:function(data){if(data.q){me.data_cache.baidu[data.q]=data}return me.changeData(data)},buildRequestUrl:function(value){var requestUrl="http://"+domain+"/r/su";var lang={"th-TH":"thai","ar-EG":"eg","pt-BR":"br"}[me.language];
+me.addTj({req_prod:lang});lang=lang?"&prod="+lang:"";requestUrl=requestUrl+"?wd="+encodeURIComponent(value)+lang+"&haobd="+encodeURIComponent(Cookie.get("BAIDUID"))+"&t="+new Date().getTime();return requestUrl}},google:{dataProcess:function(data){me.spData={};var dataArray=[],temp;if(data[0]){me.data_cache.google[data[0]]=data}if(data[1]&&data[1].length){for(var i=0;i
","").replace("","");temp.showValue=data[1][i][0];temp.from=0;dataArray.push(temp)}}return me.dataArray=dataArray.slice(0,10)},buildRequestUrl:function(value){var requestUrl="http://"+{"ar-EG":"clients1.google.com.eg","th-TH":"clients1.google.co.th","pt-BR":"clients1.google.com.br"}[me.language]+"/complete/search?q="+encodeURIComponent(value)+"&client=hp&hl="+me.language+"&authuser=0&t="+new Date().getTime();return requestUrl}}}})}function f(){}f.prototype=bdsug.prototype;_baidu_sug.prototype=new f();_baidu_sug.prototype.constructor=_baidu_sug;$.extend(_baidu_sug.prototype,{build_search_url:function(OPTIONS){var me=this;
+var params=OPTIONS.params||{};var exlcudes=OPTIONS.exclude||[];var param,exclude;var url="http://"+domain+"/s?";var results={ie:"utf-8",tn:me.form.tn.value};for(param in params){if(params.hasOwnProperty(param)){results[param]=params[param]}}for(param in results){if(results.hasOwnProperty(param)){url+=param+"="+encodeURIComponent(results[param])+"&"}}return url.replace(/&*$/g,"")},appendStyle:function(){var me=this,div=C("div");var cssText='.sg_wrap{position:absolute;overflow:hidden;display:none;margin:28px 0 0 0;_margin:28px 1px 0 0;border:1px solid #b6b6b6;z-index:100;background:#fff;width:533px}.sg_wrap .sg_side{position:absolute;left:0;z-index:101;background:#fafafa;width:300px;height:100%;_height:280px;display:none;font-size:13px;border-right:1px solid #e8e8e8}.sg_wrap.ltr .sg{text-align:left;margin:3px 0}.sg_wrap.ltr .sg li{direction:ltr}.sg_wrap .sg i{width:30px;display:inline-block;background:url(http://s1.f.shifen.com/r/www/cache/i18n/ar-EG/www/images/sprite_da88b3b8.png) no-repeat -65px -35px;*overflow:hidden}.sg_wrap .sg .cur i{background-position:-35px -35px}.sg_wrap.rtl .sg i{background-position:-128px -35px}.sg_wrap.rtl .sg .cur i{background-position:-95px -35px}.sg_wrap.ltr .sg_side{right:0;border-right:0;border-left:1px solid #e8e8e8}.sg_wrap .sg li{height:25px;font-size:16px;line-height:25px;padding:0 8px;cursor:pointer;overflow:hidden}.sg_wrap .sg li span{font-weight:normal}.sg_wrap .sg .url{height:45px;border-bottom:1px solid #e1e1e1}.sg_wrap .sg .url a{display:block;text-decoration:none}.sg_wrap .sg .url .title{height:25px;text-decoration:underline}.sg_wrap .sg .url .title.favicon{background-position:left center;background-repeat:no-repeat;padding-right:20px;zoom:1}.sg_wrap.ltr .sg .url .title.favicon{padding-left:20px}.sg_wrap.rtl .sg .url .title.favicon{padding-right:20px;background-position:right center}.sg_wrap .sg .url .title span{font-weight:bold}.sg_wrap .sg .url .show_url{line-height:16px;font-size:13px;color:green}.sg_wrap .sg .cur{background-color:#f2f2f2}.sg_wrap .side_show{min-height:250px;*height:250px}.sg_wrap .sg .history{color:#551a8b}.sg_wrap .sg .history .history_delete{font-size:13px;color:#666;float:left;display:none;text-decoration:none}.sg_wrap .sg .history .history_delete:hover{text-decoration:underline}.sg_wrap .sg .history.cur .history_delete{display:inline}.sg_wrap.ltr .sg .history .history_delete{float:right}.sg_wrap.rtl .sg .history .history_delete{float:left}.sg_wrap .sg_side .play_bar{position:absolute;margin:117px 0 0 0;width:99px;height:20px;background:#000;opacity:.3;filter:alpha(opacity=30)}.sg_wrap .sg_side .duration{position:absolute;margin:119px 0 0 0;width:94px;height:20px;text-align:left;padding:0 0 0 5px;color:#fff}.sg_wrap .sg_side .play_icon{position:absolute;margin:119px 3px 0 0;width:20px;height:20px;padding:0 0 0 5px;background:url("http://s1.f.shifen.com/r/www/cache/i18n/ar-EG/ala/img/renming.png") no-repeat -100px 0}.sg_wrap .sg_side .btn{display:block;width:99px;height:25px;line-height:25px;border:1px solid #5e8ed5;text-align:center;background-color:#77a4e8;background-image:-moz-linear-gradient(top,#80aff4,#77a4e8);background-image:-ms-linear-gradient(top,#80aff4,#77a4e8);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#80aff4),color-stop(100%,#77a4e8));background-image:-webkit-linear-gradient(top,#80aff4,#77a4e8);background-image:-o-linear-gradient(top,#80aff4,#77a4e8);background-image:linear-gradient(top,#80aff4,#77a4e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff80aff4",endColorstr="#ff77a4e8",GradientType=0);border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;color:#fff;font-size:16px;margin-top:10px}.sg_wrap .sg_side .btn:hover{text-decoration:none;border:1px solid #3c72c1;background-color:#6294df;background-image:-moz-linear-gradient(top,#6da0eb,#6294df);background-image:-ms-linear-gradient(top,#6da0eb,#6294df);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#6da0eb),color-stop(100%,#6294df));background-image:-webkit-linear-gradient(top,#6da0eb,#6294df);background-image:-o-linear-gradient(top,#6da0eb,#6294df);background-image:linear-gradient(top,#6da0eb,#6294df);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff6da0eb",endColorstr="#ff6294df",GradientType=0)}.sg_wrap .sg_side .sg_side_title{margin:10px 17px 4px;padding:3px;font-size:16px;color:#454545}.sg_wrap .sg_side a:hover{text-decoration:underline}.sg_wrap .sg_side a{text-decoration:none}.sg_wrap .sg_side .image{width:99px;float:right;margin-right:20px;*display:inline}.sg_wrap .sg_side .image img{width:99px;height:137px}.sg_wrap .sg_side .stars,.sg_wrap .sg_side .stars .star{width:73px;height:12px;background:url(http://s1.f.shifen.com/r/www/cache/i18n/ar-EG/www/images/star_94b13508.png);background-repeat:repeat-x;background-position:0 -28px}.sg_wrap .sg_side .stars .star{background-position:0 0}.sg_wrap .sg_side .info{float:right;margin-right:20px;width:140px;height:195px;overflow:hidden;*display:inline}.sg_wrap .sg_side .score{*zoom:1}.sg_wrap .sg_side .score:after{content:"\0020";display:block;height:0;clear:both;overflow:hidden;visibility:hidden}.sg_wrap .sg_side .stars,.sg_wrap .sg_side .points{float:right}.sg_wrap .sg_side .points{color:#f56f2f;margin-right:10px;line-height:10px;width:50px}.sg_wrap .sg_side .attrs{margin-top:4px}.sg_wrap .sug_freebase_basic{height:100%;padding:5px;background:#fff;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.sg_wrap .sug_freebase_basic:hover{background:#f2f2f2}.sg_wrap .sug_freebase_basic a{display:block;background:#fff;text-decoration:none;height:100%;overflow:hidden;padding:2px 15px;color:#333;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.sg_wrap .sug_freebase_basic a:hover{text-decoration:none}.sg_wrap .sug_freebase_basic a h3{font-size:16px;margin-bottom:15px;font-weight:bold}.sg_wrap .sug_freebase_basic a .cc{margin-bottom:10px;*zoom:1}.sg_wrap .sug_freebase_basic a .cc:after{content:"\0020";display:block;height:0;clear:both;overflow:hidden;visibility:hidden}.sg_wrap .sug_freebase_basic a .img{float:right;width:90px;height:100px;display:table}.sg_wrap .sug_freebase_basic a .img .cell{display:table-cell;vertical-align:middle}.sg_wrap .sug_freebase_basic a .img .cell img{width:75px}.sg_wrap .sug_freebase_basic a .abs{_height:108px;max-height:108px;line-height:18px;overflow:hidden;text-align:right}.sg_wrap .sug_freebase_basic a .has_img .abs{width:170px;float:right}.sg_wrap .sug_freebase_basic a .attr{margin-bottom:5px;line-height:18px;_height:18px;height:18px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:260px}.sg_wrap .sug_freebase_basic a .attr .key{color:#999}.sg_wrap{margin:27px -1px 0 0;_margin:27px 0 0 0;width:528px;font:12px Arial,Helvetica,sans-serif;*margin-right:-529px;overflow:inherit}.sg_wrap .sg_side{_height:100%}.sg_wrap a{color:#12c;text-decoration:none}.sg_wrap .sg_side h4{font-weight:bold;font-size:13px}.sg_wrap.ltr .sg_side{left:0}.sg_wrap .sg_side .sg_side_title{font-weight:bold;margin:13px 20px 7px;padding:0}.sg_wrap .sg_side .info{width:145px}.sg_wrap .sg_side .points{line-height:15px;margin-top:-2px}.sg_wrap .sg_side .descrip{text-align:right}.sg_wrap .side_show{min-height:252px;*height:252px}.sg_wrap li{padding:3px 10px;cursor:pointer}.sg_wrap li b{font-weight:bold;display:inline;font-size:1em;font-family:Arial,Tahoma,Helvetica,sans-serif}.sg_wrap .sg .url .title{line-height:25px}.sg_wrap .sg .url .title span{color:#00e}.sg_wrap .sg .sg_li_new i{background-position:-195px -35px}.sg_wrap .sg .sg_li_new .new{padding-right:5px;font-size:10px;color:#f00;font-size:13px}.sg_wrap.rtl .sg .sg_li_new i{background-position:-200px -35px}.sg_wrap.ltr .sg .sg_li_new .new{padding-left:5px}.sg_wrap.rtl .sg .sg_li_new .new{padding-right:5px}.sg_tri{background:#fff}.sg_tri input{width:450px!important;width:420px!important;*width:416px!important;margin-left:30px}.sg_tri .sg_btn{cursor:pointer;position:absolute;display:inline}.sg_tri .sg_btn i{position:absolute;left:10px;top:10px;width:0;height:0;border-top:6px solid #999;border-left:6px solid transparent;border-right:6px solid transparent;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink);font-size:0;line-height:0}.sg_tri .sg_btn.sg_up i{top:4px;width:0;height:0;border-top:6px solid #999;border-left:6px solid transparent;border-right:6px solid transparent;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink);font-size:0;line-height:0;border-bottom:6px solid #999;border-top:6px solid transparent}.sg_tri .sg_btn .sg_new_num{display:none;width:17px;height:17px;position:absolute;text-align:center;left:7px;top:-9px;font-size:11px;border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;background:#f66f2e;color:#fff}.sg_btn{display:none}.sg_wrap .sg .sg_li_seq .num,.sg_wrap .sg .sg_li_new .num{display:block;float:right;width:15px;height:15px;line-height:16px;color:#fff;border-radius:2px;-moz-border-radius:2px;-webkit-border-radius:2px;font-size:12px;background:#b3b3b3;text-align:center;margin:5px 0 0 10px}.sg_wrap .sg .sg_li_seq.hl .num,.sg_wrap .sg .sg_li_new.hl .num{background:#ff6c00}.sg_wrap.ltr .sg .sg_li_seq .num,.sg_wrap.ltr .sg .sg_li_new .num{margin:5px 10px 0 0;float:left}.sg_wrap.rtl .sg .sg_li_seq .num,.sg_wrap.rtl .sg .sg_li_new .num{float:right;margin:5px 0 0 10px}'.replace(/sg_wrap/g,me.containerClassName);if(me.language=="ar-EG"){cssText+="."+me.containerClassName+" .sg_side .duration {text-align:left; padding:0 0 0 5px;}";cssText+="."+me.containerClassName+".ltr .sg{ text-align:left; }";cssText+="."+me.containerClassName+".ltr .sg li{direction:ltr;}";cssText+="."+me.containerClassName+".ltr .sg_side{border-right:0;border-left: 1px solid #e8e8e8;}";cssText+="."+me.containerClassName+"{ margin:27px -1px 0 0;_margin:27px 0 0 0 }";
+cssText+="."+me.containerClassName+".ltr .sg_side{right:0px;}"}div.innerHTML='_";div.removeChild(div.firstChild);document.getElementsByTagName("head")[0].appendChild(div.firstChild)},sug_callback:function(data){var me=this;data=me.modeConfig[mode].dataProcess(data);me.render(data);if(data.q!=me.emptySugWord){me.btn_down&&me.btn_down()}if(data.length<=0&&me.container){me.container[0].innerHTML=""}},btn_click:function(){var me=this;me.input.focus();if(me.upDown.hasClass("sg_up")){me.hide()}else{me.inputClick("triangle")}},setBtn:function(){var me=this;var ck=Cookie.get("psSugUp");if(ck){ck=ck.split("|");if(ck[1]=="0"){Cookie.set("psSugUp",ck[0]+"|1")}}me.tip_num.hide()},request:function(){var me=this;if(me.value.trim()==""){me.inputClick();return}if(me.data_cache[mode][me.value]){me.sug_callback(me.data_cache[mode][me.value]);return}var requestUrl=me.modeConfig[mode].buildRequestUrl(me.value);if(me.jqXhr){me.jqXhr.abort()}var val=me.reqValue=me.value;
+me.jqXhr=$.ajax({dataType:"jsonp",async:true,scriptCharset:"utf-8",url:requestUrl,jsonp:mode=="baidu"?"cb":"jsonp",timeout:5000,success:function(data){if(me.reqValue==val){me.sug_callback(data)}},always:function(){me.jqXhr=null}})},inputClick:function(type_str){if(mode!="baidu"){return}var me=this,url=me.modeConfig.baidu.buildRequestUrl(me.emptySugWord),dataProcess=me.modeConfig.baidu.dataProcess;me.inputEmptySug(url,dataProcess).call(me,type_str);me.setBtn()},insertSug:function(){var me=this;me.input.parentNode.insertBefore(me.container_wrap[0],me.input.parentNode.firstChild)},createContainer:function(){var me=this;bdsug.prototype.createContainer.call(me);bindLogEvent(me.side_container[0],"se");me.container_wrap[0].className=me.containerClassName},btn_up:function(){var me=this;me.upDown&&me.upDown.addClass("sg_up")},btn_down:function(){var me=this;me.upDown&&me.upDown.removeClass("sg_up")},renderTip:function(data){var me=this;if(data&&data.n&&data.n.c&&data.n.sugUp){var ck=Cookie.get("psSugUp"),num=data.n.c;
+if(!ck||ck.split("|")[0]!=data.n.sugUp){ck=data.n.sugUp+"|0";Cookie.set("psSugUp",ck)}if(ck.split("|")[1]=="1"){return}if(num){me.tip_num[0].innerHTML=num;me.tip_num[0].style.display="inline"}}},createBtn:function(){var me=this;me.appendStyle();var _tri=$('10 ');me.upDown=_tri;me.tip_num=$("span",_tri);$(me.input).parent().addClass("sg_tri").end().after(me.upDown);var url=me.modeConfig.baidu.buildRequestUrl(me.emptySugWord);me.jqXhr=$.ajax({dataType:"jsonp",async:true,scriptCharset:"utf-8",url:url,jsonp:"cb",timeout:5000,success:function(data){me.renderTip(data)},always:function(){me.jqXhr=null}});me.upDown.click(function(){me.btn_click()})},showBtn:function(){var me=this;$(me.input.parentNode).addClass("sg_tri")},hideBtn:function(){var me=this;$(me.input.parentNode).removeClass("sg_tri")},addTj:function(o){var me=this;for(var i in o){addedTj[i]=o[i]}if(mode=="baidu"){bdsug.prototype.addTj.call(me,o)}},rmTj:function(o){var me=this;
+for(var i in o){$("input[name="+i+"]",me.form).remove()}},form_submit:function(e){var me=this;me.hide();var type=(me.submitType!="sug_enter"&&me.submitType!="key_enter"&&me.submitType!="clk_submit");var oldSubmitType=me.submitType;var res=bdsug.prototype.form_submit.call(me,e);if(mode=="baidu"&&res&&me.value.length<48){try{me.writeStore("",$.trim(me.value))}catch(e){}}if(res&&type){haoc()}return res},toggle:function(on){var me=this;if(on){if(!statusOn){$(me.input).bind("keydown.sugEvent",function(e){me.keydown(e)}).bind("focus.sugEvent",function(e){me.startCircle(e)}).bind("blur.sugEvent",function(e){me.stopCircle(e)}).bind("click.sugEvent",function(e){me.inputClick(e)}).bind("keypress.sugEvent",function(e){me.keypress(e)});me.searchBtn.bind("mouseup.sugEvent",function(e){me.searchBtn_mouseup(e)});$(document).bind("click.sugEvent",function(e){me.document_click(e)});$(me.form).bind("submit.sugEvent",function(e){me.form_submit(e)});if(!me.upDown){me.createBtn();me.hideBtn()}}if(mode=="baidu"){me.showBtn()
+}else{me.hideBtn()}me._curSelect=0}else{$.each([$(me.input),me.searchBtn,$(document),$(me.form)],function(index,item){item.unbind(".sugEvent")});me.hide();me.hideBtn();me.stopCircle()}statusOn=on},setMode:function(m){var me=this;if({baidu:1,google:1}[m]){mode=m}if(mode=="baidu"){me.addTj(addedTj)}else{me.rmTj(addedTj)}}});function bindLogEvent(wrap,fm){$(wrap).on("mousedown",function(e){var t=e.srcElement||e.target;try{var xpath=getXPath(t,wrap);log(xpath,t,wrap,fm)}catch(e){}})}function getXPath(node,wrap,path){path=path||[];wrap=wrap||document;if(node===wrap){return path}if(node.parentNode!==wrap){path=getXPath(node.parentNode,wrap,path)}if(node.previousSibling){var count=1;var sibling=node.previousSibling;do{if(sibling.nodeType==1&&sibling.nodeName==node.nodeName){count++}sibling=sibling.previousSibling}while(sibling)}if(node.nodeType==1){path.push(node.nodeName.toLowerCase()+(count>1?count:""))}return path}function getType(xpath,t,wrap){var LOG_CLASS=["TITLE","LINK","IMG","BTN","OTHERS"];
+var node=t,cs=LOG_CLASS,cl=cs.length,xstr=xpath.join(" ");while(node!==wrap){for(var i=0;i1){l--;if(/^a\d*\b/.test(xpath[l])){url=p.href;title=p.innerHTML.replace(/<[^>]*>/g,"");adata=p.getAttribute("data-click");if(p.getAttribute("data-nolog")!=null){return}break}else{p=p.parentNode}}if(!url){url=""}var data={fm:fm,p1:wrap.getAttribute("p1")||0,xpath:xpath.join("-")+"("+type+")",title:title||"",url:url};var click_data;if(click_data=wrap.getAttribute("data-click")){try{click_data=(new Function("return "+click_data))();
+$.extend(data,click_data)}catch(e){}}if(adata){try{adata=(new Function("return "+adata))();$.extend(data,adata)}catch(e){}}for(var i in data){if(data[i]===null){delete data[i]}}c(data)}function c(q){haoc(q);var sQ="",img=window["BD_PS_C"+(new Date()).getTime()]=new Image();for(v in q){if(q.hasOwnProperty(v)&&q[v].length>0){sQ+=(sQ?"&":"")+v+"="+encodeURIComponent(q[v])}}var imgsrc=ubsurl+"?";if(q.rsv_sugtype=="cr"){imgsrc+="q="+encodeURIComponent(q.title)+"&"}imgsrc+=sQ+"&lang="+language+"&haobd="+encodeURIComponent(Cookie.get("BAIDUID"))+"&path="+encodeURIComponent(location.href)+"_r="+new Date().getTime();img.src=imgsrc;return true}function haoc(q){var engine=$("#searchGroupLogo").attr("data-id");var input=$("#searchGroupInput").get(0),engine=engine?engine:"";var imgsrc="/img/gut.gif?type=click&element=sug&modId=search&position=search&engine="+engine+"&value="+encodeURIComponent(input.value)+"&r="+new Date().getTime();if(q&&q.rsv_sugtype=="cr"){imgsrc+="&url="+encodeURIComponent(q.url)
+}if(window.conf&&conf.UT&&conf.UT.params){imgsrc+="&country="+conf.UT.params.country+"&level="+conf.UT.params.level+"&page="+conf.UT.params.page}if(document.body.className.match(/header-fixed-up/)){imgsrc+="&sort=header"}var img=window["BD_HAO123_C"+(new Date()).getTime()]=new Image();img.src=imgsrc}window.baidu_sug=(function(){var me=new _baidu_sug();return{setMode:function(){me.setMode.apply(me,arguments)},toggle:function(){me.toggle.apply(me,arguments)}}})()})();
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/br_hao123_sug.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/br_hao123_sug.js
new file mode 100755
index 000000000..e60bf804b
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/br_hao123_sug.js
@@ -0,0 +1,47 @@
+(function(){function G(id){return document.getElementById(id)}function C(tagName){return document.createElement(tagName)}function TagQ(tag,obj){obj=obj?obj:document;return obj.getElementsByTagName(tag)}var Cookie={set:function(name,value,domain,path,expires,not_escape){if(typeof expires=="undefined"){expires=new Date(new Date().getTime()+365*24*3600*100)}document.cookie=name+"="+(not_escape?value:escape(value))+((expires)?"; expires="+expires.toGMTString():"")+((path)?"; path="+path:"; path=/")+((domain)?"; domain="+domain:"")},get:function(name,_default){var arr=document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));if(arr!=null){return unescape(arr[2])}return _default},clear:function(name,path,domain){if(this.get(name)){document.cookie=name+"="+((path)?"; path="+path:"; path=/")+((domain)?"; domain="+domain:"")+";expires=Fri, 02-Jan-1970 00:00:00 GMT"}}};function isAr(str){var code=str.charCodeAt(0);if(code>1536&&code<1791){return true}if(code>65136&&code<65279){return true}return false
+}function autoltr(val){var language=(window.bds&&bds.comm.language)||window.__language||{ar:"ar-EG",th:"th-TH",br:"pt-BR"}[location.host.split(".")[0]]||"pt-BR";if(val===undefined){return""}return language=="ar-EG"&&!isAr(val)?" dir='ltr' ":""}if(!String.prototype.trim){String.prototype.trim=function(){var str=this.replace(/^\s+/,""),end=str.length-1,ws=/\s/;while(ws.test(str.charAt(end))){end--}return str.slice(0,end+1)}}String.prototype.escapeHTML=function(){return this.replace(/&/g,"&").replace(//g,">")};String.prototype.hashCode=function(){var hash=0,i,c;if(this.length==0){return hash}for(i=0,l=this.length;i0){done[1]=otherArgs}dones.push(done)}if(stat=="resolve"){while(dones.length>0){done=dones.shift();
+if(!done[1]){done[0].call()}else{var i,lib;for(i=0;i0){var func=arr.shift();try{func()}catch(e){if(window.console&&console.debug){console.debug(e)}}}}}};var TrimPath;(function(){if(TrimPath==null){TrimPath=new Object()}if(TrimPath.evalEx==null){TrimPath.evalEx=function(src){return eval(src)}}var UNDEFINED;if(Array.prototype.pop==null){Array.prototype.pop=function(){if(this.length===0){return UNDEFINED}return this[--this.length]
+}}if(Array.prototype.push==null){Array.prototype.push=function(){for(var i=0;i /g,">")},capitalize:function(s){return String(s).toUpperCase()},"default":function(s,d){return s!=null?s:d}};TrimPath.parseTemplate_etc.modifierDef.h=TrimPath.parseTemplate_etc.modifierDef.escape;TrimPath.parseTemplate_etc.Template=function(tmplName,tmplContent,funcSrc,func,etc){this.process=function(context,flags){if(context==null){context={}}if(context._MODIFIERS==null){context._MODIFIERS={}}if(context.defined==null){context.defined=function(str){return(context[str]!=undefined)}}for(var k in etc.modifierDef){if(context._MODIFIERS[k]==null){context._MODIFIERS[k]=etc.modifierDef[k]}}if(flags==null){flags={}}var resultArr=[];var resultOut={write:function(m){resultArr.push(m)}};try{func(resultOut,context,flags)}catch(e){if(flags.throwExceptions==true){throw e
+}var result=new String(resultArr.join("")+"[ERROR: "+e.toString()+(e.message?"; "+e.message:"")+"]");result.exception=e;return result}return resultArr.join("")};this.name=tmplName;this.source=tmplContent;this.sourceFunc=funcSrc;this.toString=function(){return"TrimPath.Template ["+tmplName+"]"}};TrimPath.parseTemplate_etc.ParseError=function(name,line,message){this.name=name;this.line=line;this.message=message};TrimPath.parseTemplate_etc.ParseError.prototype.toString=function(){return("TrimPath template ParseError in "+this.name+": line "+this.line+", "+this.message)};var parse=function(body,tmplName,etc){body=cleanWhiteSpace(body);var funcText=["var TrimPath_Template_TEMP = function(_OUT, _CONTEXT, _FLAGS) { with (_CONTEXT) {"];var state={stack:[],line:1};var endStmtPrev=-1;while(endStmtPrev+1=0){var endStmt=body.indexOf("}",begStmt+1);var stmt=body.substring(begStmt,endStmt);var blockrx=stmt.match(/^\{(cdata|minify|eval)/);
+if(blockrx){var blockType=blockrx[1];var blockMarkerBeg=begStmt+blockType.length+1;var blockMarkerEnd=body.indexOf("}",blockMarkerBeg);if(blockMarkerEnd>=0){var blockMarker;if(blockMarkerEnd-blockMarkerBeg<=0){blockMarker="{/"+blockType+"}"}else{blockMarker=body.substring(blockMarkerBeg+1,blockMarkerEnd)}var blockEnd=body.indexOf(blockMarker,blockMarkerEnd+1);if(blockEnd>=0){emitSectionText(body.substring(endStmtPrev+1,begStmt),funcText);var blockText=body.substring(blockMarkerEnd+1,blockEnd);if(blockType=="cdata"){emitText(blockText,funcText)}else{if(blockType=="minify"){emitText(scrubWhiteSpace(blockText),funcText)}else{if(blockType=="eval"){if(blockText!=null&&blockText.length>0){funcText.push("_OUT.write( (function() { "+blockText+" })() );")}}}}begStmt=endStmtPrev=blockEnd+blockMarker.length-1}}}else{if(body.charAt(begStmt-1)!="$"&&body.charAt(begStmt-1)!="\\"){var offset=(body.charAt(begStmt+1)=="/"?2:1);if(body.substring(begStmt+offset,begStmt+10+offset).search(TrimPath.parseTemplate_etc.statementTag)==0){break
+}}}begStmt=body.indexOf("{",begStmt+1)}if(begStmt<0){break}var endStmt=body.indexOf("}",begStmt+1);if(endStmt<0){break}emitSectionText(body.substring(endStmtPrev+1,begStmt),funcText);emitStatement(body.substring(begStmt,endStmt+1),state,funcText,tmplName,etc);endStmtPrev=endStmt}emitSectionText(body.substring(endStmtPrev+1),funcText);if(state.stack.length!=0){throw new etc.ParseError(tmplName,state.line,"unclosed, unmatched statement(s): "+state.stack.join(","))}funcText.push("}}; TrimPath_Template_TEMP");return funcText.join("")};var emitStatement=function(stmtStr,state,funcText,tmplName,etc){var parts=stmtStr.slice(1,-1).split(" ");var stmt=etc.statementDef[parts[0]];if(stmt==null){emitSectionText(stmtStr,funcText);return}if(stmt.delta<0){if(state.stack.length<=0){throw new etc.ParseError(tmplName,state.line,"close tag does not match any previous statement: "+stmtStr)}state.stack.pop()}if(stmt.delta>0){state.stack.push(stmtStr)}if(stmt.paramMin!=null&&stmt.paramMin>=parts.length){throw new etc.ParseError(tmplName,state.line,"statement needs more parameters: "+stmtStr)
+}if(stmt.prefixFunc!=null){funcText.push(stmt.prefixFunc(parts,state,tmplName,etc))}else{funcText.push(stmt.prefix)}if(stmt.suffix!=null){if(parts.length<=1){if(stmt.paramDefault!=null){funcText.push(stmt.paramDefault)}}else{for(var i=1;i1){funcText.push(" ")}funcText.push(parts[i])}}funcText.push(stmt.suffix)}};var emitSectionText=function(text,funcText){if(text.length<=0){return}var nlPrefix=0;var nlSuffix=text.length-1;while(nlPrefix=0&&(text.charAt(nlSuffix)==" "||text.charAt(nlSuffix)=="\t")){nlSuffix--}if(nlSuffix0){funcText.push('if (_FLAGS.keepWhitespace == true) _OUT.write("');var s=text.substring(0,nlPrefix).replace("\n","\\n");if(s.charAt(s.length-1)=="\n"){s=s.substring(0,s.length-1)}funcText.push(s);funcText.push('");')}var lines=text.substring(nlPrefix,nlSuffix+1).split("\n");for(var i=0;i1){funcText.push(",");funcText.push(parts[1])}funcText.push(")")};var cleanWhiteSpace=function(result){result=result.replace(/\t/g," ");result=result.replace(/\r\n/g,"\n");result=result.replace(/\r/g,"\n");result=result.replace(/^(\s*\S*(\s+\S+)*)\s*$/,"$1");return result};var scrubWhiteSpace=function(result){result=result.replace(/^\s+/g,"");result=result.replace(/\s+$/g,"");
+result=result.replace(/\s+/g," ");result=result.replace(/^(\s*\S*(\s+\S+)*)\s*$/,"$1");return result};TrimPath.parseDOMTemplate=function(elementId,optDocument,optEtc){if(optDocument==null){optDocument=document}var element=optDocument.getElementById(elementId);var content=element.value;if(content==null){content=element.innerHTML}content=content.replace(/</g,"<").replace(/>/g,">");return TrimPath.parseTemplate(content,elementId,optEtc)};TrimPath.parseDataTemplate=function(content,data){content=content.replace(/</g,"<").replace(/>/g,">");return TrimPath.parseTemplate(content,"everyid",undefined).process(data,undefined)};TrimPath.processDOMTemplate=function(elementId,context,optFlags,optDocument,optEtc){return TrimPath.parseDOMTemplate(elementId,optDocument,optEtc).process(context,optFlags)}})();var STORE=(function(){var l={},h=window,k=h.document,c="localStorage",o="globalStorage",d="__storejs__",g;l.disabled=false;l.set=function(e,p){};l.get=function(e){};l.remove=function(e){};
+l.clear=function(){};l.transact=function(e,r,p){var q=l.get(e);if(p==null){p=r;r=null}if(typeof q=="undefined"){q=r||{}}p(q);l.set(e,q)};l.getAll=function(){};l.serialize=function(e){return String(e)};l.deserialize=function(e){if(typeof e!="string"){return undefined}return e};function b(){try{return(c in h&&h[c])}catch(e){return false}}function n(){try{return(o in h&&h[o]&&h[o][h.location.hostname])}catch(e){return false}}if(b()){g=h[c];l.set=function(e,p){if(p===undefined){return l.remove(e)}g.setItem(e,l.serialize(p))};l.get=function(e){return l.deserialize(g.getItem(e))};l.remove=function(e){g.removeItem(e)};l.clear=function(){g.clear()};l.getAll=function(){var e={};for(var q=0;qdocument.w=window<\/script>");f.close();j=f.w.frames[0].document;g=j.createElement("div")}catch(i){g=k.createElement("div");j=k.body}function a(e){return function(){var q=Array.prototype.slice.call(arguments,0);q.unshift(g);j.appendChild(g);g.addBehavior("#default#userData");g.load(c);var p=e.apply(l,q);j.removeChild(g);return p}}function m(e){return"_"+e}l.set=a(function(q,e,p){e=m(e);if(p===undefined){return l.remove(e)}q.setAttribute(e,l.serialize(p));q.save(c)});l.get=a(function(p,e){e=m(e);return l.deserialize(p.getAttribute(e))});l.remove=a(function(p,e){e=m(e);p.removeAttribute(e);p.save(c)});l.clear=a(function(r){var p=r.XMLDocument.documentElement.attributes;r.load(c);for(var q=0,e;e=p[q];q++){r.removeAttribute(e.name)}r.save(c)});l.getAll=a(function(s){var p=s.XMLDocument.documentElement.attributes;
+s.load(c);var q={};for(var r=0,e;e=p[r];++r){q[e]=l.get(e)}return q})}}}try{l.set(d,d);if(l.get(d)!=d){l.disabled=true}l.remove(d)}catch(i){l.disabled=true}return l})();function bdsug(opts){var me=this,opts=me.opts=opts||{};me.form=opts.form||document.forms[0]||null;me.input=opts.input||me.form.wd||null;me.storestr=me.storestr||"";me.storearr=me.storearr||[];me.query=me.input&&me.input.value||"";me.inputValue=me.query;me.showValue=me.query;me.sugValue="";me.queryValue="";me.reqValue="";me.value=me.query;me._curSelect=-1;me.dataCached={};me.data_cache={};me.dataArray=[];me.dataStored=[];me.dataAladdin=[];me.timer;me.sideRenderTimeout;me.SIDE_TIMEOUT=300;me.sideHideTimeout;me.container;me.side_container=null;me.container_wrap=null;me.async_started;me.spData={};me.side_current_keyword="";me.bindResultLog=window.bindResultLog||null;me.submitType="";me.rsv_crdisp=0;me.rsv_hisdisp=0;me.sugT=0;me.jqXhr=null;me.language=opts.language||(window.bds&&bds.comm&&bds.comm.language)||"";me.clear=opts.clear||$("#clear");
+me.emptySugWord="baiduhotrs4ar";me.empty_data;me.dataDefer=new Deferred();me.sug_template=sug_template(me)}bdsug.prototype={updateInitData:function(){var me=this;me.query=bds.comm.query;me.pinyin=bds.comm.pinyin||"";me.value=me.showValue=me.input.value;try{me.writeStore()}catch(e){}},startCircle:function(){var me=this;if(me.timer){return}me.timer=setTimeout(function(){if(me.value!=me.input.value&&me.showValue!=me.input.value){me.showValue=me.value=me.input.value;me.request()}me.timer=setTimeout(arguments.callee,20)},20)},stopCircle:function(){var me=this;if(me.timer){clearTimeout(me.timer);me.timer=null}},sug_callback:function(data){var me=this;if(data.q){if(window.submit_to){me.data_cache[window.submit_to]=me.data_cache[window.submit_to]||{};me.data_cache[window.submit_to][data.q]=data}else{me.data_cache[data.q]=data}}me.dataArray=me.changeData(data);me.render(me.dataArray)},isZh:function(str){var code=str.charCodeAt(0);if(code>19968&&code<40895){return true}return false},buildUrl:function(val){var me=this;
+var requestUrl=bds.comm.sugHost||"http://suggestion.baidu.com/su";var lang={"th-TH":"thai","ar-EG":"eg","pt-BR":"br"}[me.language];if(window.submit_to=="images"){lang={"th-TH":"image_thai","ar-EG":"image_eg","pt-BR":"image_brazil"}[me.language];requestUrl={"th-TH":"http://sugimg.hao123.co.th/su","ar-EG":"http://sugimg.hao123.com.eg/su","pt-BR":"http://sugimg.hao123.com.br/su"}[me.language]}else{lang=(lang&&bds&&bds.comm&&(bds.comm.gvideo=="1"||window.submit_to=="videos")?"video_":"")+lang}if(lang){me.addTj({req_prod:lang})}lang=lang?"&prod="+lang:"";var getCookieSwitch=function(){var _switch=Cookie.get("sug",3);getCookieSwitch=function(){return _switch};return _switch};return requestUrl+"?wd="+encodeURIComponent(val)+lang+"&p="+getCookieSwitch()+"&sid="+bds.comm.sid+"&t="+new Date().getTime()},request:function(){var me=this;if(me.value.trim()==""){if(me.clear){me.clear.hide()}me.inputClick();return}else{me.clear&&me.clear.css("display","block")}if(window.submit_to&&me.data_cache[window.submit_to]&&me.data_cache[window.submit_to][me.value]){me.sug_callback(me.data_cache[window.submit_to][me.value]);
+return}if(me.data_cache[me.value]){me.sug_callback(me.data_cache[me.value]);return}if(me.jqXhr){me.jqXhr.abort()}var val=me.reqValue=me.value;me.jqXhr=$.ajax({dataType:"jsonp",async:true,scriptCharset:"utf-8",url:me.buildUrl(me.value),jsonp:"cb",timeout:5000,success:function(data){if(me.reqValue==val){me.sug_callback(data)}},always:function(){me.jqXhr=null}})},writeStore:function(pinyin,query){var me=this;pinyin=(pinyin||me.pinyin||"").toLowerCase();query=(query||me.query||"").toLowerCase();if(query&&query.length>2&&query.length<65){me.getStore();var q=encodeURIComponent(query);var p=encodeURIComponent(pinyin);$.each(me.storearr,function(i,a){if(a&&a.q==q){me.storearr.splice(i,1)}});me.storearr.push({q:q,p:p});if(me.storearr.length>50){me.storearr.shift()}me.setStore()}},checkStore:function(){var me=this;me.dataStored=[];if(me.value.length>2){me.getStore();$.each(me.storearr,function(i,a){var q=decodeURIComponent(a.q).toLowerCase();var p=decodeURIComponent(a.p).toLowerCase();if(q.indexOf(me.value.toLowerCase())==0||p.indexOf(me.value.toLowerCase())==0){me.dataStored.unshift({value:q,pinyin:p})
+}})}},getStore:function(){var me=this;me.storestr=STORE.get("BDSUGSTORED");me.storearr=(me.storestr&&$.parseJSON(me.storestr))||[]},setStore:function(){var me=this;var str="";$.each(me.storearr,function(i,a){str+=(i==0?"":",")+'{"q":"'+a.q+'","p":"'+a.p+'"}'});me.storestr="["+str+"]";STORE.set("BDSUGSTORED",me.storestr)},mergeData:function(data){var me=this;me.checkStore();var his_arr=me.dataStored.slice(0,2);var start=0;$.each(his_arr,function(index,item){for(var i=0;i0){input.val(o[p])}else{$(me.form).append(' ')}}}},rmTj:function(o){var me=this;for(var i in o){var input=$("input[name="+i+"]",me.form);if(i=="f"&&input.length){if(input[0].id=="bdsug_ipt_f"){input.remove()
+}else{input.val("8")}}else{input.remove()}}},inputClick:function(e){var me=this,url=me.buildUrl(me.emptySugWord);me.inputEmptySug(url,me.changeData).call(this,e)},setBold:function(q,str,data){if(data&&data.showValue){return data.showValue}if(q&&str){q=q.trim();str=""+str+" "}return str},ct:function(){var me=this;me.lis&&me.lis.removeClass("cur")},hide:function(){var me=this;me.container_wrap&&me.container_wrap.hide();me.hideSideContainer();me.btn_down&&me.btn_down()},hideSideContainer:function(){var me=this;if(me.side_container){me.side_container.hide();me.lis&&me.lis.removeClass("cur_side")}if(me.container_wrap){me.container.removeClass("side_show")}},keydown:function(e){var me=this;if(me.sugT==0){me.sugT=new Date().getTime()}if(e.keyCode==9||e.keyCode==27){me.hide()}if(e.keyCode==13){if(me.container_wrap&&me.container_wrap.css("display")=="block"&&me._curSelect>0){me.submitType="sug_enter"}else{me.submitType="key_enter"}}if(me.container_wrap&&me.container_wrap.css("display")!="none"){if(e.keyCode==38){e.preventDefault();
+me.input.focus();me.select_prev()}if(e.keyCode==40){me.select_next();me.input.focus()}}else{if(e.keyCode==38||e.keyCode==40){me.showValue=me.value=me.input.value;me.request()}}},select:function(i,updateInput){var me=this;me.ct();me._curSelect=i;if(me._curSelect>0){if(updateInput){me.showValue=me.input.value=me.dataArray[me._curSelect-1].value}me.lis.eq(me._curSelect-1).addClass("cur")}else{if(updateInput){me.showValue=me.input.value=me.value}}},renderRightSide:function(data,i){var me=this;if(!me.dataArray[i]||!me.dataArray[i].value||!data||!data.template||me.dataArray[i].from=="history"||me.dataArray[i].from=="url"){return false}var keyword=me.dataArray[i].value;me.side_container.attr("data-click","{'fm':'se','rsv_richsug':'"+(data.template?data.template:"")+"','wd':'"+keyword+"','rsp':'"+i+"',rsv_sugtype:'rsr'}");c({fm:"inlo",rsv_richsug:data.template,rsp:""+i,rsv_sugtype:"rsl"});me.lis.eq(i).addClass("cur_side");if(keyword!=me.side_current_keyword){if(me.sug_template[data.template]&&me.sug_template[data.template].render){me.sug_template[data.template].render(data,i)
+}else{return}me.side_current_keyword=keyword}me.side_container.show();me.container.addClass("side_show")},side_container_mouseover:function(){var me=this;me.stop_hide_side();clearTimeout(me.sideRenderTimeout);me.sideRenderTimeout=null;for(var i=0;i0&&me.dataArray[me._curSelect-1]&&me.dataArray[me._curSelect-1].from=="url"&&me.submitType=="sug_enter"){me.submitType="url_click";e.stopPropagation();e.preventDefault();
+is_url=true}if(me.dataArray&&me._curSelect>0&&me.dataArray[me._curSelect-1]&&me.dataArray[me._curSelect-1].from=="history"){me.addTj({rsv_sugtype:"his"})}else{me.rmTj({rsv_sugtype:0})}if(me.submitType=="url_click"){c({fm:"se",st:"3",rsv_crdisp:me.rsv_crdisp,rsv_sugtype:"cr",wd:me.dataArray[me._curSelect-1].value,title:me.dataArray[me._curSelect-1].value,url:me.dataArray[me._curSelect-1].url,rsp:""+(me._curSelect-1),prefixsug:me.value})}if(me.submitType&&me.submitType.indexOf("sug")==0){me.addTj({st:3,rsp:""+(me._curSelect-1),prefixsug:(me.value=="")?me.emptySugWord:me.value})}else{me.rmTj({st:0,rsp:0,prefixsug:(me.value=="")?me.emptySugWord:me.value,rsv_sugtype:0})}if(me.submitType&&!me.submitType.indexOf("sug")==0&&window.bds&&window.bds.comm&&window.bds.comm.query){me.addTj({st:8})}me.rmTj({rsv_richsug:0});if(me.spData&&me.dataArray&&me.dataArray[me._curSelect-1]&&me.dataArray[me._curSelect-1].from!="history"&&me.spData[me.dataArray[me._curSelect-1].value]&&me.spData[me.dataArray[me._curSelect-1].value].template){me.addTj({rsv_sugtype:"rsl",rsv_richsug:me.spData[me.dataArray[me._curSelect-1].value].template})
+}me.addTj({input_t:me.sugT>0?(new Date().getTime()-me.sugT):0});me.sugT=0;$.each(["rsv_crdisp","rsv_hisdisp"],function(index,item){var o={};if(me[item]=="1"){o[item]=me[item];me.addTj(o);me[item]="0"}else{o[item]=0;me.rmTj(o)}});if(me.dataArray&&me.spData){var sp_disp={},sp_disp_arr=[];$.each(me.dataArray,function(index,item){if(item.from==0&&me.spData[item.value]&&!sp_disp[me.spData[item.value].template]){sp_disp[me.spData[item.value].template]=1;sp_disp_arr.push(me.spData[item.value].template)}});if(sp_disp_arr.length){me.addTj({rsv_richdisp:sp_disp_arr.join()})}else{me.rmTj({rsv_richdisp:0})}}me.submitType=null;if(me.dataArray&&me.dataArray[me._curSelect-1]&&me.dataArray[me._curSelect-1].value){me.showValue=me.value=me.input.value=me.dataArray[me._curSelect-1].value}else{me.showValue=me.value=me.input.value}me._curSelect=0;if(is_url){return false}if(window.submit_to){return webSubmit(e)}else{if(window.form_submit_result){return form_submit_result.call(me.form)}else{return true}}},keypress:function(e){var me=this;
+if(me.dataArray&&me.dataArray[me._curSelect-1]&&me.dataArray[me._curSelect-1].from=="url"&&e.keyCode==13){window.open(me.dataArray[me._curSelect-1].url)}},searchBtn_mouseup:function(){var me=this;me.submitType="clk_submit"},document_click:function(e){var me=this,node=e.target,hideFlag=true;do{if(node==me.form){hideFlag=false;break}}while(node=node.parentNode);if(hideFlag){me.hide()}},insertSug:function(){var me=this;me.form.insertBefore(me.container_wrap[0],me.form.firstChild)},createContainer:function(){var me=this,container=$('');me.container=$(".sg",container);me.side_container=$(".sg_side",container);me.container_wrap=container;me.side_container.on("mouseover",function(e){me.side_container_mouseover(e)}).on("mouseout",function(e){me.side_container_mouseout(e)}).on("click",function(e){var nd=e.target;do{if(nd!=me.side_container&&nd.nodeName=="A"){me.hide();me.stopCircle();break}}while(nd=nd.parentNode)
+});me.container.delegate("a.history_delete","click",function(e){var _this=$(this).parent(),index=me.lis.index(_this),q=encodeURIComponent(_this.attr("data-q")),p=encodeURIComponent(_this.attr("data-p"));for(var i=0,len=me.storearr.length;i0){return}loadedData=true;me.jqXhr=$.ajax({dataType:"jsonp",async:true,scriptCharset:"utf-8",url:url,jsonp:"cb",timeout:5000,success:function(data){me.empty_data=data;if(me.empty_data&&me.empty_data.s.length>0){me.dataDefer.resolve()}},always:function(){me.jqXhr=null}})};return function(type_str){if(window.submit_to=="images"||window.submit_to=="videos"){me.hide();return}if(type_str!="triangle"&&me.input.value!=""){return}loadData();me.dataDefer.done(function(){if(me.reqValue==me.emptySugWord){var data=dataProcess.call(me,me.empty_data);me.render(data);if(data.length<=0&&me.container){me.container[0].innerHTML=""}}})}},keyword2url:function(){var me=this;$("a",me.side_container).each(function(){var a=this;if(a.getAttribute("keyword")){a.href=(me.build_search_url||window.build_search_url).call(me,{params:{wd:a.getAttribute("keyword")},exclude:["pn"]})
+}})},init:function(){var me=this;me.updateInitData();$(me.input).on("keydown",function(e){me.keydown(e)}).on("focus",function(){me.startCircle()}).on("blur",function(){me.stopCircle()}).on("click",function(){me.inputClick()}).on("keypress",function(e){me.keypress(e)});$("#su").on("mouseup",function(){me.searchBtn_mouseup()});$(document).bind("mousedown",function(e){me.document_click(e)}).bind("document_reload",function(){me.updateInitData()});$(me.form).on("submit",function(e){me.form_submit(e)});if(me.clear){}}};function sug_template(me){return{right1:{html:' {if d.url} ${d.title} {else} ${d.title} {/if} {if d.rate_flag}
{/if} {if d.attr} {for p in d.attr} {if p.value && p.name}
${p.name} ${p.value}
{if p.link}
{for lk in p.link} ${lk.text} &bnsp; {/for}
{/if}
{/if} {/for} {/if}
',render:function(data){data.wid="";
+data.hei="";if(data.img_width){data.wid="width:"+data.img_width+"px;"}if(data.img_height){data.hei="height:"+data.img_height+"px;"}data.img_style=data.wid+data.hei;if(data.rate&&data.rate_all){var percentage=data.rate/data.rate_all;var star_width="width:"+Math.round(73*percentage)+"px;"}var backgroundx="";if(me.language=="ar-EG"){backgroundx=data.rate/data.rate_all-Math.round(data.rate/data.rate_all*5)/5;backgroundx=backgroundx*73;backgroundx=backgroundx?"background-position:"+backgroundx+"px 0;":"";data.backgroundx=backgroundx+star_width}if(data.img_height){data.img_height20=data.img_height-20+"px";data.img_height18=data.img_height-18+"px"}if(data.img_width){data.img_width5=data.img_width-5+"px";data.img_width_px=data.img_width+"px"}if(data.rate&&data.rate_all){data.rate_flag=true}me.side_container[0].innerHTML=process_rich(TrimPath.parseDataTemplate(this.html,{d:data}));me.keyword2url();function process_rich(str){var re=/<([^>]*)>/g;re=/\[(\/?(a|br)[^\]]*)\]/g;str=str.replace(re,"<$1>");
+return str}}},sug_freebase_basic:{html:'',render:function(data,i){if(!data.abs){data.abs=data.attr.pop().value}data.keyword=me.dataArray[i].value;me.side_container[0].innerHTML=TrimPath.parseDataTemplate(this.html,{d:data});me.keyword2url()}},url:{render:function(data){var str=me.setBold(me.value,data.value,data);var title=data.icon?'':'
'+data.show_url+"
"}},normal:{render:function(data){var str=me.setBold(me.value,data.value,data),className=false,ret="";ret+="
"+str;if(me.spData&&me.spData[data.value]&&me.spData[data.value].template&&me.sug_template[me.spData[data.value].template]){ret+=" "}ret+=" ";return ret}},history:{render:function(data){return'
'+data.value+'Excluir '}}}}var $=window.$||window.jQuery;var language;language={ar:"ar-EG",th:"th-TH",br:"pt-BR"}[location.host.split(".")[0]];if(!language){language="pt-BR"}var mode="google";var domain={"ar-EG":"search.hao123.com.eg","pt-BR":"search.hao123.com.br","th-TH":"search.hao123.co.th"}[language];language=window.__language?window.__language:language;domain=window.__domain?window.__domain:domain;
+var ubsurl="http://"+domain+"/r/cl/i18n.gif";var addedTj={};var statusOn=false;function _baidu_sug(opts){var me=this,opts=me.opts=opts||{};bdsug.apply(me);$.extend(true,me,{form:$("#searchGroupForm")[0],input:$("#searchGroupInput").attr("autocomplete","off").get(0),searchBtn:$("#searchGroupBtn"),data_cache:{baidu:{},google:{}},containerClassName:"baidu_sug",language:language,upDown:null,tip_num:null,sug_template:{"new":{render:function(data){var hl=data._index<4?"hl":"";return'
'+data._index+" "+data.value+'NEW '}},sequence:{render:function(data){var hl=data._index<4?"hl":"";return'
'+data._index+" "+data.value+""}}},modeConfig:{baidu:{dataProcess:function(data){if(data.q){me.data_cache.baidu[data.q]=data}return me.changeData(data)},buildRequestUrl:function(value){var requestUrl="http://"+domain+"/r/su";var lang={"th-TH":"thai","ar-EG":"eg","pt-BR":"br"}[me.language];
+me.addTj({req_prod:lang});lang=lang?"&prod="+lang:"";requestUrl=requestUrl+"?wd="+encodeURIComponent(value)+lang+"&haobd="+encodeURIComponent(Cookie.get("BAIDUID"))+"&t="+new Date().getTime();return requestUrl}},google:{dataProcess:function(data){me.spData={};var dataArray=[],temp;if(data[0]){me.data_cache.google[data[0]]=data}if(data[1]&&data[1].length){for(var i=0;i
","").replace("","");temp.showValue=data[1][i][0];temp.from=0;dataArray.push(temp)}}return me.dataArray=dataArray.slice(0,10)},buildRequestUrl:function(value){var requestUrl="http://"+{"ar-EG":"clients1.google.com.eg","th-TH":"clients1.google.co.th","pt-BR":"clients1.google.com.br"}[me.language]+"/complete/search?q="+encodeURIComponent(value)+"&client=hp&hl="+me.language+"&authuser=0&t="+new Date().getTime();return requestUrl}}}})}function f(){}f.prototype=bdsug.prototype;_baidu_sug.prototype=new f();_baidu_sug.prototype.constructor=_baidu_sug;$.extend(_baidu_sug.prototype,{build_search_url:function(OPTIONS){var me=this;
+var params=OPTIONS.params||{};var exlcudes=OPTIONS.exclude||[];var param,exclude;var url="http://"+domain+"/s?";var results={ie:"utf-8",tn:me.form.tn.value};for(param in params){if(params.hasOwnProperty(param)){results[param]=params[param]}}for(param in results){if(results.hasOwnProperty(param)){url+=param+"="+encodeURIComponent(results[param])+"&"}}return url.replace(/&*$/g,"")},appendStyle:function(){var me=this,div=C("div");var cssText='.sg_wrap{position:absolute;overflow:hidden;display:none;margin:28px 0 0 0;_margin:28px 0 0 1px;border:1px solid #b6b6b6;z-index:100;background:#fff;width:533px}.sg_wrap .sg_side{position:absolute;right:0;z-index:101;background:#fafafa;width:300px;height:100%;_height:280px;display:none;font-size:13px;border-left:1px solid #e8e8e8}.sg_wrap.ltr .sg{text-align:right;margin:3px 0}.sg_wrap.ltr .sg li{direction:ltr}.sg_wrap .sg i{width:30px;display:inline-block;background:url(http://s1.f.shifen.com/r/www/cache/i18n/pt-BR/www/images/sprite_da88b3b8.png) no-repeat -65px -35px;*overflow:hidden}.sg_wrap .sg .cur i{background-position:-35px -35px}.sg_wrap.rtl .sg i{background-position:-128px -35px}.sg_wrap.rtl .sg .cur i{background-position:-95px -35px}.sg_wrap.ltr .sg_side{left:0;border-left:0;border-right:1px solid #e8e8e8}.sg_wrap .sg li{height:25px;font-size:16px;line-height:25px;padding:0 8px;cursor:pointer;overflow:hidden}.sg_wrap .sg li span{font-weight:normal}.sg_wrap .sg .url{height:45px;border-bottom:1px solid #e1e1e1}.sg_wrap .sg .url a{display:block;text-decoration:none}.sg_wrap .sg .url .title{height:25px;text-decoration:underline}.sg_wrap .sg .url .title.favicon{background-position:left center;background-repeat:no-repeat;padding-left:20px;zoom:1}.sg_wrap.ltr .sg .url .title.favicon{padding-right:20px}.sg_wrap.rtl .sg .url .title.favicon{padding-left:20px;background-position:right center}.sg_wrap .sg .url .title span{font-weight:bold}.sg_wrap .sg .url .show_url{line-height:16px;font-size:13px;color:green}.sg_wrap .sg .cur{background-color:#f2f2f2}.sg_wrap .side_show{min-height:250px;*height:250px}.sg_wrap .sg .history{color:#551a8b}.sg_wrap .sg .history .history_delete{font-size:13px;color:#666;float:right;display:none;text-decoration:none}.sg_wrap .sg .history .history_delete:hover{text-decoration:underline}.sg_wrap .sg .history.cur .history_delete{display:inline}.sg_wrap.ltr .sg .history .history_delete{float:left}.sg_wrap.rtl .sg .history .history_delete{float:right}.sg_wrap .sg_side .play_bar{position:absolute;margin:117px 0 0 0;width:99px;height:20px;background:#000;opacity:.3;filter:alpha(opacity=30)}.sg_wrap .sg_side .duration{position:absolute;margin:119px 0 0 0;width:94px;height:20px;text-align:right;padding:0 5px 0 0;color:#fff}.sg_wrap .sg_side .play_icon{position:absolute;margin:119px 0 0 3px;width:20px;height:20px;padding:0 5px 0 0;background:url("http://s1.f.shifen.com/r/www/cache/i18n/pt-BR/ala/img/renming.png") no-repeat -100px 0}.sg_wrap .sg_side .btn{display:block;width:99px;height:25px;line-height:25px;border:1px solid #5e8ed5;text-align:center;background-color:#77a4e8;background-image:-moz-linear-gradient(top,#80aff4,#77a4e8);background-image:-ms-linear-gradient(top,#80aff4,#77a4e8);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#80aff4),color-stop(100%,#77a4e8));background-image:-webkit-linear-gradient(top,#80aff4,#77a4e8);background-image:-o-linear-gradient(top,#80aff4,#77a4e8);background-image:linear-gradient(top,#80aff4,#77a4e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff80aff4",endColorstr="#ff77a4e8",GradientType=0);border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;color:#fff;font-size:16px;margin-top:10px}.sg_wrap .sg_side .btn:hover{text-decoration:none;border:1px solid #3c72c1;background-color:#6294df;background-image:-moz-linear-gradient(top,#6da0eb,#6294df);background-image:-ms-linear-gradient(top,#6da0eb,#6294df);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#6da0eb),color-stop(100%,#6294df));background-image:-webkit-linear-gradient(top,#6da0eb,#6294df);background-image:-o-linear-gradient(top,#6da0eb,#6294df);background-image:linear-gradient(top,#6da0eb,#6294df);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff6da0eb",endColorstr="#ff6294df",GradientType=0)}.sg_wrap .sg_side .sg_side_title{margin:10px 17px 4px;padding:3px;font-size:16px;color:#454545}.sg_wrap .sg_side a:hover{text-decoration:underline}.sg_wrap .sg_side a{text-decoration:none}.sg_wrap .sg_side .image{width:99px;float:left;margin-left:20px;*display:inline}.sg_wrap .sg_side .image img{width:99px;height:137px}.sg_wrap .sg_side .stars,.sg_wrap .sg_side .stars .star{width:73px;height:12px;background:url(http://s1.f.shifen.com/r/www/cache/i18n/pt-BR/www/images/star_94b13508.png);background-repeat:repeat-x;background-position:0 -28px}.sg_wrap .sg_side .stars .star{background-position:0 0}.sg_wrap .sg_side .info{float:left;margin-left:20px;width:140px;height:195px;overflow:hidden;*display:inline}.sg_wrap .sg_side .score{*zoom:1}.sg_wrap .sg_side .score:after{content:"\0020";display:block;height:0;clear:both;overflow:hidden;visibility:hidden}.sg_wrap .sg_side .stars,.sg_wrap .sg_side .points{float:left}.sg_wrap .sg_side .points{color:#f56f2f;margin-left:10px;line-height:10px;width:50px}.sg_wrap .sg_side .attrs{margin-top:4px}.sg_wrap .sug_freebase_basic{height:100%;padding:5px;background:#fff;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.sg_wrap .sug_freebase_basic:hover{background:#f2f2f2}.sg_wrap .sug_freebase_basic a{display:block;background:#fff;text-decoration:none;height:100%;overflow:hidden;padding:2px 15px;color:#333;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.sg_wrap .sug_freebase_basic a:hover{text-decoration:none}.sg_wrap .sug_freebase_basic a h3{font-size:16px;margin-bottom:15px;font-weight:bold}.sg_wrap .sug_freebase_basic a .cc{margin-bottom:10px;*zoom:1}.sg_wrap .sug_freebase_basic a .cc:after{content:"\0020";display:block;height:0;clear:both;overflow:hidden;visibility:hidden}.sg_wrap .sug_freebase_basic a .img{float:left;width:90px;height:100px;display:table}.sg_wrap .sug_freebase_basic a .img .cell{display:table-cell;vertical-align:middle}.sg_wrap .sug_freebase_basic a .img .cell img{width:75px}.sg_wrap .sug_freebase_basic a .abs{_height:108px;max-height:108px;line-height:18px;overflow:hidden;text-align:left}.sg_wrap .sug_freebase_basic a .has_img .abs{width:170px;float:left}.sg_wrap .sug_freebase_basic a .attr{margin-bottom:5px;line-height:18px;_height:18px;height:18px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:260px}.sg_wrap .sug_freebase_basic a .attr .key{color:#999}.sg_wrap{margin:27px 0 0 -1px;_margin:27px 0 0 0;width:528px;font:12px Arial,Helvetica,sans-serif;*margin-left:-529px;overflow:inherit}.sg_wrap .sg_side{_height:100%}.sg_wrap a{color:#12c;text-decoration:none}.sg_wrap .sg_side h4{font-weight:bold;font-size:13px}.sg_wrap.ltr .sg_side{right:0}.sg_wrap .sg_side .sg_side_title{font-weight:bold;margin:13px 20px 7px;padding:0}.sg_wrap .sg_side .info{width:145px}.sg_wrap .sg_side .points{line-height:15px;margin-top:-2px}.sg_wrap .sg_side .descrip{text-align:left}.sg_wrap .side_show{min-height:252px;*height:252px}.sg_wrap li{padding:3px 10px;cursor:pointer}.sg_wrap li b{font-weight:bold;display:inline;font-size:1em;font-family:Arial,Tahoma,Helvetica,sans-serif}.sg_wrap .sg .url .title{line-height:25px}.sg_wrap .sg .url .title span{color:#00e}.sg_wrap .sg .sg_li_new i{background-position:-195px -35px}.sg_wrap .sg .sg_li_new .new{padding-left:5px;font-size:10px;color:#f00}.sg_wrap.rtl .sg .sg_li_new i{background-position:-200px -35px}.sg_wrap.ltr .sg .sg_li_new .new{padding-right:5px}.sg_wrap.rtl .sg .sg_li_new .new{padding-left:5px}.sg_tri{background:#fff}.sg_tri input{width:450px!important;margin-right:30px}.sg_tri .sg_btn{cursor:pointer;position:absolute;display:inline}.sg_tri .sg_btn i{position:absolute;right:10px;top:10px;width:0;height:0;border-top:6px solid #999;border-right:6px solid transparent;border-left:6px solid transparent;_border-right-color:pink;_border-left-color:pink;_filter:chroma(color=pink);font-size:0;line-height:0}.sg_tri .sg_btn.sg_up i{top:4px;width:0;height:0;border-top:6px solid #999;border-right:6px solid transparent;border-left:6px solid transparent;_border-right-color:pink;_border-left-color:pink;_filter:chroma(color=pink);font-size:0;line-height:0;border-bottom:6px solid #999;border-top:6px solid transparent}.sg_tri .sg_btn .sg_new_num{display:none;width:17px;height:17px;position:absolute;text-align:center;right:7px;top:-9px;font-size:11px;border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;background:#f66f2e;color:#fff}.sg_btn{display:none}.sg_wrap .sg .sg_li_seq .num,.sg_wrap .sg .sg_li_new .num{display:block;float:left;width:15px;height:15px;line-height:16px;color:#fff;border-radius:2px;-moz-border-radius:2px;-webkit-border-radius:2px;font-size:12px;background:#b3b3b3;text-align:center;margin:5px 10px 0 0}.sg_wrap .sg .sg_li_seq.hl .num,.sg_wrap .sg .sg_li_new.hl .num{background:#ff6c00}.sg_wrap.ltr .sg .sg_li_seq .num,.sg_wrap.ltr .sg .sg_li_new .num{margin:5px 0 0 10px;float:right}.sg_wrap.rtl .sg .sg_li_seq .num,.sg_wrap.rtl .sg .sg_li_new .num{float:left;margin:5px 10px 0 0}'.replace(/sg_wrap/g,me.containerClassName);if(me.language=="ar-EG"){cssText+="."+me.containerClassName+" .sg_side .duration {text-align:left; padding:0 0 0 5px;}";cssText+="."+me.containerClassName+".ltr .sg{ text-align:left; }";cssText+="."+me.containerClassName+".ltr .sg li{direction:ltr;}";cssText+="."+me.containerClassName+".ltr .sg_side{border-right:0;border-left: 1px solid #e8e8e8;}";cssText+="."+me.containerClassName+"{ margin:27px -1px 0 0;_margin:27px 0 0 0 }";
+cssText+="."+me.containerClassName+".ltr .sg_side{right:0px;}"}div.innerHTML='_";div.removeChild(div.firstChild);document.getElementsByTagName("head")[0].appendChild(div.firstChild)},sug_callback:function(data){var me=this;data=me.modeConfig[mode].dataProcess(data);me.render(data);if(data.q!=me.emptySugWord){me.btn_down&&me.btn_down()}if(data.length<=0&&me.container){me.container[0].innerHTML=""}},btn_click:function(){var me=this;me.input.focus();if(me.upDown.hasClass("sg_up")){me.hide()}else{me.inputClick("triangle")}},setBtn:function(){var me=this;var ck=Cookie.get("psSugUp");if(ck){ck=ck.split("|");if(ck[1]=="0"){Cookie.set("psSugUp",ck[0]+"|1")}}me.tip_num.hide()},request:function(){var me=this;if(me.value.trim()==""){me.inputClick();return}if(me.data_cache[mode][me.value]){me.sug_callback(me.data_cache[mode][me.value]);return}var requestUrl=me.modeConfig[mode].buildRequestUrl(me.value);if(me.jqXhr){me.jqXhr.abort()}var val=me.reqValue=me.value;
+me.jqXhr=$.ajax({dataType:"jsonp",async:true,scriptCharset:"utf-8",url:requestUrl,jsonp:mode=="baidu"?"cb":"jsonp",timeout:5000,success:function(data){if(me.reqValue==val){me.sug_callback(data)}},always:function(){me.jqXhr=null}})},inputClick:function(type_str){if(mode!="baidu"){return}var me=this,url=me.modeConfig.baidu.buildRequestUrl(me.emptySugWord),dataProcess=me.modeConfig.baidu.dataProcess;me.inputEmptySug(url,dataProcess).call(me,type_str);me.setBtn()},insertSug:function(){var me=this;me.input.parentNode.insertBefore(me.container_wrap[0],me.input.parentNode.firstChild)},createContainer:function(){var me=this;bdsug.prototype.createContainer.call(me);bindLogEvent(me.side_container[0],"se");me.container_wrap[0].className=me.containerClassName},btn_up:function(){var me=this;me.upDown&&me.upDown.addClass("sg_up")},btn_down:function(){var me=this;me.upDown&&me.upDown.removeClass("sg_up")},renderTip:function(data){var me=this;if(data&&data.n&&data.n.c&&data.n.sugUp){var ck=Cookie.get("psSugUp"),num=data.n.c;
+if(!ck||ck.split("|")[0]!=data.n.sugUp){ck=data.n.sugUp+"|0";Cookie.set("psSugUp",ck)}if(ck.split("|")[1]=="1"){return}if(num){me.tip_num[0].innerHTML=num;me.tip_num[0].style.display="inline"}}},createBtn:function(){var me=this;me.appendStyle();var _tri=$('10 ');me.upDown=_tri;me.tip_num=$("span",_tri);$(me.input).parent().addClass("sg_tri").end().after(me.upDown);var url=me.modeConfig.baidu.buildRequestUrl(me.emptySugWord);me.jqXhr=$.ajax({dataType:"jsonp",async:true,scriptCharset:"utf-8",url:url,jsonp:"cb",timeout:5000,success:function(data){me.renderTip(data)},always:function(){me.jqXhr=null}});me.upDown.click(function(){me.btn_click()})},showBtn:function(){var me=this;$(me.input.parentNode).addClass("sg_tri")},hideBtn:function(){var me=this;$(me.input.parentNode).removeClass("sg_tri")},addTj:function(o){var me=this;for(var i in o){addedTj[i]=o[i]}if(mode=="baidu"){bdsug.prototype.addTj.call(me,o)}},rmTj:function(o){var me=this;
+for(var i in o){$("input[name="+i+"]",me.form).remove()}},form_submit:function(e){var me=this;me.hide();var type=(me.submitType!="sug_enter"&&me.submitType!="key_enter"&&me.submitType!="clk_submit");var oldSubmitType=me.submitType;var res=bdsug.prototype.form_submit.call(me,e);if(mode=="baidu"&&res&&me.value.length<48){try{me.writeStore("",$.trim(me.value))}catch(e){}}if(res&&type){haoc()}return res},toggle:function(on){var me=this;if(on){if(!statusOn){$(me.input).bind("keydown.sugEvent",function(e){me.keydown(e)}).bind("focus.sugEvent",function(e){me.startCircle(e)}).bind("blur.sugEvent",function(e){me.stopCircle(e)}).bind("click.sugEvent",function(e){me.inputClick(e)}).bind("keypress.sugEvent",function(e){me.keypress(e)});me.searchBtn.bind("mouseup.sugEvent",function(e){me.searchBtn_mouseup(e)});$(document).bind("click.sugEvent",function(e){me.document_click(e)});$(me.form).bind("submit.sugEvent",function(e){me.form_submit(e)});if(!me.upDown){me.createBtn();me.hideBtn()}}if(mode=="baidu"){me.showBtn()
+}else{me.hideBtn()}me._curSelect=0}else{$.each([$(me.input),me.searchBtn,$(document),$(me.form)],function(index,item){item.unbind(".sugEvent")});me.hide();me.hideBtn();me.stopCircle()}statusOn=on},setMode:function(m){var me=this;if({baidu:1,google:1}[m]){mode=m}if(mode=="baidu"){me.addTj(addedTj)}else{me.rmTj(addedTj)}}});function bindLogEvent(wrap,fm){$(wrap).on("mousedown",function(e){var t=e.srcElement||e.target;try{var xpath=getXPath(t,wrap);log(xpath,t,wrap,fm)}catch(e){}})}function getXPath(node,wrap,path){path=path||[];wrap=wrap||document;if(node===wrap){return path}if(node.parentNode!==wrap){path=getXPath(node.parentNode,wrap,path)}if(node.previousSibling){var count=1;var sibling=node.previousSibling;do{if(sibling.nodeType==1&&sibling.nodeName==node.nodeName){count++}sibling=sibling.previousSibling}while(sibling)}if(node.nodeType==1){path.push(node.nodeName.toLowerCase()+(count>1?count:""))}return path}function getType(xpath,t,wrap){var LOG_CLASS=["TITLE","LINK","IMG","BTN","OTHERS"];
+var node=t,cs=LOG_CLASS,cl=cs.length,xstr=xpath.join(" ");while(node!==wrap){for(var i=0;i1){l--;if(/^a\d*\b/.test(xpath[l])){url=p.href;title=p.innerHTML.replace(/<[^>]*>/g,"");adata=p.getAttribute("data-click");if(p.getAttribute("data-nolog")!=null){return}break}else{p=p.parentNode}}if(!url){url=""}var data={fm:fm,p1:wrap.getAttribute("p1")||0,xpath:xpath.join("-")+"("+type+")",title:title||"",url:url};var click_data;if(click_data=wrap.getAttribute("data-click")){try{click_data=(new Function("return "+click_data))();
+$.extend(data,click_data)}catch(e){}}if(adata){try{adata=(new Function("return "+adata))();$.extend(data,adata)}catch(e){}}for(var i in data){if(data[i]===null){delete data[i]}}c(data)}function c(q){haoc(q);var sQ="",img=window["BD_PS_C"+(new Date()).getTime()]=new Image();for(v in q){if(q.hasOwnProperty(v)&&q[v].length>0){sQ+=(sQ?"&":"")+v+"="+encodeURIComponent(q[v])}}var imgsrc=ubsurl+"?";if(q.rsv_sugtype=="cr"){imgsrc+="q="+encodeURIComponent(q.title)+"&"}imgsrc+=sQ+"&lang="+language+"&haobd="+encodeURIComponent(Cookie.get("BAIDUID"))+"&path="+encodeURIComponent(location.href)+"_r="+new Date().getTime();img.src=imgsrc;return true}function haoc(q){var engine=$("#searchGroupLogo").attr("data-id");var input=$("#searchGroupInput").get(0),engine=engine?engine:"";var imgsrc="/img/gut.gif?type=click&element=sug&modId=search&position=search&engine="+engine+"&value="+encodeURIComponent(input.value)+"&r="+new Date().getTime();if(q&&q.rsv_sugtype=="cr"){imgsrc+="&url="+encodeURIComponent(q.url)
+}if(window.conf&&conf.UT&&conf.UT.params){imgsrc+="&country="+conf.UT.params.country+"&level="+conf.UT.params.level+"&page="+conf.UT.params.page}if(document.body.className.match(/header-fixed-up/)){imgsrc+="&sort=header"}var img=window["BD_HAO123_C"+(new Date()).getTime()]=new Image();img.src=imgsrc}window.baidu_sug=(function(){var me=new _baidu_sug();return{setMode:function(){me.setMode.apply(me,arguments)},toggle:function(){me.toggle.apply(me,arguments)}}})()})();
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/close.html b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/close.html
new file mode 100755
index 000000000..bb1052993
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/close.html
@@ -0,0 +1,11 @@
+
+
+
+
+ Document
+
+
+
+
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/dp.min.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/dp.min.js
new file mode 100755
index 000000000..df595564c
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/dp.min.js
@@ -0,0 +1 @@
+void function(a){function b(a,b){function c(a,c,d){d=d||15;var e=new Date;e.setTime((new Date).getTime()+1e3*d),b.cookie=a+"="+escape(c)+";path=/;expires="+e.toGMTString()}function d(){for(var a=alog.tracker&&alog.tracker("speed").get("options")||{},b=a.random=Math.random(),c=a.special_pages||[],d=[],e=0;e=4)return null}return null}function g(a){b.attachEvent?b.attachEvent("onclick",a):b.addEventListener("click",a,!1)}var h=!1;e(),alog.fire&&alog.fire("mark"),g(function(b){var b=b||a.event,d=b.target||b.srcElement,e=f("a",d);if(e){var g=e.getAttribute("href");/^#|javascript:/.test(g)||c("PMS_JT",'({"s":'+ +new Date+',"r":"'+document.URL.replace(/#.*/,"")+'"})')}})}if(a){alog("set","alias",{monkey:"http://img.baidu.com/hunter/alog/monkey.min.js",element:"http://img.baidu.com/hunter/alog/element.min.js?v=140626",speed:"http://static.tieba.baidu.com/tb/pms/wpo_alog_speed.js",feature:"http://img.baidu.com/hunter/alog/feature.min.js?v=140522",csp:"http://img.baidu.com/hunter/alog/dp.csp.min.js?v=140804"});var c=a.product,d=a.page,e=a.monkey_page,f=a.speed_page,g=Math.random,h="http://nsclick.baidu.com/u.gif",i="http://static.tieba.baidu.com/tb/pms/img/st.gif",j=a.speed,k=a.monkey,l=a.exception,m=a.feature,n=a.csp,o=a.cus;j&&(j.product_id=c,j.page_id=f?f:d,alog("speed.set","options",j),b(window,document)),k&&k.sample&&g()0&&/^z_/.test(e)&&(d=!0,c[e]=b)):c.page=a[e];d&&alog("cus.send","time",c)}}),alog("cus.on","count",function(a){var b={},c=!1;if("string"==typeof a&&(a=[a]),a instanceof Array)for(var d=0;d= +queries[0].k) return 0;
+ for(var l = queries.length, q; q = +queries[--l].k;) {
+ if(width > q) return l;
+ }
+ }(body.clientWidth || WIN.innerWidth || 0, (queries || []).sort(function(a, b) {
+ return +b.k - +a.k;
+ }));
+ if (match >= 0 && !~className.indexOf(prefix + queries[match].v)) {
+ /*conf.curLayout:页面当前使用布局的宽度*/
+ conf.curLayout = +queries[match].v;
+ body.className = className.replace(new RegExp("\\s*" + prefix + "\\d+\\s*", "g"), "") + " " + prefix + conf.curLayout;
+ /*通知其它模块layout变化的message频道名称为"module.flow.switch",发送通信时传递的参数是当前页面对应的宽度,示例如下:message.send("module.flow.switch",width);接收通信的模块需要添加代码示例如下:message.on("module.flow.switch",function(width){});*/
+ window.Gl && Gl.message && Gl.message.send("module.flow.switch", conf.curLayout)
+ }
+ }
+ respond();
+ setTimeout(function() {
+ (addEventListener ? addEventListener : WIN.attachEvent)((addEventListener ? "" : "on") + "resize", function() {
+ resizing = 1;
+ });
+ }, 0);
+ !function() {
+ if(resizing) {
+ resizing = 0;
+ respond();
+ }
+ setTimeout(arguments.callee, speed || 200)
+ }();
+ }/*参数可配*/(
+ // the prefix of class name
+ "w"
+
+ // queries list
+ , conf.flowConf || [{k: 1, v: "960"}, {k: 1024, v: "1020"}]
+
+ // switch speed, default: 200
+ // , 200
+ );
+}else{
+ /*页面当前使用布局的宽度*/
+ conf.curLayout = conf.flowLayout == 3 ? 1020 : 960;
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/img/blank.gif b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/img/blank.gif
new file mode 100755
index 000000000..8f3807cad
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/img/blank.gif differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/img/gut.gif b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/img/gut.gif
new file mode 100755
index 000000000..3c288bd84
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/img/gut.gif differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/js/gmonkey.min.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/js/gmonkey.min.js
new file mode 100755
index 000000000..d24894225
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/js/gmonkey.min.js
@@ -0,0 +1 @@
+var ALog=ALog||{};void function(t){function e(t){S[t]=+new Date}function n(){y||(y={},"AdivBliCaDulEdlFddGspanHtableIbodyJtrKsectionLtdMolNpOarticlePdtQformRimgSh3TinputUasideViWbXthYemZfont".replace(/([A-Z])([a-z]+)/g,function(t,e,n){y[y[e]=n]=e}))}function r(t,e,n,o){if(!t||1!=t.nodeType)return"";var i=/^[^u]/.test(typeof t.getAttribute)&&t.getAttribute(e)||"";return"#"==i?i="[id]":"."==i&&(i="[class]"),i.replace(/\[([\w-_]+)\]/,function(e,n){i=t.getAttribute(n)}),o&&(o.target=t),i||n&&r(t.parentNode,e,1,o)||""}function o(t,e,i){if(i&&n(),e=e||k.body,!t||t==e||/^body$/i.test(t.tagName))return"";if(1!=t.nodeType||/html/i.test(t.tagName))return t.tagName||"";for(var a=r(t,T.alias),c=1,u=t.previousSibling,s=t.nodeName.toLowerCase();u;)c+=u.nodeName==t.nodeName,u=u.previousSibling;return a=(i&&y[s]||s)+(2>c?"":c)+(a&&"("+a+")"),t.parentNode==e?a:o(t.parentNode,e,i)+(/^[A-Z]/.test(a)?"":"-")+a}function i(t,e){return o(t,e,1)}function a(e,n){if(e&&n){c("report",n);var r=new Image(1,1),o=[],i="img_"+ +new Date;for(var a in n)n[a]&&o.push(a+"="+encodeURIComponent(n[a]));t[i]=r,r.onload=r.onerror=function(){t[i]=r=r.onload=r.onerror=null,delete t[i]},r.src=e+"?"+o.join("&")}}function c(t,e){var n=I[t],r=0;if(n){for(var o=n.length;o--;)n[o](e,t)&&r++;return r}}function u(e,n,r,o){if(e)try{if(o&&o.push([e,n,r]),e==t)return I[n]=I[n]||[],I[n].unshift(r),void 0;e.addEventListener?e.addEventListener(n,r,!1):e.attachEvent&&e.attachEvent("on"+n,r)}catch(i){}}function s(e,n,r){if(e)try{if(e instanceof Array){for(var o;o=e.pop();)s.apply(this,o);return}if(e==t){var i=I[n];if(!i)return;for(var a=i.length;a--;)i[a]===r&&i.splice(a,1);return}e.removeEventListener?e.removeEventListener(n,r,!1):e.detachEvent&&e.detachEvent("on"+n,r)}catch(c){}}function f(t){return n(),t.replace(/\(([^)]+)\)/g,"").replace(/[A-Z]/g,function(t){return"-"+y[t]}).replace(/^-/,"")}function l(t,e){return e?(C[t]=C[t]||[],e instanceof Array?C=C[t].concat(e):C[t].push(e),void 0):C[t]}function d(t,e){function n(t,e){return(+L.min(L.max(t/e,0),1).toFixed(36>e?1:351>e?2:3)+"").replace(/^0\./g,".")}if(!t.getBoundingClientRect)return[0,0];var r=t.getBoundingClientRect(),o=p(t);return[n(e[0]-r.left,o[0]),n(e[1]-r.top,o[1])]}function p(t){if(!t.getBoundingClientRect)return[t.offsetWidth,t.offsetWidth];var e=t.getBoundingClientRect();return[x(e.right-e.left),x(e.bottom-e.top)]}function g(){var t=p(k.documentElement),e=p(k.body);return[L.max(t[0],e[0],E.innerWidth||0,k.documentElement.scrollWidth||0),L.max(t[1],e[1],E.innerHeight||0,k.documentElement.scrollHeight||0)]}function m(){return[L.max(k.documentElement.scrollLeft||0,k.body.scrollLeft||0,k.defaultView&&k.defaultView.pageXOffset||0),L.max(k.documentElement.scrollTop||0,k.body.scrollTop||0,k.defaultView&&k.defaultView.pageYOffset||0),E.innerWidth||k.documentElement.clientWidth||k.body.clientWidth||0,E.innerHeight||k.documentElement.clientHeight||k.body.clientHeight||0]}function v(t,e){T[t]=e}function h(){if(!(N&&50>new Date-D)&&!A&&(A=!0,e("ult"),c("unload")))for(isSleep=new Date;100>new Date-isSleep;);}function b(t){var e=t.target||t.srcElement;1==e.nodeType&&/^ajavascript:/i.test(e.tagName+e.href)&&(D=new Date)}function w(t,e,n){M.count++,9>=M.items.length&&M.items.push([t,e,n,+new Date]),c("error",M)}var y,A,k=document,E=window,L=Math,x=parseInt,N=k.all&&E.attachEvent,D=0,T={},S={},M={count:0,items:[]},I={},C=t.configs||{},B=(+new Date).toString(36)+L.random().toString(36).substr(2,5);t.errors=M,t.configs=C,t.times=S,t.sid=B,t.mark=e,t.getXPath=i,"Group1Action1Extra1AliasParamText".replace(/([A-Z][a-z]+)(1|0)?/g,function(e,n,o){var i=n.toLowerCase();T[i]="alog-"+i,t["get"+n]=function(t,e){return r(t,T[i],o,e)}}),t.report=a,t.fire=c,t.on=u,t.un=s,t.epath=f,t.config=l,t.ep=d,t.ps=g,t.vr=m,t.an=v,N&&u(k,"mouseup",b),u(E,"beforeunload",h),u(E,"unload",h),t.error=w,u(E,"error",w)}(ALog);var Monkey=Monkey||{};void function(t){function e(t){if(t){var e,n={ts:i().toString(36)};for(e in P)n[e]=P[e];for(e in t)n[e]=t[e];l("report",n),W.report(p.postUrl,n)}}function n(t,n){if(t){var r={cmd:"action",ac:t,param:n};l("action",r),e(r)}}function r(t,e){t&&(P[t]=e)}function o(t,e,n){W.on(W,M+"."+t,e,n)}function i(){return new Date-m}function a(t){for(;t;){if(/^(a|button)$/i.test(t.tagName))return t;t=t.parentNode}}function c(){switch(g.refer){case 1:case!0:return S.referrer;case 2:var t=S.referrer;if(!t)return;var e="";return t.replace(/(^\w+:\/\/)?([^\/]+)/,function(t,n){e=n}),S.location.host==e?S.referrer:e}}function u(t,n,r){var o=n.target||n.srcElement;switch(t){case"d":if(!o)return;b++;var c={},u=a(o),s=W.getAction(o,c),f="",d=W.getText(o);if(u?(/^a$/i.test(u.tagName)?(g.click&&(f=u.getAttribute("href",2),/^(javascript|#)/i.test(f)&&(f="")),w++):y++,g.click&&(d=d||W.getText(u)||u.title||u.innerHTML.replace(/<[^>]*>|\s/g,""))):/input/i.test(o.tagName)&&/button|radio|checkbox|submit/i.test(o.type)&&(u=o,y++,d=d||o.value),/img/i.test(o.tagName)&&(k++,d=d||o.alt||o.title||o.src),!u&&!s||!g.click)break;if(g.onlylink&&/input|button/i.test(o.tagName))break;A++;var p=r?r.path+"/"+D(o,r.doc):D(o),m=W.getGroup(o),v=W.getExtra(o),h=W.getParam(c.target),E=W.ep(o,[n.clientX,n.clientY]),T=o.ownerDocument,S=T.body,M=[0,0];n.pageX||n.pageY?M=[n.pageX,n.pageY]:(n.clientX||n.clientY)&&(M=[n.clientX+(T&&T.scrollLeft||S&&S.scrollLeft||0)-(T&&T.clientLeft||S&&S.clientLeft||0),n.clientY+(T&&T.scrollTop||S&&S.scrollTop||0)-(T&&T.clientTop||S&&S.clientTop||0)]);var I={xp:p,g:m,gx:v,ac:s,ep:E,ci:A,pp:M,ps:W.ps(),param:h,u:((f||"none")+"").substr(0,200),txt:((d||"none")+"").substr(0,30)};g.vr&&(I.vr=W.vr()),l("click",I),e(I);break;case"o":L=i(),x=1;break;case"i":N+=i()-L,L=i(),x=0;break;case"s":case"e":var C=W.vr();B=Math.max(C[1]+C[3],B)}}function s(n){if(window.ALog&&!m){W=ALog,n=n||[],n instanceof Array||(n=[n]);for(var r,a,s,E=[].concat(n);(p=E.pop())&&!(p.page=p.page||p.getPage()););if(p){p.page instanceof Array&&(p.mid=p.mid||p.page[1],p.page=p.page[0]),g=p.reports,W.on(W,"unload",f,C),W.on(W,"error",d,C),D=W.getXPath,b=w=y=A=k=L=x=N=0,m=W.times&&W.times.ht||new Date,v=W.sid||(+m).toString(36)+(+Math.random().toFixed(8).substr(2)).toString(36),h="_e_"+v,P={pid:p.pid||241,sid:v,hid:p.hid,mid:p.mid,page:p.page,ver:5,p:p.product,px:T.screen.width+"*"+T.screen.height,ref:c()};for(r in p)/^on(\w+)$/.test(r)&&o(r.substr(2),p[r],C);for(l("start",t),L=i(),S.body&&(s=W.vr(),B=s[1]+s[3]),g.pv&&e({cmd:"open"}),r=0;(a=I[r++])&&(W.on(a[2]||S,a[0],function(t){return function(e){m&&u(t,e)}}(a[1]),C),g.staytime););}}}function f(){if(m){if(l("close",t),x&&(N+=i()-L),g.staytime){var n={cmd:"close",tc:b,lc:w,bc:y,pc:k,pd:B,ft:(i()-N).toString(36),ec:E};e(n)}return m=0,W.un(C),g.staytime}}function l(t,e){W.fire(M+"."+t,e)}function d(t){if(E=t.count,g.error){g.error=0;var n=t.items[0];n&&e({cmd:"error",et:(n[3]-m).toString(36),url:n[1],msg:n[0],line:n[2]})}}var p,g,m,v,h,b,w,y,A,k,E,L,x,N,D,T=window,S=document,M="monkey",I=[["mousedown","d"],["focusout","o"],["blur","o",T],["focusin","i"],["focus","i",T],["scroll","s",T],["resize","e",T]],C=[],B=0,P={},W=T.ALog;t.push=n,t.set=r,t.on=o,t.start=s,t.stop=f,W&&W.configs&&W.configs[M]&&s(W.configs[M])}(Monkey),Monkey.start({getPage:function(){return window.pageId},postUrl:window.monkeyPost||window.conf&&window.conf.monkeyPost||"http://nsclick.baidu.com/h.gif",p:113,pid:241,hid:809,onstart:function(){document.cookie.replace(/(?:^| )BAIDUID=([^;]*)(;|$)/,function(t,e){e&&Monkey.set("hao123_baiduid",decodeURIComponent(e.split(":")[0]))}),ALog.an("group","monkey");for(var t=["top","addFavBar","weatherMoreWrap","fbMod","customTip","snsShareBox","fb-root"],e=0;t.length>e;e++){var n=document.getElementById(t[e]);n&&n.setAttribute&&n.setAttribute("alog-alias",t[e])}},onreport:function(t){document.cookie.replace(/(?:^| )FLASHID=([^;]*)(;|$)/,function(e,n){n&&(t.hao123_flashid=decodeURIComponent(n.split(":")[0]))})},reports:{click:1,pv:1}});
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/js/js_speed.min.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/js/js_speed.min.js
new file mode 100755
index 000000000..b45a7c453
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/js/js_speed.min.js
@@ -0,0 +1,53 @@
+(function(window) {
+ /**
+ * 上报Timing数据
+ * 函数必须在页面加载完成之后才能执行,一般可以放在window.onload里调用,
+ * 或者在其他页面加载完成之后才执行的函数里调用
+ */
+
+ var sendReport = function(){
+ var uaqTaskID = window.conf.uaq.uaqTaskID;
+ var _p = (window.webkitPerformance ? window.webkitPerformance : window.msPerformance);
+ _p = (_p ? _p : window.performance);
+
+ var _t, _sa = [], _ti = ["navigationStart","unloadEventStart","unloadEventEnd",
+ "redirectStart","redirectEnd","fetchStart","domainLookupStart","domainLookupEnd",
+ "connectStart","connectEnd","secureConnectionStart","requestStart","responseStart",
+ "responseEnd","domLoading","domInteractive","domContentLoadedEventStart",
+ "domContentLoadedEventEnd","domComplete","loadEventStart","loadEventEnd"];
+
+ if (_p && (_t = _p.timing)) {
+ for (var i in _ti){
+ var _tmp = _t[_ti[i]];
+ _tmp = (_tmp ? _tmp : 0);
+ _sa.push(_ti[i] + "=" + _tmp);
+ }
+
+ var uaqReportUrl = "http://uaqport.baidu.com/jsspeed.php";
+ uaqReportUrl += "?id=" + uaqTaskID + "&" + _sa.join("&");
+
+ var _img = new Image();
+ setTimeout(function(){
+ _img.src = uaqReportUrl;
+ },1000);
+ }
+ };
+ window.sendTimeToUAQ = function(){
+ var sendProbability = window.conf.uaq.sendProbability;
+ if (Math.random() <= sendProbability) {
+ sendReport();
+ }
+ };
+})(window);
+
+/**
+ *以下代码用户将数据上报函数注册在window的onload事件中
+ *您也可以使用其他方式执行window.sendTimeToUAQ函数,
+ *但是要保证该函数一定在页面的onload的事件发生之后执行,
+ *否则会造成回传数据不准确
+*/
+if (window.addEventListener) {
+ window.addEventListener("load", window.sendTimeToUAQ, false);
+} else {
+ window.attachEvent("onload",window.sendTimeToUAQ);
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/js/wpo.pda.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/js/wpo.pda.js
new file mode 100755
index 000000000..4a657cea8
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/js/wpo.pda.js
@@ -0,0 +1,2 @@
+(function(){function a(e,c,h){if(e.length===+e.length){for(var g=0,d=e.length;g0&&this._metrics.push("wtt="+e)}this._measureTime(d,c)};b.prototype._measureTime=function(d,e){var c=0;a(e,function(f,g){c=(""+g).length<8?g:g-d;this._metrics.push(f+"="+c)},this)};b.prototype._measureRenderTime=function(){if(window.performance&&window.performance.timing){var c=window.performance.timing;this._performance_timing=c;this._render_timing.lt=c.loadEventStart;if(c.loadEventEnd>0){this._render_timing.let=c.loadEventEnd}}if(this.getFPT()){this._render_timing.fpt=this.getFPT()}if(this._render_timing.fvt==0){this._render_timing.fvt=this._render_timing.crt=this._render_timing.let}this._measureTime(this._render_start,this._render_timing)};b.prototype._browser=function(){var e=this._uaMatch(navigator.userAgent);var c=e.browser;if(c=="msie"){if(document.documentMode){var f=e.version.substring(0,1);if(window.performance){c+="9.0";this._metrics.push("ebrowser="+f+"9"+document.documentMode)}else{c+="8.0";this._metrics.push("ebrowser="+f+"8"+document.documentMode)}}else{c+=e.version}}var d={"msie6.0":16,"msie7.0":17,"msie8.0":18,"msie9.0":19,chrome:20,mozilla:30,safari:40,opera:50};this._metrics.push("browser="+(d[c]||0))};b.prototype._uaMatch=function(d){var j=/(chrome)\/(\d+\.\d)/,f=/(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/,c=/(opera)(?:.*version)?[ \/]([\w.]+)/,e=/(msie) ([\w.]+)/,g=/(mozilla)(?:.*? rv:([\w.]+))?/,d=d.toLowerCase(),h={};var i=j.exec(d)||c.exec(d)||e.exec(d)||d.indexOf("compatible")<0&&g.exec(d)||[];if(f.test(d)&&!/chrome/.test(d)){i[1]="safari";i[2]=RegExp["$1"]||RegExp["$2"]}return{browser:i[1]||"unknown",version:i[2]||"0"}};b.prototype.send=function(){if(b._is_send){return}b._is_send=true;var f=this._data.env,c=this._metrics,d=this._connection_num;a(f,function(g,h){c.push(g+"="+h)});if(window._trace_page_logid){c.push("logid="+_trace_page_logid)}c.push("pf="+navigator.platform);c.push("_t="+new Date()*1);var e=document.createElement("img");e.src=this._conf.log_path+"?"+c.join("&");window["___pms_img_"+new Date()*1]=e};b.prototype._unload_send=function(){if(b._is_unload_send){return}b._is_unload_send=true;var g=this._data.env,c=[];if(window.F&&F.fisMark){var d=this._render_start,f=[];a(F.fisMark,function(i,j){var h=[];a(j,function(l,k){h.push('"'+l+'":'+(k-d))},this);f.push('"'+i+'":{'+h.join(",")+"}")},this);c.push("fis_timing={"+f.join(",")+"}")}if(c.length>0){a(g,function(h,i){c.push(h+"="+i)});var e=document.createElement("img");e.src=this._conf.log_path+"?"+c.join("&");window["___pms_img_"+new Date()*1]=e}};if(!window.WPO_PDA){window.WPO_PDA=new b(PDC.metadata())}})();
+if (window["PDC"] && PDC.oldNetTest) {! function() {window.__wpo = {}, __wpo.util = {extend: function(a, b) {for (var c in b) a[c] = b[c]; return a }, now: function() {return (new Date).getTime() } }, __wpo.util.param = function(a) {var d, b = [], c = ""; for (d in a) c = "undefined" == typeof a[d] ? "" : a[d], b.push(d + "=" + c); return b.join("&") }, __wpo.log = {_opt: {log_path: "http://static.tieba.baidu.com/tb/pms/img/st.gif"}, _data: {}, setOpt: function(a) {__wpo.util.extend(this._opt, a) }, push: function(a) {__wpo.util.extend(this._data, a) }, send: function() {var a = document.createElement("img"), b = (new Date).getTime(); this._data._t = b, a.src = this._opt.log_path + "?" + __wpo.util.param(this._data), window["___pms_img_" + b] = a, this._data = {} } }, __wpo.network = {_opt: {}, test: function(a, b) {var c = new __wpo.NetworkTester(a, b); c.run() } }, __wpo.NetworkTester = function(a, b) {this._END_NUM = 5, this._START_NUM = 2, this._IMG_OPT = {img_1: ["img/1.jpg", 0], img_2: ["img/2.gif", 0], img_3: ["img/3.gif", 0], img_4: ["img/4.jpg", 10583 / 1024], img_5: ["img/5.jpg", 59906 / 1024] }, this._timecost = {}, this._ext_data = b || {}, this._img_path = a }, __wpo.NetworkTester.prototype.run = function() {this._loadTestImg(this._START_NUM) }, __wpo.NetworkTester.prototype._report = function() {var h, a = this._timecost.t3, b = this._IMG_OPT.img_4[1], c = this._IMG_OPT.img_5[1], d = this._timecost.t4, e = this._timecost.t5, f = 0, g = 0; d > a && (f = b / ((d - a) / 1e3)), g = (c - b) / ((e - d) / 1e3), h = {rtt: a, bw1: f.toFixed(1), bw2: g.toFixed(1) }, h.c_rtt = h.rtt, h.c_bw1 = h.bw1, h.c_bw2 = h.bw2, __wpo.log.push(this._ext_data), __wpo.log.push(h), __wpo.log.send() }, __wpo.NetworkTester.prototype._loadTestImg = function(a) {var b = document.createElement("img"), c = this, d = (new Date).getTime(), e = "" + this._img_path + this._IMG_OPT["img_" + a][0] + "?t=" + d + "&index=" + a; b.onload = function() {var e, b = (new Date).getTime(); c._timecost["t" + a] = b - d, e = a + 1, e <= c._END_NUM ? c._loadTestImg(e) : c._report() }, b.src = e, window["___pms_img_net_" + d] = b } }(), function() {var g, h, a = {product_id: 10, page_id: PDC.idforWebSpeed, sample: PDC.oldNetTest.sample, domains: PDC.oldNetTest.domains }, b = Math.random(), c = a.domains.length, d = a.sample, e = {product_id: a.product_id, page_id: a.page_id, domain: ""}, f = ""; d > b && (g = Math.floor(b / (d / c)), c > g && (h = a.domains[g], f = h.img_path, e.domain = h.domain), "" != f && setTimeout(function() {__wpo.network.test(f, e) }, 1e3)) }(); }
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/js/wpo.timing.pda.hao123.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/js/wpo.timing.pda.hao123.js
new file mode 100755
index 000000000..0b5a10706
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/js/wpo.timing.pda.hao123.js
@@ -0,0 +1 @@
+(function(){__wpo.util.param=function(d){var a=[],c="";for(var b in d){c=(typeof d[b]=="undefined"?"":d[b]);a.push(b+"="+c)}return a.join("&")};__wpo.util.uaMatch=function(b){b=b.toLowerCase();var a=/(chrome)[ \/]([\w.]+)/.exec(b)||/(webkit)[ \/]([\w.]+)/.exec(b)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(b)||/(msie) ([\w.]+)/.exec(b)||b.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(b)||[];return{browser:a[1]||"",version:a[2]||"0"}};__wpo.pda={_opt:{},setOpt:function(a){__wpo.util.extend(this._opt,a)},_metrics:{},_addMetric:function(a,b){if(typeof a==="object"){__wpo.util.extend(this._metrics,a)}else{this._metrics[a]=b}},_metadata:{},_render_start:0,_measureEnvInfo:function(){var a=__wpo.util.uaMatch(window.navigator.userAgent);var b=a.browser;if(b==="msie"){b+=a.version}var c={"msie9.0":19,"msie10.0":110,chrome:20,mozilla:30,safari:40,opera:50};this._addMetric("browser",(c[b]||0));if(window.screen){this._addMetric("_screen",window.screen.width+"*"+window.screen.height+"|"+window.screen.availWidth+"*"+window.screen.availHeight)}},_measurePerformanceTiming:function(){function g(){var i;if(window.performance&&performance.timing&&performance.timing.msFirstPaint){i=performance.timing.msFirstPaint}else{if(window.chrome&&chrome.loadTimes){i=parseInt(chrome.loadTimes().firstPaintTime*1000)}}return i}var b={},c={},e=window.performance.timing;var h=e.fetchStart;if(e.connectStart>=e.domainLookupStart){b.dns=e.domainLookupEnd}b.ct=e.connectEnd;b.st=e.responseStart;b.tt=e.responseEnd;this._measureTime(h,b);var d={c_dnslookup:e.domainLookupEnd-e.domainLookupStart,c_connecting:e.connectEnd-e.connectStart,c_waiting:e.responseStart-e.requestStart,c_receiving:e.responseEnd-e.responseStart,c_fetch_dns:e.domainLookupStart-e.fetchStart,c_nav_dns:e.domainLookupStart-e.navigationStart,c_nav_fetch:e.fetchStart-e.navigationStart};this._addMetric(d);var a=e.navigationStart;c.drt=e.domContentLoadedEventStart;c.drt_end=e.domContentLoadedEventEnd;c.lt=e.loadEventStart;var f=g();if(f){c.c_nfpt=f;c.p_nfpt=c.c_nfpt}this._measureTime(a,c)},_measurePerformanceNavigation:function(){var a=window.performance.navigation;if(typeof a=="object"){this._addMetric("nav_type",a.type);this._addMetric("redirect_count",a.redirectCount)}},_measureLoadTiming:function(){this._addMetric("wt",1);var c=this._metadata.timing,a=this._metadata.render_start;this._measureTime(a,this._metadata.timing);var b=c.ht-this._metadata.time_to_title;this._addMetric("c_head_time",b)},_measureTime:function(d,b){var c=0;for(var a in b){c=b[a]-d;if(c>=0){this._addMetric(a,c)}}},_measureHtmlContent:function(d,c){var h=[],b={},j=null;var a=0;h=document.getElementsByTagName("img");for(var g=0,e=h.length;gb){g=h/((d-b)/1000)}e=(f-h)/((c-d)/1000);var a={product_id:this._product_id,rtt:b,bw1:g.toFixed(1),bw2:e.toFixed(1)};a.cus_rtt=a.rtt;a.cus_bw1=a.bw1;a.cus_bw2=a.bw2;__wpo.log.push(a);__wpo.log.send()};__wpo.NetworkTester.prototype._loadTestImg=function(e){var c=document.createElement("img");var b=this;var a=new Date().getTime();var d=""+this._img_path+this._IMG_OPT["img_"+e][0]+"?t="+a+"&index="+e;c.onload=function(){var g=new Date().getTime();b._timecost["t"+e]=g-a;var f=e+1;if(f<=b._END_NUM){b._loadTestImg(f)}else{console.log(b._timecost);b._report()}};c.src=d;window["___pms_img_net_"+a]=c}})();
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/js/wpo.timing.pda.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/js/wpo.timing.pda.js
new file mode 100755
index 000000000..5e19e288d
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/js/wpo.timing.pda.js
@@ -0,0 +1 @@
+(function(){__wpo.util.param=function(d){var a=[],c="";for(var b in d){c=(typeof d[b]=="undefined"?"":d[b]);a.push(b+"="+c)}return a.join("&")};__wpo.util.uaMatch=function(b){b=b.toLowerCase();var a=/(chrome)[ \/]([\w.]+)/.exec(b)||/(webkit)[ \/]([\w.]+)/.exec(b)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(b)||/(msie) ([\w.]+)/.exec(b)||b.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(b)||[];return{browser:a[1]||"",version:a[2]||"0"}};__wpo.pda={_opt:{},setOpt:function(a){__wpo.util.extend(this._opt,a)},_metrics:{},_addMetric:function(a,b){if(typeof a==="object"){__wpo.util.extend(this._metrics,a)}else{this._metrics[a]=b}},_metadata:{},_render_start:0,_measureEnvInfo:function(){var a=__wpo.util.uaMatch(window.navigator.userAgent);var b=a.browser;if(b==="msie"){b+=a.version}var c={"msie9.0":19,"msie10.0":110,chrome:20,mozilla:30,safari:40,opera:50};this._addMetric("browser",(c[b]||0));if(window.screen){this._addMetric("_screen",window.screen.width+"*"+window.screen.height+"|"+window.screen.availWidth+"*"+window.screen.availHeight)}},_measurePerformanceTiming:function(){function g(){var i;if(window.performance&&performance.timing&&performance.timing.msFirstPaint){i=performance.timing.msFirstPaint}else{if(window.chrome&&chrome.loadTimes){i=parseInt(chrome.loadTimes().firstPaintTime*1000)}}return i}var b={},c={},e=performance.timing;var h=e.fetchStart;if(e.domainLookupStart>e.connectStart){b.dns=e.domainLookupEnd}b.ct=e.connectEnd;b.st=e.responseStart;b.tt=e.responseEnd;this._measureTime(h,b);var d={c_dnslookup:e.domainLookupEnd-e.domainLookupStart,c_connecting:e.connectEnd-e.connectStart,c_waiting:e.responseStart-e.requestStart,c_receiving:e.responseEnd-e.responseStart};this._addMetric(d);var a=e.navigationStart;c.drt=e.domContentLoadedEventStart;c.drt_end=e.domContentLoadedEventEnd;c.lt=e.loadEventStart;var f=g();if(f){c.c_nfpt=f}this._measureTime(a,c)},_measureLoadTiming:function(){this._addMetric("wt",1);var c=this._metadata.timing,a=this._metadata.render_start;this._measureTime(a,this._metadata.timing);var b=c.ht-this._metadata.time_to_title;this._addMetric("c_head_time",b)},_measureTime:function(d,b){var c=0;for(var a in b){c=b[a]-d;if(c>=0){this._addMetric(a,c)}}},_measureHtmlContent:function(d,c){var h=[],b={},j=null;var a=0;h=document.getElementsByTagName("img");for(var g=0,e=h.length;g
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/lazyload.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/lazyload.js
new file mode 100755
index 000000000..8dbff5246
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/static/lazyload.js
@@ -0,0 +1,425 @@
+/*jslint browser: true, eqeqeq: true, bitwise: true, newcap: true, immed: true, regexp: false */
+
+/**
+LazyLoad makes it easy and painless to lazily load one or more external
+JavaScript or CSS files on demand either during or after the rendering of a web
+page.
+
+Supported browsers include Firefox 2+, IE6+, Safari 3+ (including Mobile
+Safari), Google Chrome, and Opera 9+. Other browsers may or may not work and
+are not officially supported.
+
+Visit https://github.com/rgrove/lazyload/ for more info.
+
+Copyright (c) 2011 Ryan Grove
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the 'Software'), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+@module lazyload
+@class LazyLoad
+@static
+@version 2.0.3 (git)
+*/
+
+LazyLoad = (function (doc) {
+ // -- Private Variables ------------------------------------------------------
+
+ // User agent and feature test information.
+ var env,
+
+ // Reference to the element (populated lazily).
+ head,
+
+ // Requests currently in progress, if any.
+ pending = {},
+
+ // Number of times we've polled to check whether a pending stylesheet has
+ // finished loading. If this gets too high, we're probably stalled.
+ pollCount = 0,
+ //ie 7,8,9 bug,http://blogs.msdn.com/b/ieinternals/archive/2011/05/14/internet-explorer-stylesheet-rule-selector-import-sheet-limit-maximum.aspx
+ IE7_8_9_StylesheetLimit = 25,
+
+ // Queued requests.
+ queue = {css: [], js: []};
+
+ // Reference to the browser's list of stylesheets.
+ //styleSheets = doc.styleSheets;
+
+ // -- Private Methods --------------------------------------------------------
+
+ /**
+ Creates and returns an HTML element with the specified name and attributes.
+
+ @method createNode
+ @param {String} name element name
+ @param {Object} attrs name/value mapping of element attributes
+ @return {HTMLElement}
+ @private
+ */
+ function createNode(name, attrs) {
+ var node = doc.createElement(name), attr;
+
+ for (attr in attrs) {
+ if (attrs.hasOwnProperty(attr)) {
+ node.setAttribute(attr, attrs[attr]);
+ }
+ }
+
+ return node;
+ }
+
+ /**
+ Called when the current pending resource of the specified type has finished
+ loading. Executes the associated callback (if any) and loads the next
+ resource in the queue.
+
+ @method finish
+ @param {String} type resource type ('css' or 'js')
+ @private
+ */
+ function finish(type) {
+ var p = pending[type],
+ callback,
+ urls;
+
+ if (p) {
+ callback = p.callback;
+ urls = p.urls;
+
+ urls.shift();
+ pollCount = 0;
+
+ // If this is the last of the pending URLs, execute the callback and
+ // start the next request in the queue (if any).
+ if (!urls.length) {
+ callback && callback.call(p.context, p.obj);
+ pending[type] = null;
+ queue[type].length && load(type);
+ }
+ }
+ }
+
+ /**
+ Populates the env
variable with user agent and feature test
+ information.
+
+ @method getEnv
+ @private
+ */
+ function getEnv() {
+ var ua = navigator.userAgent;
+
+ env = {
+ // True if this browser supports disabling async mode on dynamically
+ // created script nodes. See
+ // http://wiki.whatwg.org/wiki/Dynamic_Script_Execution_Order
+ async: doc.createElement('script').async === true
+ };
+
+ (env.webkit = /AppleWebKit\//.test(ua))
+ || (env.ie = ua.match(/MSIE\s([^ ;]*)/))
+ || (env.opera = /Opera/.test(ua))
+ || (env.gecko = /Gecko\//.test(ua))
+ || (env.unknown = true);
+ }
+
+ /**
+ Loads the specified resources, or the next resource of the specified type
+ in the queue if no resources are specified. If a resource of the specified
+ type is already being loaded, the new request will be queued until the
+ first request has been finished.
+
+ When an array of resource URLs is specified, those URLs will be loaded in
+ parallel if it is possible to do so while preserving execution order. All
+ browsers support parallel loading of CSS, but only Firefox and Opera
+ support parallel loading of scripts. In other browsers, scripts will be
+ queued and loaded one at a time to ensure correct execution order.
+
+ @method load
+ @param {String} type resource type ('css' or 'js')
+ @param {String|Array} urls (optional) URL or array of URLs to load
+ @param {Function} callback (optional) callback function to execute when the
+ resource is loaded
+ @param {Object} obj (optional) object to pass to the callback function
+ @param {Object} context (optional) if provided, the callback function will
+ be executed in this object's context
+ @private
+ */
+ function load(type, urls, callback, obj, context) {
+ var _finish = function () { finish(type); },
+ isCSS = type === 'css',
+ charset = "utf-8",
+ className = "lazyload",
+ nodes = [],
+ i, len, node, p, pendingUrls, url;
+
+ env || getEnv();
+
+ if (urls) {
+ // If urls is a string, wrap it in an array. Otherwise assume it's an
+ // array and create a copy of it so modifications won't be made to the
+ // original.
+ urls = typeof urls === 'string' ? [urls] : urls.concat();
+
+ // Create a request object for each URL. If multiple URLs are specified,
+ // the callback will only be executed after all URLs have been loaded.
+ //
+ // Sadly, Firefox and Opera are the only browsers capable of loading
+ // scripts in parallel while preserving execution order. In all other
+ // browsers, scripts must be loaded sequentially.
+ //
+ // All browsers respect CSS specificity based on the order of the link
+ // elements in the DOM, regardless of the order in which the stylesheets
+ // are actually downloaded.
+ if (isCSS || env.async || env.gecko || env.opera) {
+ // Load in parallel.
+ queue[type].push({
+ urls : urls,
+ callback: callback,
+ obj : obj,
+ context : context
+ });
+ } else {
+ // Load sequentially.
+ for (i = 0, len = urls.length; i < len; ++i) {
+ queue[type].push({
+ urls : [urls[i]],
+ callback: i === len - 1 ? callback : null, // callback is only added to the last URL
+ obj : obj,
+ context : context
+ });
+ }
+ }
+ }
+
+ // If a previous load request of this type is currently in progress, we'll
+ // wait our turn. Otherwise, grab the next item in the queue.
+ if (pending[type] || !(p = pending[type] = queue[type].shift())) {
+ return;
+ }
+
+ head || (head = doc.head || doc.getElementsByTagName('head')[0]);
+ pendingUrls = p.urls.slice();
+ for (i = 0, len = pendingUrls.length; i < len; ++i) {
+ url = pendingUrls[i];
+
+ if (isCSS) {
+ // 旧lazyload需要区分 firfox 为了检测css是否onload事件,新lazyload直接使用 innerHTML link的方式,不需要区分了
+ /*node = env.gecko ? createNode('style') : createNode('link', {
+ href: url,
+ rel : 'stylesheet'
+ });*/
+
+ node = createNode('link', {
+ href: url,
+ rel : 'stylesheet'
+ });
+ } else {
+ node = createNode('script', {src: url});
+ node.async = false;
+ }
+
+ node.className = className;
+ node.setAttribute('charset', charset);
+
+ if (env.ie && !isCSS) {
+ node.onreadystatechange = function () {
+ if (/loaded|complete/.test(node.readyState)) {
+ node.onreadystatechange = null;
+ _finish();
+ }
+ };
+ } else if (isCSS && (env.gecko || env.webkit)) {
+ // Gecko and WebKit don't support the onload event on link nodes.
+ /*if (env.webkit) {
+ // In WebKit, we can poll for changes to document.styleSheets to
+ // figure out when stylesheets have loaded.
+ p.urls[i] = node.href; // resolve relative URLs (or polling won't work)
+ pollWebKit();
+ } else {
+ // In Gecko, we can import the requested URL into a ";div.removeChild(div.firstChild);document.getElementsByTagName("head")[0].appendChild(div.firstChild)},sug_callback:function(data){var me=this;data=me.modeConfig[mode].dataProcess(data);me.render(data);if(data.q!=me.emptySugWord){me.btn_down&&me.btn_down()}if(data.length<=0&&me.container){me.container[0].innerHTML=""}},btn_click:function(){var me=this;me.input.focus();if(me.upDown.hasClass("sg_up")){me.hide()}else{me.inputClick("triangle")}},setBtn:function(){var me=this;var ck=Cookie.get("psSugUp");if(ck){ck=ck.split("|");if(ck[1]=="0"){Cookie.set("psSugUp",ck[0]+"|1")}}me.tip_num.hide()},request:function(){var me=this;if(me.value.trim()==""){me.inputClick();return}if(me.data_cache[mode][me.value]){me.sug_callback(me.data_cache[mode][me.value]);return}var requestUrl=me.modeConfig[mode].buildRequestUrl(me.value);if(me.jqXhr){me.jqXhr.abort()}var val=me.reqValue=me.value;
+me.jqXhr=$.ajax({dataType:"jsonp",async:true,scriptCharset:"utf-8",url:requestUrl,jsonp:mode=="baidu"?"cb":"jsonp",timeout:5000,success:function(data){if(me.reqValue==val){me.sug_callback(data)}},always:function(){me.jqXhr=null}})},inputClick:function(type_str){if(mode!="baidu"){return}var me=this,url=me.modeConfig.baidu.buildRequestUrl(me.emptySugWord),dataProcess=me.modeConfig.baidu.dataProcess;me.inputEmptySug(url,dataProcess).call(me,type_str);me.setBtn()},insertSug:function(){var me=this;me.input.parentNode.insertBefore(me.container_wrap[0],me.input.parentNode.firstChild)},createContainer:function(){var me=this;bdsug.prototype.createContainer.call(me);bindLogEvent(me.side_container[0],"se");me.container_wrap[0].className=me.containerClassName},btn_up:function(){var me=this;me.upDown&&me.upDown.addClass("sg_up")},btn_down:function(){var me=this;me.upDown&&me.upDown.removeClass("sg_up")},renderTip:function(data){var me=this;if(data&&data.n&&data.n.c&&data.n.sugUp){var ck=Cookie.get("psSugUp"),num=data.n.c;
+if(!ck||ck.split("|")[0]!=data.n.sugUp){ck=data.n.sugUp+"|0";Cookie.set("psSugUp",ck)}if(ck.split("|")[1]=="1"){return}if(num){me.tip_num[0].innerHTML=num;me.tip_num[0].style.display="inline"}}},createBtn:function(){var me=this;me.appendStyle();var _tri=$('10 ');me.upDown=_tri;me.tip_num=$("span",_tri);$(me.input).parent().addClass("sg_tri").end().after(me.upDown);var url=me.modeConfig.baidu.buildRequestUrl(me.emptySugWord);me.jqXhr=$.ajax({dataType:"jsonp",async:true,scriptCharset:"utf-8",url:url,jsonp:"cb",timeout:5000,success:function(data){me.renderTip(data)},always:function(){me.jqXhr=null}});me.upDown.click(function(){me.btn_click()})},showBtn:function(){var me=this;$(me.input.parentNode).addClass("sg_tri")},hideBtn:function(){var me=this;$(me.input.parentNode).removeClass("sg_tri")},addTj:function(o){var me=this;for(var i in o){addedTj[i]=o[i]}if(mode=="baidu"){bdsug.prototype.addTj.call(me,o)}},rmTj:function(o){var me=this;
+for(var i in o){$("input[name="+i+"]",me.form).remove()}},form_submit:function(e){var me=this;me.hide();var type=(me.submitType!="sug_enter"&&me.submitType!="key_enter"&&me.submitType!="clk_submit");var oldSubmitType=me.submitType;var res=bdsug.prototype.form_submit.call(me,e);if(mode=="baidu"&&res&&me.value.length<48){try{me.writeStore("",$.trim(me.value))}catch(e){}}if(res&&type){haoc()}return res},toggle:function(on){var me=this;if(on){if(!statusOn){$(me.input).bind("keydown.sugEvent",function(e){me.keydown(e)}).bind("focus.sugEvent",function(e){me.startCircle(e)}).bind("blur.sugEvent",function(e){me.stopCircle(e)}).bind("click.sugEvent",function(e){me.inputClick(e)}).bind("keypress.sugEvent",function(e){me.keypress(e)});me.searchBtn.bind("mouseup.sugEvent",function(e){me.searchBtn_mouseup(e)});$(document).bind("click.sugEvent",function(e){me.document_click(e)});$(me.form).bind("submit.sugEvent",function(e){me.form_submit(e)});if(!me.upDown){me.createBtn();me.hideBtn()}}if(mode=="baidu"){me.showBtn()
+}else{me.hideBtn()}me._curSelect=0}else{$.each([$(me.input),me.searchBtn,$(document),$(me.form)],function(index,item){item.unbind(".sugEvent")});me.hide();me.hideBtn();me.stopCircle()}statusOn=on},setMode:function(m){var me=this;if({baidu:1,google:1}[m]){mode=m}if(mode=="baidu"){me.addTj(addedTj)}else{me.rmTj(addedTj)}}});function bindLogEvent(wrap,fm){$(wrap).on("mousedown",function(e){var t=e.srcElement||e.target;try{var xpath=getXPath(t,wrap);log(xpath,t,wrap,fm)}catch(e){}})}function getXPath(node,wrap,path){path=path||[];wrap=wrap||document;if(node===wrap){return path}if(node.parentNode!==wrap){path=getXPath(node.parentNode,wrap,path)}if(node.previousSibling){var count=1;var sibling=node.previousSibling;do{if(sibling.nodeType==1&&sibling.nodeName==node.nodeName){count++}sibling=sibling.previousSibling}while(sibling)}if(node.nodeType==1){path.push(node.nodeName.toLowerCase()+(count>1?count:""))}return path}function getType(xpath,t,wrap){var LOG_CLASS=["TITLE","LINK","IMG","BTN","OTHERS"];
+var node=t,cs=LOG_CLASS,cl=cs.length,xstr=xpath.join(" ");while(node!==wrap){for(var i=0;i1){l--;if(/^a\d*\b/.test(xpath[l])){url=p.href;title=p.innerHTML.replace(/<[^>]*>/g,"");adata=p.getAttribute("data-click");if(p.getAttribute("data-nolog")!=null){return}break}else{p=p.parentNode}}if(!url){url=""}var data={fm:fm,p1:wrap.getAttribute("p1")||0,xpath:xpath.join("-")+"("+type+")",title:title||"",url:url};var click_data;if(click_data=wrap.getAttribute("data-click")){try{click_data=(new Function("return "+click_data))();
+$.extend(data,click_data)}catch(e){}}if(adata){try{adata=(new Function("return "+adata))();$.extend(data,adata)}catch(e){}}for(var i in data){if(data[i]===null){delete data[i]}}c(data)}function c(q){haoc(q);var sQ="",img=window["BD_PS_C"+(new Date()).getTime()]=new Image();for(v in q){if(q.hasOwnProperty(v)&&q[v].length>0){sQ+=(sQ?"&":"")+v+"="+encodeURIComponent(q[v])}}var imgsrc=ubsurl+"?";if(q.rsv_sugtype=="cr"){imgsrc+="q="+encodeURIComponent(q.title)+"&"}imgsrc+=sQ+"&lang="+language+"&haobd="+encodeURIComponent(Cookie.get("BAIDUID"))+"&path="+encodeURIComponent(location.href)+"_r="+new Date().getTime();img.src=imgsrc;return true}function haoc(q){var engine=$("#searchGroupLogo").attr("data-id");var input=$("#searchGroupInput").get(0),engine=engine?engine:"";var imgsrc="/img/gut.gif?type=click&element=sug&modId=search&position=search&engine="+engine+"&value="+encodeURIComponent(input.value)+"&r="+new Date().getTime();if(q&&q.rsv_sugtype=="cr"){imgsrc+="&url="+encodeURIComponent(q.url)
+}if(window.conf&&conf.UT&&conf.UT.params){imgsrc+="&country="+conf.UT.params.country+"&level="+conf.UT.params.level+"&page="+conf.UT.params.page}if(document.body.className.match(/header-fixed-up/)){imgsrc+="&sort=header"}var img=window["BD_HAO123_C"+(new Date()).getTime()]=new Image();img.src=imgsrc}window.baidu_sug=(function(){var me=new _baidu_sug();return{setMode:function(){me.setMode.apply(me,arguments)},toggle:function(){me.toggle.apply(me,arguments)}}})()})();
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/BaseController.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/BaseController.php
new file mode 100755
index 000000000..f7a0a251d
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/BaseController.php
@@ -0,0 +1,34 @@
+cmsdata['head']['tplDir'];
+ header("Content-type:text/html;charset=UTF-8");
+ if( !empty( $this->cmsdata['head']['forceCompile'] ) ){
+ $smarty->force_compile = true;
+ }
+ $this->smarty->display($tplDir);
+ }
+ }
+
+ $controller = new DefaultController();
+ $controller->index();
+
+
+
+/*$sysData['templateRoot'] = $smarty->getTemplateDir(0)."/";
+if(isset($_GET['debug'])){
+ if($_GET['debug'] == 'on'){
+ $smarty->debugging = true;
+ }
+}*/
+/*if( !empty( $rootData['head']['forceCompile'] ) ){
+ $smarty->force_compile = true;
+}
+$smarty->assign('root',$rootData);
+$smarty->assign('sysInfo',$sysData);
+
+$smarty->display($tplDir);*/
+
+
+
+?>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/adapterUi.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/adapterUi.php
new file mode 100755
index 000000000..f442d11af
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/adapterUi.php
@@ -0,0 +1,55 @@
+_before();
+ }
+ function _before(){
+ $this->smarty = SimpleTemplate::getInstance();
+ $this->urlParam = array_merge($_GET, $_POST);
+ //重置country
+ $host = $_SERVER['HTTP_HOST'];
+ $host = explode( '.', $host);
+ if( !preg_match('/\d/', $host[0]) ){
+ $this->country = $host[0];
+ }
+ //cms数据merge
+ $this->cmsData();
+ }
+
+ function cmsData(){
+ $cmsData = Cms::get();
+ $rootData = $cmsData['root'];
+ $sysData = $cmsData['sysInfo'];
+ if(!is_array($rootData)){
+ $rootData = json_decode($rootData,true);
+ }
+
+ if(!is_array($sysData)){
+ $sysData = json_decode($sysData,true);
+ }
+ $this->smarty->cmsdata = $rootData;
+ $this->cmsdata = $rootData;
+ $this->smarty->assign('root',$rootData);
+ $this->smarty->assign('body',$rootData['body']);
+ $this->smarty->assign('head',$rootData['head']);
+ $this->smarty->assign('foot',$rootData['foot']);
+ $this->smarty->assign('sysInfo',$sysData);
+ }
+
+
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/api.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/api.php
new file mode 100755
index 000000000..16e2380f0
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/api.php
@@ -0,0 +1,34 @@
+ "http://api.gus.hao123.com",
+ "ar" => "http://api.gar.hao123.com",
+ "id" => "http://api.gid.hao123.com",
+ "vn" => "http://api.gid.hao123.com",
+ "tw" => "http://api.gid.hao123.com",
+ "th" => "http://api.gid.hao123.com",
+ "jp" => "http://api.gid.hao123.com",
+ );
+ $path_url = $_SERVER['SCRIPT_URL'] ? $_SERVER['SCRIPT_URL'] : $_SERVER['REQUEST_URI'];
+ $reffer = $_SERVER['HTTP_REFERER'];
+ $reffer = parse_url( $reffer );
+ $reffer_path = explode("/", $reffer['path']);
+ $country = $reffer_path[1];
+ $api_url = $apiMap[$country];
+ $api_file_name = parse_url($path_url);
+ $api_file_name = $api_file_name['query'];
+ //过滤去掉jsonp字段和_
+ $api_file_name = preg_replace('/&(jsonp|_)=[^&]+/i','',$api_file_name) ;
+ //检测本地是否有数据
+ if( is_file( $root_dir . $api_file_name.".json") ){
+ echo file_get_contents( $root_dir . $api_file_name.".json" );
+ } else {
+ $data = file_get_contents( $api_url.$path_url );
+ //如果目录不存在
+ if( !is_dir( $root_dir ) ){
+ //建立目录
+ mkdir($root_dir,0777,true);
+ }
+ file_put_contents( $root_dir . $api_file_name.".json" , $data);
+ echo $data;
+ }
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/applistapi.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/applistapi.php
new file mode 100755
index 000000000..5bda109c5
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/applistapi.php
@@ -0,0 +1,150 @@
+ array('status'=>401,'info'=>'param error'),
+ //未知文件处理类型(前端不能处理)
+ '402' => array('status'=>402,'info'=>'don\'t handle file type'),
+ //读取文件不存在
+ '404' => array("status"=>404,"info"=>'file not find'),
+ //获取成功,返回的数据格式
+ '200' => array('status'=>200,"info"=>'success',)
+ );
+ public function _before(){
+ //参数校验
+ $this->statusCode = $this->_check_param();
+ //校验错误退出
+ if ( $this->statusCode !== 200 ){
+ $this->_error( $statusCode );
+ }
+ }
+ public function index(){
+
+ //格式化cms数据
+ $idToAppInfo = $this->_idToAppInfo();
+ $appInfo = array();
+ //根据pm或者用户指定的id获取对应的app信息
+ foreach ($this->appIds as $id) {
+ $appInfo[$id] = $this->idToAppInfo[$id];
+ }
+ //通过defaulApp字段区分1,2期,设置了为2期
+ if( !empty( $this->version ) ){
+ //取代applist列表信息
+ $this->data['sidebar']['list'] = $appInfo;
+ }
+
+ $this->_success( $this->data );
+ }
+
+ public function getAllInfo(){
+ $idToAppInfo = $this->_idToAppInfo();
+ //取代applist列表信息
+ //取代applist列表信息
+ $this->data['sidebar']['list'] = $idToAppInfo;
+ $this->_success( $this->data );
+ }
+ /*
+ * 参数校验
+ */
+ private function _check_param(){
+ //获取widget所在根路径
+ $this->callBack = $_GET['callback'];
+ $this->country = $_GET['country'];
+ $this->module = $_GET['module'];
+ $this->version = $_GET['version'];
+ //参数校验
+ if( empty($this->callBack) || empty($this->country) || empty($this->module) || !preg_match('/^\w+$/', $this->callBack) ){
+ return 401;
+ }
+ $path = "applist/{$this->country}/{$this->module}/data.php";
+ $localAppListDataPath = DATA_ROOT."data/".$path;
+ //检测数据是否存在
+
+ $this->data = CmsDataAdapter::saveAndGetOrMergeData($localAppListDataPath, $path);
+ if( empty( $this->data ) ){
+ return 404;
+
+ }
+ //合并mis数据
+ $misDataPath = DATA_ROOT."applist/{$this->country}/mis/data.php";
+ if( file_exists( $misDataPath ) ) {
+ include_once $misDataPath;
+ // 合并sidebar list数据
+ foreach ($root['sidebar']['list'] as $item) {
+ $this->data['sidebar']['list'][]= $item;
+ }
+ // 合并sidebar气泡数据
+ foreach ($root['sidebar']['guideBubble']['list'] as $item) {
+ $this->data['sidebar']['guideBubble']['list'][]= $item;
+ }
+ }
+ //是否获取用户app信息,否则获取pm配置的app信息
+ $ids = empty( $_GET['appids'] ) ? $this->data['defaultApp']['list'] : $_GET['appids'];
+ $this->appIds = explode( ",", $ids);
+
+ return 200;
+ }
+
+ /*
+ * 转换cms中的applist信息列表,cms(方便pm配数据)中配的方式为array( array(id=>"1" )) => array(1=>array(id=>'1'))
+ */
+ private function _idToAppInfo( $statusCode ){
+ $idToAppInfo = array();
+ foreach ($this->data['sidebar']['list'] as $val) {
+ $idToAppInfo[ $val['id'] ] = $val;
+ }
+ $this->idToAppInfo = $idToAppInfo;
+ return $this->idToAppInfo;
+ }
+
+ /*
+ * 错误反馈
+ */
+ private function _error( $statusCode ){
+ echo json_encode( $this->infoList[$statusCode] );
+ exit;
+ }
+
+ /*
+ * 成功反馈
+ */
+ private function _success( $content ){
+ echo $this->callBack."(". json_encode( $content ) .")";
+ exit;
+ }
+ }
+$route_url = $_SERVER['SCRIPT_URL'] ? $_SERVER['SCRIPT_URL'] : $_SERVER['REQUEST_URI'];
+$index = new AppListApi();
+if( preg_match("/getAllInfo/",$route_url)){
+ $index->getAllInfo();
+} else{
+ $index->index();
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/dispath.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/dispath.php
new file mode 100755
index 000000000..c7a67cc7c
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/dispath.php
@@ -0,0 +1,343 @@
+ 2){
+ $reffer = parse_url( $reffer );
+ $reffer_path = explode("/", $reffer['path']);
+ $pathseg[0] = $reffer_path[1];
+ }
+ $pageRoot = $dataDir = $hostType."/".$pathseg[0]."/";
+ $country = $pathseg[0];
+ //$dataDir = $hostType."/".$dataDir;
+ $pathseg = array_slice($pathseg, 1);
+ $count = count($pathseg);
+
+ $pageFound = is_dir( $uiPath.$pageRoot);
+
+ }
+ $dataRoot = $dataDir;
+ }
+ $dataDir = rtrim( $dataDir.implode("/", $pathseg), "/")."/";
+ //如果是首页,放到目录/index中
+ $dataDir = $count>0 ? $dataDir : $dataDir."index/";
+ //为controller设置属性isTestEnv,以便别是否是测试环境
+ //记录对应的data.json所在的Template路径,默认与ui对应
+ self::$dataDir = rtrim( $dataDir, "/")."/";
+ self::$dataPrivate = "";
+ //测试环境使用url,线上环境使用host
+ self::$country = $country;
+ self::$host = $host;
+ self::$dataRoot = rtrim( $dataRoot, "/")."/";
+
+ self::getCms();
+
+ return self::$cmsData;
+ }
+ //检测是否开启smarty调试模式
+ static function isSmartyDebug(){
+ //是否开启smarty调试模式
+ $smarty_debug_id = "debug";
+ if (false !== strpos(self::$_query_string, $smarty_debug_id)) {
+ if (false !== strpos(self::$_query_string, $smarty_debug_id . '=on')) {
+ // enable debugging for this browser session
+ setcookie('FIS_DEBUG', "YlwtSmt",time()+3600*24*356);
+ } elseif (false !== strpos(self::$_query_string, $smarty_debug_id . '=off')) {
+ // disable debugging for this browser session
+ setcookie('FIS_DEBUG', "",time()+3600*24*356);
+ }
+ }
+ }
+
+ static function array_merge_recursive_new() {
+ $arrays = func_get_args();
+ $base = array_shift($arrays);
+ foreach ($arrays as $array) {
+ reset($base); //important
+ while (list($key, $value) = @each($array)) {
+ if (is_array($value) && @is_array($base[$key])) {
+ $base[$key] = self::array_merge_recursive_new($base[$key], $value);
+ }
+ else {
+ $base[$key] = $value;
+ }
+ }
+ }
+ return $base;
+ }
+ static function getCms(){
+ $dataRoot = dirname(__FILE__)."/";
+
+
+ $privateDataDir = DATA_ROOT.self::$dataDir;
+ $publicDataDir = DATA_ROOT.rtrim(self::$dataRoot,"/")."/base/";
+ $dataName = "data.php";
+
+ //指定data的路径(仅能指定同目录下私有数据)
+ $assignDataName = $_GET["data"];
+ if( !empty( $assignDataName ) ){
+ $dataName = $assignDataName.".php";
+ }
+ //复制url的参数值到$root.urlparam中
+ $arr = array( "urlparam"=>array_merge($_GET,$_POST) );
+ //set smarty
+ $sysInfo = array(
+ "baseDataDir" => $publicDataDir."data\.php",
+ "privateDataDir" => $privateDataDir."data\.php",
+ "templateRoot" => TEMPLATE_PATH,
+ "country" => self::$country,
+ "host" => self::$host
+ );
+ //获取query_string以便判断是否开启smarty或者data调试模式
+ if (isset($_SERVER['QUERY_STRING'])) {
+ self::$_query_string = $_SERVER['QUERY_STRING'];
+ }
+ //判断是否启动smarty调试
+ self::isSmartyDebug();
+
+
+
+
+ //所有data都有一个公共data,先把公共的data加载到cmsdata中
+ $severBaseDataPath = rtrim(self::$dataRoot,"/")."/base/". self::$serverDataName;
+ $localBaseDataPath = $publicDataDir.self::$dataName;
+ $arr = CmsDataAdapter::saveAndGetOrMergeData( $localBaseDataPath, $severBaseDataPath, $arr );
+
+ //如果指定私有数据路径使用私有数据
+ if( strpos(self::$dataDir, 'fetchwidget') !== false ){
+ $assignDir = $_GET['dataDir'];
+ if( !$assignDir ){
+ $assignDir = "index";
+ }
+ $privateDataDir = DATA_ROOT.self::$dataRoot.$assignDir."/";
+ }
+
+ $severPrivateDataPath = self::$dataDir.self::$serverDataName;
+ $localPrivateDataPath = $privateDataDir.self::$dataName;
+
+ $arrTmp = CmsDataAdapter::saveAndGetOrMergeData( $localPrivateDataPath, $severPrivateDataPath, $arrTmp );
+
+ if( !empty( $arrTmp['head']['privateBaseData'] ) ){
+ $serverPrivateBaseDataPath = $arrTmp["head"]["privateBaseData"];
+ $localPrivateBaseDataPath =DATA_ROOT.$arrTmp["head"]["privateBaseData"];
+
+ $arr = CmsDataAdapter::saveAndGetOrMergeData( $localPrivateBaseDataPath, $serverPrivateBaseDataPath, $arr );
+
+ }
+ $arr = self::array_merge_recursive_new($arr,$arrTmp);
+ //这个数据流程为总base-》指定base-》页面数据
+ $severPrivateDataPath = self::$dataDir.self::$serverDataName;
+ $localPrivateDataPath = $privateDataDir.self::$dataName;
+
+ //支持选择性的三层数据继承 遗留bug ,这个数据流程为总base->页面数据-》指定base
+ if( !empty($arr["head"]["baseData"]) ){
+ $baseData = $sysInfo["privateDataDir"] = DATA_ROOT.$arr["head"]["baseData"];
+ $severPrivateDataPath = $arr["head"]["baseData"];
+ $arr = CmsDataAdapter::saveAndGetOrMergeData( $baseData, $severPrivateDataPath, $arr );
+ }
+
+
+ //支持第三层数据继承,为了抽样
+ $sample = empty($_GET['sample']) ? "" : $_GET['sample'];
+ if( !empty($sample) && !empty($arr["head"]["sample"][$sample])) {
+ ////////////////////////////
+ //支持子通道(返回功能)
+ $sub_channel_cookie = 'sample_channel_'.$sample;//=back';
+ $sub_sample_name = $_COOKIE[$sub_channel_cookie];
+ if(!empty($sub_sample_name)){
+ $sample = $sample.'_'.$sub_sample_name; //'searchtest' => 'searchtest_back'
+ }
+ /////////////////
+
+ $sampleDir = ltrim($arr["head"]["sample"][$sample],"/");
+ $sampleDataPath = $sysInfo["privateDataDir"] = DATA_ROOT.$sampleDir;
+ //fis需要转移"."为"\."
+ $sysInfo["privateDataDir"] = str_replace('data.php','data\\.php',$sysInfo["privateDataDir"]);
+ $baseData = $sysInfo["privateDataDir"] = DATA_ROOT.$arr["head"]["baseData"];
+ $serverSampleDataPath = $sampleDir;
+ $arr = CmsDataAdapter::saveAndGetOrMergeData( $sampleDataPath, $serverSampleDataPath, $arr );
+ }
+
+ ///////////////////////////////////////////////////////
+ //支持读取外部数据的插件机制
+ if(isset($arr['body']['extendDataPlugin']) && $arr['body']['extendDataPlugin']['on']){
+ $extend_data_plugins = $arr['body']['extendDataPlugin']['plugins']; //
+ /*array(
+ array(
+ 'start' => 0,
+ 'end' => 2395212684,
+ 'sample_name' => '',
+ 'params' => '{}',
+ 'name' => 'recommendhottab'
+ )
+ );*/
+
+ $action_time = time();
+ foreach($extend_data_plugins as $api_plugin){
+ if($api_plugin['need_baiduid'] && empty($_COOKIE['BAIDUID'])){ //判断是否有baiduid
+ continue;
+ }
+ if($api_plugin['start'] <= $action_time && $action_time <= $api_plugin['end']){ //判断插件生效时间,用timestamp
+ //正式开始引入插件处理
+ $params = $api_plugin['params'];
+ if(!empty($params)) {
+ try{
+ $params = json_decode($params, true);
+ }catch(Exception $e){
+ $params = array();
+ }
+ } else {
+ $params = array();
+ }
+ $api_plugin_name = $api_plugin['name'];
+ $api_plugin_class = ucfirst($api_plugin_name);
+ try{
+ $api_plugin_config = include_once($dataRoot . 'plugin/'. $api_plugin_name .'/'. $api_plugin_class. '.inc.php');
+ } catch(Exception $e){
+ //TODO LOG
+ continue;
+ }
+ if(empty($api_plugin_config)){
+ continue; //配置不合法,退出
+ }
+ try{
+ include_once $dataRoot . '/plugin/'.$api_plugin_name .'/'.$api_plugin_class .'.class.php';
+ } catch(Exception $e){
+ //TODO LOG
+ continue;
+ }
+ if(!class_exists($api_plugin_class)){
+ continue; //类加载有问题,退出
+ }
+ $api_plugin_instance = new $api_plugin_class($api_plugin_config, $sysInfo['country']);
+ if(empty($api_plugin_instance)){
+ continue; //初始化失败,退出
+ }
+ $ret = $api_plugin_instance->process($arr['body'], $params); //执行数据干预
+ if($ret === false){
+ //LOG
+ }
+ }
+ }
+ }
+
+ //smarty extend(为了选择布局)不能用条件判断语句,但是可以使用变量
+ $layoutRoot = "web/base/layout/";
+ $sysInfo['layout'] = empty( $arr["head"]["layout"] ) ? "home/page/layout/layout-index.tpl" :$arr["head"]["layout"];
+ // 把cookie记录到smarty变量中,方便前端模板调用
+ $baiduId = $sysInfo["baiduid"] = isset($_COOKIE["FLASHID"]) ? $_COOKIE["FLASHID"]: (isset($_COOKIE["BAIDUID"]) ? $_COOKIE["BAIDUID"]:"");
+ $sysInfo["serverTime"] = time();
+
+ //测试环境,需要置空cdn
+ $arr["head"]["cdn"] = "";
+ if ( !empty($baiduId) && extension_loaded("decodecookie") ){
+ $sysInfo["baiduidCt"] = decodecookie($baiduId);
+ } else{
+ $sysInfo["baiduidCt"] = $sysInfo["serverTime"];
+ }
+ self::$cmsData = array(
+ "sysInfo" => $sysInfo,
+ "root"=> $arr
+ );
+ }
+
+
+ }
+
+
+?>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/env/SimpleTemplate.class.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/env/SimpleTemplate.class.php
new file mode 100755
index 000000000..254ffb476
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/env/SimpleTemplate.class.php
@@ -0,0 +1,62 @@
+ TEMPLATE_PATH,
+ 'config_dir' => CONFIG_PATH,
+ 'plugins_dir' => array( SMARTY_PLUGINS_DIR, FIS_SMARTY_PLUGINS_DIR ),
+ 'left_delimiter' => '<%',
+ 'right_delimiter' => '%>'
+ );
+ if(file_exists(WEBROOT_PATH . 'smarty.conf')){
+ $user_conf = parse_ini_file($this->normalize(WEBROOT_PATH . 'smarty.conf'));
+ if(!empty($user_conf)){
+ $default_conf = array_merge($default_conf, $user_conf);
+ }
+ }
+ $this->setTemplateDir($this->normalize($default_conf['template_dir']));
+ $this->setConfigDir($this->normalize($default_conf['config_dir']));
+ foreach ($default_conf['plugins_dir'] as $dir) {
+ $this->addPluginsDir($this->normalize($dir));
+ }
+ $this->setLeftDelimiter($default_conf['left_delimiter']);
+ $this->setRightDelimiter($default_conf['right_delimiter']);
+ }
+ public function show($tpl_name,$arrData = array(), $cache_id = null, $compile_id = null, $parent = null){
+ $arrData = array_merge($arrData,$this->cmsdata);
+ $this->assign('root',$arrData);
+ $this->display($tpl_name, $cache_id, $compile_id , $parent );
+ }
+ public function cacheShow($tpl_name,$arrData = array(), $cache_id = null, $compile_id = null, $parent = null, $cache_lifetime = -1){
+ $this->caching = true;
+ $this->cache_lifetime = $cache_lifetime;
+ $this->show($tpl_name,$arrData, $cache_id , $compile_id , $parent);
+ }
+
+ public function normalize($path) {
+ $normal_path = preg_replace(
+ array('/[\/\\\\]+/', '/\/\.\//', '/^\.\/|\/\.$/', '/\/$/'),
+ array('/', '/', '', ''),
+ $path
+ );
+ $path = $normal_path;
+ do {
+ $normal_path = $path;
+ $path = preg_replace('/[^\\/\\.]+\\/\\.\\.(?:\\/|$)/', '', $normal_path);
+ } while ($path != $normal_path);
+ $path = preg_replace('/\/$/', '', $path);
+ return $path;
+ }
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/env/env_init.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/env/env_init.php
new file mode 100755
index 000000000..1da796bf2
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/env/env_init.php
@@ -0,0 +1,33 @@
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/fetchwidget.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/fetchwidget.php
new file mode 100755
index 000000000..47071dd7c
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/fetchwidget.php
@@ -0,0 +1,21 @@
+cmsdata['head']['forceCompile'] ) ){
+ $smarty->force_compile = true;
+ }
+ $this->smarty->display($path);
+ }
+ }
+
+ $controller = new FetchWidget();
+ $controller->index();
+
+
+?>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/hotsitecustom.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/hotsitecustom.php
new file mode 100755
index 000000000..a5198d9d7
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/hotsitecustom.php
@@ -0,0 +1,175 @@
+ array("status" => 200, "info" => "success"),
+ //数据没有改变
+ '304' => array("status" => 304, "info" => "data not modified"),
+ //参数传递错误
+ '401' => array("status" => 401, "info" => "wrong parameters"),
+ //读取文件不存在
+ '404' => array("status" => 404, "info" => "file not found")
+ );
+ public function _before(){
+ //参数校验
+ $this->statusCode = $this->_check_param();
+ //校验错误退出
+ if ( $this->statusCode !== 200 ){
+ $this->_error( $this->statusCode );
+ }
+ }
+ public function index(){
+ // 格式化数据
+ $this->data = $this->_format($this->data);
+
+ // 将md5值合入数据中
+ $this->data = array_merge_recursive($this->infoList[$this->statusCode], array("md5" => $this->md5), array("data" => $this->data));
+
+ $this->_success($this->data);
+ }
+
+ /*
+ * 参数校验
+ */
+ private function _check_param(){
+ $this->country = $_GET['country'];
+ $this->callback = $_GET['callback'];
+ // PC版访问类型为web,移动版为m,用作数据路径拼接
+ $this->hostType = $_GET['ismobile'] == true ? 'm' : 'web';
+
+ //参数校验
+ if(empty($this->country) || !empty($this->callback) && !preg_match('/^\w+$/', $this->callback)){
+ return 401;
+ }
+
+ $dataPath = DATA_ROOT . "{$this->hostType}/{$this->country}/" . self::MODULE_NAME . "/data.php";
+ //检测数据是否存在
+ if( !file_exists( $dataPath ) ){
+ return 404;
+ //读取数据
+ } else{
+ include_once $dataPath;
+ $this->data = $root;
+ return $this->_check_md5($dataPath);
+ }
+ }
+
+ /*
+ * md5校验
+ */
+ private function _check_md5($dataPath) {
+ $md5 = $_GET['md5'];
+ // 获取data.php文件md5值,并截取中间16位以缩短请求
+ $this->md5 = substr(md5_file($dataPath),8,16);
+ if ($md5 === $this->md5) {
+ return 304;
+ }
+ return 200;
+ }
+
+ /*
+ * 格式化数据
+ */
+ private function _format($data) {
+ if (!empty($data['body'])) {
+ $data = $data['body'];
+ // 自定义网址映射数据格式化
+ if (!empty($data['customSites'])) {
+ $customData = array();
+ foreach ($data['customSites'] as $value) {
+ // 用host值做key
+ $customData[trim($value['host'], '/')] = $value;
+ unset($customData[$value['host']]['host']);
+ }
+ $data['customSites'] = $customData;
+ }
+ // 推荐网址列表数据格式化
+ if (!empty($data['recommendList'])) {
+ $recommendData = array();
+ foreach ($data['recommendList'] as $value) {
+ // 用category值做为key,以list数组内容作为值
+ $recommendData[$value['category']] = $value['list'];
+ }
+ $data['recommendList'] = $recommendData;
+ }
+ // 去掉注释字段
+ $this->_removeComments($data);
+ }
+ return $data;
+ }
+
+ /*
+ * 清除数据中以下划线开头的注释,例如:'_img' => '这是图片'
+ * 支持递归
+ */
+ private function _removeComments(&$arr) {
+ if (!is_array($arr)) {
+ return false;
+ }
+ foreach ($arr as $key => $value) {
+ if (is_array($arr[$key])) {
+ $this->_removeComments($arr[$key]);
+ } else if ($key[0] === '_') {
+ unset($arr[$key]);
+ }
+ }
+ }
+
+ /*
+ * 错误反馈
+ */
+ private function _error( $statusCode ){
+ // 支持json|jsonp格式返回结果
+ if(empty($this->callback)) {
+ echo json_encode( $this->infoList[$statusCode] );
+ } else {
+ echo $this->callback."(". json_encode( $this->infoList[$statusCode] ) .")";
+ }
+ exit;
+ }
+
+ /*
+ * 成功反馈
+ */
+ private function _success( $content ){
+ // 支持json|jsonp格式返回结果
+ if(empty($this->callback)) {
+ echo json_encode( $content );
+ } else {
+ echo $this->callback."(". json_encode( $content ) .")";
+ }
+ exit;
+ }
+ }
+
+ $controller = new HotSiteCustom();
+ $controller->index();
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/lib/cmsdata/cmsData.class.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/lib/cmsdata/cmsData.class.php
new file mode 100755
index 000000000..8c759ce91
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/lib/cmsdata/cmsData.class.php
@@ -0,0 +1,72 @@
+",var_export(json_decode( $content,true),true));
+ //建立目录
+ mkdir( dirname( $dataPath ) , 0777, true );
+ //建立文件
+ file_put_contents( $dataPath, $phpData );
+ }
+ }
+
+ /**
+ * 递归合并数组把b合并到a
+ * @param array 合并的base 数组(a)
+ * @param array 需合并的数组(b)
+ * @return array
+ */
+ static function array_merge_recursive_new() {
+ $arrays = func_get_args();
+ $base = array_shift($arrays);
+ foreach ($arrays as $array) {
+ reset($base); //important
+ while (list($key, $value) = @each($array)) {
+ if (is_array($value) && @is_array($base[$key])) {
+ $base[$key] = self::array_merge_recursive_new($base[$key], $value);
+ }
+ else {
+ $base[$key] = $value;
+ }
+ }
+ }
+ return $base;
+ }
+}
+
+
+?>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/lib/cmsdata/cmsDataAdapter.class.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/lib/cmsdata/cmsDataAdapter.class.php
new file mode 100755
index 000000000..816dae87b
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/lib/cmsdata/cmsDataAdapter.class.php
@@ -0,0 +1,163 @@
+
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/lib/cmsdata/cmsJsondata.class.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/lib/cmsdata/cmsJsondata.class.php
new file mode 100755
index 000000000..c0313eff3
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/lib/cmsdata/cmsJsondata.class.php
@@ -0,0 +1,42 @@
+
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/lib/jsonformat/jsonformat.class.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/lib/jsonformat/jsonformat.class.php
new file mode 100755
index 000000000..39f1779d7
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/lib/jsonformat/jsonformat.class.php
@@ -0,0 +1,70 @@
+
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/openapi.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/openapi.php
new file mode 100755
index 000000000..54122de34
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/openapi.php
@@ -0,0 +1,216 @@
+ array('status'=>401,'info'=>'param error'),
+ //未知文件处理类型(前端不能处理)
+ '402' => array('status'=>402,'info'=>'don\'t handle file type'),
+ //读取文件不存在
+ '404' => array("status"=>404,"info"=>'file not find'),
+ //获取成功,返回的数据格式
+ '200' => array('status'=>200,"info"=>'success',
+ //静态资源
+ 'resource_map'=>array(
+ 'style' => '',
+ 'script' => '',
+ ),
+ //html片段
+ 'pagelets'=>''
+ )
+ );
+
+ //不同的文件类型对应前端不同字段(前端需要根据不同的字段进行不同的处理)
+ protected $frontHandlerList = array(
+ 'html' => 'pagelets',
+ 'tpl' => 'pagelets',
+ 'css' => 'style',
+ 'js' => 'script'
+ );
+ protected $frontHandler = '';
+
+ //处理句柄函数
+ public $handler = array(
+ //js处理方式
+ 'js' => 'file_get_contents'
+ );
+
+ //主站fis tpl内置echo ,所以不需要返回值
+ public $notReturn = array('fis');
+ //初始化controller
+ function _before(){
+ parent::_before();
+ //tpl的处理方式
+ $this->handler['tpl'] = array($this->smarty,"fetch");
+ //fis的处理方式
+ $this->handler['fis'] = array($this->smarty,"display");
+ //私有数据merge
+ if( $_GET['dataDir'] ){
+ $this->privateDataDir = $_GET['dataDir'];
+ }
+ $dataDir = DATA_ROOT."web/{$this->country}/".rtrim( $this->privateDataDir,"/" ) . "/data.php";
+ $baseDataDir = DATA_ROOT."web/{$this->country}/base/data.php";
+ //
+ if( !preg_match('/\d/',$this->country ) ){
+ if ( file_exists($baseDataDir) ) {
+ include_once $baseDataDir;
+ $this->smarty->cmsdata = $this->merge_data($this->smarty->cmsdata,$root);
+ }
+ if ( file_exists($dataDir) ) {
+ include_once $dataDir;
+ $this->smarty->cmsdata = $this->merge_data($this->smarty->cmsdata,$root);
+ }
+ }
+ $this->cmsData = $this->smarty->cmsdata ;
+ $this->smarty->assign('root',$this->cmsData);
+ $this->smarty->assign('body',$this->cmsData['body']);
+ $this->smarty->assign('head',$this->cmsData['head']);
+ $this->smarty->assign('foot',$this->cmsData['foot']);
+ $this->smarty->assign('urlparam',$this->cmsData['urlparam']);
+ $this->urlParam = $this->cmsData['urlparam'];
+ }
+ //入口函数
+ function index(){
+
+ //参数校验
+ $statusCode = $this->_check_param();
+ if ( $statusCode !== 200 ){
+ $this->_error( $statusCode );
+ }
+
+ //初始化
+ $this->_Init();
+
+ //根据文件后缀或者参数选择不同的处理方式
+ $handler = $this->isFis ? 'fis' : $this->handlerFileType;
+ //获取请求内容
+ $content = call_user_func_array($this->handler[$handler], array($this->path));
+ //是否需要返回值
+ if( !in_array($handler, $this->notReturn) ){
+ $this->_success( $content );
+ }
+
+ }
+ /*
+ * fis widget初始化函数
+ */
+ function _init(){
+ //是否需要fis模块的初始化
+ $fisWidget = $this->urlParam['pagelets'];
+ //主站模块需初始化fis widget
+ if( $fisWidget && $this->handlerFileType === 'tpl' ){
+ //根据参数pagelets判断是否是fis模块
+ $this->isFis = true;
+ require_once FIS_SMARTY_PLUGINS_DIR."lib/FISPagelet.class.php";
+ FISPagelet::init();
+ $this->smarty->assign('openApi',array(
+ 'widgetPathRoot'=> $this->fisWidgetRootPath,
+ 'widgetId'=> $fisWidget
+ ));
+ $this->smarty->registerFilter('output', array('FISPagelet', 'renderResponse'));
+ }
+
+ }
+ /*
+ * 参数校验
+ */
+ function _check_param(){
+ //获取widget所在根路径
+ $modulePath = $this->urlParam['module'];
+ //获取widgetname
+ $widgetName = $this->urlParam['widgetName'];
+ //是否指定文件类型
+ if( $this->urlParam['fileType'] ){
+ $this->handlerFileType = $this->urlParam['fileType'];
+ }
+ //检测参数是否可用
+ if ( !$widgetName || !$modulePath ){
+ return 401;
+ }
+
+ $widgetPath = WEBROOT_PATH."template/{$modulePath}/{$this->widgetPrefix}//{$widgetName}/{$widgetName}.{$this->handlerFileType}";
+ $this->fisWidgetRootPath = "{$modulePath}:{$this->widgetPrefix}";
+ //检测模板是否存在
+ if( !file_exists( $widgetPath ) ){
+ return 404;
+ }
+ $this->frontHandler = $this->frontHandlerList[ $this->handlerFileType ];
+ //检测前端是否有对应的handler处理对应的文件类型
+ if( !$this->frontHandler ){
+ return 402;
+ }
+ $this->path = $widgetPath;
+
+ return 200;
+ }
+
+ /*
+ * 错误反馈
+ */
+ private function _error( $statusCode ){
+ echo json_encode( $this->infoList[$statusCode] );
+ exit;
+ }
+
+ /*
+ * 成功反馈
+ */
+ private function _success( $content ){
+ //检测前端是否有对应的方式处理对应的文件类型
+ //html
+ if( $this->frontHandler === 'pagelets' ){
+ $this->infoList['200'][$this->frontHandler] = $content;
+ //静态资源
+ } else{
+ $this->infoList['200']['resource_map'][$this->frontHandler] = $content;
+ }
+ echo json_encode( $this->infoList['200'] );
+ exit;
+ }
+ private function merge_data() {
+ $arrays = func_get_args();
+ $base = array_shift($arrays);
+ foreach ($arrays as $array) {
+ reset($base); //important
+ while (list($key, $value) = @each($array)) {
+ if (is_array($value) && @is_array($base[$key])) {
+ $base[$key] = $this->merge_data($base[$key], $value);
+ }
+ else {
+ $base[$key] = $value;
+ }
+ }
+ }
+ return $base;
+ }
+ }
+
+$sidebar = new OpenApi();
+$sidebar->index();
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/page/index.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/page/index.json
new file mode 100755
index 000000000..9e26dfeeb
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/page/index.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/plugin/hotsitesextra/Hotsitesextra.class.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/plugin/hotsitesextra/Hotsitesextra.class.php
new file mode 100755
index 000000000..07f02d7e4
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/plugin/hotsitesextra/Hotsitesextra.class.php
@@ -0,0 +1,40 @@
+_mod_data_key = $config['mod'];
+ $this->_mod_data_sub_key = $config['dataKey'];
+ }
+ public function process(&$origin_data, $params){
+ //加载用于merge的干预数据
+ $data_path = dirname(__FILE__)."/../../";
+ $data_prefix_path = $data_path."data/";
+ if(empty($params) || empty($params['datapath'])){
+ return false;
+ }
+ $data_path = $data_prefix_path . ltrim($params['datapath'], '/');
+ include $data_path; //$root
+ if(empty($root) || empty($root['body']) || empty($root['body'][$this->_mod_data_key])){ //plugin 不负责创建结构,只负责merge数据,必须要提前保证结构存在
+ return false;
+ }
+
+ //对数据进行合并,只做单层的merge
+ if(!empty($this->_mod_data_sub_key)){
+ if(empty($origin_data[$this->_mod_data_key][$this->_mod_data_sub_key])){
+ $origin_data[$this->_mod_data_key][$this->_mod_data_sub_key] = array();
+ }
+ $mod_data = &$origin_data[$this->_mod_data_key][$this->_mod_data_sub_key];
+ $api_data = $root['body'][$this->_mod_data_key][$this->_mod_data_sub_key];
+ } else { //hotsites这里,暂时没有用到这块
+ $mod_data = &$origin_data[$this->_mod_data_key];
+ $api_data = $root['body'][$this->_mod_data_key];
+ }
+ foreach($api_data as $key=>$value){
+ $mod_data[$key] = $value;
+ }
+ }
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/plugin/hotsitesextra/Hotsitesextra.inc.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/plugin/hotsitesextra/Hotsitesextra.inc.php
new file mode 100755
index 000000000..7fc3b08d6
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/plugin/hotsitesextra/Hotsitesextra.inc.php
@@ -0,0 +1,14 @@
+ 'hotsitsextra',
+ 'type' => 'common', //personal,common,sample 用于标识插件的类别,方便后续框架做统一化处理
+ 'mod' => 'hotSites', //声明需要干预的模块及数据标识,一般跟CMS中的$root.body.{$mod}对应
+ 'dataKey' => 'extra', //特殊情况需要干预的是子key
+ //'dataProcess' => 'edit', //add,del,edit,merge 描述数据获得后,处理方式; 本插件中是edit
+ 'dataSource' => array('file'), //db,redis,memcached,file,api 用于注册数据获取源,方便后续框架做统一初始化
+ //'actionChain' => array('process'), //执行行为序列,便用组合操作
+ 'cache' => false //5(s), 0(s) 执行缓存的逻辑
+);
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/plugin/infospacetoken/Infospacerequestsigner.class.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/plugin/infospacetoken/Infospacerequestsigner.class.php
new file mode 100755
index 000000000..4c03ce1b7
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/plugin/infospacetoken/Infospacerequestsigner.class.php
@@ -0,0 +1,88 @@
+token = $token;
+ }
+
+ public function getSignature($queryTerm) {
+ $value = $this->getFormattedDateString() . $this->token . $queryTerm;
+ return $this->hashValue($value);
+ }
+
+ /**
+ * Gets the date/time to the nearest minute as YYYYMMDDHHMM
+ *
+ * @return string
+ */
+ private function getFormattedDateString() {
+ // Save the current timezone, get a date as GMT and reset timezone
+ $timezone = date_default_timezone_get();
+ date_default_timezone_set('GMT');
+ $datetime = date('YmdHi', $this->getTimeToNearestMinute());
+ date_default_timezone_set($timezone);
+
+ return $datetime;
+ }
+
+ /**
+ * Gets the date/time +30 seconds as a unix timestamp
+ *
+ * @return int
+ */
+ private function getTimeToNearestMinute() {
+ return time() + 30;
+ }
+
+ /**
+ * Gets a base64 encoded SHA1 hash
+ *
+ * @param string $input
+ *
+ * @return string
+ */
+ private function hashValue($input) {
+ $bytes = $this->hashSHA1($input);
+
+ return $this->encodeUrlSafeBase64($bytes);
+ }
+
+ /**
+ * Gets a SHA1 hash
+ *
+ * @param string $input
+ *
+ * @return string
+ */
+ private function hashSHA1($input) {
+ // Trial and error shows this must be binary result
+ return sha1($input, true);
+ }
+
+ /**
+ * Creates a URL safe base64 encoded string
+ *
+ * @param string $input
+ *
+ * @return string
+ */
+ private function encodeUrlSafeBase64($input) {
+ // Apache code replaces + with -, / with _ and trims padding (=)
+ return str_replace(array('+', '/'), array('-', '_'), trim(base64_encode($input), '=='));
+ }
+}
+?>
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/plugin/infospacetoken/Infospacetoken.class.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/plugin/infospacetoken/Infospacetoken.class.php
new file mode 100755
index 000000000..c4fd99fdf
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/plugin/infospacetoken/Infospacetoken.class.php
@@ -0,0 +1,36 @@
+getSignature($query);
+
+ if(empty($signer) || !empty($origin_data['infoSpaceSigner'])) {
+ return false;
+ }
+
+ // 将获取到的signer merge进cms数据中
+ $origin_data['infoSpaceSigner'] = $signer;
+ }
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/plugin/infospacetoken/Infospacetoken.inc.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/plugin/infospacetoken/Infospacetoken.inc.php
new file mode 100755
index 000000000..9c278e715
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/plugin/infospacetoken/Infospacetoken.inc.php
@@ -0,0 +1,14 @@
+ 'infospacetoken',
+ 'type' => 'common', //personal,common,sample 用于标识插件的类别,方便后续框架做统一化处理
+ 'mod' => 'body', //声明需要干预的模块及数据标识,一般跟CMS中的$root.body.{$mod}对应
+ 'dataKey' => '', //特殊情况需要干预的是子key
+ //'dataProcess' => 'edit', //add,del,edit,merge 描述数据获得后,处理方式; 本插件中是edit
+ 'dataSource' => array('api'), //db,redis,memcached,file,api 用于注册数据获取源,方便后续框架做统一初始化
+ //'actionChain' => array('process'), //执行行为序列,便用组合操作
+ 'cache' => false //5(s), 0(s) 执行缓存的逻辑
+);
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/plugin/recommendhottab/Recommendhottab.class.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/plugin/recommendhottab/Recommendhottab.class.php
new file mode 100755
index 000000000..99112c760
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/plugin/recommendhottab/Recommendhottab.class.php
@@ -0,0 +1,105 @@
+initRecomRedis($suite)){
+ //todo error
+ }
+ //]]]]]]]]]]
+ $this->_redis_key_user = self::KEY_PREFIX . $country .'_'. $baiduid;
+ $this->_mod_data_key = $config['mod'];
+ $this->_mod_data_sub_key = $config['dataKey'];
+ }
+ /**
+ * @params $origin_data {array} 用于干预的源数据
+ * @params $params {array} 配置的行为参数
+ */
+ public function process(&$origin_data, $params){
+ if(!is_object($this->recomRedis)){
+ return;
+ }
+ try{
+ $read_redis = $this->recomRedis->getRedis(false); //选slave读
+ //从推荐中获取数据
+ $recom_data_list = $read_redis->zRevRange($this->_redis_key_user, 0, -1);
+ //避免Redis上不了
+ }catch(Exception $e){
+ return;
+ }
+ //$recom_data_list = array('games'); //TODO!!!!!!!!!!!!!!!!
+ if(empty($recom_data_list)){
+ return;
+ }
+ //根据推荐的数据,调整TAB数据的排序
+ if(!empty($this->_mod_data_sub_key)){
+ $mod_data = &$origin_data[$this->_mod_data_key][$this->_mod_data_sub_key];
+ } else {
+ $mod_data = &$origin_data[$this->_mod_data_key];
+ }
+ $tmp_data = $mod_data;
+ $mod_data = array(); //重置
+ $mod_key_list = array();
+ //根据权重选出排序
+ foreach($recom_data_list as $mod_key){
+ foreach($tmp_data as $mod){
+ if($mod['type'] === $mod_key){ //TODO: game --> games
+ $mod_data[] = $mod;
+ $mod_key_list[] = $mod_key;
+ }
+ }
+ }
+ foreach($tmp_data as $mod){
+ if(!in_array($mod['type'], $mod_key_list)){ //未处理的才加入
+ $mod_data[] = $mod;
+ $mod_key_list[] = $mod['type'];
+ }
+ }
+ unset($tmp_data);
+ unset($mod_data);
+ unset($origin_data);
+ }
+ /**
+ * 个性化推荐用的Redis; 这个配置跟其他的不一样,是多个Redis组的
+ * @params {Number} $suite 选择哪个组
+ */
+ protected function initRecomRedis($suite=0) {
+ $env = GlobalEnv::Env;
+ $redisConfig = GlobalConfig::$recomRedisConfig[$env];
+ try {
+ $redis_source = new Air_Redis($redisConfig[$suite]);
+ } catch (Exception $error) {
+ return false;
+ }
+ $this->recomRedis = $redis_source; //TODO 奇怪,如果这里直接getRedis,后面的操作会反馈closed,立即操作则可心
+ return true;
+ }
+ function __destruct() {
+ }
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/plugin/recommendhottab/Recommendhottab.inc.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/plugin/recommendhottab/Recommendhottab.inc.php
new file mode 100755
index 000000000..5fa327f86
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/plugin/recommendhottab/Recommendhottab.inc.php
@@ -0,0 +1,14 @@
+ 'recommendhottab',
+ 'type' => 'personal', //personal,common,sample 用于标识插件的类别,方便后续框架做统一化处理
+ 'mod' => 'recommand', //声明需要干预的模块及数据标识,一般跟CMS中的$root.body.{$mod}对应
+ 'dataKey' => 'mods', //特殊情况需要干预的是子key
+ //'dataProcess' => 'edit', //add,del,edit,merge 描述数据获得后,处理方式; 本插件中是edit
+ 'dataSource' => array('redis'), //db,redis,memcached,file,api 用于注册数据获取源,方便后续框架做统一初始化
+ //'actionChain' => array('process'), //执行行为序列,便用组合操作
+ 'cache' => false //5(s), 0(s) 执行缓存的逻辑,这里因针对个人,是不需要的
+);
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/plugin/sidebarapplist/Sidebarapplist.class.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/plugin/sidebarapplist/Sidebarapplist.class.php
new file mode 100755
index 000000000..9ef3678f8
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/plugin/sidebarapplist/Sidebarapplist.class.php
@@ -0,0 +1,61 @@
+ $value) {
+ $mod_data[$key] = $value;
+ }
+ }
+
+ public function process(&$origin_data, $params){
+ $data_path = dirname(__FILE__)."/../../";
+ $data_prefix_path = $data_path."data/";
+ if(empty($params) || empty($params['datapath'])){
+ return false;
+ }
+ $data_path = $data_prefix_path . ltrim($params['datapath'], '/');
+
+ // root
+ if( !file_exists( $data_path ) ) {
+ return false;
+ }
+ include_once $data_path;
+
+ if(empty($root) || empty($root['sidebar'])){ //只针对sidebar的applist数据,保证其中有sidebar字段
+ return false;
+ }
+
+ //将sidebar字段merge进$root.body
+ $this->_data_merge($origin_data['sidebar'], $root['sidebar']);
+
+ //如果有defaultApp字段,则merge进$root.body
+ if(!empty($params['datakey'])) {
+ foreach ($params['datakey'] as $value) {
+ $this->_data_merge($origin_data[$value], $root[$value]);
+ }
+ }
+
+ //合并mis数据
+ if(!empty($params['misdatapath'])) {
+ $mis_data_path = $data_prefix_path . ltrim($params['misdatapath'], '/');
+ if( file_exists( $mis_data_path ) ) {
+ include_once $mis_data_path;
+ // 合并sidebar list数据
+ foreach ($root['sidebar']['list'] as $item) {
+ $origin_data['sidebar']['list'][]= $item;
+ }
+ // 合并sidebar气泡数据
+ foreach ($root['sidebar']['guideBubble']['list'] as $item) {
+ $origin_data['sidebar']['guideBubble']['list'][]= $item;
+ }
+ }
+ }
+ }
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/plugin/sidebarapplist/Sidebarapplist.inc.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/plugin/sidebarapplist/Sidebarapplist.inc.php
new file mode 100755
index 000000000..e2a292f14
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/plugin/sidebarapplist/Sidebarapplist.inc.php
@@ -0,0 +1,14 @@
+ 'sidebarapplist',
+ 'type' => 'common', //personal,common,sample 用于标识插件的类别,方便后续框架做统一化处理
+ 'mod' => 'sidebar', //声明需要干预的模块及数据标识,一般跟CMS中的$root.body.{$mod}对应
+ 'dataKey' => '', //特殊情况需要干预的是子key
+ //'dataProcess' => 'edit', //add,del,edit,merge 描述数据获得后,处理方式; 本插件中是edit
+ 'dataSource' => array('file'), //db,redis,memcached,file,api 用于注册数据获取源,方便后续框架做统一初始化
+ //'actionChain' => array('process'), //执行行为序列,便用组合操作
+ 'cache' => false //5(s), 0(s) 执行缓存的逻辑
+);
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/resource.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/resource.php
new file mode 100755
index 000000000..9382264c2
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/resource.php
@@ -0,0 +1,42 @@
+"image/png",
+ ".jpg"=>"image/jpeg",
+ ".swf"=>"application/x-shockwave-flash",
+ ".gif"=>"image/gif");
+ /*重定向resorce*/
+ $url = $_SERVER['SCRIPT_URL'] ? $_SERVER['SCRIPT_URL'] : $_SERVER['REQUEST_URI'];
+ $url = preg_replace( '/\?.*/', "", $url);
+ $resource_url = "http://br.hao123.com{$url}";
+ $resourceDir = dirname(__FILE__).$url;
+ if ( !is_file($resourceDir) ){
+ $ch = curl_init();
+ curl_setopt($ch, CURLOPT_URL, $resource_url);
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
+ curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
+ curl_setopt($ch, CURLOPT_TIMEOUT, 10);
+ $result = curl_exec($ch);
+ if( $result != false ){
+ //建立目录
+ $lastPos = strrpos($resourceDir, "/");
+ $dir = substr($resourceDir, 0, $lastPos);
+ mkdir($dir,0777,true);
+ //建立文件
+ file_put_contents($resourceDir, $result);
+ echo $result;
+ exit;
+ }
+
+ //建立目录
+
+ } else{
+ $result = file_get_contents($resourceDir);
+ $type = substr( $resourceDir, strrpos( $resourceDir, "." ) );
+ $type = $contentType[$type];
+ header( "Content-Type:$type;" );
+ echo $result;
+ exit;
+ }
+
+
+?>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/route.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/route.php
new file mode 100755
index 000000000..db5c182d3
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/route.php
@@ -0,0 +1,20 @@
+php路由映射
+ $routeMap = array(
+ "fetchwidget"=>"fetchwidget",
+ "api"=>"api",
+ "openapi"=>"openapi",
+ "applistapi"=>"applistapi",
+ "hotsitecustom"=>"hotsitecustom",
+ "static304"=>"static304/static304",
+ );
+
+ if( preg_match("/".implode('|', array_keys($routeMap ) )."/",$route_url,$matchArray)){
+ require_once $route_root_dir. $routeMap[ $matchArray[0] ] .".php";
+ } else{
+ require_once $route_root_dir."BaseController.php";
+ }
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/static304/static304.php b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/static304/static304.php
new file mode 100755
index 000000000..18d7d7d58
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/test/static304/static304.php
@@ -0,0 +1,20 @@
+"image/png",
+ ".jpg"=>"image/jpeg",
+ ".swf"=>"application/x-shockwave-flash",
+ ".gif"=>"image/gif",
+ ".js"=>"text/javascript");
+ /*重定向resorce*/
+ $url = $_SERVER['SCRIPT_URL'] ? $_SERVER['SCRIPT_URL'] : $_SERVER['REQUEST_URI'];
+ $url = preg_replace( '/\?.*/', "", $url);
+ $resourceDir = WEBROOT_PATH.$url;
+ $result = file_get_contents($resourceDir);
+ $type = substr( $resourceDir, strrpos( $resourceDir, "." ) );
+ $type = $contentType[$type];
+ header( "Content-Type:$type;" );
+ echo $result;
+ exit;
+
+
+?>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/upload.py b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/upload.py
new file mode 100755
index 000000000..2de41e1d1
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/upload.py
@@ -0,0 +1,278 @@
+#!/usr/bin/env python
+# -*- encoding:utf-8 -*-
+"""
+upload外壳脚本
+Created on 2014-1-27
+@author: wangtaize@baidu.com
+@copyright: www.baidu.com
+"""
+import logging
+import os
+import shutil
+import socket
+import subprocess
+import sys
+import tempfile
+import urllib
+import urllib2
+import zipfile
+
+
+# 用户目录
+USER_FOLDER = os.path.expanduser('~')
+
+# 更新接口
+UPDATE_HTTP_HOST = "http://fatcat.baidu.com/ota/update"
+# 更新接口
+VERSION_HTTP_HOST = "http://fatcat.baidu.com/ota/version"
+# module save path
+MODULE_ROOT_PATH = os.sep.join([USER_FOLDER, ".cooder"])
+if not os.path.exists(MODULE_ROOT_PATH):
+ os.mkdir(MODULE_ROOT_PATH)
+VERSION_FILE = os.sep.join([MODULE_ROOT_PATH, "version.txt"])
+USE_SHELL = sys.platform.startswith("win")
+
+
+def run_shell_with_returncode(command, universal_newlines=True,
+ useshell=None, env=None):
+ """执行本地系统命令函数
+
+ args:
+ command: 执行命令list
+ universal_newlines,
+ useshell
+ env: 环境变量
+ return:
+ returncode: 进程退出状态码
+ output: 标准输出
+ errout: 错误输出
+ """
+ useshell = USE_SHELL
+ env = env or os.environ
+ try:
+ p = subprocess.Popen(command,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE,
+ shell=useshell,
+ universal_newlines=universal_newlines,
+ env=env)
+ output, errout = p.communicate()
+ return p.returncode, output, errout
+ except Exception as e:
+ return -1, None, str(e)
+
+
+class HttpService(object):
+ """http工具类,支持get post 以及上传文件
+ """
+ def __init__(self, logger=None):
+ self.logger = logger or logging.getLogger(__name__)
+
+ def post(self, url, params):
+ """post method 函数
+
+ args:
+ url: 请求的url
+ parame: 请求参数,支持dict以及tuple
+ return:
+ content: 返回的文本内容
+ status: 请求成功与否
+ """
+ return self.__service(url, params)
+
+ def get(self, url):
+ """get method 函数
+
+ args:
+ url: 请求的url
+ return:
+ content: 返回的文本内容
+ status: 请求成功与否
+ """
+ return self.__service(url)
+
+ def __service(self, url, params=None, timeout=50):
+ old_timeout = socket.getdefaulttimeout()
+ socket.setdefaulttimeout(timeout)
+ try:
+ # POST
+ if params:
+ self.logger.debug('post %s params[%s]' % (url, params))
+ request = urllib2.Request(url, urllib.urlencode(params))
+ # GET
+ else:
+ self.logger.debug('get %s params[%s]' % (url, params))
+ request = urllib2.Request(url)
+ request.add_header('Accept-Language', 'zh-cn')
+ response = urllib2.urlopen(request)
+ content = response.read()
+ response.close()
+ self.logger.debug('content->%s, code->%d'
+ % (content, response.code))
+ if response.code == 200:
+ return content, True
+ return content, False
+ except Exception as ex:
+ return str(ex), False
+ finally:
+ socket.setdefaulttimeout(old_timeout)
+
+
+class ImportModuleException(Exception):
+ """导入模块异常
+ """
+ pass
+
+
+class CheckVersionException(Exception):
+ """检查模块版本异常
+ """
+ pass
+
+
+class PythonVersionException(Exception):
+ """检查python版本不符合运行要求异常
+ """
+ pass
+
+
+class DownloadModuleException(Exception):
+ """下载模块失败异常
+ """
+ pass
+
+
+class UploadManager(object):
+ """upload 模块更新管家
+ """
+ def __init__(self, http_service):
+ self.http_service = http_service
+
+ def need_update(self, version_file_path, version_url):
+ """检查是否需要更新模块
+
+ args:
+ version_file_path: 本地存放version.txt位置
+ version_url
+ return:
+ need_update: False|True, 是否需要更新
+ change_list: 更新列表
+ exception:
+ CheckVersionException: 获取更新状态失败时抛出
+ """
+ if not os.path.exists(version_file_path):
+ raise CheckVersionException("version file(%s) does not exist"
+ % VERSION_FILE)
+ fd = open(version_file_path, "rb")
+ content_str = fd.readline()
+ fd.close()
+ content_old = eval(content_str)
+ response_content_str, status = self.http_service.get(version_url)
+ if not status:
+ raise CheckVersionException("fail to fetch the lastest version")
+ response_content = eval(response_content_str)
+ if response_content['status'] != 1:
+ raise CheckVersionException("fail to fetch the lastest version")
+ content_new = response_content['data']
+ if content_old["function_version"] == content_new["function_version"]\
+ and content_old["bug_version"] == content_new["bug_version"]:
+ return False, None
+ return True, content_new['change_list']
+
+ def update(self, module_path, update_url):
+ """更新模块操作,先删除本地缓存的模块代码,再从服务端获取最新模块代码
+
+ args:
+ module_path: 本地模块代码存储路径
+ update_url: 下载模块代码url
+ """
+ tmp_path = tempfile.mkdtemp()
+ tmp_module_path = ".cooder"
+ sb_tmp_module_path = os.sep.join([tmp_path, tmp_module_path])
+ os.mkdir(sb_tmp_module_path)
+ update_zip_path = self._download_module(update_url, sb_tmp_module_path)
+ update_zip = zipfile.ZipFile(update_zip_path, 'r')
+ update_zip.extractall(path=sb_tmp_module_path)
+ update_zip.close()
+ os.remove(update_zip_path)
+ if os.path.exists(module_path):
+ shutil.rmtree(module_path)
+ shutil.copytree(sb_tmp_module_path, module_path)
+
+ def _download_module(self, update_url,
+ save_path, file_name="update.zip"):
+ """实际下载代码逻辑
+ """
+ response_content, status = self.http_service.get(update_url)
+ if not status:
+ raise DownloadModuleException("fail to download module,"
+ " please try again :(")
+ if save_path.endswith(os.sep):
+ save_path = save_path[:-1]
+ try:
+ full_path = os.sep.join([save_path, file_name])
+ fd = open(full_path, "wb")
+ fd.write(response_content)
+ fd.close()
+ return full_path
+ except:
+ raise DownloadModuleException("fail to download module,"
+ " please try again :(")
+
+ def import_module(self, module_path):
+ """导入模块,就模块路径加入到系统path, 注意添加方式
+ args:
+ module_path,模块代码路径
+ exceptions:
+ ImportModuleException,当出入路径不存在时抛出
+ """
+ if not os.path.exists(module_path):
+ raise ImportModuleException("module(%s) does not exit"
+ % module_path)
+ sys.path = [module_path] + sys.path
+
+ def has_cached_module(self, version_file_path):
+ """检查本地是否有缓存的模块代码
+ """
+ if os.path.exists(version_file_path):
+ return True
+ return False
+
+ def check_py_version(self):
+ """检查本地python版本
+ """
+ version = sys.version
+ if version and version.startswith("2.7"):
+ return
+ raise PythonVersionException("upload needs python with version 2.7"
+ " as it's runtime :(")
+
+
+if __name__ == "__main__":
+ http_service = HttpService()
+ upload_manager = UploadManager(http_service)
+ try:
+ upload_manager.check_py_version()
+ if not upload_manager.has_cached_module(VERSION_FILE):
+ print "initializing ... :~"
+ upload_manager.update(MODULE_ROOT_PATH, UPDATE_HTTP_HOST)
+ else:
+ change_list = []
+ try:
+ need_update, change_list = upload_manager.need_update(
+ VERSION_FILE, VERSION_HTTP_HOST)
+ except CheckVersionException as _:
+ need_update = False
+ if need_update:
+ print "updating ... :~"
+ upload_manager.update(MODULE_ROOT_PATH, UPDATE_HTTP_HOST)
+ print "upload has following updates:"
+ for index, change in enumerate(change_list):
+ print "%d.%s" % (index + 1, change)
+ upload_manager.import_module(MODULE_ROOT_PATH)
+ from client import main as MAIN
+ MAIN.main()
+ except KeyboardInterrupt:
+ sys.exit(-1)
+ except Exception as ex:
+ print str(ex)
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/banner-frame/banner-frame.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/banner-frame/banner-frame.tpl
new file mode 100755
index 000000000..18b6048bd
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/banner-frame/banner-frame.tpl
@@ -0,0 +1,16 @@
+
+
+
+
+
+<%script%>
+require.async("common:widget/ui/jquery/jquery.js", function($){
+ $(function(){
+ var wrap = $(".banner-frame-wrap");
+ wrap.html($("textarea", wrap).text());
+ });
+});
+<%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/Gruntfile.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/Gruntfile.js
new file mode 100755
index 000000000..830839bfb
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/Gruntfile.js
@@ -0,0 +1,170 @@
+/*jshint camelcase: false*/
+'use strict';
+var mountFolder = function(connect, dir) {
+ return connect.static(require('path').resolve(dir));
+};
+
+var makeFilesMap = function(src, dist, match, replace) {
+ var ret = {};
+ grunt.file.recurse(src, function(abspath, rootdir, subdir, filename) {
+ console.log(filename)
+ });
+ return ret;
+}
+
+module.exports = function(grunt) {
+
+ require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);
+
+ grunt.initConfig({
+ app: {
+ src: 'src',
+ dist: 'dist',
+ test: 'test'
+ },
+ watch: {
+ options: {
+ spawn: false
+ },
+
+ css: {
+ files: ['<%= app.src %>/*.css'],
+ tasks: ['build', 'shell:refresh']
+ }
+ },
+ connect: {
+ server: {
+ options: {
+ port: 8011,
+ hostname: '127.0.0.1',
+ base: '<%= app.test %>',
+ keepalive: true,
+ middleware: function (connect, options) {
+ return [
+ // Serve static files.
+ connect.static(options.base),
+ // Make empty directories browsable.
+ connect.directory(options.base),
+ ];
+ }
+ }
+ }
+ },
+ copy: {
+ test: {
+ files: [{
+ expand: true,
+ dot: true,
+ cwd: '<%= app.dist %>',
+ dest: '<%= app.test %>/dist',
+ src: [
+ '*.css'
+ ]
+ }]
+ }
+ },
+ shell: {
+ refresh: {
+ // command: "osascript -e 'tell application \"Google Chrome Canary\" to activate' -e 'tell app \"System Events\" to keystroke \"r\" using {command down}'"
+ command: "osascript -e 'tell application \"Google Chrome\" to activate' -e 'tell app \"System Events\" to keystroke \"r\" using {command down}'"
+ }
+ },
+ clean: {
+ dist: {
+ files: [{
+ dot: true,
+ src: [
+ '<%= app.dist %>'
+ ]
+ }]
+ },
+ test: {
+ files: [{
+ dot: true,
+ src: [
+ '<%= app.test %>/dist'
+ ]
+ }]
+ }
+ },
+ cssmin: {
+ dist: {
+ files: {
+ '<%= app.dist %>/base.ltr.css': [
+ '<%= app.src %>/reset.css'
+ , '<%= app.src %>/layout.css'
+ , '<%= app.src %>/tool.css'
+ , '<%= app.src %>/default.css'
+ , '<%= app.src %>/link.css'
+ // , '<%= app.src %>/icon.css'
+ ],
+ '<%= app.dist %>/base.rtl.css': [
+ '<%= app.src %>/reset.css'
+ , '<%= app.src %>/layout.rtl.css'
+ , '<%= app.src %>/tool.css'
+ , '<%= app.src %>/default.css'
+ , '<%= app.src %>/link.css'
+ // , '<%= app.src %>/icon.rtl.css'
+ ],
+ '<%= app.dist %>/base.rtl.ie.css': [
+ '<%= app.src %>/reset.css'
+ , '<%= app.src %>/reset.ie.css'
+ , '<%= app.src %>/layout.rtl.css'
+ , '<%= app.src %>/layout.rtl.ie.css'
+ , '<%= app.src %>/tool.css'
+ , '<%= app.src %>/tool.ie.css'
+ , '<%= app.src %>/default.css'
+ , '<%= app.src %>/link.css'
+ // , '<%= app.src %>/icon.rtl.css'
+ // , '<%= app.src %>/icon.rtl.ie.css'
+ ],
+ '<%= app.dist %>/base.ltr.ie.css': [
+ '<%= app.src %>/reset.css'
+ , '<%= app.src %>/reset.ie.css'
+ , '<%= app.src %>/layout.css'
+ , '<%= app.src %>/layout.ie.css'
+ , '<%= app.src %>/tool.css'
+ , '<%= app.src %>/tool.ie.css'
+ , '<%= app.src %>/default.css'
+ , '<%= app.src %>/link.css'
+ // , '<%= app.src %>/icon.css'
+ // , '<%= app.src %>/icon.ie.css'
+ ]
+ }
+ }
+ /*, theme: {
+ files: function(src, dist, match) {
+ var ret = {};
+ grunt.file.recurse(src, function(abspath, rootdir, subdir, filename) {
+ if(match.test(filename)) {
+ ret[dist + filename] = src + filename;
+ }
+ });
+ return ret;
+ }('app/styles/theme/', 'dist/styles/theme/', /\.css$/)
+ }*/
+ }
+ });
+
+/*var connect = require('grunt-contrib-connect');
+grunt.registerTask('connect', 'Start a custom static web server.', function() {
+ grunt.log.writeln('Starting static web server in "test" on port 9001.');
+ connect(connect.static('test')).listen(9001);
+});*/
+
+ grunt.registerTask('test', [
+ 'build',
+ 'clean:test',
+ 'copy:test',
+ 'connect'
+ ]);
+
+ grunt.registerTask('build', [
+ 'clean:dist',
+ 'cssmin'
+ ]);
+
+ grunt.registerTask('default', [
+ 'build'
+ ]);
+};
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/README.md b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/README.md
new file mode 100755
index 000000000..2c8c296b0
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/README.md
@@ -0,0 +1,165 @@
+# base-css
+
+完整版在 master 分支维护, 首页优化精简在 mini 分支维护
+
+`git checkout mini`
+
+经过压缩精简, 同样功能 base-css 从 **9K** 减少到 **5K**
+
+## USAGE
+
+为保持主流浏览器体积最小, 拆分 IE6-8 为独立版本(`base.ie.css`)
+
+```html
+
+
+
+
+
+```
+
+## BUILD & OUTPUT
+
+* 安装依赖
+`npm i`
+
+* 编译打包
+`grunt`
+
+* 测试(默认访问: 127.0.0.1:8011)
+`grunt test`
+
+最终产出在 dist 目录, 分为 4 份文件
+
+- base.rtl.css
+
+- base.ltr.css
+
+- base.rtl.ie.css
+
+- base.ltr.ie.css
+
+## COMPACT DETAIL
+
+### 1. 不常用的 form 控件 reset
+
+```css
+input[type="search"] {
+ -webkit-appearance: textfield;
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+}
+
+input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button {
+ -webkit-appearance: none;
+}
+```
+
+### 2. html5 标签兼容
+
+```css
+audio,canvas,video {
+ display: inline-block;
+ *display: inline;
+ *zoom: 1;
+}
+
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+```
+
+### 3. 过旧的样式属性兼容
+
+```css
+.unselect,i,.i,.icon {
+ -moz-user-select: -moz-none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+ user-select: none;
+}
+```
+
+### 4. IE Hack
+
+```css
+_zoom:expression(function(el) {
+ document.execCommand('BackgroundImageCache',false,true);el.style.zoom = "1";
+}(this));
+```
+
+### 5. kill jQuery-UI
+
+待定, 依赖自定义网址重构
+
+### 6. 不常用的工具类
+
+```css
+sup,.sup {
+ top: -0.5em;
+}
+
+sub,.sub {
+ bottom: -0.25em;
+}
+```
+
+### 7. 冗余代码
+
+```css
+@charset "utf-8";
+...
+@charset "utf-8";
+```
+
+### 8. 抽象继承冗余部分
+
+```css
+.icon-hot{
+ display: inline-block;
+ width: 30px;
+ height: 11px;
+ margin-left: 3px;
+ cursor: pointer;
+ background: url(../img/i-rtl-hot.png?m=z) no-repeat;
+ _position: absolute;
+ font-size:0;
+}
+.icon-new{
+ display: inline-block;
+ width: 30px;
+ height: 11px;
+ margin-left: 3px;
+ cursor: pointer;
+ background: url(../img/i-rtl-new.png?m=z) no-repeat;
+ _position: absolute;
+ font-size:0;
+}
+```
+
+调整为:
+
+```css
+.icon-hot, .icon-new, .icon-new_red{
+}
+```
+
+另外: base.css 中提供了很多常用工具类, 比如:
+
+```css
+.hide{} /*隐藏*/
+.s-ptn{} /*通用margin/padding设置*/
+.unselect{} /*禁止文本选择*/
+.fl{} /*浮动*/
+.g /*grid 布局相关*/
+```
+请在源码或文档中熟悉, 避免业务代码冗余
+
+## TEST
+
+`/test/index.html`
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/css-base.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/css-base.tpl
new file mode 100755
index 000000000..0d0863432
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/css-base.tpl
@@ -0,0 +1,16 @@
+<%* 声明对ltr/rtl的css依赖 *%>
+
+<%* *.ie.css 包含 IE 6-8 的支持, *.css 则对这部分进行了精简 *%>
+<%style%>
+ <%if $head.dir=='ltr'%>
+ @import url('/widget/css-base/dist/base.ltr.ie.css?__inline');
+ <%if !empty($head.flowLayout)%>
+ @import url('/widget/css-base/dist/base.ltr.ie.flow.css?__inline');
+ <%/if%>
+ <%else%>
+ @import url('/widget/css-base/dist/base.rtl.ie.css?__inline');
+ <%if !empty($head.flowLayout)%>
+ @import url('/widget/css-base/dist/base.rtl.ie.flow.css?__inline');
+ <%/if%>
+ <%/if%>
+<%/style%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/dist/base.ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/dist/base.ltr.css
new file mode 100755
index 000000000..72ec4c7a8
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/dist/base.ltr.css
@@ -0,0 +1 @@
+@charset "utf-8";*{margin:0;padding:0}fieldset,img,iframe{border:0}address,caption,cite,code,dfn,em,i,th,var{font-style:normal;font-weight:400}ul,li,ol{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:400}html{font-size:100%}body{vertical-align:baseline;background-color:transparent;-webkit-backface-visibility:hidden;}a:focus,a:hover,a:active,input:focus,textarea:focus{outline:0}img{vertical-align:middle}table{font-size:inherit;font:100%;border-collapse:collapse;border-spacing:0}td{vertical-align:top}th{text-align:inherit}iframe{display:block}textarea{resize:none;overflow:auto;vertical-align:top}button,input,select,textarea{font-size:100%;vertical-align:baseline}button,input{*overflow:visible;line-height:normal;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}button{cursor:pointer}button[disabled],input[disabled]{cursor:default}abbr,acronym{border:0;font-variant:normal}strong,.strong{font-weight:700}.l-fl{float:left}.l-fr{float:right}.l-ff,.l-g0{overflow:hidden}.l-wrap{width:960px;margin:0 auto}.l-g{width:100%}.l-g:before,.l-g:after{content:'';display:table}.l-g:after{clear:both}.l-g1-1{float:none}.l-g1-2{width:50%}.l-g1-3{width:33.33333%}.l-g2-3{width:66.66666%}.l-g1-4{width:25%}.l-g3-4{width:75%}.l-g1-5{width:20%}.l-g2-5{width:40%}.l-g3-5{width:60%}.l-g4-5{width:80%}.l-g1-8{width:12.5%}.l-g3-8{width:37.5%}.l-g5-8{width:62.5%}.l-g7-8{width:87.5%}.l-g1-1,.l-g1-2,.l-g1-3,.l-g2-3,.l-g3-3,.l-g1-4,.l-g2-4,.l-g3-4,.l-g4-5,.l-g1-5,.l-g2-5,.l-g3-5,.l-g4-5,.l-g1-8,.l-g3-8,.l-g5-8,.l-g7-8{float:left}.l-g1,.l-g2,.l-g3,.l-g4,.l-g5,.l-g6,.l-g7,.l-g8,.l-g9,.l-g10,.l-g11,.l-g12{float:left;margin-left:10px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}[class*=l-g]:first-child{margin-left:0}.l-g1{width:70px}.l-g2{width:150px}.l-g3{width:230px}.l-g4{width:310px}.l-g5{width:390px}.l-g6{width:470px}.l-g7{width:550px}.l-g8{width:630px}.l-g9{width:710px}.l-g10{width:790px}.l-g11{width:870px}.l-g12{width:950px}.l-g_1{margin-left:80px!important}.l-g_2{margin-left:160px!important}.l-g_3{margin-left:240px!important}.l-g_4{margin-left:320px!important}.l-g_5{margin-left:400px!important}.l-g_6{margin-left:480px!important}.l-g_7{margin-left:560px!important}.l-g_8{margin-left:640px!important}.l-g_9{margin-left:720px!important}.l-g_10{margin-left:800px!important}.l-g_11{margin-left:880px!important}.l-g_1,.l-g_2,.l-g_3,.l-g_4,.l-g_5,.l-g_6,.l-g_7,.l-g_8,.l-g_9,.l-g_10,.l-g_11{margin-right:10px}.unselect,i,.i,.icon{-moz-user-select:-moz-none;-webkit-user-select:none;-o-user-select:none;user-select:none}b,.b,.border{display:block;font:0/0 a}.s-ptn,.s-pvn,.s-pan{padding-top:0!important}.s-pts,.s-pvs,.s-pas{padding-top:5px!important}.s-ptm,.s-pvm,.s-pam{padding-top:10px!important}.s-ptl,.s-pvl,.s-pal{padding-top:20px!important}.s-prn,.s-phn,.s-pan{padding-right:0!important}.s-prs,.s-phs,.s-pas{padding-right:5px!important}.s-prm,.s-phm,.s-pam{padding-right:10px!important}.s-prl,.s-phl,.s-pal{padding-right:20px!important}.s-pbn,.s-pvn,.s-pan{padding-bottom:0!important}.s-pbs,.s-pvs,.s-pas{padding-bottom:5px!important}.s-pbm,.s-pvm,.s-pam{padding-bottom:10px!important}.s-pbl,.s-pvl,.s-pal{padding-bottom:20px!important}.s-pln,.s-phn,.s-pan{padding-left:0!important}.s-pls,.s-phs,.s-pas{padding-left:5px!important}.s-plm,.s-phm,.s-pam{padding-left:10px!important}.s-pll,.s-phl,.s-pal{padding-left:20px!important}.s-mtn,.s-mvn,.s-man{margin-top:0!important}.s-mts,.s-mvs,.s-mas{margin-top:5px!important}.s-mtm,.s-mvm,.s-mam{margin-top:10px!important}.s-mtl,.s-mvl,.s-mal{margin-top:20px!important}.s-mrn,.s-mhn,.s-man{margin-right:0!important}.s-mrs,.s-mhs,.s-mas{margin-right:5px!important}.s-mrm,.s-mhm,.s-mam{margin-right:10px!important}.s-mrl,.s-mhl,.s-mal{margin-right:20px!important}.s-mbn,.s-mvn,.s-man{margin-bottom:0!important}.s-mbs,.s-mvs,.s-mas{margin-bottom:5px!important}.s-mbm,.s-mvm,.s-mam{margin-bottom:10px!important}.s-mbl,.s-mvl,.s-mal{margin-bottom:20px!important}.s-mln,.s-mhn,.s-man{margin-left:0!important}.s-mls,.s-mhs,.s-mas{margin-left:5px!important}.s-mlm,.s-mhm,.s-mam{margin-left:10px!important}.s-mll,.s-mhl,.s-mal{margin-left:20px!important}.g-area-lazyload{visibility:hidden}.hide{display:none!important;visibility:hidden}.cf:before,.cf:after{content:'';display:table}.cf:after{clear:both}.fl{float:left}.fr{float:right}.ibw{word-spacing:-.35em;letter-spacing:-.32em}.ib,.ibw .ib,s,.s,.space,.btn{display:inline-block}.ibw .ib{word-spacing:normal;letter-spacing:normal;vertical-align:top}.mod{overflow:hidden}.triangle{width:0;height:0;overflow:hidden;font-size:0;line-height:0;border-color:transparent;border-style:dashed;border-width:5px}html{background:#edf0ef}body{font:12px/1.231 arial,Tahoma,helvetica,clean,sans-serif;position:relative}a{text-decoration:none;color:#333}a:hover{text-decoration:none}.orange,.orange a{color:#f56f2f!important}.red,.red a{color:red!important}.green,.green a{color:green!important}.bold,.bold a{font-weight:600!important}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/dist/base.ltr.ie.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/dist/base.ltr.ie.css
new file mode 100755
index 000000000..eed7f8703
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/dist/base.ltr.ie.css
@@ -0,0 +1,470 @@
+@charset "utf-8";
+* {
+ margin: 0;
+ padding: 0
+}
+fieldset, img, iframe {
+ border: 0
+}
+address, caption, cite, code, dfn, em, i, th, var {
+ font-style: normal;
+ font-weight: 400
+}
+ul, li, ol {
+ list-style: none
+}
+caption, th {
+ text-align: left
+}
+h1, h2, h3, h4, h5, h6 {
+ font-size: 100%;
+ font-weight: 400
+}
+html {
+ font-size: 100%
+}
+body {
+ vertical-align: baseline;
+ background-color: transparent;
+ -webkit-backface-visibility: hidden;
+}
+a:focus, a:hover, a:active, input:focus, textarea:focus {
+ outline: 0
+}
+img {
+ vertical-align: middle
+}
+table {
+ font-size: inherit;
+ font: 100%;
+ border-collapse: collapse;
+ border-spacing: 0
+}
+td {
+ vertical-align: top
+}
+th {
+ text-align: inherit
+}
+iframe {
+ display: block
+}
+textarea {
+ resize: none;
+ overflow: auto;
+ vertical-align: top
+}
+button, input, select, textarea {
+ font-size: 100%;
+ vertical-align: baseline
+}
+button, input {
+ /**overflow: visible;*/
+ line-height: normal;
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box
+}
+button {
+ cursor: pointer
+}
+button[disabled], input[disabled] {
+ cursor: default
+}
+abbr, acronym {
+ border: 0;
+ font-variant: normal
+}
+strong, .strong {
+ font-weight: 700
+}
+/*body {
+ _zoom:expression(function(el) {
+ document.execCommand('BackgroundImageCache', false, true);
+ el.style.zoom="1"
+ }
+ (this))
+}*/
+img {
+ -ms-interpolation-mode: bicubic
+}
+/*button, input, select, textarea {
+ *vertical-align: middle
+}
+button, input {
+ *overflow: visible
+}*/
+.l-fl {
+ float: left
+}
+.l-fr {
+ float: right
+}
+.l-ff, .l-g0 {
+ overflow: hidden
+}
+.l-wrap {
+ width: 960px;
+ margin: 0 auto
+}
+.l-g {
+ width: 100%
+}
+.l-g:before, .l-g:after {
+ content: '';
+ display: table
+}
+.l-g:after {
+ clear: both
+}
+.l-g1-1 {
+ float: none
+}
+.l-g1-2 {
+ width: 50%
+}
+.l-g1-3 {
+ width: 33.33333%
+}
+.l-g2-3 {
+ width: 66.66666%
+}
+.l-g1-4 {
+ width: 25%
+}
+.l-g3-4 {
+ width: 75%
+}
+.l-g1-5 {
+ width: 20%
+}
+.l-g2-5 {
+ width: 40%
+}
+.l-g3-5 {
+ width: 60%
+}
+.l-g4-5 {
+ width: 80%
+}
+.l-g1-8 {
+ width: 12.5%
+}
+.l-g3-8 {
+ width: 37.5%
+}
+.l-g5-8 {
+ width: 62.5%
+}
+.l-g7-8 {
+ width: 87.5%
+}
+.l-g1-1, .l-g1-2, .l-g1-3, .l-g2-3, .l-g3-3, .l-g1-4, .l-g2-4, .l-g3-4, .l-g4-5, .l-g1-5, .l-g2-5, .l-g3-5, .l-g4-5, .l-g1-8, .l-g3-8, .l-g5-8, .l-g7-8 {
+ float: left
+}
+.l-g1, .l-g2, .l-g3, .l-g4, .l-g5, .l-g6, .l-g7, .l-g8, .l-g9, .l-g10, .l-g11, .l-g12 {
+ float: left;
+ margin-left: 10px;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box
+}
+[class*=l-g]:first-child {
+ margin-left: 0
+}
+.l-g1 {
+ width: 70px
+}
+.l-g2 {
+ width: 150px
+}
+.l-g3 {
+ width: 230px
+}
+.l-g4 {
+ width: 310px
+}
+.l-g5 {
+ width: 390px
+}
+.l-g6 {
+ width: 470px
+}
+.l-g7 {
+ width: 550px
+}
+.l-g8 {
+ width: 630px
+}
+.l-g9 {
+ width: 710px
+}
+.l-g10 {
+ width: 790px
+}
+.l-g11 {
+ width: 870px
+}
+.l-g12 {
+ width: 950px
+}
+.l-g_1 {
+ margin-left: 80px !important
+}
+.l-g_2 {
+ margin-left: 160px !important
+}
+.l-g_3 {
+ margin-left: 240px !important
+}
+.l-g_4 {
+ margin-left: 320px !important
+}
+.l-g_5 {
+ margin-left: 400px !important
+}
+.l-g_6 {
+ margin-left: 480px !important
+}
+.l-g_7 {
+ margin-left: 560px !important
+}
+.l-g_8 {
+ margin-left: 640px !important
+}
+.l-g_9 {
+ margin-left: 720px !important
+}
+.l-g_10 {
+ margin-left: 800px !important
+}
+.l-g_11 {
+ margin-left: 880px !important
+}
+.l-g_1, .l-g_2, .l-g_3, .l-g_4, .l-g_5, .l-g_6, .l-g_7, .l-g_8, .l-g_9, .l-g_10, .l-g_11 {
+ margin-right: 10px
+}
+/*.l-fl {
+ _margin-right: -3px
+}
+.l-fr {
+ _margin-left: -3px
+}*/
+.l-ff, .l-g0 {
+ zoom: 1
+}
+.l-g {
+ zoom: 1;
+ /*_zoom:expression(function(el) {
+ el.firstChild.style.marginLeft=0;
+ el.style.zoom="1"
+ }
+ (this))*/
+}
+/*.l-g1-1, .l-g1-2, .l-g1-3, .l-g2-3, .l-g3-3, .l-g1-4, .l-g2-4, .l-g3-4, .l-g4-5, .l-g1-5, .l-g2-5, .l-g3-5, .l-g4-5, .l-g1-8, .l-g3-8, .l-g5-8, .l-g7-8 {
+ _margin-right: -3px
+}*/
+.l-g1, .l-g2, .l-g3, .l-g4, .l-g5, .l-g6, .l-g7, .l-g8, .l-g9, .l-g10, .l-g11, .l-g12 {
+ display: inline
+}
+/*.l-g_1, .l-g_2, .l-g_3, .l-g_4, .l-g_5, .l-g_6, .l-g_7, .l-g_8, .l-g_9, .l-g_10, .l-g_11 {
+ _zoom:expression(function(el) {
+ if(!el.nextSibling || el.nextSibling.nodeType!==1) el.style.marginRight=0;
+ el.style.zoom="1"
+ }
+ (this))
+}*/
+.unselect, i, .i, .icon {
+ -moz-user-select: -moz-none;
+ -webkit-user-select: none;
+ -ms-user-select: none;
+ user-select: none
+}
+b, .b, .border {
+ display: block;
+ font: 0/0 a
+}
+.s-ptn, .s-pvn, .s-pan {
+ padding-top: 0 !important
+}
+.s-pts, .s-pvs, .s-pas {
+ padding-top: 5px !important
+}
+.s-ptm, .s-pvm, .s-pam {
+ padding-top: 10px !important
+}
+.s-ptl, .s-pvl, .s-pal {
+ padding-top: 20px !important
+}
+.s-prn, .s-phn, .s-pan {
+ padding-right: 0 !important
+}
+.s-prs, .s-phs, .s-pas {
+ padding-right: 5px !important
+}
+.s-prm, .s-phm, .s-pam {
+ padding-right: 10px !important
+}
+.s-prl, .s-phl, .s-pal {
+ padding-right: 20px !important
+}
+.s-pbn, .s-pvn, .s-pan {
+ padding-bottom: 0 !important
+}
+.s-pbs, .s-pvs, .s-pas {
+ padding-bottom: 5px !important
+}
+.s-pbm, .s-pvm, .s-pam {
+ padding-bottom: 10px !important
+}
+.s-pbl, .s-pvl, .s-pal {
+ padding-bottom: 20px !important
+}
+.s-pln, .s-phn, .s-pan {
+ padding-left: 0 !important
+}
+.s-pls, .s-phs, .s-pas {
+ padding-left: 5px !important
+}
+.s-plm, .s-phm, .s-pam {
+ padding-left: 10px !important
+}
+.s-pll, .s-phl, .s-pal {
+ padding-left: 20px !important
+}
+.s-mtn, .s-mvn, .s-man {
+ margin-top: 0 !important
+}
+.s-mts, .s-mvs, .s-mas {
+ margin-top: 5px !important
+}
+.s-mtm, .s-mvm, .s-mam {
+ margin-top: 10px !important
+}
+.s-mtl, .s-mvl, .s-mal {
+ margin-top: 20px !important
+}
+.s-mrn, .s-mhn, .s-man {
+ margin-right: 0 !important
+}
+.s-mrs, .s-mhs, .s-mas {
+ margin-right: 5px !important
+}
+.s-mrm, .s-mhm, .s-mam {
+ margin-right: 10px !important
+}
+.s-mrl, .s-mhl, .s-mal {
+ margin-right: 20px !important
+}
+.s-mbn, .s-mvn, .s-man {
+ margin-bottom: 0 !important
+}
+.s-mbs, .s-mvs, .s-mas {
+ margin-bottom: 5px !important
+}
+.s-mbm, .s-mvm, .s-mam {
+ margin-bottom: 10px !important
+}
+.s-mbl, .s-mvl, .s-mal {
+ margin-bottom: 20px !important
+}
+.s-mln, .s-mhn, .s-man {
+ margin-left: 0 !important
+}
+.s-mls, .s-mhs, .s-mas {
+ margin-left: 5px !important
+}
+.s-mlm, .s-mhm, .s-mam {
+ margin-left: 10px !important
+}
+.s-mll, .s-mhl, .s-mal {
+ margin-left: 20px !important
+}
+.g-area-lazyload {
+ visibility: hidden
+}
+.hide {
+ display: none !important;
+ visibility: hidden
+}
+.cf:before, .cf:after {
+ content: '';
+ display: table
+}
+.cf:after {
+ clear: both
+}
+.fl {
+ float: left
+}
+.fr {
+ float: right
+}
+.ibw {
+ word-spacing: -.35em;
+ letter-spacing: -.32em
+}
+.ib, .ibw .ib, s, .s, .space, .btn {
+ display: inline-block
+}
+.ibw .ib {
+ word-spacing: normal;
+ letter-spacing: normal;
+ vertical-align: top
+}
+.mod {
+ overflow: hidden
+}
+.triangle {
+ width: 0;
+ height: 0;
+ overflow: hidden;
+ font-size: 0;
+ line-height: 0;
+ border-color: transparent;
+ border-style: dashed;
+ border-width: 5px
+}
+/*.unselect, i, .i, .icon {
+ -khtml-user-select: none
+}*/
+.cf {
+ zoom: 1
+}
+.fl, .fr {
+ display: inline
+}
+.mod {
+ /**overflow: visible;*/
+ zoom: 1
+}
+.ib, .ibw .ib, s, .s, .space, .btn {
+ /**display: inline;*/
+ zoom: 1
+}
+html {
+ background: #edf0ef
+}
+body {
+ font: 12px/1.231 arial, Tahoma, helvetica, clean, sans-serif;
+ position: relative
+}
+a {
+ text-decoration: none;
+ color: #333
+}
+a:hover {
+ text-decoration: none
+}
+.orange, .orange a {
+ color: #f56f2f !important
+}
+.red, .red a {
+ color: red !important
+}
+.green, .green a {
+ color: green !important
+}
+.bold, .bold a {
+ font-weight: 600 !important
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/dist/base.ltr.ie.flow.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/dist/base.ltr.ie.flow.css
new file mode 100755
index 000000000..79ef69d87
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/dist/base.ltr.ie.flow.css
@@ -0,0 +1,72 @@
+.w960{
+ min-width: 960px;
+}
+.w1020{
+ min-width: 1020px;
+}
+.l-flow-side{
+ width: 300px;
+ float: left;
+}
+.l-flow-main{
+ float: left;
+ width: 720px;
+}
+.w1020 .l-wrap{
+ width: 1020px;
+}
+.w960 .l-flow-main{
+ width: 660px;
+}
+.w1120 {
+ min-width: 1120px;
+}
+.w1120 .l-wrap {
+ width: 1120px;
+}
+.w1120 .l-flow-main {
+ width: 820px;
+}
+/* .flow-on .l-flow-side{
+ width: 300px;
+ float: left;
+}
+.flow-on .l-flow-main{
+ float: left;
+ width: 720px;
+}
+@media(min-width: 1024px){
+ .flow-on .l-wrap{
+ width: 1020px;
+ }
+}
+@media(max-width: 1024px){
+ .flow-on .l-flow-main{
+ width: 660px;
+ }
+} */
+/*
+1020px styles
+.mixin-1020 (@prefix) {
+ @prefix {
+ .l-wrap{
+ width: 1020px;
+ }
+ }
+}
+@media (min-width: 1024px) {支持@media
+ .mixin-1020 (".flow-on");
+}
+.mixin-1020 (".flow-on.w-1020"); IE <= 8
+960px styles
+.mixin-960 (@prefix) {
+ @prefix {
+ .l-flow-main{
+ width: 660px;
+ }
+ }
+}
+@media (max-width: 1024px) {支持@media
+ .mixin-960 (".flow-on");
+}
+.mixin-960 (".flow-on.w-960"); IE <= 8 */
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/dist/base.rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/dist/base.rtl.css
new file mode 100755
index 000000000..854666be3
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/dist/base.rtl.css
@@ -0,0 +1 @@
+@charset "utf-8";*{margin:0;padding:0}fieldset,img,iframe{border:0}address,caption,cite,code,dfn,em,i,th,var{font-style:normal;font-weight:400}ul,li,ol{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:400}html{font-size:100%}body{vertical-align:baseline;background-color:transparent;-webkit-backface-visibility:hidden;}a:focus,a:hover,a:active,input:focus,textarea:focus{outline:0}img{vertical-align:middle}table{font-size:inherit;font:100%;border-collapse:collapse;border-spacing:0}td{vertical-align:top}th{text-align:inherit}iframe{display:block}textarea{resize:none;overflow:auto;vertical-align:top}button,input,select,textarea{font-size:100%;vertical-align:baseline}button,input{*overflow:visible;line-height:normal;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}button{cursor:pointer}button[disabled],input[disabled]{cursor:default}abbr,acronym{border:0;font-variant:normal}strong,.strong{font-weight:700}.l-fl{float:left}.l-fr{float:right}.l-ff,.l-g0{overflow:hidden}.l-wrap{width:960px;margin:0 auto}.l-g{width:100%}.l-g:before,.l-g:after{content:'';display:table}.l-g:after{clear:both}.l-g1-1{float:none}.l-g1-2{width:50%}.l-g1-3{width:33.33333%}.l-g2-3{width:66.66666%}.l-g1-4{width:25%}.l-g3-4{width:75%}.l-g1-5{width:20%}.l-g2-5{width:40%}.l-g3-5{width:60%}.l-g4-5{width:80%}.l-g1-8{width:12.5%}.l-g3-8{width:37.5%}.l-g5-8{width:62.5%}.l-g7-8{width:87.5%}.l-g1-1,.l-g1-2,.l-g1-3,.l-g2-3,.l-g3-3,.l-g1-4,.l-g2-4,.l-g3-4,.l-g4-5,.l-g1-5,.l-g2-5,.l-g3-5,.l-g4-5,.l-g1-8,.l-g3-8,.l-g5-8,.l-g7-8{float:right;_margin-left:-3px!important}.l-g1,.l-g2,.l-g3,.l-g4,.l-g5,.l-g6,.l-g7,.l-g8,.l-g9,.l-g10,.l-g11,.l-g12{display:inline;float:right;margin-right:10px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}[class*=l-g]:first-child{margin-right:0}.l-g1{width:70px}.l-g2{width:150px}.l-g3{width:230px}.l-g4{width:310px}.l-g5{width:390px}.l-g6{width:470px}.l-g7{width:550px}.l-g8{width:630px}.l-g9{width:710px}.l-g10{width:790px}.l-g11{width:870px}.l-g12{width:950px}.l-g_1{margin-right:80px!important}.l-g_2{margin-right:160px!important}.l-g_3{margin-right:240px!important}.l-g_4{margin-right:320px!important}.l-g_5{margin-right:400px!important}.l-g_6{margin-right:480px!important;margin-left:0!important}.l-g_7{margin-right:560px!important}.l-g_8{margin-right:640px!important}.l-g_9{margin-right:720px!important}.l-g_10{margin-right:800px!important}.l-g_11{margin-right:880px!important}.l-g_1,.l-g_2,.l-g_3,.l-g_4,.l-g_5,.l-g_6,.l-g_7,.l-g_8,.l-g_9,.l-g_10,.l-g_11{margin-left:10px}.unselect,i,.i,.icon{-moz-user-select:-moz-none;-webkit-user-select:none;-o-user-select:none;user-select:none}b,.b,.border{display:block;font:0/0 a}.s-ptn,.s-pvn,.s-pan{padding-top:0!important}.s-pts,.s-pvs,.s-pas{padding-top:5px!important}.s-ptm,.s-pvm,.s-pam{padding-top:10px!important}.s-ptl,.s-pvl,.s-pal{padding-top:20px!important}.s-prn,.s-phn,.s-pan{padding-right:0!important}.s-prs,.s-phs,.s-pas{padding-right:5px!important}.s-prm,.s-phm,.s-pam{padding-right:10px!important}.s-prl,.s-phl,.s-pal{padding-right:20px!important}.s-pbn,.s-pvn,.s-pan{padding-bottom:0!important}.s-pbs,.s-pvs,.s-pas{padding-bottom:5px!important}.s-pbm,.s-pvm,.s-pam{padding-bottom:10px!important}.s-pbl,.s-pvl,.s-pal{padding-bottom:20px!important}.s-pln,.s-phn,.s-pan{padding-left:0!important}.s-pls,.s-phs,.s-pas{padding-left:5px!important}.s-plm,.s-phm,.s-pam{padding-left:10px!important}.s-pll,.s-phl,.s-pal{padding-left:20px!important}.s-mtn,.s-mvn,.s-man{margin-top:0!important}.s-mts,.s-mvs,.s-mas{margin-top:5px!important}.s-mtm,.s-mvm,.s-mam{margin-top:10px!important}.s-mtl,.s-mvl,.s-mal{margin-top:20px!important}.s-mrn,.s-mhn,.s-man{margin-right:0!important}.s-mrs,.s-mhs,.s-mas{margin-right:5px!important}.s-mrm,.s-mhm,.s-mam{margin-right:10px!important}.s-mrl,.s-mhl,.s-mal{margin-right:20px!important}.s-mbn,.s-mvn,.s-man{margin-bottom:0!important}.s-mbs,.s-mvs,.s-mas{margin-bottom:5px!important}.s-mbm,.s-mvm,.s-mam{margin-bottom:10px!important}.s-mbl,.s-mvl,.s-mal{margin-bottom:20px!important}.s-mln,.s-mhn,.s-man{margin-left:0!important}.s-mls,.s-mhs,.s-mas{margin-left:5px!important}.s-mlm,.s-mhm,.s-mam{margin-left:10px!important}.s-mll,.s-mhl,.s-mal{margin-left:20px!important}.g-area-lazyload{visibility:hidden}.hide{display:none!important;visibility:hidden}.cf:before,.cf:after{content:'';display:table}.cf:after{clear:both}.fl{float:left}.fr{float:right}.ibw{word-spacing:-.35em;letter-spacing:-.32em}.ib,.ibw .ib,s,.s,.space,.btn{display:inline-block}.ibw .ib{word-spacing:normal;letter-spacing:normal;vertical-align:top}.mod{overflow:hidden}.triangle{width:0;height:0;overflow:hidden;font-size:0;line-height:0;border-color:transparent;border-style:dashed;border-width:5px}html{background:#edf0ef}body{font:12px/1.231 arial,Tahoma,helvetica,clean,sans-serif;position:relative}a{text-decoration:none;color:#333}a:hover{text-decoration:none}.orange,.orange a{color:#f56f2f!important}.red,.red a{color:red!important}.green,.green a{color:green!important}.bold,.bold a{font-weight:600!important}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/dist/base.rtl.ie.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/dist/base.rtl.ie.css
new file mode 100755
index 000000000..3f54a81a4
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/dist/base.rtl.ie.css
@@ -0,0 +1,467 @@
+@charset "utf-8";
+* {
+ margin: 0;
+ padding: 0
+}
+fieldset, img, iframe {
+ border: 0
+}
+address, caption, cite, code, dfn, em, i, th, var {
+ font-style: normal;
+ font-weight: 400
+}
+ul, li, ol {
+ list-style: none
+}
+caption, th {
+ text-align: left
+}
+h1, h2, h3, h4, h5, h6 {
+ font-size: 100%;
+ font-weight: 400
+}
+html {
+ font-size: 100%
+}
+body {
+ vertical-align: baseline;
+ background-color: transparent;
+ -webkit-backface-visibility: hidden;
+}
+a:focus, a:hover, a:active, input:focus, textarea:focus {
+ outline: 0
+}
+img {
+ vertical-align: middle
+}
+table {
+ font-size: inherit;
+ font: 100%;
+ border-collapse: collapse;
+ border-spacing: 0
+}
+td {
+ vertical-align: top
+}
+th {
+ text-align: inherit
+}
+iframe {
+ display: block
+}
+textarea {
+ resize: none;
+ overflow: auto;
+ vertical-align: top
+}
+button, input, select, textarea {
+ font-size: 100%;
+ vertical-align: baseline
+}
+button, input {
+ /**overflow: visible;*/
+ line-height: normal;
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box
+}
+button {
+ cursor: pointer
+}
+button[disabled], input[disabled] {
+ cursor: default
+}
+abbr, acronym {
+ border: 0;
+ font-variant: normal
+}
+strong, .strong {
+ font-weight: 700
+}
+/*body {
+ _zoom:expression(function(el) {
+ document.execCommand('BackgroundImageCache', false, true);
+ el.style.zoom="1"
+ }
+ (this))
+}*/
+img {
+ -ms-interpolation-mode: bicubic
+}
+/*button, input, select, textarea {
+ *vertical-align: middle
+}
+button, input {
+ *overflow: visible
+}*/
+.l-fl {
+ float: left
+}
+.l-fr {
+ float: right
+}
+.l-ff, .l-g0 {
+ overflow: hidden
+}
+.l-wrap {
+ width: 960px;
+ margin: 0 auto
+}
+.l-g {
+ width: 100%
+}
+.l-g:before, .l-g:after {
+ content: '';
+ display: table
+}
+.l-g:after {
+ clear: both
+}
+.l-g1-1 {
+ float: none
+}
+.l-g1-2 {
+ width: 50%
+}
+.l-g1-3 {
+ width: 33.33333%
+}
+.l-g2-3 {
+ width: 66.66666%
+}
+.l-g1-4 {
+ width: 25%
+}
+.l-g3-4 {
+ width: 75%
+}
+.l-g1-5 {
+ width: 20%
+}
+.l-g2-5 {
+ width: 40%
+}
+.l-g3-5 {
+ width: 60%
+}
+.l-g4-5 {
+ width: 80%
+}
+.l-g1-8 {
+ width: 12.5%
+}
+.l-g3-8 {
+ width: 37.5%
+}
+.l-g5-8 {
+ width: 62.5%
+}
+.l-g7-8 {
+ width: 87.5%
+}
+.l-g1-1, .l-g1-2, .l-g1-3, .l-g2-3, .l-g3-3, .l-g1-4, .l-g2-4, .l-g3-4, .l-g4-5, .l-g1-5, .l-g2-5, .l-g3-5, .l-g4-5, .l-g1-8, .l-g3-8, .l-g5-8, .l-g7-8 {
+ float: right;
+ /*_margin-left: -3px !important*/
+}
+.l-g1, .l-g2, .l-g3, .l-g4, .l-g5, .l-g6, .l-g7, .l-g8, .l-g9, .l-g10, .l-g11, .l-g12 {
+ display: inline;
+ float: right;
+ margin-right: 10px;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box
+}
+[class*=l-g]:first-child {
+ margin-right: 0
+}
+.l-g1 {
+ width: 70px
+}
+.l-g2 {
+ width: 150px
+}
+.l-g3 {
+ width: 230px
+}
+.l-g4 {
+ width: 310px
+}
+.l-g5 {
+ width: 390px
+}
+.l-g6 {
+ width: 470px
+}
+.l-g7 {
+ width: 550px
+}
+.l-g8 {
+ width: 630px
+}
+.l-g9 {
+ width: 710px
+}
+.l-g10 {
+ width: 790px
+}
+.l-g11 {
+ width: 870px
+}
+.l-g12 {
+ width: 950px
+}
+.l-g_1 {
+ margin-right: 80px !important
+}
+.l-g_2 {
+ margin-right: 160px !important
+}
+.l-g_3 {
+ margin-right: 240px !important
+}
+.l-g_4 {
+ margin-right: 320px !important
+}
+.l-g_5 {
+ margin-right: 400px !important
+}
+.l-g_6 {
+ margin-right: 480px !important;
+ margin-left: 0 !important
+}
+.l-g_7 {
+ margin-right: 560px !important
+}
+.l-g_8 {
+ margin-right: 640px !important
+}
+.l-g_9 {
+ margin-right: 720px !important
+}
+.l-g_10 {
+ margin-right: 800px !important
+}
+.l-g_11 {
+ margin-right: 880px !important
+}
+.l-g_1, .l-g_2, .l-g_3, .l-g_4, .l-g_5, .l-g_6, .l-g_7, .l-g_8, .l-g_9, .l-g_10, .l-g_11 {
+ margin-left: 10px
+}
+.l-ff, .l-g0 {
+ zoom: 1
+}
+.l-g {
+ zoom: 1;
+ /*_zoom:expression(function(el) {
+ el.firstChild.style.marginRight=0;
+ el.style.zoom="1"
+ }
+ (this))*/
+}
+/*.l-g1-1, .l-g1-2, .l-g1-3, .l-g2-3, .l-g3-3, .l-g1-4, .l-g2-4, .l-g3-4, .l-g4-5, .l-g1-5, .l-g2-5, .l-g3-5, .l-g4-5, .l-g1-8, .l-g3-8, .l-g5-8, .l-g7-8 {
+ _margin-left: -3px
+}*/
+.l-g1, .l-g2, .l-g3, .l-g4, .l-g5, .l-g6, .l-g7, .l-g8, .l-g9, .l-g10, .l-g11, .l-g12 {
+ display: inline
+}
+/*.l-g_1, .l-g_2, .l-g_3, .l-g_4, .l-g_5, .l-g_6, .l-g_7, .l-g_8, .l-g_9, .l-g_10, .l-g_11 {
+ _zoom:expression(function(el) {
+ if(!el.nextSibling || el.nextSibling.nodeType!==1) el.style.marginLeft=0;
+ el.style.zoom="1"
+ }
+ (this))
+}*/
+.unselect, i, .i, .icon {
+ -moz-user-select: -moz-none;
+ -webkit-user-select: none;
+ -ms-user-select: none;
+ user-select: none
+}
+b, .b, .border {
+ display: block;
+ font: 0/0 a
+}
+.s-ptn, .s-pvn, .s-pan {
+ padding-top: 0 !important
+}
+.s-pts, .s-pvs, .s-pas {
+ padding-top: 5px !important
+}
+.s-ptm, .s-pvm, .s-pam {
+ padding-top: 10px !important
+}
+.s-ptl, .s-pvl, .s-pal {
+ padding-top: 20px !important
+}
+.s-prn, .s-phn, .s-pan {
+ padding-right: 0 !important
+}
+.s-prs, .s-phs, .s-pas {
+ padding-right: 5px !important
+}
+.s-prm, .s-phm, .s-pam {
+ padding-right: 10px !important
+}
+.s-prl, .s-phl, .s-pal {
+ padding-right: 20px !important
+}
+.s-pbn, .s-pvn, .s-pan {
+ padding-bottom: 0 !important
+}
+.s-pbs, .s-pvs, .s-pas {
+ padding-bottom: 5px !important
+}
+.s-pbm, .s-pvm, .s-pam {
+ padding-bottom: 10px !important
+}
+.s-pbl, .s-pvl, .s-pal {
+ padding-bottom: 20px !important
+}
+.s-pln, .s-phn, .s-pan {
+ padding-left: 0 !important
+}
+.s-pls, .s-phs, .s-pas {
+ padding-left: 5px !important
+}
+.s-plm, .s-phm, .s-pam {
+ padding-left: 10px !important
+}
+.s-pll, .s-phl, .s-pal {
+ padding-left: 20px !important
+}
+.s-mtn, .s-mvn, .s-man {
+ margin-top: 0 !important
+}
+.s-mts, .s-mvs, .s-mas {
+ margin-top: 5px !important
+}
+.s-mtm, .s-mvm, .s-mam {
+ margin-top: 10px !important
+}
+.s-mtl, .s-mvl, .s-mal {
+ margin-top: 20px !important
+}
+.s-mrn, .s-mhn, .s-man {
+ margin-right: 0 !important
+}
+.s-mrs, .s-mhs, .s-mas {
+ margin-right: 5px !important
+}
+.s-mrm, .s-mhm, .s-mam {
+ margin-right: 10px !important
+}
+.s-mrl, .s-mhl, .s-mal {
+ margin-right: 20px !important
+}
+.s-mbn, .s-mvn, .s-man {
+ margin-bottom: 0 !important
+}
+.s-mbs, .s-mvs, .s-mas {
+ margin-bottom: 5px !important
+}
+.s-mbm, .s-mvm, .s-mam {
+ margin-bottom: 10px !important
+}
+.s-mbl, .s-mvl, .s-mal {
+ margin-bottom: 20px !important
+}
+.s-mln, .s-mhn, .s-man {
+ margin-left: 0 !important
+}
+.s-mls, .s-mhs, .s-mas {
+ margin-left: 5px !important
+}
+.s-mlm, .s-mhm, .s-mam {
+ margin-left: 10px !important
+}
+.s-mll, .s-mhl, .s-mal {
+ margin-left: 20px !important
+}
+.g-area-lazyload {
+ visibility: hidden
+}
+.hide {
+ display: none !important;
+ visibility: hidden
+}
+.cf:before, .cf:after {
+ content: '';
+ display: table
+}
+.cf:after {
+ clear: both
+}
+.fl {
+ float: left
+}
+.fr {
+ float: right
+}
+.ibw {
+ word-spacing: -.35em;
+ letter-spacing: -.32em
+}
+.ib, .ibw .ib, s, .s, .space, .btn {
+ display: inline-block
+}
+.ibw .ib {
+ word-spacing: normal;
+ letter-spacing: normal;
+ vertical-align: top
+}
+.mod {
+ overflow: hidden
+}
+.triangle {
+ width: 0;
+ height: 0;
+ overflow: hidden;
+ font-size: 0;
+ line-height: 0;
+ border-color: transparent;
+ border-style: dashed;
+ border-width: 5px
+}
+/*.unselect, i, .i, .icon {
+ -khtml-user-select: none
+}*/
+.cf {
+ zoom: 1
+}
+.fl, .fr {
+ display: inline
+}
+.mod {
+ /**overflow: visible;*/
+ zoom: 1
+}
+.ib, .ibw .ib, s, .s, .space, .btn {
+ /**display: inline;*/
+ zoom: 1
+}
+html {
+ background: #edf0ef
+}
+body {
+ font: 12px/1.231 arial, Tahoma, helvetica, clean, sans-serif;
+ position: relative
+}
+a {
+ text-decoration: none;
+ color: #333
+}
+a:hover {
+ text-decoration: none
+}
+.orange, .orange a {
+ color: #f56f2f !important
+}
+.red, .red a {
+ color: red !important
+}
+.green, .green a {
+ color: green !important
+}
+.bold, .bold a {
+ font-weight: 600 !important
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/dist/base.rtl.ie.flow.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/dist/base.rtl.ie.flow.css
new file mode 100755
index 000000000..e06f6d18d
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/dist/base.rtl.ie.flow.css
@@ -0,0 +1,30 @@
+.w960{
+ min-width: 960px;
+}
+.w1020{
+ min-width: 1020px;
+}
+.l-flow-side{
+ width: 300px;
+ float: right;
+}
+.l-flow-main{
+ float: right;
+ width: 720px;
+}
+.w1020 .l-wrap{
+ width: 1020px;
+}
+.w960 .l-flow-main{
+ width: 660px;
+}
+
+.w1120 {
+ min-width: 1120px;
+}
+.w1120 .l-wrap {
+ width: 1120px;
+}
+.w1120 .l-flow-main {
+ width: 820px;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/old/module_common.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/old/module_common.css
new file mode 100755
index 000000000..d933832bf
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/old/module_common.css
@@ -0,0 +1,1375 @@
+@charset "utf-8";
+
+body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,figure,blockquote,th,td {
+ margin: 0;
+ padding: 0;
+}
+
+fieldset,img,iframe {
+ border: 0;
+}
+
+address,caption,cite,code,dfn,em,i,th,var {
+ font-style: normal;
+ font-weight: normal;
+}
+
+ul,li,ol {
+ list-style: none;
+}
+
+caption,th {
+ text-align: left;
+}
+
+h1,h2,h3,h4,h5,h6 {
+ font-size: 100%;
+ font-weight: normal;
+}
+
+html {
+ font-size: 100%;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+}
+
+body {
+ -webkit-text-size-adjust: none;
+ -webkit-tap-highlight-color: rgba(0,0,0,0);
+ -o-tap-highlight-color: rgba(0,0,0,0);
+ -moz-tap-highlight-color: rgba(0,0,0,0);
+ vertical-align: baseline;
+ background-color: transparent;
+ _zoom: expression(function(el){document.execCommand('BackgroundImageCache',false,true);
+ el.style.zoom = "1";
+}(this));
+}
+
+a {
+text-decoration: none;
+color: #333;
+}
+
+a:hover {
+text-decoration: none;
+}
+
+a:focus,a:hover,a:active,input:focus,textarea:focus {
+outline: 0;
+}
+
+a::-moz-focus-inner,input::-moz-focus-inner,button::-moz-focus-inner {
+border: 0;
+}
+
+button::-moz-focus-inner,input::-moz-focus-inner {
+padding: 0;
+border: 0;
+}
+
+img {
+-ms-interpolation-mode: bicubic;
+vertical-align: middle;
+}
+
+table {
+font-size: inherit;
+font: 100%;
+border-collapse: collapse;
+border-spacing: 0;
+}
+
+td {
+vertical-align: top;
+}
+
+th {
+text-align: inherit;
+}
+
+iframe {
+display: block;
+}
+
+svg:not(:root) {
+overflow: hidden;
+}
+
+textarea {
+resize: none;
+overflow: auto;
+vertical-align: top;
+}
+
+button,input,select,textarea {
+font-size: 100%;
+vertical-align: baseline;
+*vertical-align: middle;
+}
+
+button,input {
+*overflow: visible;
+line-height: normal;
+-webkit-box-sizing: content-box;
+-moz-box-sizing: content-box;
+box-sizing: content-box;
+}
+
+button {
+cursor: pointer;
+}
+
+input[type="button"],input[type="reset"],input[type="submit"] {
+-webkit-appearance: button;
+}
+
+input[type="search"] {
+-webkit-appearance: textfield;
+-webkit-box-sizing: content-box;
+-moz-box-sizing: content-box;
+box-sizing: content-box;
+}
+
+input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button {
+-webkit-appearance: none;
+}
+
+input[type="checkbox"],input[type="radio"] {
+box-sizing: border-box;
+padding: 0;
+*width: 13px;
+*height: 13px;
+}
+
+button[disabled],input[disabled] {
+cursor: default;
+}
+
+q {
+quotes: none;
+}
+
+q:before,q:after {
+content: '';
+content: none;
+}
+
+abbr,acronym {
+border: 0;
+font-variant: normal;
+}
+
+strong,.strong {
+font-weight: bold;
+}
+
+pre,.pre {
+white-space: pre;
+white-space: pre-wrap;
+white-space: pre-line;
+word-wrap: break-word;
+}
+
+h1,.h1 {
+font-size: 1.8em;
+}
+
+h2,.h2 {
+font-size: 1.6em;
+}
+
+h3,.h3 {
+font-size: 1.4em;
+}
+
+h4,.h4 {
+font-size: 1.2em;
+}
+
+h5,.h5 {
+font-size: 1em;
+}
+
+h6,.h6 {
+font-size: 1em;
+}
+
+small,.small {
+font-size: 75%;
+}
+
+sub,.sub,sup,.sup {
+font-size: 75%;
+line-height: 0;
+position: relative;
+vertical-align: baseline;
+}
+
+sup,.sup {
+top: -0.5em;
+}
+
+sub,.sub {
+bottom: -0.25em;
+}
+
+@charset "utf-8";
+
+article,aside,details,figcaption,figure,footer,header,hgroup,nav,section,summary {
+display: block;
+}
+
+audio,canvas,video {
+display: inline-block;
+*display: inline;
+*zoom: 1;
+}
+
+audio:not([controls]) {
+display: none;
+height: 0;
+}
+
+[hidden] {
+display: none;
+}
+
+@charset "utf-8";
+
+.unselect,i,.i,.icon {
+-moz-user-select: -moz-none;
+-khtml-user-select: none;
+-webkit-user-select: none;
+-o-user-select: none;
+user-select: none;
+}
+
+b,.b,.border {
+display: block;
+font: 0/0 a;
+}
+
+.s-ptn,.s-pvn,.s-pan {
+padding-top: 0!important;
+}
+
+.s-pts,.s-pvs,.s-pas {
+padding-top: 5px!important;
+}
+
+.s-ptm,.s-pvm,.s-pam {
+padding-top: 10px!important;
+}
+
+.s-ptl,.s-pvl,.s-pal {
+padding-top: 20px!important;
+}
+
+.s-prn,.s-phn,.s-pan {
+padding-right: 0!important;
+}
+
+.s-prs,.s-phs,.s-pas {
+padding-right: 5px!important;
+}
+
+.s-prm,.s-phm,.s-pam {
+padding-right: 10px!important;
+}
+
+.s-prl,.s-phl,.s-pal {
+padding-right: 20px!important;
+}
+
+.s-pbn,.s-pvn,.s-pan {
+padding-bottom: 0!important;
+}
+
+.s-pbs,.s-pvs,.s-pas {
+padding-bottom: 5px!important;
+}
+
+.s-pbm,.s-pvm,.s-pam {
+padding-bottom: 10px!important;
+}
+
+.s-pbl,.s-pvl,.s-pal {
+padding-bottom: 20px!important;
+}
+
+.s-pln,.s-phn,.s-pan {
+padding-left: 0!important;
+}
+
+.s-pls,.s-phs,.s-pas {
+padding-left: 5px!important;
+}
+
+.s-plm,.s-phm,.s-pam {
+padding-left: 10px!important;
+}
+
+.s-pll,.s-phl,.s-pal {
+padding-left: 20px!important;
+}
+
+.s-mtn,.s-mvn,.s-man {
+margin-top: 0!important;
+}
+
+.s-mts,.s-mvs,.s-mas {
+margin-top: 5px!important;
+}
+
+.s-mtm,.s-mvm,.s-mam {
+margin-top: 10px!important;
+}
+
+.s-mtl,.s-mvl,.s-mal {
+margin-top: 20px!important;
+}
+
+.s-mrn,.s-mhn,.s-man {
+margin-right: 0!important;
+}
+
+.s-mrs,.s-mhs,.s-mas {
+margin-right: 5px!important;
+}
+
+.s-mrm,.s-mhm,.s-mam {
+margin-right: 10px!important;
+}
+
+.s-mrl,.s-mhl,.s-mal {
+margin-right: 20px!important;
+}
+
+.s-mbn,.s-mvn,.s-man {
+margin-bottom: 0!important;
+}
+
+.s-mbs,.s-mvs,.s-mas {
+margin-bottom: 5px!important;
+}
+
+.s-mbm,.s-mvm,.s-mam {
+margin-bottom: 10px!important;
+}
+
+.s-mbl,.s-mvl,.s-mal {
+margin-bottom: 20px!important;
+}
+
+.s-mln,.s-mhn,.s-man {
+margin-left: 0!important;
+}
+
+.s-mls,.s-mhs,.s-mas {
+margin-left: 5px!important;
+}
+
+.s-mlm,.s-mhm,.s-mam {
+margin-left: 10px!important;
+}
+
+.s-mll,.s-mhl,.s-mal {
+margin-left: 20px!important;
+}
+
+.g-area-lazyload {
+visibility: hidden;
+}
+
+.hide {
+display: none!important;
+visibility: hidden;
+}
+
+.hide-layout {
+visibility: hidden;
+}
+
+.hide-text {
+border: 0;
+font: 0/0 a;
+text-shadow: none;
+color: transparent;
+background-color: transparent;
+}
+
+.hide-read,.hide-focus {
+border: 0;
+clip: rect(0 0 0 0);
+height: 1px;
+margin: -1px;
+overflow: hidden;
+padding: 0;
+position: absolute;
+width: 1px;
+}
+
+.hide-focus:active,.hide-focus:focus {
+clip: auto;
+height: auto;
+margin: 0;
+overflow: visible;
+position: static;
+width: auto;
+}
+
+.cf {
+zoom: 1;
+}
+
+.cf:before,.cf:after {
+content: '';
+display: table;
+}
+
+.cf:after {
+clear: both;
+}
+
+.fl,.fr {
+display: inline;
+}
+
+.fl {
+float: left;
+}
+
+.fr {
+float: right;
+}
+
+.ibw,.ibw-span {
+word-spacing: -0.35em;
+letter-spacing: -.32em;
+}
+
+.ib,.ibw .ib,.ibw-span span,s,.s,.space,.btn {
+display: -moz-inline-box;
+display: inline-block;
+*display: inline;
+*zoom: 1;
+}
+
+.ibw .ib,.ibw-span span {
+word-spacing: normal;
+letter-spacing: normal;
+vertical-align: top;
+}
+
+.mod {
+overflow: hidden;
+*overflow: visible;
+zoom: 1;
+}
+
+.mod .img {
+float: left;
+}
+
+.mod .img img {
+display: block;
+}
+
+.transparent {
+filter: alpha(opacity=50);
+-moz-opacity: .5;
+-khtml-opacity: .5;
+opacity: .5;
+}
+
+.triangle {
+width: 0;
+height: 0;
+overflow: hidden;
+font-size: 0;
+line-height: 0;
+border-color: transparent;
+border-style: dashed;
+border-width: 5px;
+}
+
+body {
+background: #edf0ef;
+font: 12px/1.231 arial,Tahoma,helvetica,clean,sans-serif;
+position: relative;
+}
+
+.l-fl {
+float: left;
+_margin-right: -3px;
+}
+
+.l-fr {
+float: right;
+_margin-left: -3px;
+}
+
+.l-ff,.l-g0 {
+overflow: hidden;
+zoom: 1;
+}
+
+.l-wrap {
+width: 960px;
+margin: 0 auto;
+}
+
+.l-g {
+width: 100%;
+zoom: 1;
+_zoom: expression(function(el){el.firstChild.style.marginLeft = 0;
+el.style.zoom = "1";
+}(this));
+}
+
+.l-g:before,.l-g:after {
+content: '';
+display: table;
+}
+
+.l-g:after {
+clear: both;
+}
+
+.l-g1-1 {
+float: none;
+}
+
+.l-g1-2 {
+width: 50%;
+}
+
+.l-g1-3 {
+width: 33.33333%;
+}
+
+.l-g2-3 {
+width: 66.66666%;
+}
+
+.l-g1-4 {
+width: 25%;
+}
+
+.l-g3-4 {
+width: 75%;
+}
+
+.l-g1-5 {
+width: 20%;
+}
+
+.l-g2-5 {
+width: 40%;
+}
+
+.l-g3-5 {
+width: 60%;
+}
+
+.l-g4-5 {
+width: 80%;
+}
+
+.l-g1-8 {
+width: 12.5%;
+}
+
+.l-g3-8 {
+width: 37.5%;
+}
+
+.l-g5-8 {
+width: 62.5%;
+}
+
+.l-g7-8 {
+width: 87.5%;
+}
+
+.l-g1-1,.l-g1-2,.l-g1-3,.l-g2-3,.l-g3-3,.l-g1-4,.l-g2-4,.l-g3-4,.l-g4-5,.l-g1-5,.l-g2-5,.l-g3-5,.l-g4-5,.l-g1-8,.l-g3-8,.l-g5-8,.l-g7-8 {
+float: left;
+_margin-right: -3px;
+}
+
+.l-g1,.l-g2,.l-g3,.l-g4,.l-g5,.l-g6,.l-g7,.l-g8,.l-g9,.l-g10,.l-g11,.l-g12 {
+display: inline;
+float: left;
+margin-left: 10px;
+-webkit-box-sizing: border-box;
+-moz-box-sizing: border-box;
+box-sizing: border-box;
+background: #aaa;
+}
+
+[class*="l-g"]:first-child {
+margin-left: 0;
+}
+
+.l-g1 {
+width: 70px;
+}
+
+.l-g2 {
+width: 150px;
+}
+
+.l-g3 {
+width: 230px;
+}
+
+.l-g4 {
+width: 310px;
+}
+
+.l-g5 {
+width: 390px;
+}
+
+.l-g6 {
+width: 470px;
+}
+
+.l-g7 {
+width: 550px;
+}
+
+.l-g8 {
+width: 630px;
+}
+
+.l-g9 {
+width: 710px;
+}
+
+.l-g10 {
+width: 790px;
+}
+
+.l-g11 {
+width: 870px;
+}
+
+.l-g12 {
+width: 950px;
+}
+
+.l-g_1 {
+margin-left: 80px!important;
+}
+
+.l-g_2 {
+margin-left: 160px!important;
+}
+
+.l-g_3 {
+margin-left: 240px!important;
+}
+
+.l-g_4 {
+margin-left: 320px!important;
+}
+
+.l-g_5 {
+margin-left: 400px!important;
+}
+
+.l-g_6 {
+margin-left: 480px!important;
+}
+
+.l-g_7 {
+margin-left: 560px!important;
+}
+
+.l-g_8 {
+margin-left: 640px!important;
+}
+
+.l-g_9 {
+margin-left: 720px!important;
+}
+
+.l-g_10 {
+margin-left: 800px!important;
+}
+
+.l-g_11 {
+margin-left: 880px!important;
+}
+
+.l-g_1,.l-g_2,.l-g_3,.l-g_4,.l-g_5,.l-g_6,.l-g_7,.l-g_8,.l-g_9,.l-g_10,.l-g_11 {
+margin-right: 10px;
+_zoom: expression(function(el){if(!el.nextSibling || el.nextSibling.nodeType!== 1) el.style.marginRight = 0;
+el.style.zoom = "1";
+}(this));
+}
+
+.l-wrap_l .l-wrap {
+width: 1130px;
+}
+
+.l-wrap_l .l-g1 {
+width: 85px;
+}
+
+.l-wrap_l .l-g2 {
+width: 180px;
+}
+
+.l-wrap_l .l-g3 {
+width: 275px;
+}
+
+.l-wrap_l .l-g4 {
+width: 370px;
+}
+
+.l-wrap_l .l-g5 {
+width: 465px;
+}
+
+.l-wrap_l .l-g6 {
+width: 560px;
+}
+
+.l-wrap_l .l-g7 {
+width: 655px;
+}
+
+.l-wrap_l .l-g8 {
+width: 750px;
+}
+
+.l-wrap_l .l-g9 {
+width: 845px;
+}
+
+.l-wrap_l .l-g10 {
+width: 940px;
+}
+
+.l-wrap_l .l-g11 {
+width: 1035px;
+}
+
+.l-wrap_l .l-g12 {
+width: 1130px;
+}
+
+.l-wrap_l .l-g_1 {
+margin-left: 95px!important;
+}
+
+.l-wrap_l .l-g_2 {
+margin-left: 190px!important;
+}
+
+.l-wrap_l .l-g_3 {
+margin-left: 285px!important;
+}
+
+.l-wrap_l .l-g_4 {
+margin-left: 380px!important;
+}
+
+.l-wrap_l .l-g_5 {
+margin-left: 475px!important;
+}
+
+.l-wrap_l .l-g_6 {
+margin-left: 570px!important;
+}
+
+.l-wrap_l .l-g_7 {
+margin-left: 665px!important;
+}
+
+.l-wrap_l .l-g_8 {
+margin-left: 760px!important;
+}
+
+.l-wrap_l .l-g_9 {
+margin-left: 855px!important;
+}
+
+.l-wrap_l .l-g_10 {
+margin-left: 950px!important;
+}
+
+.l-wrap_l .l-g_11 {
+margin-left: 1045px!important;
+}
+
+.box-prompt {
+background: #ebfcf7;
+border: 1px solid #ceded9;
+border-bottom: 1px solid #beccc7;
+position: absolute;
+color: #454545;
+-moz-border-radius: 2px;
+-webkit-border-radius: 2px;
+-o-border-radius: 2px;
+border-radius: 2px;
+z-index: 100;
+}
+
+.box-prompt-inner {
+border: 1px solid #FFF;
+border-bottom: 0;
+padding: 8px;
+overflow: hidden;
+}
+
+.sug-search {
+position: absolute;
+top: 28px;
+left: -1px;
+border: 1px solid #e3e4e6;
+border-top: 0 none;
+background: #fff;
+width: 528px;
+color: #454545;
+z-index: 999;
+white-space: nowrap;
+overflow: hidden;
+}
+
+.sug-shim {
+position: absolute;
+top: -1px;
+left: -1px;
+z-index: -1;
+filter: alpha(opacity="0");
+width: 430px;
+height: 250px;
+}
+
+.sug-search ol {
+font: bold 12px/23px Tahoma,arial,helvetica,clean,sans-serif;
+cursor: default;
+}
+
+.sug-search li {
+padding: 3px 10px;
+cursor: pointer;
+}
+
+.sug-search li b {
+font: inherit;
+display: inline;
+}
+
+.sug-search .sug-select {
+background: #f5f7f7;
+}
+
+.sug-search .top {
+font-weight: normal;
+color: #999;
+height: 21px;
+line-height: 21px;
+background: #eee;
+padding: 0 2px;
+}
+
+.sug-search .bot {
+position: relative;
+height: 19px;
+line-height: 19px;
+font-weight: normal;
+border-top: 1px solid #666;
+}
+
+.sug-search .sug-query {
+font-weight: normal;
+}
+
+.sug-search font {
+font-weight: normal!important;
+color: #333!important;
+}
+
+.ui-autocomplete {
+position: absolute;
+cursor: default;
+border: 1px solid #e3e4e6;
+}
+
+* html .ui-autocomplete {
+width: 1px;
+}
+
+.ui-menu {
+list-style: none;
+padding: 2px 0;
+margin: 0;
+display: block;
+float: left;
+}
+
+.ui-menu .ui-menu {
+margin-top: -3px;
+}
+
+.ui-menu .ui-menu-item {
+margin: 0;
+padding: 0;
+zoom: 1;
+float: left;
+clear: left;
+width: 100%;
+}
+
+.ui-menu .ui-menu-item a {
+text-decoration: none;
+display: block;
+line-height: 1.5;
+zoom: 1;
+}
+
+.ui-menu .ui-menu-item a.ui-state-hover,.ui-menu .ui-menu-item a.ui-state-active {
+font-weight: normal;
+border: 0;
+background-color: #f5f7f7;
+width: 100%;
+}
+
+.ui-widget-content {
+background-color: #fff;
+}
+
+.select_theme {
+display: block;
+clear: both;
+overflow: hidden;
+border-top: 1px solid #bee2d6;
+padding: 5px 15px;
+zoom: 1;
+}
+
+.select_theme li {
+width: 20px;
+height: 20px;
+background: #f00;
+float: left;
+margin-right: 5px;
+cursor: pointer;
+}
+
+.select_theme span {
+width: 20px;
+height: 20px;
+}
+
+.select_theme .skin_cur {
+background: #ff0;
+cursor: default;
+}
+
+.select_theme .skin_cur span {
+display: inline-block;
+}
+
+.select_theme .skin_1 {
+background: no-repeat;
+background-position: 0 0;
+}
+
+.select_theme .skin_1 span {
+background: no-repeat;
+background-position: -50px -25px;
+}
+
+.select_theme .skin_2 {
+background: no-repeat;
+background-position: -50px 0;
+}
+
+.select_theme .skin_2 span {
+background: no-repeat;
+background-position: 0 -25px;
+}
+
+.select_theme .skin_3 {
+background: no-repeat;
+background-position: -25px -25px;
+}
+
+.select_theme .skin_3 span {
+background: no-repeat;
+background-position: -25px 0;
+}
+
+.box-search_keyboard {
+cursor: pointer;
+padding: 1px;
+}
+
+#kbd {
+position: absolute!important;
+top: 130px;
+}
+
+.outerbox {
+max-height: 152px;
+}
+
+#kbd input.goog-button,#kbd button.goog-button {
+height: 16px;
+}
+
+.vt {
+vertical-align: top;
+}
+
+.pr {
+position: relative;
+}
+
+.grey {
+color: #bfbfbf;
+}
+
+.tc {
+text-align: center;
+}
+
+.s-pa15 {
+padding: 15px;
+}
+
+.mod-lottery {
+font-size: 14px;
+}
+
+.mod-lottery input,.mod-lottery textarea,.lottery-dropdownlist {
+border: 1px solid #d9d9d9;
+width: 142px;
+line-height: 24px;
+font-size: 12px;
+}
+
+.mod-lottery input {
+height: 24px;
+padding-left: 5px;
+padding-right: 25px;
+width: 112px;
+}
+
+#citypicker {
+cursor: pointer;
+}
+
+.mod-lottery textarea {
+width: 132px;
+height: 70px;
+line-height: 20px;
+padding: 2px 5px;
+}
+
+.mod-lottery label {
+display: inline-block;
+width: 58px;
+text-align: right;
+margin-right: 4px;
+}
+
+.lottery-search,.gradient-bg-green {
+width: 100%;
+height: 29px;
+line-height: 29px;
+display: block;
+color: #fff;
+font-weight: 600;
+text-align: center;
+background-color: #10b47d;
+background-image: -moz-linear-gradient(top,#10b47d,#3dc094 100.0%);
+background-image: -webkit-linear-gradient(top,#10b47d,#3dc094 100.0%);
+background-image: -o-linear-gradient(top,#10b47d,#3dc094 100.0%);
+background-image: -ms-linear-gradient(top,#10b47d,#3dc094 100.0%);
+background-image: linear-gradient(top,#10b47d,#3dc094 100.0%);
+-moz-border-radius: 2px;
+-webkit-border-radius: 2px;
+border-radius: 2px;
+}
+
+.mod-lottery .lottery-search {
+color: #fff;
+}
+
+.lottery-search:hover {
+background-color: #0fa875;
+background-image: -moz-linear-gradient(top,#0fa875,#3cba90 100.0%);
+background-image: -webkit-linear-gradient(top,#0fa875,#3cba90 100.0%);
+background-image: -o-linear-gradient(top,#0fa875,#3cba90 100.0%);
+background-image: -ms-linear-gradient(top,#0fa875,#3cba90 100.0%);
+background-image: linear-gradient(top,#0fa875,#3cba90 100.0%);
+-webkit-box-shadow: 1px 1px 2px 0 rgba(0,0,0,0.3);
+-moz-box-shadow: 1px 1px 2px 0 rgba(0,0,0,0.3);
+-o-box-shadow: 1px 1px 2px 0 rgba(0,0,0,0.3);
+-ms-box-shadow: 1px 1px 2px 0 rgba(0,0,0,0.3);
+box-shadow: 1px 1px 2px 0 rgba(0,0,0,0.3);
+}
+
+.lottery-search:active {
+background-color: #0fa875;
+background-image: -moz-linear-gradient(top,#3cba90,#0fa875 100.0%);
+background-image: -webkit-linear-gradient(top,#3cba90,#0fa875 100.0%);
+background-image: -o-linear-gradient(top,#3cba90,#0fa875 100.0%);
+background-image: -ms-linear-gradient(top,#3cba90,#0fa875 100.0%);
+background-image: linear-gradient(top,#3cba90,#0fa875 100.0%);
+}
+
+.mod-lottery .lottery-result a,.gradient-bg-gray {
+height: 20px;
+line-height: 20px;
+display: inline-block;
+color: #fff;
+text-align: center;
+padding: 0 10px;
+background-color: #b8b8b8;
+background-image: -moz-linear-gradient(top,#b8b8b8,#c9c9c9 100.0%);
+background-image: -webkit-linear-gradient(top,#b8b8b8,#c9c9c9 100.0%);
+background-image: -o-linear-gradient(top,#b8b8b8,#c9c9c9 100.0%);
+background-image: -ms-linear-gradient(top,#b8b8b8,#c9c9c9 100.0%);
+background-image: linear-gradient(top,#b8b8b8,#c9c9c9 100.0%);
+-moz-border-radius: 2px 2px 0 0;
+-webkit-border-radius: 2px 2px 0 0;
+border-radius: 2px 2px 0 0;
+}
+
+.mod-lottery .lottery-result a:hover {
+background-color: #8b8b8b;
+background-image: -moz-linear-gradient(top,#8b8b8b,#ababab 100.0%);
+background-image: -webkit-linear-gradient(top,#8b8b8b,#ababab 100.0%);
+background-image: -o-linear-gradient(top,#8b8b8b,#ababab 100.0%);
+background-image: -ms-linear-gradient(top,#8b8b8b,#ababab 100.0%);
+background-image: linear-gradient(top,#8b8b8b,#ababab 100.0%);
+-webkit-box-shadow: 1px 1px 2px 0 rgba(0,0,0,0.3);
+-moz-box-shadow: 1px 1px 2px 0 rgba(0,0,0,0.3);
+-o-box-shadow: 1px 1px 2px 0 rgba(0,0,0,0.3);
+-ms-box-shadow: 1px 1px 2px 0 rgba(0,0,0,0.3);
+box-shadow: 1px 1px 2px 0 rgba(0,0,0,0.3);
+}
+
+.mod-lottery .lottery-result a:active {
+background-color: #ababab;
+background-image: -moz-linear-gradient(top,#ababab,#8b8b8b 100.0%);
+background-image: -webkit-linear-gradient(top,#ababab,#8b8b8b 100.0%);
+background-image: -o-linear-gradient(top,#ababab,#8b8b8b 100.0%);
+background-image: -ms-linear-gradient(top,#ababab,#8b8b8b 100.0%);
+background-image: linear-gradient(top,#ababab,#8b8b8b 100.0%);
+}
+
+.mod-lottery .lottery-result-win a,.gradient-bg-orange {
+background-color: #f56f2f;
+background-image: -moz-linear-gradient(top,#f56f2f,#f88249 100.0%);
+background-image: -webkit-linear-gradient(top,#f56f2f,#f88249 100.0%);
+background-image: -o-linear-gradient(top,#f56f2f,#f88249 100.0%);
+background-image: -ms-linear-gradient(top,#f56f2f,#f88249 100.0%);
+background-image: linear-gradient(top,#f56f2f,#f88249 100.0%);
+}
+
+.mod-lottery .lottery-result-win a:hover {
+background-color: #f45e16;
+background-image: -moz-linear-gradient(top,#f45e16,#f77334 100.0%);
+background-image: -webkit-linear-gradient(top,#f45e16,#f77334 100.0%);
+background-image: -o-linear-gradient(top,#f45e16,#f77334 100.0%);
+background-image: -ms-linear-gradient(top,#f45e16,#f77334 100.0%);
+background-image: linear-gradient(top,#f45e16,#f77334 100.0%);
+}
+
+.mod-lottery .lottery-result-win a:active {
+background-color: #f45e16;
+background-image: -moz-linear-gradient(top,#f77334,#f45e16 100.0%);
+background-image: -webkit-linear-gradient(top,#f77334,#f45e16 100.0%);
+background-image: -o-linear-gradient(top,#f77334,#f45e16 100.0%);
+background-image: -ms-linear-gradient(top,#f77334,#f45e16 100.0%);
+background-image: linear-gradient(top,#f77334,#f45e16 100.0%);
+}
+
+.lottery-trigger,.ui-datepicker-trigger {
+background-color: #f5f7f7;
+background-image: -moz-linear-gradient(top,#f5f7f7,#fff 100.0%);
+background-image: -webkit-linear-gradient(top,#f5f7f7,#fff 100.0%);
+background-image: -o-linear-gradient(top,#f5f7f7,#fff 100.0%);
+background-image: -ms-linear-gradient(top,#f5f7f7,#fff 100.0%);
+background-image: linear-gradient(top,#f5f7f7,#fff 100.0%);
+border: 0;
+border-left: 1px solid #ebebeb;
+width: 23px;
+height: 24px;
+position: absolute;
+right: 1px;
+top: 1px;
+_top: 3px;
+cursor: pointer;
+}
+
+.lottery-trigger i,.ui-datepicker-trigger i {
+background: no-repeat;
+background-position: -16px -50px;
+display: block;
+width: 11px;
+height: 6px;
+position: relative;
+font-size: 0;
+}
+
+.lottery-trigger i {
+top: 9px;
+left: 6px;
+}
+
+.ui-datepicker-trigger {
+_overflow: hidden;
+}
+
+.ui-datepicker-trigger i {
+top: 0;
+*top: 7px;
+left: 6px;
+*left: -1px;
+}
+
+.lottery-dropdownlist {
+position: absolute;
+top: 26px;
+_top: 28px;
+right: 0;
+background: #fff;
+border-top: 0;
+text-indent: 5px;
+display: none;
+text-align: left;
+z-index: 2;
+}
+
+.lottery-dropdownlist li {
+cursor: pointer;
+}
+
+.lottery-dropdownlist li:hover {
+background: #e8eaeb;
+}
+
+.dropdown {
+position: relative;
+_zoom: 1;
+}
+
+.dropdown-trigger {
+border: 1px solid #d9d9d9;
+display: inline-block;
+}
+
+.dropdown-input {
+cursor: pointer;
+line-height: 24px;
+height: 24px;
+font-size: 12px;
+border: 0;
+}
+
+.dropdown-ltr .dropdown-input {
+padding-right: 25px;
+padding-left: 5px;
+}
+
+.dropdown-rtl .dropdown-input {
+padding-right: 5px;
+padding-left: 25px;
+}
+
+.dropdown-arrow {
+background-color: #f5f7f7;
+background-image: -moz-linear-gradient(top,#f5f7f7,#fff 100.0%);
+background-image: -webkit-linear-gradient(top,#f5f7f7,#fff 100.0%);
+background-image: -o-linear-gradient(top,#f5f7f7,#fff 100.0%);
+background-image: -ms-linear-gradient(top,#f5f7f7,#fff 100.0%);
+background-image: linear-gradient(top,#f5f7f7,#fff 100.0%);
+border: 0;
+width: 23px;
+height: 24px;
+position: absolute;
+top: 1px;
+_top: 2px;
+cursor: pointer;
+}
+
+.dropdown-ltr .dropdown-arrow {
+right: 1px;
+border-left: 1px solid #ebebeb;
+}
+
+.dropdown-rtl .dropdown-arrow {
+left: 1px;
+border-right: 1px solid #ebebeb;
+}
+
+.dropdown-arrow i {
+background: no-repeat;
+background-position: -32px -50px;
+display: block;
+width: 11px;
+height: 6px;
+position: relative;
+font-size: 0;
+top: 9px;
+}
+
+.dropdown-ltr .dropdown-arrow i {
+right: -6px;
+}
+
+.dropdown-rtl .dropdown-arrow i {
+left: -6px;
+}
+
+.dropdown-arrow-up i {
+background-position: 0 -50px;
+}
+
+.dropdown-list {
+position: absolute;
+top: 26px;
+_top: 27px;
+left: 0;
+background: #fff;
+border-top: 0;
+text-indent: 5px;
+display: none;
+z-index: 2;
+border: 1px solid #d9d9d9;
+border-top: 0;
+line-height: 24px;
+font-size: 12px;
+}
+
+.dropdown-list ul {
+max-height: 144px;
+overflow-y: auto;
+overflow-x: hidden;
+}
+
+.dropdown-list li {
+cursor: pointer;
+text-overflow: ellipsis;
+overflow: hidden;
+_width: 100%;
+white-space: nowrap;
+}
+
+.dropdown-list li:hover {
+background: #e8eaeb;
+}
+
+.select_theme .skin_1,.select_theme .skin_1 span,.select_theme .skin_2,.select_theme .skin_2 span,.select_theme .skin_3,.select_theme .skin_3 span,.lottery-trigger i,.ui-datepicker-trigger i,.dropdown-arrow i,.dropdown-arrow-up i {
+background-image: url("/static/common/pkg/module_common_zf89b3a17.png");
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/old/module_common.min.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/old/module_common.min.css
new file mode 100755
index 000000000..a86fec2ae
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/old/module_common.min.css
@@ -0,0 +1 @@
+@charset "utf-8";body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,figure,blockquote,th,td{margin:0;padding:0}fieldset,img,iframe{border:0}address,caption,cite,code,dfn,em,i,th,var{font-style:normal;font-weight:normal}ul,li,ol{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{-webkit-text-size-adjust:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-o-tap-highlight-color:rgba(0,0,0,0);-moz-tap-highlight-color:rgba(0,0,0,0);vertical-align:baseline;background-color:transparent;_zoom:expression(function(el){document.execCommand('BackgroundImageCache',false,true);el.style.zoom = "1"}(this))}a{text-decoration:none;color:#333}a:hover{text-decoration:none}a:focus,a:hover,a:active,input:focus,textarea:focus{outline:0}a::-moz-focus-inner,input::-moz-focus-inner,button::-moz-focus-inner{border:0}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}img{-ms-interpolation-mode:bicubic;vertical-align:middle}table{font-size:inherit;font:100%;border-collapse:collapse;border-spacing:0}td{vertical-align:top}th{text-align:inherit}iframe{display:block}svg:not(:root){overflow:hidden}textarea{resize:none;overflow:auto;vertical-align:top}button,input,select,textarea{font-size:100%;vertical-align:baseline;*vertical-align:middle}button,input{*overflow:visible;line-height:normal;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}button{cursor:pointer}input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;*width:13px;*height:13px}button[disabled],input[disabled]{cursor:default}q{quotes:none}q:before,q:after{content:'';content:none}abbr,acronym{border:0;font-variant:normal}strong,.strong{font-weight:bold}pre,.pre{white-space:pre;white-space:pre-wrap;white-space:pre-line;word-wrap:break-word}h1,.h1{font-size:1.8em}h2,.h2{font-size:1.6em}h3,.h3{font-size:1.4em}h4,.h4{font-size:1.2em}h5,.h5{font-size:1em}h6,.h6{font-size:1em}small,.small{font-size:75%}sub,.sub,sup,.sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup,.sup{top:-0.5em}sub,.sub{bottom:-0.25em}@charset "utf-8";article,aside,details,figcaption,figure,footer,header,hgroup,nav,section,summary{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none;height:0}[hidden]{display:none}@charset "utf-8";.unselect,i,.i,.icon{-moz-user-select:-moz-none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;user-select:none}b,.b,.border{display:block;font:0/0 a}.s-ptn,.s-pvn,.s-pan{padding-top:0!important}.s-pts,.s-pvs,.s-pas{padding-top:5px!important}.s-ptm,.s-pvm,.s-pam{padding-top:10px!important}.s-ptl,.s-pvl,.s-pal{padding-top:20px!important}.s-prn,.s-phn,.s-pan{padding-right:0!important}.s-prs,.s-phs,.s-pas{padding-right:5px!important}.s-prm,.s-phm,.s-pam{padding-right:10px!important}.s-prl,.s-phl,.s-pal{padding-right:20px!important}.s-pbn,.s-pvn,.s-pan{padding-bottom:0!important}.s-pbs,.s-pvs,.s-pas{padding-bottom:5px!important}.s-pbm,.s-pvm,.s-pam{padding-bottom:10px!important}.s-pbl,.s-pvl,.s-pal{padding-bottom:20px!important}.s-pln,.s-phn,.s-pan{padding-left:0!important}.s-pls,.s-phs,.s-pas{padding-left:5px!important}.s-plm,.s-phm,.s-pam{padding-left:10px!important}.s-pll,.s-phl,.s-pal{padding-left:20px!important}.s-mtn,.s-mvn,.s-man{margin-top:0!important}.s-mts,.s-mvs,.s-mas{margin-top:5px!important}.s-mtm,.s-mvm,.s-mam{margin-top:10px!important}.s-mtl,.s-mvl,.s-mal{margin-top:20px!important}.s-mrn,.s-mhn,.s-man{margin-right:0!important}.s-mrs,.s-mhs,.s-mas{margin-right:5px!important}.s-mrm,.s-mhm,.s-mam{margin-right:10px!important}.s-mrl,.s-mhl,.s-mal{margin-right:20px!important}.s-mbn,.s-mvn,.s-man{margin-bottom:0!important}.s-mbs,.s-mvs,.s-mas{margin-bottom:5px!important}.s-mbm,.s-mvm,.s-mam{margin-bottom:10px!important}.s-mbl,.s-mvl,.s-mal{margin-bottom:20px!important}.s-mln,.s-mhn,.s-man{margin-left:0!important}.s-mls,.s-mhs,.s-mas{margin-left:5px!important}.s-mlm,.s-mhm,.s-mam{margin-left:10px!important}.s-mll,.s-mhl,.s-mal{margin-left:20px!important}.g-area-lazyload{visibility:hidden}.hide{display:none!important;visibility:hidden}.hide-layout{visibility:hidden}.hide-text{border:0;font:0/0 a;text-shadow:none;color:transparent;background-color:transparent}.hide-read,.hide-focus{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.hide-focus:active,.hide-focus:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.cf{zoom:1}.cf:before,.cf:after{content:'';display:table}.cf:after{clear:both}.fl,.fr{display:inline}.fl{float:left}.fr{float:right}.ibw,.ibw-span{word-spacing:-0.35em;letter-spacing:-.32em}.ib,.ibw .ib,.ibw-span span,s,.s,.space,.btn{display:-moz-inline-box;display:inline-block;*display:inline;*zoom:1}.ibw .ib,.ibw-span span{word-spacing:normal;letter-spacing:normal;vertical-align:top}.mod{overflow:hidden;*overflow:visible;zoom:1}.mod .img{float:left}.mod .img img{display:block}.transparent{filter:alpha(opacity=50);-moz-opacity:.5;-khtml-opacity:.5;opacity:.5}.triangle{width:0;height:0;overflow:hidden;font-size:0;line-height:0;border-color:transparent;border-style:dashed;border-width:5px}body{background:#edf0ef;font:12px/1.231 arial,Tahoma,helvetica,clean,sans-serif;position:relative}.l-fl{float:left;_margin-right:-3px}.l-fr{float:right;_margin-left:-3px}.l-ff,.l-g0{overflow:hidden;zoom:1}.l-wrap{width:960px;margin:0 auto}.l-g{width:100%;zoom:1;_zoom:expression(function(el){el.firstChild.style.marginLeft = 0;el.style.zoom = "1"}(this))}.l-g:before,.l-g:after{content:'';display:table}.l-g:after{clear:both}.l-g1-1{float:none}.l-g1-2{width:50%}.l-g1-3{width:33.33333%}.l-g2-3{width:66.66666%}.l-g1-4{width:25%}.l-g3-4{width:75%}.l-g1-5{width:20%}.l-g2-5{width:40%}.l-g3-5{width:60%}.l-g4-5{width:80%}.l-g1-8{width:12.5%}.l-g3-8{width:37.5%}.l-g5-8{width:62.5%}.l-g7-8{width:87.5%}.l-g1-1,.l-g1-2,.l-g1-3,.l-g2-3,.l-g3-3,.l-g1-4,.l-g2-4,.l-g3-4,.l-g4-5,.l-g1-5,.l-g2-5,.l-g3-5,.l-g4-5,.l-g1-8,.l-g3-8,.l-g5-8,.l-g7-8{float:left;_margin-right:-3px}.l-g1,.l-g2,.l-g3,.l-g4,.l-g5,.l-g6,.l-g7,.l-g8,.l-g9,.l-g10,.l-g11,.l-g12{display:inline;float:left;margin-left:10px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;background:#aaa}[class*="l-g"]:first-child{margin-left:0}.l-g1{width:70px}.l-g2{width:150px}.l-g3{width:230px}.l-g4{width:310px}.l-g5{width:390px}.l-g6{width:470px}.l-g7{width:550px}.l-g8{width:630px}.l-g9{width:710px}.l-g10{width:790px}.l-g11{width:870px}.l-g12{width:950px}.l-g_1{margin-left:80px!important}.l-g_2{margin-left:160px!important}.l-g_3{margin-left:240px!important}.l-g_4{margin-left:320px!important}.l-g_5{margin-left:400px!important}.l-g_6{margin-left:480px!important}.l-g_7{margin-left:560px!important}.l-g_8{margin-left:640px!important}.l-g_9{margin-left:720px!important}.l-g_10{margin-left:800px!important}.l-g_11{margin-left:880px!important}.l-g_1,.l-g_2,.l-g_3,.l-g_4,.l-g_5,.l-g_6,.l-g_7,.l-g_8,.l-g_9,.l-g_10,.l-g_11{margin-right:10px;_zoom:expression(function(el){if(!el.nextSibling || el.nextSibling.nodeType!== 1) el.style.marginRight = 0;el.style.zoom = "1"}(this))}.l-wrap_l .l-wrap{width:1130px}.l-wrap_l .l-g1{width:85px}.l-wrap_l .l-g2{width:180px}.l-wrap_l .l-g3{width:275px}.l-wrap_l .l-g4{width:370px}.l-wrap_l .l-g5{width:465px}.l-wrap_l .l-g6{width:560px}.l-wrap_l .l-g7{width:655px}.l-wrap_l .l-g8{width:750px}.l-wrap_l .l-g9{width:845px}.l-wrap_l .l-g10{width:940px}.l-wrap_l .l-g11{width:1035px}.l-wrap_l .l-g12{width:1130px}.l-wrap_l .l-g_1{margin-left:95px!important}.l-wrap_l .l-g_2{margin-left:190px!important}.l-wrap_l .l-g_3{margin-left:285px!important}.l-wrap_l .l-g_4{margin-left:380px!important}.l-wrap_l .l-g_5{margin-left:475px!important}.l-wrap_l .l-g_6{margin-left:570px!important}.l-wrap_l .l-g_7{margin-left:665px!important}.l-wrap_l .l-g_8{margin-left:760px!important}.l-wrap_l .l-g_9{margin-left:855px!important}.l-wrap_l .l-g_10{margin-left:950px!important}.l-wrap_l .l-g_11{margin-left:1045px!important}.box-prompt{background:#ebfcf7;border:1px solid #ceded9;border-bottom:1px solid #beccc7;position:absolute;color:#454545;-moz-border-radius:2px;-webkit-border-radius:2px;-o-border-radius:2px;border-radius:2px;z-index:100}.box-prompt-inner{border:1px solid #FFF;border-bottom:0;padding:8px;overflow:hidden}.sug-search{position:absolute;top:28px;left:-1px;border:1px solid #e3e4e6;border-top:0 none;background:#fff;width:528px;color:#454545;z-index:999;white-space:nowrap;overflow:hidden}.sug-shim{position:absolute;top:-1px;left:-1px;z-index:-1;filter:alpha(opacity="0");width:430px;height:250px}.sug-search ol{font:bold 12px/23px Tahoma,arial,helvetica,clean,sans-serif;cursor:default}.sug-search li{padding:3px 10px;cursor:pointer}.sug-search li b{font:inherit;display:inline}.sug-search .sug-select{background:#f5f7f7}.sug-search .top{font-weight:normal;color:#999;height:21px;line-height:21px;background:#eee;padding:0 2px}.sug-search .bot{position:relative;height:19px;line-height:19px;font-weight:normal;border-top:1px solid #666}.sug-search .sug-query{font-weight:normal}.sug-search font{font-weight:normal!important;color:#333!important}.ui-autocomplete{position:absolute;cursor:default;border:1px solid #e3e4e6}* html .ui-autocomplete{width:1px}.ui-menu{list-style:none;padding:2px 0;margin:0;display:block;float:left}.ui-menu .ui-menu{margin-top:-3px}.ui-menu .ui-menu-item{margin:0;padding:0;zoom:1;float:left;clear:left;width:100%}.ui-menu .ui-menu-item a{text-decoration:none;display:block;line-height:1.5;zoom:1}.ui-menu .ui-menu-item a.ui-state-hover,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;border:0;background-color:#f5f7f7;width:100%}.ui-widget-content{background-color:#fff}.select_theme{display:block;clear:both;overflow:hidden;border-top:1px solid #bee2d6;padding:5px 15px;zoom:1}.select_theme li{width:20px;height:20px;background:#f00;float:left;margin-right:5px;cursor:pointer}.select_theme span{width:20px;height:20px}.select_theme .skin_cur{background:#ff0;cursor:default}.select_theme .skin_cur span{display:inline-block}.select_theme .skin_1{background: no-repeat;background-position:0 0 }.select_theme .skin_1 span{background: no-repeat;background-position:-50px -25px }.select_theme .skin_2{background: no-repeat;background-position:-50px 0 }.select_theme .skin_2 span{background: no-repeat;background-position:0 -25px }.select_theme .skin_3{background: no-repeat;background-position:-25px -25px }.select_theme .skin_3 span{background: no-repeat;background-position:-25px 0 }.box-search_keyboard{cursor:pointer;padding:1px}#kbd{position:absolute!important;top:130px}.outerbox{max-height:152px}#kbd input.goog-button,#kbd button.goog-button{height:16px}.vt{vertical-align:top}.pr{position:relative}.grey{color:#bfbfbf}.tc{text-align:center}.s-pa15{padding:15px}.mod-lottery{font-size:14px}.mod-lottery input,.mod-lottery textarea,.lottery-dropdownlist{border:1px solid #d9d9d9;width:142px;line-height:24px;font-size:12px}.mod-lottery input{height:24px;padding-left:5px;padding-right:25px;width:112px}#citypicker{cursor:pointer}.mod-lottery textarea{width:132px;height:70px;line-height:20px;padding:2px 5px}.mod-lottery label{display:inline-block;width:58px;text-align:right;margin-right:4px}.lottery-search,.gradient-bg-green{width:100%;height:29px;line-height:29px;display:block;color:#fff;font-weight:600;text-align:center;background-color:#10b47d;background-image:-moz-linear-gradient(top,#10b47d,#3dc094 100.0%);background-image:-webkit-linear-gradient(top,#10b47d,#3dc094 100.0%);background-image:-o-linear-gradient(top,#10b47d,#3dc094 100.0%);background-image:-ms-linear-gradient(top,#10b47d,#3dc094 100.0%);background-image:linear-gradient(top,#10b47d,#3dc094 100.0%);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}.mod-lottery .lottery-search{color:#fff}.lottery-search:hover{background-color:#0fa875;background-image:-moz-linear-gradient(top,#0fa875,#3cba90 100.0%);background-image:-webkit-linear-gradient(top,#0fa875,#3cba90 100.0%);background-image:-o-linear-gradient(top,#0fa875,#3cba90 100.0%);background-image:-ms-linear-gradient(top,#0fa875,#3cba90 100.0%);background-image:linear-gradient(top,#0fa875,#3cba90 100.0%);-webkit-box-shadow:1px 1px 2px 0 rgba(0,0,0,0.3);-moz-box-shadow:1px 1px 2px 0 rgba(0,0,0,0.3);-o-box-shadow:1px 1px 2px 0 rgba(0,0,0,0.3);-ms-box-shadow:1px 1px 2px 0 rgba(0,0,0,0.3);box-shadow:1px 1px 2px 0 rgba(0,0,0,0.3)}.lottery-search:active{background-color:#0fa875;background-image:-moz-linear-gradient(top,#3cba90,#0fa875 100.0%);background-image:-webkit-linear-gradient(top,#3cba90,#0fa875 100.0%);background-image:-o-linear-gradient(top,#3cba90,#0fa875 100.0%);background-image:-ms-linear-gradient(top,#3cba90,#0fa875 100.0%);background-image:linear-gradient(top,#3cba90,#0fa875 100.0%)}.mod-lottery .lottery-result a,.gradient-bg-gray{height:20px;line-height:20px;display:inline-block;color:#fff;text-align:center;padding:0 10px;background-color:#b8b8b8;background-image:-moz-linear-gradient(top,#b8b8b8,#c9c9c9 100.0%);background-image:-webkit-linear-gradient(top,#b8b8b8,#c9c9c9 100.0%);background-image:-o-linear-gradient(top,#b8b8b8,#c9c9c9 100.0%);background-image:-ms-linear-gradient(top,#b8b8b8,#c9c9c9 100.0%);background-image:linear-gradient(top,#b8b8b8,#c9c9c9 100.0%);-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0}.mod-lottery .lottery-result a:hover{background-color:#8b8b8b;background-image:-moz-linear-gradient(top,#8b8b8b,#ababab 100.0%);background-image:-webkit-linear-gradient(top,#8b8b8b,#ababab 100.0%);background-image:-o-linear-gradient(top,#8b8b8b,#ababab 100.0%);background-image:-ms-linear-gradient(top,#8b8b8b,#ababab 100.0%);background-image:linear-gradient(top,#8b8b8b,#ababab 100.0%);-webkit-box-shadow:1px 1px 2px 0 rgba(0,0,0,0.3);-moz-box-shadow:1px 1px 2px 0 rgba(0,0,0,0.3);-o-box-shadow:1px 1px 2px 0 rgba(0,0,0,0.3);-ms-box-shadow:1px 1px 2px 0 rgba(0,0,0,0.3);box-shadow:1px 1px 2px 0 rgba(0,0,0,0.3)}.mod-lottery .lottery-result a:active{background-color:#ababab;background-image:-moz-linear-gradient(top,#ababab,#8b8b8b 100.0%);background-image:-webkit-linear-gradient(top,#ababab,#8b8b8b 100.0%);background-image:-o-linear-gradient(top,#ababab,#8b8b8b 100.0%);background-image:-ms-linear-gradient(top,#ababab,#8b8b8b 100.0%);background-image:linear-gradient(top,#ababab,#8b8b8b 100.0%)}.mod-lottery .lottery-result-win a,.gradient-bg-orange{background-color:#f56f2f;background-image:-moz-linear-gradient(top,#f56f2f,#f88249 100.0%);background-image:-webkit-linear-gradient(top,#f56f2f,#f88249 100.0%);background-image:-o-linear-gradient(top,#f56f2f,#f88249 100.0%);background-image:-ms-linear-gradient(top,#f56f2f,#f88249 100.0%);background-image:linear-gradient(top,#f56f2f,#f88249 100.0%)}.mod-lottery .lottery-result-win a:hover{background-color:#f45e16;background-image:-moz-linear-gradient(top,#f45e16,#f77334 100.0%);background-image:-webkit-linear-gradient(top,#f45e16,#f77334 100.0%);background-image:-o-linear-gradient(top,#f45e16,#f77334 100.0%);background-image:-ms-linear-gradient(top,#f45e16,#f77334 100.0%);background-image:linear-gradient(top,#f45e16,#f77334 100.0%)}.mod-lottery .lottery-result-win a:active{background-color:#f45e16;background-image:-moz-linear-gradient(top,#f77334,#f45e16 100.0%);background-image:-webkit-linear-gradient(top,#f77334,#f45e16 100.0%);background-image:-o-linear-gradient(top,#f77334,#f45e16 100.0%);background-image:-ms-linear-gradient(top,#f77334,#f45e16 100.0%);background-image:linear-gradient(top,#f77334,#f45e16 100.0%)}.lottery-trigger,.ui-datepicker-trigger{background-color:#f5f7f7;background-image:-moz-linear-gradient(top,#f5f7f7,#fff 100.0%);background-image:-webkit-linear-gradient(top,#f5f7f7,#fff 100.0%);background-image:-o-linear-gradient(top,#f5f7f7,#fff 100.0%);background-image:-ms-linear-gradient(top,#f5f7f7,#fff 100.0%);background-image:linear-gradient(top,#f5f7f7,#fff 100.0%);border:0;border-left:1px solid #ebebeb;width:23px;height:24px;position:absolute;right:1px;top:1px;_top:3px;cursor:pointer}.lottery-trigger i,.ui-datepicker-trigger i{background: no-repeat;background-position:-16px -50px ;display:block;width:11px;height:6px;position:relative;font-size:0}.lottery-trigger i{top:9px;left:6px}.ui-datepicker-trigger{_overflow:hidden}.ui-datepicker-trigger i{top:0;*top:7px;left:6px;*left:-1px}.lottery-dropdownlist{position:absolute;top:26px;_top:28px;right:0;background:#fff;border-top:0;text-indent:5px;display:none;text-align:left;z-index:2}.lottery-dropdownlist li{cursor:pointer}.lottery-dropdownlist li:hover{background:#e8eaeb}.dropdown{position:relative;_zoom:1}.dropdown-trigger{border:1px solid #d9d9d9;display:inline-block}.dropdown-input{cursor:pointer;line-height:24px;height:24px;font-size:12px;border:0}.dropdown-ltr .dropdown-input{padding-right:25px;padding-left:5px}.dropdown-rtl .dropdown-input{padding-right:5px;padding-left:25px}.dropdown-arrow{background-color:#f5f7f7;background-image:-moz-linear-gradient(top,#f5f7f7,#fff 100.0%);background-image:-webkit-linear-gradient(top,#f5f7f7,#fff 100.0%);background-image:-o-linear-gradient(top,#f5f7f7,#fff 100.0%);background-image:-ms-linear-gradient(top,#f5f7f7,#fff 100.0%);background-image:linear-gradient(top,#f5f7f7,#fff 100.0%);border:0;width:23px;height:24px;position:absolute;top:1px;_top:2px;cursor:pointer}.dropdown-ltr .dropdown-arrow{right:1px;border-left:1px solid #ebebeb}.dropdown-rtl .dropdown-arrow{left:1px;border-right:1px solid #ebebeb}.dropdown-arrow i{background: no-repeat;background-position:-32px -50px ;display:block;width:11px;height:6px;position:relative;font-size:0;top:9px}.dropdown-ltr .dropdown-arrow i{right:-6px}.dropdown-rtl .dropdown-arrow i{left:-6px}.dropdown-arrow-up i{background-position:0 -50px }.dropdown-list{position:absolute;top:26px;_top:27px;left:0;background:#fff;border-top:0;text-indent:5px;display:none;z-index:2;border:1px solid #d9d9d9;border-top:0;line-height:24px;font-size:12px}.dropdown-list ul{max-height:144px;overflow-y:auto;overflow-x:hidden}.dropdown-list li{cursor:pointer;text-overflow:ellipsis;overflow:hidden;_width:100%;white-space:nowrap}.dropdown-list li:hover{background:#e8eaeb}.select_theme .skin_1,.select_theme .skin_1 span,.select_theme .skin_2,.select_theme .skin_2 span,.select_theme .skin_3,.select_theme .skin_3 span,.lottery-trigger i,.ui-datepicker-trigger i,.dropdown-arrow i,.dropdown-arrow-up i{background-image:url("/static/common/pkg/module_common_zf89b3a17.png")}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/package.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/package.json
new file mode 100755
index 000000000..d8ebb4e75
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/package.json
@@ -0,0 +1,31 @@
+{
+ "name": "base-css",
+ "version": "0.0.1",
+ "description": "base-css",
+ "dependencies": {},
+ "devDependencies": {
+ "grunt": "~0.4.1",
+ "grunt-contrib-copy": "~0.4.1",
+ "grunt-contrib-concat": "~0.1.3",
+ "grunt-contrib-uglify": "~0.2.0",
+ "grunt-contrib-cssmin": "~0.6.0",
+ "grunt-contrib-connect": "~0.2.0",
+ "grunt-contrib-clean": "~0.4.0",
+ "grunt-contrib-htmlmin": "~0.1.3",
+ "grunt-contrib-watch": "~0.4.0",
+ "grunt-usemin": "~0.1.12",
+ "grunt-mocha": "~0.3.0",
+ "grunt-open": "~0.2.0",
+ "grunt-svgmin": "~0.1.0",
+ "grunt-concurrent": "~0.1.0",
+ "grunt-contrib-stylus": "~0.5.1",
+ "grunt-shell": "~0.3.0",
+ "matchdep": "~0.1.1"
+ },
+ "scripts": {
+ "build": "grunt build"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/default.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/default.css
new file mode 100755
index 000000000..c642f485e
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/default.css
@@ -0,0 +1,14 @@
+html {
+ background: #edf0ef;
+}
+body {
+ font: 12px/1.231 arial,Tahoma,helvetica,clean,sans-serif;
+ position: relative;
+}
+a {
+ text-decoration: none;
+ color: #333
+}
+a:hover {
+ text-decoration: none
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/icon.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/icon.css
new file mode 100755
index 000000000..29809f099
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/icon.css
@@ -0,0 +1,34 @@
+/** from common.css
+常用的命名样式,方便PM在CMS中配置 */
+
+/*special status of links*/
+
+/*large*/
+/*.i-l{}*/
+/*media*/
+/*.i-m{} */
+/*small*/
+/*.i-s{}*/
+
+.icon-hot, .icon-new, .icon-new_red{
+ display: inline-block;
+ margin-left: 3px;
+ cursor: pointer;
+ _position: absolute;
+ font-size:0;
+}
+.icon-hot{
+ width: 30px;
+ height: 11px;
+ background: url(../img/i-hot.png?__sprite) no-repeat;
+}
+.icon-new{
+ width: 30px;
+ height: 11px;
+ background: url(../img/i-new.png?__sprite) no-repeat;
+}
+.icon-new_red{
+ width: 25px;
+ height: 15px;
+ background: url(../img/i-big-new.png?__sprite) no-repeat;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/icon.ie.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/icon.ie.css
new file mode 100755
index 000000000..37e66e6d6
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/icon.ie.css
@@ -0,0 +1,6 @@
+.icon-hot, .icon-new, .icon-new_red{
+ display: inline-block;
+ *display: inline;
+ zoom: 1;
+ _position: absolute;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/icon.rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/icon.rtl.css
new file mode 100755
index 000000000..08ef6f827
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/icon.rtl.css
@@ -0,0 +1,26 @@
+/** from common.css
+常用的命名样式,方便PM在CMS中配置 */
+
+/*special status of links*/
+
+.icon-hot, .icon-new, .icon-new_red{
+ display: inline-block;
+ margin-right: 3px;
+ cursor: pointer;
+ font-size:0;
+}
+.icon-hot{
+ width: 30px;
+ height: 11px;
+ background: url(../img/i-hot.png?__sprite) no-repeat;
+}
+.icon-new{
+ width: 30px;
+ height: 11px;
+ background: url(../img/i-new.png?__sprite) no-repeat;
+}
+.icon-new_red{
+ width: 25px;
+ height: 15px;
+ background: url(../img/i-big-new.png?__sprite) no-repeat;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/icon.rtl.ie.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/icon.rtl.ie.css
new file mode 100755
index 000000000..8b6bd0866
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/icon.rtl.ie.css
@@ -0,0 +1,6 @@
+.icon-hot, .icon-new, .icon-new_red{
+ display: inline-block;
+ *display: inline;
+ zoom: 1;
+ _position: absolute;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/layout.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/layout.css
new file mode 100755
index 000000000..a528e485f
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/layout.css
@@ -0,0 +1,297 @@
+.l-fl {
+ float: left;
+}
+
+.l-fr {
+ float: right;
+}
+
+.l-ff, .l-g0 {
+ overflow: hidden;
+}
+
+.l-wrap {
+ width: 960px;
+ margin: 0 auto
+}
+
+/**********
+* layout
+*/
+
+.l-g {
+ width: 100%;
+}
+
+.l-g:before, .l-g:after {
+ content: '';
+ display: table
+}
+
+.l-g:after {
+ clear: both
+}
+
+.l-g1-1 {
+ float: none
+}
+
+.l-g1-2 {
+ width: 50%
+}
+
+.l-g1-3 {
+ width: 33.33333%
+}
+
+.l-g2-3 {
+ width: 66.66666%
+}
+
+.l-g1-4 {
+ width: 25%
+}
+
+.l-g3-4 {
+ width: 75%
+}
+
+.l-g1-5 {
+ width: 20%
+}
+
+.l-g2-5 {
+ width: 40%
+}
+
+.l-g3-5 {
+ width: 60%
+}
+
+.l-g4-5 {
+ width: 80%
+}
+
+.l-g1-8 {
+ width: 12.5%
+}
+
+.l-g3-8 {
+ width: 37.5%
+}
+
+.l-g5-8 {
+ width: 62.5%
+}
+
+.l-g7-8 {
+ width: 87.5%
+}
+
+.l-g1-1, .l-g1-2, .l-g1-3, .l-g2-3, .l-g3-3, .l-g1-4, .l-g2-4, .l-g3-4, .l-g4-5, .l-g1-5, .l-g2-5, .l-g3-5, .l-g4-5, .l-g1-8, .l-g3-8, .l-g5-8, .l-g7-8 {
+ float: left;
+}
+
+.l-g1, .l-g2, .l-g3, .l-g4, .l-g5, .l-g6, .l-g7, .l-g8, .l-g9, .l-g10, .l-g11, .l-g12 {
+ float: left;
+ margin-left: 10px;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+[class*="l-g"]:first-child {
+ margin-left: 0
+}
+
+.l-g1 {
+ width: 70px
+}
+
+.l-g2 {
+ width: 150px
+}
+
+.l-g3 {
+ width: 230px
+}
+
+.l-g4 {
+ width: 310px
+}
+
+.l-g5 {
+ width: 390px
+}
+
+.l-g6 {
+ width: 470px
+}
+
+.l-g7 {
+ width: 550px
+}
+
+.l-g8 {
+ width: 630px
+}
+
+.l-g9 {
+ width: 710px
+}
+
+.l-g10 {
+ width: 790px
+}
+
+.l-g11 {
+ width: 870px
+}
+
+.l-g12 {
+ width: 950px
+}
+
+.l-g_1 {
+ margin-left: 80px !important
+}
+
+.l-g_2 {
+ margin-left: 160px !important
+}
+
+.l-g_3 {
+ margin-left: 240px !important
+}
+
+.l-g_4 {
+ margin-left: 320px !important
+}
+
+.l-g_5 {
+ margin-left: 400px !important
+}
+
+.l-g_6 {
+ margin-left: 480px !important
+}
+
+.l-g_7 {
+ margin-left: 560px !important
+}
+
+.l-g_8 {
+ margin-left: 640px !important
+}
+
+.l-g_9 {
+ margin-left: 720px !important
+}
+
+.l-g_10 {
+ margin-left: 800px !important
+}
+
+.l-g_11 {
+ margin-left: 880px !important
+}
+
+.l-g_1, .l-g_2, .l-g_3, .l-g_4, .l-g_5, .l-g_6, .l-g_7, .l-g_8, .l-g_9, .l-g_10, .l-g_11 {
+ margin-right: 10px;
+}
+
+/*.l-wrap_l .l-wrap {
+ width: 1130px
+}
+
+.l-wrap_l .l-g1 {
+ width: 85px
+}
+
+.l-wrap_l .l-g2 {
+ width: 180px
+}
+
+.l-wrap_l .l-g3 {
+ width: 275px
+}
+
+.l-wrap_l .l-g4 {
+ width: 370px
+}
+
+.l-wrap_l .l-g5 {
+ width: 465px
+}
+
+.l-wrap_l .l-g6 {
+ width: 560px
+}
+
+.l-wrap_l .l-g7 {
+ width: 655px
+}
+
+.l-wrap_l .l-g8 {
+ width: 750px
+}
+
+.l-wrap_l .l-g9 {
+ width: 845px
+}
+
+.l-wrap_l .l-g10 {
+ width: 940px
+}
+
+.l-wrap_l .l-g11 {
+ width: 1035px
+}
+
+.l-wrap_l .l-g12 {
+ width: 1130px
+}
+
+.l-wrap_l .l-g_1 {
+ margin-left: 95px !important
+}
+
+.l-wrap_l .l-g_2 {
+ margin-left: 190px !important
+}
+
+.l-wrap_l .l-g_3 {
+ margin-left: 285px !important
+}
+
+.l-wrap_l .l-g_4 {
+ margin-left: 380px !important
+}
+
+.l-wrap_l .l-g_5 {
+ margin-left: 475px !important
+}
+
+.l-wrap_l .l-g_6 {
+ margin-left: 570px !important
+}
+
+.l-wrap_l .l-g_7 {
+ margin-left: 665px !important
+}
+
+.l-wrap_l .l-g_8 {
+ margin-left: 760px !important
+}
+
+.l-wrap_l .l-g_9 {
+ margin-left: 855px !important
+}
+
+.l-wrap_l .l-g_10 {
+ margin-left: 950px !important
+}
+
+.l-wrap_l .l-g_11 {
+ margin-left: 1045px !important
+}*/
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/layout.ie.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/layout.ie.css
new file mode 100755
index 000000000..72548e0fe
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/layout.ie.css
@@ -0,0 +1,26 @@
+.l-fl {
+ _margin-right: -3px
+}
+
+.l-fr {
+ _margin-left: -3px
+}
+
+.l-ff, .l-g0 {
+ zoom: 1
+}
+
+.l-g {
+ zoom: 1;
+ _zoom: expression(function(el){el.firstChild.style.marginLeft = 0;el.style.zoom = "1"}(this))
+}
+.l-g1-1, .l-g1-2, .l-g1-3, .l-g2-3, .l-g3-3, .l-g1-4, .l-g2-4, .l-g3-4, .l-g4-5, .l-g1-5, .l-g2-5, .l-g3-5, .l-g4-5, .l-g1-8, .l-g3-8, .l-g5-8, .l-g7-8 {
+ _margin-right: -3px
+}
+.l-g1, .l-g2, .l-g3, .l-g4, .l-g5, .l-g6, .l-g7, .l-g8, .l-g9, .l-g10, .l-g11, .l-g12 {
+ display: inline;
+}
+
+.l-g_1, .l-g_2, .l-g_3, .l-g_4, .l-g_5, .l-g_6, .l-g_7, .l-g_8, .l-g_9, .l-g_10, .l-g_11 {
+ _zoom: expression(function(el){if(!el.nextSibling || el.nextSibling.nodeType!== 1) el.style.marginRight = 0;el.style.zoom = "1"}(this))
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/layout.rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/layout.rtl.css
new file mode 100755
index 000000000..2de0d43e2
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/layout.rtl.css
@@ -0,0 +1,204 @@
+.l-fl {
+ float: left;
+}
+
+.l-fr {
+ float: right;
+}
+
+.l-ff, .l-g0 {
+ overflow: hidden;
+}
+
+.l-wrap {
+ width: 960px;
+ margin: 0 auto
+}
+
+/**********
+* layout
+*/
+
+.l-g {
+ width: 100%;
+}
+
+.l-g:before, .l-g:after {
+ content: '';
+ display: table
+}
+
+.l-g:after {
+ clear: both
+}
+
+.l-g1-1 {
+ float: none
+}
+
+.l-g1-2 {
+ width: 50%
+}
+
+.l-g1-3 {
+ width: 33.33333%
+}
+
+.l-g2-3 {
+ width: 66.66666%
+}
+
+.l-g1-4 {
+ width: 25%
+}
+
+.l-g3-4 {
+ width: 75%
+}
+
+.l-g1-5 {
+ width: 20%
+}
+
+.l-g2-5 {
+ width: 40%
+}
+
+.l-g3-5 {
+ width: 60%
+}
+
+.l-g4-5 {
+ width: 80%
+}
+
+.l-g1-8 {
+ width: 12.5%
+}
+
+.l-g3-8 {
+ width: 37.5%
+}
+
+.l-g5-8 {
+ width: 62.5%
+}
+
+.l-g7-8 {
+ width: 87.5%
+}
+
+.l-g1-1, .l-g1-2, .l-g1-3, .l-g2-3, .l-g3-3, .l-g1-4, .l-g2-4, .l-g3-4, .l-g4-5, .l-g1-5, .l-g2-5, .l-g3-5, .l-g4-5, .l-g1-8, .l-g3-8, .l-g5-8, .l-g7-8 {
+ float: right;
+ _margin-left: -3px !important;
+}
+
+.l-g1, .l-g2, .l-g3, .l-g4, .l-g5, .l-g6, .l-g7, .l-g8, .l-g9, .l-g10, .l-g11, .l-g12 {
+ display: inline;
+ float: right;
+ margin-right: 10px;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+[class*="l-g"]:first-child {
+ margin-right: 0
+}
+
+.l-g1 {
+ width: 70px
+}
+
+.l-g2 {
+ width: 150px
+}
+
+.l-g3 {
+ width: 230px
+}
+
+.l-g4 {
+ width: 310px
+}
+
+.l-g5 {
+ width: 390px
+}
+
+.l-g6 {
+ width: 470px
+}
+
+.l-g7 {
+ width: 550px
+}
+
+.l-g8 {
+ width: 630px
+}
+
+.l-g9 {
+ width: 710px
+}
+
+.l-g10 {
+ width: 790px
+}
+
+.l-g11 {
+ width: 870px
+}
+
+.l-g12 {
+ width: 950px
+}
+
+.l-g_1 {
+ margin-right: 80px !important;
+}
+
+.l-g_2 {
+ margin-right: 160px !important;
+}
+
+.l-g_3 {
+ margin-right: 240px !important;
+}
+
+.l-g_4 {
+ margin-right: 320px !important;
+}
+
+.l-g_5 {
+ margin-right: 400px !important;
+}
+
+.l-g_6 {
+ margin-right: 480px !important;
+ margin-left: 0 !important
+}
+
+.l-g_7 {
+ margin-right: 560px !important;
+}
+
+.l-g_8 {
+ margin-right: 640px !important;
+}
+
+.l-g_9 {
+ margin-right: 720px !important;
+}
+
+.l-g_10 {
+ margin-right: 800px !important;
+}
+
+.l-g_11 {
+ margin-right: 880px !important;
+}
+
+.l-g_1, .l-g_2, .l-g_3, .l-g_4, .l-g_5, .l-g_6, .l-g_7, .l-g_8, .l-g_9, .l-g_10, .l-g_11 {
+ margin-left: 10px;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/layout.rtl.ie.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/layout.rtl.ie.css
new file mode 100755
index 000000000..6eb7aef81
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/layout.rtl.ie.css
@@ -0,0 +1,18 @@
+.l-ff, .l-g0 {
+ zoom: 1
+}
+
+.l-g {
+ zoom: 1;
+ _zoom: expression(function(el){el.firstChild.style.marginRight = 0;el.style.zoom = "1"}(this))
+}
+.l-g1-1, .l-g1-2, .l-g1-3, .l-g2-3, .l-g3-3, .l-g1-4, .l-g2-4, .l-g3-4, .l-g4-5, .l-g1-5, .l-g2-5, .l-g3-5, .l-g4-5, .l-g1-8, .l-g3-8, .l-g5-8, .l-g7-8 {
+ _margin-left: -3px
+}
+.l-g1, .l-g2, .l-g3, .l-g4, .l-g5, .l-g6, .l-g7, .l-g8, .l-g9, .l-g10, .l-g11, .l-g12 {
+ display: inline;
+}
+
+.l-g_1, .l-g_2, .l-g_3, .l-g_4, .l-g_5, .l-g_6, .l-g_7, .l-g_8, .l-g_9, .l-g_10, .l-g_11 {
+ _zoom: expression(function(el){if(!el.nextSibling || el.nextSibling.nodeType!== 1) el.style.marginLeft = 0;el.style.zoom = "1"}(this))
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/link.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/link.css
new file mode 100755
index 000000000..45fd262c9
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/link.css
@@ -0,0 +1,5 @@
+.orange,.orange a{color:#f56f2f!important;}
+.red,.red a{color:#f00!important;}
+.green,.green a{color:#008000!important;}
+.bold,.bold a{font-weight:600!important;}
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/reset.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/reset.css
new file mode 100755
index 000000000..1e2cdc9ce
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/reset.css
@@ -0,0 +1,133 @@
+@charset "utf-8";
+
+
+/***********
+* reset
+*/
+
+* {
+ margin: 0;
+ padding: 0;
+}
+
+fieldset, img, iframe {
+ border: 0
+}
+
+address, caption, cite, code, dfn, em, i, th, var {
+ font-style: normal;
+ font-weight: normal
+}
+
+ul, li, ol {
+ list-style: none
+}
+
+caption, th {
+ text-align: left
+}
+
+h1, h2, h3, h4, h5, h6 {
+ font-size: 100%;
+ font-weight: normal
+}
+
+html {
+ font-size: 100%;
+}
+
+body {
+ vertical-align: baseline;
+ background-color: transparent;
+}
+
+a:focus, a:hover, a:active, input:focus, textarea:focus {
+ outline: 0
+}
+
+img {
+ vertical-align: middle
+}
+
+table {
+ font-size: inherit;
+ font: 100%;
+ border-collapse: collapse;
+ border-spacing: 0
+}
+
+td {
+ vertical-align: top
+}
+
+th {
+ text-align: inherit
+}
+
+iframe {
+ display: block
+}
+
+textarea {
+ resize: none;
+ overflow: auto;
+ vertical-align: top
+}
+
+button, input, select, textarea {
+ font-size: 100%;
+ vertical-align: baseline;
+}
+
+button, input {
+ *overflow: visible;
+ line-height: normal;
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box
+}
+
+button {
+ cursor: pointer
+}
+
+button[disabled], input[disabled] {
+ cursor: default
+}
+
+abbr, acronym {
+ border: 0;
+ font-variant: normal
+}
+
+strong, .strong {
+ font-weight: bold
+}
+
+/*h1, .h1 {
+ font-size: 1.8em
+}
+
+h2, .h2 {
+ font-size: 1.6em
+}
+
+h3, .h3 {
+ font-size: 1.4em
+}
+
+h4, .h4 {
+ font-size: 1.2em
+}
+
+h5, .h5 {
+ font-size: 1em
+}
+
+h6, .h6 {
+ font-size: 1em
+}
+
+small, .small {
+ font-size: 75%
+}*/
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/reset.ie.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/reset.ie.css
new file mode 100755
index 000000000..d3b3126e6
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/reset.ie.css
@@ -0,0 +1,13 @@
+body {
+ _zoom: expression(function(el){document.execCommand('BackgroundImageCache',false,true);el.style.zoom = "1"}(this))
+}
+img {
+ -ms-interpolation-mode: bicubic;
+}
+button, input, select, textarea {
+ *vertical-align: middle
+}
+
+button, input {
+ *overflow: visible;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/tool.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/tool.css
new file mode 100755
index 000000000..c722163e1
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/tool.css
@@ -0,0 +1,246 @@
+.unselect, i, .i, .icon {
+ -moz-user-select: -moz-none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+ user-select: none
+}
+
+b, .b, .border {
+ display: block;
+ font: 0/0 a
+}
+
+.s-ptn, .s-pvn, .s-pan {
+ padding-top: 0 !important
+}
+
+.s-pts, .s-pvs, .s-pas {
+ padding-top: 5px !important
+}
+
+.s-ptm, .s-pvm, .s-pam {
+ padding-top: 10px !important
+}
+
+.s-ptl, .s-pvl, .s-pal {
+ padding-top: 20px !important
+}
+
+.s-prn, .s-phn, .s-pan {
+ padding-right: 0 !important
+}
+
+.s-prs, .s-phs, .s-pas {
+ padding-right: 5px !important
+}
+
+.s-prm, .s-phm, .s-pam {
+ padding-right: 10px !important
+}
+
+.s-prl, .s-phl, .s-pal {
+ padding-right: 20px !important
+}
+
+.s-pbn, .s-pvn, .s-pan {
+ padding-bottom: 0 !important
+}
+
+.s-pbs, .s-pvs, .s-pas {
+ padding-bottom: 5px !important
+}
+
+.s-pbm, .s-pvm, .s-pam {
+ padding-bottom: 10px !important
+}
+
+.s-pbl, .s-pvl, .s-pal {
+ padding-bottom: 20px !important
+}
+
+.s-pln, .s-phn, .s-pan {
+ padding-left: 0 !important
+}
+
+.s-pls, .s-phs, .s-pas {
+ padding-left: 5px !important
+}
+
+.s-plm, .s-phm, .s-pam {
+ padding-left: 10px !important
+}
+
+.s-pll, .s-phl, .s-pal {
+ padding-left: 20px !important
+}
+
+.s-mtn, .s-mvn, .s-man {
+ margin-top: 0 !important
+}
+
+.s-mts, .s-mvs, .s-mas {
+ margin-top: 5px !important
+}
+
+.s-mtm, .s-mvm, .s-mam {
+ margin-top: 10px !important
+}
+
+.s-mtl, .s-mvl, .s-mal {
+ margin-top: 20px !important
+}
+
+.s-mrn, .s-mhn, .s-man {
+ margin-right: 0 !important
+}
+
+.s-mrs, .s-mhs, .s-mas {
+ margin-right: 5px !important
+}
+
+.s-mrm, .s-mhm, .s-mam {
+ margin-right: 10px !important
+}
+
+.s-mrl, .s-mhl, .s-mal {
+ margin-right: 20px !important
+}
+
+.s-mbn, .s-mvn, .s-man {
+ margin-bottom: 0 !important
+}
+
+.s-mbs, .s-mvs, .s-mas {
+ margin-bottom: 5px !important
+}
+
+.s-mbm, .s-mvm, .s-mam {
+ margin-bottom: 10px !important
+}
+
+.s-mbl, .s-mvl, .s-mal {
+ margin-bottom: 20px !important
+}
+
+.s-mln, .s-mhn, .s-man {
+ margin-left: 0 !important
+}
+
+.s-mls, .s-mhs, .s-mas {
+ margin-left: 5px !important
+}
+
+.s-mlm, .s-mhm, .s-mam {
+ margin-left: 10px !important
+}
+
+.s-mll, .s-mhl, .s-mal {
+ margin-left: 20px !important
+}
+/*提供给bigrender作为lazyload*/
+.g-area-lazyload{
+ visibility: hidden;
+}
+.hide {
+ display: none !important;
+ visibility: hidden
+}
+/*
+.hide-layout {
+ visibility: hidden
+}
+
+.hide-text {
+ border: 0;
+ font: 0/0 a;
+ text-shadow: none;
+ color: transparent;
+ background-color: transparent
+}
+
+.hide-read, .hide-focus {
+ border: 0;
+ clip: rect(0 0 0 0);
+ height: 1px;
+ margin: -1px;
+ overflow: hidden;
+ padding: 0;
+ position: absolute;
+ width: 1px
+}
+
+.hide-focus:active, .hide-focus:focus {
+ clip: auto;
+ height: auto;
+ margin: 0;
+ overflow: visible;
+ position: static;
+ width: auto
+}*/
+
+/* float */
+
+.cf:before, .cf:after {
+ content: '';
+ display: table
+}
+
+.cf:after {
+ clear: both
+}
+
+.fl {
+ float: left
+}
+
+.fr {
+ float: right
+}
+
+.ibw{
+ word-spacing: -0.35em;
+ letter-spacing: -.32em
+}
+
+.ib, .ibw .ib, s, .s, .space, .btn {
+ display: inline-block;
+}
+
+.ibw .ib{
+ word-spacing: normal;
+ letter-spacing: normal;
+ vertical-align: top
+}
+
+.mod {
+ overflow: hidden;
+}
+
+/*.mod .img {
+ float: left
+}
+
+.mod .img img {
+ display: block
+}
+
+.transparent {
+ filter: alpha(opacity=50);
+ -moz-opacity: .5;
+ -khtml-opacity: .5;
+ opacity: .5
+}*/
+
+/** from common.css
+常用的命名样式,方便PM在CMS中配置 */
+
+.triangle{
+ width:0;
+ height:0;
+ overflow:hidden;
+ font-size:0;
+ line-height:0;
+ border-color:transparent;
+ border-style:dashed;
+ border-width:5px;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/tool.ie.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/tool.ie.css
new file mode 100755
index 000000000..9e0881d32
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/src/tool.ie.css
@@ -0,0 +1,17 @@
+.unselect, i, .i, .icon {
+ -khtml-user-select: none;
+}
+.cf {
+ zoom: 1
+}
+.fl, .fr {
+ display: inline
+}
+.mod {
+ *overflow: visible;
+ zoom: 1
+}
+.ib, .ibw .ib, s, .s, .space, .btn {
+ *display: inline;
+ zoom: 1
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/test/dist/base.ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/test/dist/base.ltr.css
new file mode 100755
index 000000000..9ed8491e7
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/test/dist/base.ltr.css
@@ -0,0 +1 @@
+@charset "utf-8";*{margin:0;padding:0}fieldset,img,iframe{border:0}address,caption,cite,code,dfn,em,i,th,var{font-style:normal;font-weight:400}ul,li,ol{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:400}html{font-size:100%}body{vertical-align:baseline;background-color:transparent}a:focus,a:hover,a:active,input:focus,textarea:focus{outline:0}img{vertical-align:middle}table{font-size:inherit;font:100%;border-collapse:collapse;border-spacing:0}td{vertical-align:top}th{text-align:inherit}iframe{display:block}textarea{resize:none;overflow:auto;vertical-align:top}button,input,select,textarea{font-size:100%;vertical-align:baseline}button,input{*overflow:visible;line-height:normal;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}button{cursor:pointer}button[disabled],input[disabled]{cursor:default}abbr,acronym{border:0;font-variant:normal}strong,.strong{font-weight:700}.l-fl{float:left}.l-fr{float:right}.l-ff,.l-g0{overflow:hidden}.l-wrap{width:960px;margin:0 auto}.l-g{width:100%}.l-g:before,.l-g:after{content:'';display:table}.l-g:after{clear:both}.l-g1-1{float:none}.l-g1-2{width:50%}.l-g1-3{width:33.33333%}.l-g2-3{width:66.66666%}.l-g1-4{width:25%}.l-g3-4{width:75%}.l-g1-5{width:20%}.l-g2-5{width:40%}.l-g3-5{width:60%}.l-g4-5{width:80%}.l-g1-8{width:12.5%}.l-g3-8{width:37.5%}.l-g5-8{width:62.5%}.l-g7-8{width:87.5%}.l-g1-1,.l-g1-2,.l-g1-3,.l-g2-3,.l-g3-3,.l-g1-4,.l-g2-4,.l-g3-4,.l-g4-5,.l-g1-5,.l-g2-5,.l-g3-5,.l-g4-5,.l-g1-8,.l-g3-8,.l-g5-8,.l-g7-8{float:left}.l-g1,.l-g2,.l-g3,.l-g4,.l-g5,.l-g6,.l-g7,.l-g8,.l-g9,.l-g10,.l-g11,.l-g12{float:left;margin-left:10px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}[class*=l-g]:first-child{margin-left:0}.l-g1{width:70px}.l-g2{width:150px}.l-g3{width:230px}.l-g4{width:310px}.l-g5{width:390px}.l-g6{width:470px}.l-g7{width:550px}.l-g8{width:630px}.l-g9{width:710px}.l-g10{width:790px}.l-g11{width:870px}.l-g12{width:950px}.l-g_1{margin-left:80px!important}.l-g_2{margin-left:160px!important}.l-g_3{margin-left:240px!important}.l-g_4{margin-left:320px!important}.l-g_5{margin-left:400px!important}.l-g_6{margin-left:480px!important}.l-g_7{margin-left:560px!important}.l-g_8{margin-left:640px!important}.l-g_9{margin-left:720px!important}.l-g_10{margin-left:800px!important}.l-g_11{margin-left:880px!important}.l-g_1,.l-g_2,.l-g_3,.l-g_4,.l-g_5,.l-g_6,.l-g_7,.l-g_8,.l-g_9,.l-g_10,.l-g_11{margin-right:10px}.unselect,i,.i,.icon{-moz-user-select:-moz-none;-webkit-user-select:none;-o-user-select:none;user-select:none}b,.b,.border{display:block;font:0/0 a}.s-ptn,.s-pvn,.s-pan{padding-top:0!important}.s-pts,.s-pvs,.s-pas{padding-top:5px!important}.s-ptm,.s-pvm,.s-pam{padding-top:10px!important}.s-ptl,.s-pvl,.s-pal{padding-top:20px!important}.s-prn,.s-phn,.s-pan{padding-right:0!important}.s-prs,.s-phs,.s-pas{padding-right:5px!important}.s-prm,.s-phm,.s-pam{padding-right:10px!important}.s-prl,.s-phl,.s-pal{padding-right:20px!important}.s-pbn,.s-pvn,.s-pan{padding-bottom:0!important}.s-pbs,.s-pvs,.s-pas{padding-bottom:5px!important}.s-pbm,.s-pvm,.s-pam{padding-bottom:10px!important}.s-pbl,.s-pvl,.s-pal{padding-bottom:20px!important}.s-pln,.s-phn,.s-pan{padding-left:0!important}.s-pls,.s-phs,.s-pas{padding-left:5px!important}.s-plm,.s-phm,.s-pam{padding-left:10px!important}.s-pll,.s-phl,.s-pal{padding-left:20px!important}.s-mtn,.s-mvn,.s-man{margin-top:0!important}.s-mts,.s-mvs,.s-mas{margin-top:5px!important}.s-mtm,.s-mvm,.s-mam{margin-top:10px!important}.s-mtl,.s-mvl,.s-mal{margin-top:20px!important}.s-mrn,.s-mhn,.s-man{margin-right:0!important}.s-mrs,.s-mhs,.s-mas{margin-right:5px!important}.s-mrm,.s-mhm,.s-mam{margin-right:10px!important}.s-mrl,.s-mhl,.s-mal{margin-right:20px!important}.s-mbn,.s-mvn,.s-man{margin-bottom:0!important}.s-mbs,.s-mvs,.s-mas{margin-bottom:5px!important}.s-mbm,.s-mvm,.s-mam{margin-bottom:10px!important}.s-mbl,.s-mvl,.s-mal{margin-bottom:20px!important}.s-mln,.s-mhn,.s-man{margin-left:0!important}.s-mls,.s-mhs,.s-mas{margin-left:5px!important}.s-mlm,.s-mhm,.s-mam{margin-left:10px!important}.s-mll,.s-mhl,.s-mal{margin-left:20px!important}.g-area-lazyload{visibility:hidden}.hide{display:none!important;visibility:hidden}.cf:before,.cf:after{content:'';display:table}.cf:after{clear:both}.fl{float:left}.fr{float:right}.mod{overflow:hidden}.triangle{width:0;height:0;overflow:hidden;font-size:0;line-height:0;border-color:transparent;border-style:dashed;border-width:5px}html{background:#edf0ef}body{font:12px/1.231 arial,Tahoma,helvetica,clean,sans-serif;position:relative}a{text-decoration:none;color:#333}a:hover{text-decoration:none}.orange,.orange a{color:#f56f2f!important}.red,.red a{color:red!important}.green,.green a{color:green!important}.bold,.bold a{font-weight:600!important}.icon-hot,.icon-new,.icon-new_red{display:inline-block;margin-left:3px;cursor:pointer;_position:absolute;font-size:0}.icon-hot{width:30px;height:11px;background:url(../img/i-hot.png?m=z) no-repeat}.icon-new{width:30px;height:11px;background:url(../img/i-new.png?m=z) no-repeat}.icon-new_red{width:25px;height:15px;background:url(../img/i-big-new.png?m=z) no-repeat}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/test/dist/base.ltr.ie.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/test/dist/base.ltr.ie.css
new file mode 100755
index 000000000..3239e4463
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/test/dist/base.ltr.ie.css
@@ -0,0 +1 @@
+@charset "utf-8";*{margin:0;padding:0}fieldset,img,iframe{border:0}address,caption,cite,code,dfn,em,i,th,var{font-style:normal;font-weight:400}ul,li,ol{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:400}html{font-size:100%}body{vertical-align:baseline;background-color:transparent}a:focus,a:hover,a:active,input:focus,textarea:focus{outline:0}img{vertical-align:middle}table{font-size:inherit;font:100%;border-collapse:collapse;border-spacing:0}td{vertical-align:top}th{text-align:inherit}iframe{display:block}textarea{resize:none;overflow:auto;vertical-align:top}button,input,select,textarea{font-size:100%;vertical-align:baseline}button,input{*overflow:visible;line-height:normal;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}button{cursor:pointer}button[disabled],input[disabled]{cursor:default}abbr,acronym{border:0;font-variant:normal}strong,.strong{font-weight:700}body{_zoom:expression(function(el){document.execCommand('BackgroundImageCache',false,true);el.style.zoom="1"}(this))}img{-ms-interpolation-mode:bicubic}button,input,select,textarea{*vertical-align:middle}button,input{*overflow:visible}.l-fl{float:left}.l-fr{float:right}.l-ff,.l-g0{overflow:hidden}.l-wrap{width:960px;margin:0 auto}.l-g{width:100%}.l-g:before,.l-g:after{content:'';display:table}.l-g:after{clear:both}.l-g1-1{float:none}.l-g1-2{width:50%}.l-g1-3{width:33.33333%}.l-g2-3{width:66.66666%}.l-g1-4{width:25%}.l-g3-4{width:75%}.l-g1-5{width:20%}.l-g2-5{width:40%}.l-g3-5{width:60%}.l-g4-5{width:80%}.l-g1-8{width:12.5%}.l-g3-8{width:37.5%}.l-g5-8{width:62.5%}.l-g7-8{width:87.5%}.l-g1-1,.l-g1-2,.l-g1-3,.l-g2-3,.l-g3-3,.l-g1-4,.l-g2-4,.l-g3-4,.l-g4-5,.l-g1-5,.l-g2-5,.l-g3-5,.l-g4-5,.l-g1-8,.l-g3-8,.l-g5-8,.l-g7-8{float:left}.l-g1,.l-g2,.l-g3,.l-g4,.l-g5,.l-g6,.l-g7,.l-g8,.l-g9,.l-g10,.l-g11,.l-g12{float:left;margin-left:10px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}[class*=l-g]:first-child{margin-left:0}.l-g1{width:70px}.l-g2{width:150px}.l-g3{width:230px}.l-g4{width:310px}.l-g5{width:390px}.l-g6{width:470px}.l-g7{width:550px}.l-g8{width:630px}.l-g9{width:710px}.l-g10{width:790px}.l-g11{width:870px}.l-g12{width:950px}.l-g_1{margin-left:80px!important}.l-g_2{margin-left:160px!important}.l-g_3{margin-left:240px!important}.l-g_4{margin-left:320px!important}.l-g_5{margin-left:400px!important}.l-g_6{margin-left:480px!important}.l-g_7{margin-left:560px!important}.l-g_8{margin-left:640px!important}.l-g_9{margin-left:720px!important}.l-g_10{margin-left:800px!important}.l-g_11{margin-left:880px!important}.l-g_1,.l-g_2,.l-g_3,.l-g_4,.l-g_5,.l-g_6,.l-g_7,.l-g_8,.l-g_9,.l-g_10,.l-g_11{margin-right:10px}.l-fl{_margin-right:-3px}.l-fr{_margin-left:-3px}.l-ff,.l-g0{zoom:1}.l-g{zoom:1;_zoom:expression(function(el){el.firstChild.style.marginLeft=0;el.style.zoom="1"}(this))}.l-g1-1,.l-g1-2,.l-g1-3,.l-g2-3,.l-g3-3,.l-g1-4,.l-g2-4,.l-g3-4,.l-g4-5,.l-g1-5,.l-g2-5,.l-g3-5,.l-g4-5,.l-g1-8,.l-g3-8,.l-g5-8,.l-g7-8{_margin-right:-3px}.l-g1,.l-g2,.l-g3,.l-g4,.l-g5,.l-g6,.l-g7,.l-g8,.l-g9,.l-g10,.l-g11,.l-g12{display:inline}.l-g_1,.l-g_2,.l-g_3,.l-g_4,.l-g_5,.l-g_6,.l-g_7,.l-g_8,.l-g_9,.l-g_10,.l-g_11{_zoom:expression(function(el){if(!el.nextSibling || el.nextSibling.nodeType!==1) el.style.marginRight=0;el.style.zoom="1"}(this))}.unselect,i,.i,.icon{-moz-user-select:-moz-none;-webkit-user-select:none;-o-user-select:none;user-select:none}b,.b,.border{display:block;font:0/0 a}.s-ptn,.s-pvn,.s-pan{padding-top:0!important}.s-pts,.s-pvs,.s-pas{padding-top:5px!important}.s-ptm,.s-pvm,.s-pam{padding-top:10px!important}.s-ptl,.s-pvl,.s-pal{padding-top:20px!important}.s-prn,.s-phn,.s-pan{padding-right:0!important}.s-prs,.s-phs,.s-pas{padding-right:5px!important}.s-prm,.s-phm,.s-pam{padding-right:10px!important}.s-prl,.s-phl,.s-pal{padding-right:20px!important}.s-pbn,.s-pvn,.s-pan{padding-bottom:0!important}.s-pbs,.s-pvs,.s-pas{padding-bottom:5px!important}.s-pbm,.s-pvm,.s-pam{padding-bottom:10px!important}.s-pbl,.s-pvl,.s-pal{padding-bottom:20px!important}.s-pln,.s-phn,.s-pan{padding-left:0!important}.s-pls,.s-phs,.s-pas{padding-left:5px!important}.s-plm,.s-phm,.s-pam{padding-left:10px!important}.s-pll,.s-phl,.s-pal{padding-left:20px!important}.s-mtn,.s-mvn,.s-man{margin-top:0!important}.s-mts,.s-mvs,.s-mas{margin-top:5px!important}.s-mtm,.s-mvm,.s-mam{margin-top:10px!important}.s-mtl,.s-mvl,.s-mal{margin-top:20px!important}.s-mrn,.s-mhn,.s-man{margin-right:0!important}.s-mrs,.s-mhs,.s-mas{margin-right:5px!important}.s-mrm,.s-mhm,.s-mam{margin-right:10px!important}.s-mrl,.s-mhl,.s-mal{margin-right:20px!important}.s-mbn,.s-mvn,.s-man{margin-bottom:0!important}.s-mbs,.s-mvs,.s-mas{margin-bottom:5px!important}.s-mbm,.s-mvm,.s-mam{margin-bottom:10px!important}.s-mbl,.s-mvl,.s-mal{margin-bottom:20px!important}.s-mln,.s-mhn,.s-man{margin-left:0!important}.s-mls,.s-mhs,.s-mas{margin-left:5px!important}.s-mlm,.s-mhm,.s-mam{margin-left:10px!important}.s-mll,.s-mhl,.s-mal{margin-left:20px!important}.g-area-lazyload{visibility:hidden}.hide{display:none!important;visibility:hidden}.cf:before,.cf:after{content:'';display:table}.cf:after{clear:both}.fl{float:left}.fr{float:right}.mod{overflow:hidden}.triangle{width:0;height:0;overflow:hidden;font-size:0;line-height:0;border-color:transparent;border-style:dashed;border-width:5px}.unselect,i,.i,.icon{-khtml-user-select:none}.cf{zoom:1}.fl,.fr{display:inline}.mod{*overflow:visible;zoom:1}html{background:#edf0ef}body{font:12px/1.231 arial,Tahoma,helvetica,clean,sans-serif;position:relative}a{text-decoration:none;color:#333}a:hover{text-decoration:none}.orange,.orange a{color:#f56f2f!important}.red,.red a{color:red!important}.green,.green a{color:green!important}.bold,.bold a{font-weight:600!important}.icon-hot,.icon-new,.icon-new_red{display:inline-block;margin-left:3px;cursor:pointer;_position:absolute;font-size:0}.icon-hot{width:30px;height:11px;background:url(../img/i-hot.png?m=z) no-repeat}.icon-new{width:30px;height:11px;background:url(../img/i-new.png?m=z) no-repeat}.icon-new_red{width:25px;height:15px;background:url(../img/i-big-new.png?m=z) no-repeat}.icon-hot,.icon-new,.icon-new_red{display:inline-block;*display:inline;zoom:1;_position:absolute}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/test/dist/base.rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/test/dist/base.rtl.css
new file mode 100755
index 000000000..1e298b2a0
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/test/dist/base.rtl.css
@@ -0,0 +1 @@
+@charset "utf-8";*{margin:0;padding:0}fieldset,img,iframe{border:0}address,caption,cite,code,dfn,em,i,th,var{font-style:normal;font-weight:400}ul,li,ol{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:400}html{font-size:100%}body{vertical-align:baseline;background-color:transparent}a:focus,a:hover,a:active,input:focus,textarea:focus{outline:0}img{vertical-align:middle}table{font-size:inherit;font:100%;border-collapse:collapse;border-spacing:0}td{vertical-align:top}th{text-align:inherit}iframe{display:block}textarea{resize:none;overflow:auto;vertical-align:top}button,input,select,textarea{font-size:100%;vertical-align:baseline}button,input{*overflow:visible;line-height:normal;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}button{cursor:pointer}button[disabled],input[disabled]{cursor:default}abbr,acronym{border:0;font-variant:normal}strong,.strong{font-weight:700}.l-fl{float:left}.l-fr{float:right}.l-ff,.l-g0{overflow:hidden}.l-wrap{width:960px;margin:0 auto}.l-g{width:100%}.l-g:before,.l-g:after{content:'';display:table}.l-g:after{clear:both}.l-g1-1{float:none}.l-g1-2{width:50%}.l-g1-3{width:33.33333%}.l-g2-3{width:66.66666%}.l-g1-4{width:25%}.l-g3-4{width:75%}.l-g1-5{width:20%}.l-g2-5{width:40%}.l-g3-5{width:60%}.l-g4-5{width:80%}.l-g1-8{width:12.5%}.l-g3-8{width:37.5%}.l-g5-8{width:62.5%}.l-g7-8{width:87.5%}.l-g1-1,.l-g1-2,.l-g1-3,.l-g2-3,.l-g3-3,.l-g1-4,.l-g2-4,.l-g3-4,.l-g4-5,.l-g1-5,.l-g2-5,.l-g3-5,.l-g4-5,.l-g1-8,.l-g3-8,.l-g5-8,.l-g7-8{float:right;_margin-left:-3px!important}.l-g1,.l-g2,.l-g3,.l-g4,.l-g5,.l-g6,.l-g7,.l-g8,.l-g9,.l-g10,.l-g11,.l-g12{display:inline;float:right;margin-right:10px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}[class*=l-g]:first-child{margin-right:0}.l-g1{width:70px}.l-g2{width:150px}.l-g3{width:230px}.l-g4{width:310px}.l-g5{width:390px}.l-g6{width:470px}.l-g7{width:550px}.l-g8{width:630px}.l-g9{width:710px}.l-g10{width:790px}.l-g11{width:870px}.l-g12{width:950px}.l-g_1{margin-right:80px!important}.l-g_2{margin-right:160px!important}.l-g_3{margin-right:240px!important}.l-g_4{margin-right:320px!important}.l-g_5{margin-right:400px!important}.l-g_6{margin-right:480px!important;margin-left:0!important}.l-g_7{margin-right:560px!important}.l-g_8{margin-right:640px!important}.l-g_9{margin-right:720px!important}.l-g_10{margin-right:800px!important}.l-g_11{margin-right:880px!important}.l-g_1,.l-g_2,.l-g_3,.l-g_4,.l-g_5,.l-g_6,.l-g_7,.l-g_8,.l-g_9,.l-g_10,.l-g_11{margin-left:10px}.unselect,i,.i,.icon{-moz-user-select:-moz-none;-webkit-user-select:none;-o-user-select:none;user-select:none}b,.b,.border{display:block;font:0/0 a}.s-ptn,.s-pvn,.s-pan{padding-top:0!important}.s-pts,.s-pvs,.s-pas{padding-top:5px!important}.s-ptm,.s-pvm,.s-pam{padding-top:10px!important}.s-ptl,.s-pvl,.s-pal{padding-top:20px!important}.s-prn,.s-phn,.s-pan{padding-right:0!important}.s-prs,.s-phs,.s-pas{padding-right:5px!important}.s-prm,.s-phm,.s-pam{padding-right:10px!important}.s-prl,.s-phl,.s-pal{padding-right:20px!important}.s-pbn,.s-pvn,.s-pan{padding-bottom:0!important}.s-pbs,.s-pvs,.s-pas{padding-bottom:5px!important}.s-pbm,.s-pvm,.s-pam{padding-bottom:10px!important}.s-pbl,.s-pvl,.s-pal{padding-bottom:20px!important}.s-pln,.s-phn,.s-pan{padding-left:0!important}.s-pls,.s-phs,.s-pas{padding-left:5px!important}.s-plm,.s-phm,.s-pam{padding-left:10px!important}.s-pll,.s-phl,.s-pal{padding-left:20px!important}.s-mtn,.s-mvn,.s-man{margin-top:0!important}.s-mts,.s-mvs,.s-mas{margin-top:5px!important}.s-mtm,.s-mvm,.s-mam{margin-top:10px!important}.s-mtl,.s-mvl,.s-mal{margin-top:20px!important}.s-mrn,.s-mhn,.s-man{margin-right:0!important}.s-mrs,.s-mhs,.s-mas{margin-right:5px!important}.s-mrm,.s-mhm,.s-mam{margin-right:10px!important}.s-mrl,.s-mhl,.s-mal{margin-right:20px!important}.s-mbn,.s-mvn,.s-man{margin-bottom:0!important}.s-mbs,.s-mvs,.s-mas{margin-bottom:5px!important}.s-mbm,.s-mvm,.s-mam{margin-bottom:10px!important}.s-mbl,.s-mvl,.s-mal{margin-bottom:20px!important}.s-mln,.s-mhn,.s-man{margin-left:0!important}.s-mls,.s-mhs,.s-mas{margin-left:5px!important}.s-mlm,.s-mhm,.s-mam{margin-left:10px!important}.s-mll,.s-mhl,.s-mal{margin-left:20px!important}.g-area-lazyload{visibility:hidden}.hide{display:none!important;visibility:hidden}.cf:before,.cf:after{content:'';display:table}.cf:after{clear:both}.fl{float:left}.fr{float:right}.mod{overflow:hidden}.triangle{width:0;height:0;overflow:hidden;font-size:0;line-height:0;border-color:transparent;border-style:dashed;border-width:5px}html{background:#edf0ef}body{font:12px/1.231 arial,Tahoma,helvetica,clean,sans-serif;position:relative}a{text-decoration:none;color:#333}a:hover{text-decoration:none}.orange,.orange a{color:#f56f2f!important}.red,.red a{color:red!important}.green,.green a{color:green!important}.bold,.bold a{font-weight:600!important}.icon-hot,.icon-new,.icon-new_red{display:inline-block;margin-right:3px;cursor:pointer;font-size:0}.icon-hot{width:30px;height:11px;background:url(../img/i-hot.png?m=z) no-repeat}.icon-new{width:30px;height:11px;background:url(../img/i-new.png?m=z) no-repeat}.icon-new_red{width:25px;height:15px;background:url(../img/i-big-new.png?m=z) no-repeat}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/test/dist/base.rtl.ie.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/test/dist/base.rtl.ie.css
new file mode 100755
index 000000000..2c2c8b8a3
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/test/dist/base.rtl.ie.css
@@ -0,0 +1 @@
+@charset "utf-8";*{margin:0;padding:0}fieldset,img,iframe{border:0}address,caption,cite,code,dfn,em,i,th,var{font-style:normal;font-weight:400}ul,li,ol{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:400}html{font-size:100%}body{vertical-align:baseline;background-color:transparent}a:focus,a:hover,a:active,input:focus,textarea:focus{outline:0}img{vertical-align:middle}table{font-size:inherit;font:100%;border-collapse:collapse;border-spacing:0}td{vertical-align:top}th{text-align:inherit}iframe{display:block}textarea{resize:none;overflow:auto;vertical-align:top}button,input,select,textarea{font-size:100%;vertical-align:baseline}button,input{*overflow:visible;line-height:normal;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}button{cursor:pointer}button[disabled],input[disabled]{cursor:default}abbr,acronym{border:0;font-variant:normal}strong,.strong{font-weight:700}body{_zoom:expression(function(el){document.execCommand('BackgroundImageCache',false,true);el.style.zoom="1"}(this))}img{-ms-interpolation-mode:bicubic}button,input,select,textarea{*vertical-align:middle}button,input{*overflow:visible}.l-fl{float:left}.l-fr{float:right}.l-ff,.l-g0{overflow:hidden}.l-wrap{width:960px;margin:0 auto}.l-g{width:100%}.l-g:before,.l-g:after{content:'';display:table}.l-g:after{clear:both}.l-g1-1{float:none}.l-g1-2{width:50%}.l-g1-3{width:33.33333%}.l-g2-3{width:66.66666%}.l-g1-4{width:25%}.l-g3-4{width:75%}.l-g1-5{width:20%}.l-g2-5{width:40%}.l-g3-5{width:60%}.l-g4-5{width:80%}.l-g1-8{width:12.5%}.l-g3-8{width:37.5%}.l-g5-8{width:62.5%}.l-g7-8{width:87.5%}.l-g1-1,.l-g1-2,.l-g1-3,.l-g2-3,.l-g3-3,.l-g1-4,.l-g2-4,.l-g3-4,.l-g4-5,.l-g1-5,.l-g2-5,.l-g3-5,.l-g4-5,.l-g1-8,.l-g3-8,.l-g5-8,.l-g7-8{float:right;_margin-left:-3px!important}.l-g1,.l-g2,.l-g3,.l-g4,.l-g5,.l-g6,.l-g7,.l-g8,.l-g9,.l-g10,.l-g11,.l-g12{display:inline;float:right;margin-right:10px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}[class*=l-g]:first-child{margin-right:0}.l-g1{width:70px}.l-g2{width:150px}.l-g3{width:230px}.l-g4{width:310px}.l-g5{width:390px}.l-g6{width:470px}.l-g7{width:550px}.l-g8{width:630px}.l-g9{width:710px}.l-g10{width:790px}.l-g11{width:870px}.l-g12{width:950px}.l-g_1{margin-right:80px!important}.l-g_2{margin-right:160px!important}.l-g_3{margin-right:240px!important}.l-g_4{margin-right:320px!important}.l-g_5{margin-right:400px!important}.l-g_6{margin-right:480px!important;margin-left:0!important}.l-g_7{margin-right:560px!important}.l-g_8{margin-right:640px!important}.l-g_9{margin-right:720px!important}.l-g_10{margin-right:800px!important}.l-g_11{margin-right:880px!important}.l-g_1,.l-g_2,.l-g_3,.l-g_4,.l-g_5,.l-g_6,.l-g_7,.l-g_8,.l-g_9,.l-g_10,.l-g_11{margin-left:10px}.l-ff,.l-g0{zoom:1}.l-g{zoom:1;_zoom:expression(function(el){el.firstChild.style.marginRight=0;el.style.zoom="1"}(this))}.l-g1-1,.l-g1-2,.l-g1-3,.l-g2-3,.l-g3-3,.l-g1-4,.l-g2-4,.l-g3-4,.l-g4-5,.l-g1-5,.l-g2-5,.l-g3-5,.l-g4-5,.l-g1-8,.l-g3-8,.l-g5-8,.l-g7-8{_margin-left:-3px}.l-g1,.l-g2,.l-g3,.l-g4,.l-g5,.l-g6,.l-g7,.l-g8,.l-g9,.l-g10,.l-g11,.l-g12{display:inline}.l-g_1,.l-g_2,.l-g_3,.l-g_4,.l-g_5,.l-g_6,.l-g_7,.l-g_8,.l-g_9,.l-g_10,.l-g_11{_zoom:expression(function(el){if(!el.nextSibling || el.nextSibling.nodeType!==1) el.style.marginLeft=0;el.style.zoom="1"}(this))}.unselect,i,.i,.icon{-moz-user-select:-moz-none;-webkit-user-select:none;-o-user-select:none;user-select:none}b,.b,.border{display:block;font:0/0 a}.s-ptn,.s-pvn,.s-pan{padding-top:0!important}.s-pts,.s-pvs,.s-pas{padding-top:5px!important}.s-ptm,.s-pvm,.s-pam{padding-top:10px!important}.s-ptl,.s-pvl,.s-pal{padding-top:20px!important}.s-prn,.s-phn,.s-pan{padding-right:0!important}.s-prs,.s-phs,.s-pas{padding-right:5px!important}.s-prm,.s-phm,.s-pam{padding-right:10px!important}.s-prl,.s-phl,.s-pal{padding-right:20px!important}.s-pbn,.s-pvn,.s-pan{padding-bottom:0!important}.s-pbs,.s-pvs,.s-pas{padding-bottom:5px!important}.s-pbm,.s-pvm,.s-pam{padding-bottom:10px!important}.s-pbl,.s-pvl,.s-pal{padding-bottom:20px!important}.s-pln,.s-phn,.s-pan{padding-left:0!important}.s-pls,.s-phs,.s-pas{padding-left:5px!important}.s-plm,.s-phm,.s-pam{padding-left:10px!important}.s-pll,.s-phl,.s-pal{padding-left:20px!important}.s-mtn,.s-mvn,.s-man{margin-top:0!important}.s-mts,.s-mvs,.s-mas{margin-top:5px!important}.s-mtm,.s-mvm,.s-mam{margin-top:10px!important}.s-mtl,.s-mvl,.s-mal{margin-top:20px!important}.s-mrn,.s-mhn,.s-man{margin-right:0!important}.s-mrs,.s-mhs,.s-mas{margin-right:5px!important}.s-mrm,.s-mhm,.s-mam{margin-right:10px!important}.s-mrl,.s-mhl,.s-mal{margin-right:20px!important}.s-mbn,.s-mvn,.s-man{margin-bottom:0!important}.s-mbs,.s-mvs,.s-mas{margin-bottom:5px!important}.s-mbm,.s-mvm,.s-mam{margin-bottom:10px!important}.s-mbl,.s-mvl,.s-mal{margin-bottom:20px!important}.s-mln,.s-mhn,.s-man{margin-left:0!important}.s-mls,.s-mhs,.s-mas{margin-left:5px!important}.s-mlm,.s-mhm,.s-mam{margin-left:10px!important}.s-mll,.s-mhl,.s-mal{margin-left:20px!important}.g-area-lazyload{visibility:hidden}.hide{display:none!important;visibility:hidden}.cf:before,.cf:after{content:'';display:table}.cf:after{clear:both}.fl{float:left}.fr{float:right}.mod{overflow:hidden}.triangle{width:0;height:0;overflow:hidden;font-size:0;line-height:0;border-color:transparent;border-style:dashed;border-width:5px}.unselect,i,.i,.icon{-khtml-user-select:none}.cf{zoom:1}.fl,.fr{display:inline}.mod{*overflow:visible;zoom:1}html{background:#edf0ef}body{font:12px/1.231 arial,Tahoma,helvetica,clean,sans-serif;position:relative}a{text-decoration:none;color:#333}a:hover{text-decoration:none}.orange,.orange a{color:#f56f2f!important}.red,.red a{color:red!important}.green,.green a{color:green!important}.bold,.bold a{font-weight:600!important}.icon-hot,.icon-new,.icon-new_red{display:inline-block;margin-right:3px;cursor:pointer;font-size:0}.icon-hot{width:30px;height:11px;background:url(../img/i-hot.png?m=z) no-repeat}.icon-new{width:30px;height:11px;background:url(../img/i-new.png?m=z) no-repeat}.icon-new_red{width:25px;height:15px;background:url(../img/i-big-new.png?m=z) no-repeat}.icon-hot,.icon-new,.icon-new_red{display:inline-block;*display:inline;zoom:1;_position:absolute}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/test/hao123/ar-index.html b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/test/hao123/ar-index.html
new file mode 100755
index 000000000..c2ee4fdd6
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/test/hao123/ar-index.html
@@ -0,0 +1,3809 @@
+ابدء التصفح من هنا | مدخلك لعالم الانترنت |hao123 صفحتي الرئيسية
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
دليل المواقع السهولة والأمان
سيتم حفظ أكثر مواقع تقوم بالضغط عليها فى Hao123 وعرضها تلقائيا ، استمتع معنا بهذه الخاصية المميزة.
+
+
+
مواقيت الصلاة
Speedtest
الأبراج
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/test/hao123/br-index.html b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/test/hao123/br-index.html
new file mode 100755
index 000000000..d3acf1719
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/test/hao123/br-index.html
@@ -0,0 +1,3371 @@
+Hao123 e Pronto!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Confira a programação, artistas e muito mais sobre o maior festival de música do Brasil! Verificar detalhes
Com os atalhos do Hao123 fica mais fácil navegar na internet!
Quando você clica em links no hao123, seus sites mais visitados serão gravados aqui automaticamente. Tente e desfrute duma experiência incrível!
Adicione seus sites favoritos Encontre o que você gosta!
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/test/hao123/en-index.html b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/test/hao123/en-index.html
new file mode 100755
index 000000000..e4ed4e9fa
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/test/hao123/en-index.html
@@ -0,0 +1,2838 @@
+
+hao123- Easy and convenient access to Internet services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Easy access to Internet services Start your Internet journey in an easy way!OK
Click here to add website
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/test/hao123/jp-index.html b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/test/hao123/jp-index.html
new file mode 100755
index 000000000..fdca47138
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/test/hao123/jp-index.html
@@ -0,0 +1,3329 @@
+Hao123—マイ スタートページ
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
便利で安心のナビゲーションサイト Hao123 Facebook公式アカウントはこちら
まだ訪問履歴がありません、気になるサイトをクリックしてみてください~
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Hao123のウエブサイトは第三者により提供されるものであり、弊社又は弊社グループ会社により提供されるものではありません。
+Powered by Baidu
+
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/test/hao123/th-index.html b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/test/hao123/th-index.html
new file mode 100755
index 000000000..40fbe08f7
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/test/hao123/th-index.html
@@ -0,0 +1,3436 @@
+hao123-ท่องเน็ตสะดวกปลอดภัย
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
ท่องเว็บสะดวกปลอดภัย รบกวนช่วยกรอกแบบสอบถาม เว็บไซท์ Hao123 ที่นี่เข้าไป
น่าเสียดาย ยังไม่มีประวัติการสแกนของคุณ โปรดลองใช้หน่อยซิ
เว็บไซต์ที่นิยมมากขึ้นหาได้ที่นี่
ดูทีวีออนไลน์
Speedtest
+
+
+
+
+
+
+
+
+
+
N/A Mbp/s
+
N/A KB/s
+
+
+
+
+
+
+ ดูดวงรายวัน
+
+
+
+
+
+
+
+
+ อาทิตย์
+ Sunday
+
+
+ จันทร์
+ Monday
+
+
+ อังคาร
+ Tuesday
+
+
+ พุธ
+ Wednesday
+
+
+ พฤหัส
+ Thursday
+
+
+ ศุกร์
+ Friday
+
+
+ เสาร์
+ Saturday
+
+
+
+
+
+
+
+
+
+
+ Resumo
+
+
+
+ Amor
+
+
+
+ Dinheiro
+
+
+
+ Trabalho
+
+
+
+
+
+
+
+
+
+ Resumo
+
+
+
+ Amor
+
+
+
+ Dinheiro
+
+
+
+ Trabalho
+
+
+
+
+
+
+
+
+
+ apiError
+
+ เอ็มไทย ดูดวง›
+ ตรวจสลากกินแบ่งรัฐบาล
ราคาทองคำ
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ โปรดทราบ:ข้อมูลต่างๆ รวมถึงแต่ไม่จำกัดเฉพาะที่อยู่ลิงค์ โลโก้ รูปภาพและไอคอนบนเว็บไซต์นี้เป็นทรัพย์สินของบุคคลที่สาม ยกเว้นโลโก้และไอคอนของ Hao123 ไม่ได้มีส่วนเกี่ยวข้องกับ Baidu หรือ Hao123 ไม่ว่าจะด้วยวิธีหรือรูปแบบใดๆก็ตาม.
powered by baidu
+
+
+
+
+ Truehits.net
+
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/test/hao123/vn-index.html b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/test/hao123/vn-index.html
new file mode 100755
index 000000000..ea6c35a71
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/test/hao123/vn-index.html
@@ -0,0 +1,3540 @@
+Hao123-Trang chủ truy cập web
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Ngôi nhà web tiện lợi an toàn Dò kết quả xổ số hôm nay nhanh nhất Xem ngay
Lịch sử duyệt web của bạn sẽ được ghi lại tại đây, bạn click vào một website để thử xem nào~
+ Ngoài logo và icon Hao123 ra , các thông tin bao gồm nhưng không hạn chế như link liên kết, logo, hình ảnh, biểu tượng, icon mà trang web này cung cấp đều thuộc sở hữu của bên thứ ba, đồng thời không có sự ràng buộc nào với Hao123 dưới bất kỳ phương thức hoặc hình thức nào.
+Powered by Baidu
+ Nắm bắt mọi động thái trên Facebook tại Hao123
Đăng nhập
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/test/index.html b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/test/index.html
new file mode 100755
index 000000000..bc1151b6d
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-base/test/index.html
@@ -0,0 +1,114 @@
+
+
+
+
+Hao123
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-flatbase/css-flatbase.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-flatbase/css-flatbase.tpl
new file mode 100755
index 000000000..42e3af120
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-flatbase/css-flatbase.tpl
@@ -0,0 +1,7 @@
+<%style%>
+<%if $head.dir=='ltr'%>
+@import url('/widget/css-flatbase/ltr/ltr.css?__inline');
+<%else%>
+@import url('/widget/css-flatbase/rtl/rtl.css?__inline');
+<%/if%>
+<%/style%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-flatbase/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-flatbase/ltr/ltr.css
new file mode 100755
index 000000000..5e13e34ec
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-flatbase/ltr/ltr.css
@@ -0,0 +1,4 @@
+/* 新首页的背景色为白色,写在这里是为了兼容老版本 */
+html {
+ background-color: #ffffff;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-flatbase/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-flatbase/rtl/rtl.css
new file mode 100755
index 000000000..5e13e34ec
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/css-flatbase/rtl/rtl.css
@@ -0,0 +1,4 @@
+/* 新首页的背景色为白色,写在这里是为了兼容老版本 */
+html {
+ background-color: #ffffff;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/footer-seo/footer-seo-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/footer-seo/footer-seo-async.js
new file mode 100755
index 000000000..1a97365b5
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/footer-seo/footer-seo-async.js
@@ -0,0 +1,3 @@
+var $ = require("common:widget/ui/jquery/jquery.js");
+
+conf.fb_like && $(".fb_like").append('');
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/footer-seo/footer-seo.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/footer-seo/footer-seo.tpl
new file mode 100755
index 000000000..204e4f73b
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/footer-seo/footer-seo.tpl
@@ -0,0 +1,57 @@
+<%strip%>
+<%* 声明对ltr/rtl的css依赖 *%>
+<%require name="common:widget/footer-seo/<%$head.dir%>/<%$head.dir%>.css"%>
+<%require name="common:widget/footer/<%$head.dir%>/<%$head.dir%>.css"%>
+
+
+
+<%script%>
+ <%if !empty($body.fb_like)%>
+ conf.fb_like = {
+ "locale":"<%$body.fb_like.locale%>",
+ "url":"<%$body.fb_like.page|escape:'url'%>",
+ "width":<%$body.fb_like.width%>,
+ "height":<%$body.fb_like.height%>
+ };
+ <%/if%>
+ require.async("common:widget/ui/jquery/jquery.js", function($){
+ $(window).on("load", function(){
+ require.async('common:widget/ui/monitor/monitor.js');
+ require.async('common:widget/footer-seo/footer-seo-async.js');
+ });
+ });
+<%/script%>
+<%/strip%>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/footer-seo/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/footer-seo/ltr/ltr.css
new file mode 100755
index 000000000..4384cc183
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/footer-seo/ltr/ltr.css
@@ -0,0 +1,73 @@
+.mod-footer-seo{
+ margin-top: 30px;
+ color: #202020;
+ background-color: #f5f6f7;
+ display: block !important;
+}
+
+.mod-footer-seo .footer-links{
+ padding-top: 20px;
+}
+
+
+.mod-footer-seo .sort{
+ float: left;
+}
+
+.mod-footer-seo .sort-0{
+ width: 33%;
+ border-right: 1px solid #ffffff;
+}
+
+.mod-footer-seo .sort-1{
+ width: 40%;
+ margin-left: 3.3%;
+ border-right: 1px solid #ffffff;
+}
+
+.mod-footer-seo .sort-2{
+ width: 20%;
+ margin-left: 3.3%;
+}
+
+.mod-footer-seo .sort ul{
+ float: left;
+}
+
+.mod-footer-seo .sort-0 ul{
+ width: 50%;
+}
+
+.mod-footer-seo .sort-1 ul{
+ width: 25%;
+}
+
+.mod-footer-seo .sort-2 ul{
+ width: 100%;
+}
+
+.mod-footer-seo .sort li{
+ width: 90%;
+ height: 20px;
+ line-height: 20px;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+
+.mod-footer-seo a, .mod-footer-seo .box-fot a{
+ color: #202020;
+}
+
+.mod-footer-seo a:hover{
+ text-decoration: underline;
+}
+
+.mod-footer-seo .box-fot{
+ margin: 19px 0 5px 0;
+}
+
+.mod-footer-seo .footer-copyright{
+ padding-bottom: 25px;
+ text-align: center;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/footer-seo/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/footer-seo/rtl/rtl.css
new file mode 100755
index 000000000..9401ea608
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/footer-seo/rtl/rtl.css
@@ -0,0 +1,73 @@
+.mod-footer-seo{
+ margin-top: 30px;
+ color: #202020;
+ background-color: #f5f6f7;
+ display: block !important;
+}
+
+.mod-footer-seo .footer-links{
+ padding-top: 20px;
+}
+
+
+.mod-footer-seo .sort{
+ float: right;
+}
+
+.mod-footer-seo .sort-0{
+ width: 33%;
+ border-left: 1px solid #ffffff;
+}
+
+.mod-footer-seo .sort-1{
+ width: 40%;
+ margin-right: 3.3%;
+ border-left: 1px solid #ffffff;
+}
+
+.mod-footer-seo .sort-2{
+ width: 20%;
+ margin-right: 3.3%;
+}
+
+.mod-footer-seo .sort ul{
+ float: right;
+}
+
+.mod-footer-seo .sort-0 ul{
+ width: 50%;
+}
+
+.mod-footer-seo .sort-1 ul{
+ width: 25%;
+}
+
+.mod-footer-seo .sort-2 ul{
+ width: 100%;
+}
+
+.mod-footer-seo .sort li{
+ width: 90%;
+ height: 20px;
+ line-height: 20px;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+
+.mod-footer-seo a, .mod-footer-seo .box-fot a{
+ color: #202020;
+}
+
+.mod-footer-seo a:hover{
+ text-decoration: underline;
+}
+
+.mod-footer-seo .box-fot{
+ margin: 19px 0 5px 0;
+}
+
+.mod-footer-seo .footer-copyright{
+ padding-bottom: 25px;
+ text-align: center;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/footer/footer-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/footer/footer-async.js
new file mode 100755
index 000000000..044aaad60
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/footer/footer-async.js
@@ -0,0 +1,5 @@
+var $ = require("common:widget/ui/jquery/jquery.js");
+
+conf.fb_like && $(window).load(function() {
+ $(".fb_like").append('');
+});
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/footer/footer-main.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/footer/footer-main.tpl
new file mode 100755
index 000000000..8609942d3
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/footer/footer-main.tpl
@@ -0,0 +1 @@
+<%widget name="common:widget/footer/footer.tpl" linkList=$body.footprint.links copyright=$html.copyright%>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/footer/footer.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/footer/footer.tpl
new file mode 100755
index 000000000..710f866f7
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/footer/footer.tpl
@@ -0,0 +1,40 @@
+<%*widget需要传递变量$linkList和copyright*%>
+
+
+<%* 声明对ltr/rtl的css依赖 *%>
+<%if $head.dir=='ltr'%> <%require name="common:widget/footer/ltr/ltr.css"%> <%else%> <%require name="common:widget/footer/rtl/rtl.css"%> <%/if%>
+
+
+
+
+ <%if !empty($copyright)%>
+ <%$copyright%>
+ <%/if%>
+
+
+<%script%>
+ require.async('common:widget/ui/monitor/monitor.js');
+ require.async('common:widget/footer/footer-async.js');
+<%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/footer/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/footer/ltr/ltr.css
new file mode 100755
index 000000000..a29094a8f
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/footer/ltr/ltr.css
@@ -0,0 +1,43 @@
+.copyright{
+ margin-top:-10px;
+ margin-bottom:10px;
+ line-height:1.5;
+ color: #999;
+ display: block;
+}
+.t-c{
+ text-align: center;
+}
+.box-fot {
+ margin:19px 0;
+ display: inline-block;
+ *display: inline;
+ *zoom: 1;
+ font-size: 12px;
+}
+.box-fot li {
+ float:left;
+}
+.box-fot a{
+ color: #999;
+}
+.box-fot .space {
+ display:inline-block;
+ font-size:0;
+ border-right:1px solid #999;
+ height:10px;
+ padding-left:10px;
+ margin-right:10px;
+ margin-bottom:-2px;
+}
+.fb_like {
+ margin-left: 10px;
+ margin-top: -3px;
+}
+.fb_like_label {
+ display:inherit;
+ color:red;
+}
+p.fb_like_label a {
+ color: red;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/footer/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/footer/rtl/rtl.css
new file mode 100755
index 000000000..72ace7ef1
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/footer/rtl/rtl.css
@@ -0,0 +1,44 @@
+/*footer*/
+.t-c{
+ text-align: center;
+}
+.box-fot {
+ margin:19px 0;
+ display: inline-block;
+ *display: inline;
+ *zoom: 1;
+ font-size: 12px;
+}
+.box-fot li {
+ display: inline;
+ text-align: right;
+}
+/*.box-fot li, x:-moz-any-link, x:default {
+ float: left;
+ direction: ltr;
+}*/
+.box-fot a{
+ color: #999;
+}
+.box-fot .space {
+ display:inline-block;
+ font-size:0;
+ border-right:1px solid #999;
+ height:10px;
+ padding-left:10px;
+ margin-right:10px;
+ margin-bottom:-2px;
+}
+.fb_like {
+ display: inline-block !important;
+ position: relative;
+ top: 5px;
+ right: 5px;
+}
+.fb_like_label {
+ display:inherit;
+ color:red;
+}
+p.fb_like_label a {
+ color: red;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/global-conf/global-conf.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/global-conf/global-conf.tpl
new file mode 100755
index 000000000..0335bf685
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/global-conf/global-conf.tpl
@@ -0,0 +1,32 @@
+<%strip%>
+
+<%/strip%>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/account-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/account-async.js
new file mode 100755
index 000000000..7e50a3997
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/account-async.js
@@ -0,0 +1,383 @@
+String.prototype.replaceTpl = function (o){
+ return this.replace(/#\{([^}]*)\}/gm,function(v,k){return v=o[k]||""})
+};
+
+var $ = require("common:widget/ui/jquery/jquery.js"),
+ helper = require("common:widget/ui/helper/helper.js"),
+ UT = require("common:widget/ui/ut/ut.js");
+
+var loginTpl = '',
+ liTpl = ' ',
+ _conf = conf.commonLogin,
+ manyAccou = _conf.manyAccount,
+ manyLogin = _conf.manyLogin,
+ isActivi = !!_conf.activitySign;
+
+if(manyLogin) {
+ for(var n = 0, l = manyAccou.length; n < l; n++) {
+ if(n !== l - 1) {
+ manyAccou[n].other = '';
+ } else {
+ manyAccou[n].other = ' account_li_last';
+ }
+ manyAccou[n].title = manyAccou[n].title || '';
+ loginTpl += helper.replaceTpl(liTpl, manyAccou[n]);
+ }
+ loginTpl += ' ' + _conf.newLoginTxt + '
';
+} else {
+ loginTpl = '#{txtDefaultBtn}
';
+}
+
+var signTpl = '#{activitySign}
';
+
+var tpl = ''
+ + loginTpl
+ + '
';
+
+$("#accountWrap .account-loginfo_wrap").html(helper.replaceTpl(tpl, _conf));
+
+/**
+ * loginCtroller代表初始化。在index.html页面333行。
+ */
+! function(WIN, conf) {
+ var wrap = $("#accountWrap"),
+ dropDwon = $(".account-dropdown_wrap"),
+ login = $(".account_login-tip"),
+ logout = $(".account_logout-tip"),
+ elName = logout.find(".account_logout_name"),
+ elMail = logout.find(".account_logout_email"),
+ elImg = logout.find("img"),
+ elLogout = logout.find(".account_logout_btn"),
+ mask = wrap.find(".account_trig"),
+ dir = conf.dir,
+ headImgUrl = conf.commonLogin.defauUrl;
+
+ var conf = conf.commonLogin,
+ self = WIN.loginCtroller = {
+ /**
+ * verify user login status
+ * 2 ==> unlogin | 1 ==> already login
+ * vertify:2 ==>代表“没有登录”的状态,vertify:1 ==>代表“登录”的状态
+ * uid ==> 用户唯一标识
+ * loginUrl ==> 配置的参数,代表向服务器端发送的请求,参数,这里有一些参数需要转换编码,目前还没有弄懂参数的编码转换的含义
+ */
+ verify : 2,
+ uid : 0,
+ loginUrl: conf.hao123LoginUrl.replaceTpl({
+ idc: conf.idcMap[conf.countryCode],
+ country: conf.countryCode,
+ level: conf.level
+ }),
+
+ // type : 1.代表登录状态,并且请求的数据data存在的情况
+ // type :2.代表默认状态,没有登录成功
+ // 最后的self.verify代表渲染页面之后将登录状态修改为当前值,type :1为已经登录,2:为未登录
+ render: function(type, data) {
+ var img = new Image(),
+ imgUrl = "";
+
+ if (type == 1 && data) {
+
+ login.hide();
+ elName.html(data.uname);
+ //调整email的换行显示策略
+ var emailContent = data.email;
+ var emailArray = emailContent.split("@");
+ if (emailContent.length > 17 && emailContent.indexOf("@") < 15) {
+ emailContent = emailArray[0] + " @" + emailArray[1];
+ }
+ elMail.html(emailContent);
+
+ self.uid = data.uid;
+ self.bindid = data.bindid;
+
+ if (manyLogin) {
+ imgUrl = data.pic;
+ } else {
+ imgUrl = helper.replaceTpl(headImgUrl, {
+ id: data.bindid
+ });
+ }
+
+ img.src = imgUrl;
+ setTimeout( function() {
+ elImg.attr("src", imgUrl);
+ if($("#headPic").length > 0) {
+ $("#headPic").attr("src", imgUrl);
+ } else {
+ mask.removeClass("account_title").html(" ");
+ }
+ wrap.addClass("account-login_suc");
+ }, 500);
+
+ } else {
+ if (/(png|gif|jpg|jpeg)/i.test(conf.defauImg)) {
+ mask.removeClass("account_title").html(" ");
+ } else {
+ mask.addClass("account_title").html(conf.defauImg);
+ }
+ wrap.removeClass("account-login_suc");
+ elLogout.attr("href", helper.replaceTpl(conf.logoutUrl, {
+ idc: encodeURIComponent(conf.idcMap[conf.countryCode]),
+ "gotourl": encodeURIComponent(document.location.href)
+ }));
+ }
+
+ // update status when user login.
+ self.verify = type;
+ },
+ /**
+ * 检查登录的状态
+ * Check user's status about wheather they have been login.
+ * @param url ==> target url;
+ * success ==> excute something when finish
+ * error ==> when login failure
+ * (1)obj为传入的对象值
+ * (2)ajax发送请求,cache:false;
+ * (3)url:请求地址,转码后的地址
+ * (4)success:成功之后要处理的事情
+ * (5)error:失败后的信息提示
+ */
+ checkStatus: function(obj) {
+ obj = obj || {};
+ $.ajax({
+ cache: false,
+ url: helper.replaceTpl(conf.checkLoginUrl, {
+ countryCode: encodeURIComponent(conf.countryCode)
+ }),
+ success: function(data) {
+ data = eval("(" + data + ")");
+ if(data && data.status == 1 && obj.success) {
+ // record facebook id
+ data.bindid && $.cookie("__FBID", data.bindid, {
+ expires: 10*365,
+ path: '/'
+ });
+ obj.success(data);
+ }
+ else obj.error && obj.error();
+ },
+ error: function() {
+ obj.error && obj.error();
+ }
+ });
+ },
+
+ /*
+
+ loginCtroller.fire(url,width,height);
+ login layout fold ==> loginCtroller.fire.call(jQuery("#fBook")[0]);
+ params:
+
+ url, width, height
+ */
+ fire: function(url, width, height, type) {
+ if (self.verify == 1) {
+
+ return self.verify;
+ }
+
+ // UT.send({
+ // "type" : "click",
+ // "position" : "login",
+ // "sort" : "login",
+ // "modId" : "account"
+ // });
+ document.domain = "hao123.com";
+
+ var w = width || conf.iWidth,
+ h = height || conf.iHeight;
+
+ url = url || helper.replaceTpl(self.loginUrl, {
+ type: type || "facebook"
+ }, /#_\{([^}]*)\}/mg);
+
+ WIN.open(url, "newwindow", "height=" + h + ",innerHeight=" + h + ",width=" + w + ",innerWidth=" + w + ",top=" + (WIN.screen.availHeight - 30 - h) / 2 + ",left=" + (WIN.screen.availWidth - 30 - w) / 2 + ",toolbar=no,menubar=no,scrollbars=auto,resizeable=no,location=no,status=no");
+ },
+ /**
+ * 为联合登录执行的操作
+ * @param {[array]} data [需要处理的联合登录url列表]
+ * 登录成功后,从数据中得到需要处理的联合登录url的列表,遍历列表,对每个url填入联合登录所需的参数(参数如下,值从cookie中取),然后请求url,触发后端在其域下种下相应cookie
+ * (1)type: [facebook | twitter | google | yahoo]
+ * (2)uss: urlencode之后的第三方的access_token
+ * (3)bduss: 百度的token
+ * (4)level: 权限级别,业务自己的level,顶部为1,侧边栏为2
+ * (5)thid: 用户在第三方的唯一id,非必填
+ */
+ unitedLogin: function(data){
+ var suffix = "?type=#{type}&uss=#{uss}&bduss=#{bduss}&level=#{level}&thid=#{thid}",
+ imgList = [];
+ $.each(data.loginurl, function(i,v){
+ imgList[i] = new Image();
+ imgList[i].src = helper.replaceTpl(v+suffix, {
+ type: $.cookie("LOGINTYPE") || "",
+ uss: $.cookie("USS") || "",
+ bduss: $.cookie("BDUSS") || "",
+ level: $.cookie("LEVEL") || "",
+ thid: $.cookie("THIRDID") || ""
+ });
+ });
+ },
+ /**
+ * 初始化执行的操作
+ * @param {[type]} data [description]
+ * @return {[type]} [description]
+ * (1)hao123LoginCallback:回调函数:不错在data或者未登录的状态时要执行的事情==>弹窗
+ * 如果成功,执行“统计”请求;并且渲染页面
+ * (2)绑定点击事件:在整个按钮点击的情况下,首先,判断登录状态(“1”为登录,“2”为未登录)
+ * 登录状态下:给最外层div添加样式“mod-login--unfold”(这个样式在login_mod.css文件里), 做的操作就是将div展开,并且将里面的(图片,姓名,邮箱,lougout按钮)样式切换到大图状态。
+ * (3)第二种情况 ==>未登录。首先,发送统计请求,再执行window.open方法,打开登录页面的窗口-> 登录
+ * (4)给body绑定事件:移除大图下面所有效果,切换为小图状态。
+ * (5)给logout标签绑定“统计”事件。
+ * (6)最后一步调用“checkStatus”方法,如果成功的话,渲染页面
+ */
+ init: function(data) {
+
+ //self.render(1,data);
+ // 1. reg global callback
+ WIN.hao123LoginCallback = function(data) {
+ if (!data || data.status != 1) {
+ return alert(conf.txtErrorMsg);
+ }
+ // record facebook id
+ data.bindid && $.cookie("__FBID", data.bindid, {
+ expires: 10*365,
+ path: '/'
+ });
+
+ UT.send({
+ "type" : "access",
+ "position" : "login"
+ });
+ self.render(data.status, data);
+ Gl.history && Gl.history.get(); //Get the sites list again for history widget
+ Gl.notepad && Gl.notepad.initNotes(); // intialize notepad while available
+ Gl.hotsiteFB && Gl.hotsiteFB.start();
+ Gl.loginPopup && Gl.loginPopup.remove(); //close login popup
+ $(WIN).trigger("dailySign.login"); // daily sign
+
+ $(document.body).addClass('self-account-logged');
+
+ // united login for tieba .etc
+ data.loginurl && self.unitedLogin(data);
+ };
+
+ var isInsert = false;
+
+ // 2. bind button event
+ login.on("click", function() {
+ if (wrap.hasClass("account_many")) {
+
+ } else {
+ if (self.verify != 1) {
+ UT.send({
+ "type": "click",
+ "ac": "b",
+ "position": "login",
+ "sort": "login",
+ "modId": "account"
+ });
+ }
+ self.fire.call(this);
+ }
+ }).on("click", ".account_li", function() {
+ var typ = $(this).attr("typ") || "facebook";
+ if (self.verify != 1) {
+ UT.send({
+ "type": "click",
+ "ac": "b",
+ "position": "login",
+ "sort": "login",
+ "modId": "account"
+ });
+ UT.send({
+ "type": "others",
+ "position": "login",
+ "sort": typ,
+ "modId": "account"
+ });
+ }
+ self.fire.call(login, null, null, null, typ);
+ });
+
+ mask.on("click", function() {
+ if(wrap.hasClass("account-login_suc") || wrap.hasClass("account_many")) {
+
+ } else {
+ if(self.verify != 1) {
+ UT.send({
+ "type" : "click",
+ "ac" : "b",
+ "position" : "login",
+ "sort" : "login",
+ "modId" : "account"
+ });
+ }
+ self.fire.call(this);
+ }
+ });
+ wrap.hover(function() {
+ if(wrap.hasClass("account-login_suc")) {
+ login.hide();
+ logout.show();
+ } else {
+ login.css(dir == 'ltr' ? 'right' : 'left', (parseInt(mask.outerWidth() / 2 - 19, 10)) + 'px');
+ login.show();
+ logout.hide();
+ }
+ dropDwon.show();
+ //mask.addClass("module-mask");
+ UT.send({
+ modId: "msgbox",
+ type: "others",
+ sort: "hover",
+ position: "accounticon"
+ });
+ }, function() {
+ dropDwon.hide();
+ //mask.removeClass("module-mask");
+ });
+
+ if(isActivi) {
+ logout.find(".account_logout_sign_btn").on("click", function() {
+ UT.send({
+ "type": "click",
+ "position": "activity",
+ "sort": "sign",
+ "modId": "account"
+ });
+ });
+ }
+ elLogout.on("click", function() {
+ UT.send({
+ "type" : "click",
+ "position": "login",
+ "sort" : "logout",
+ "modId" : "account"
+ });
+ });
+ // 3. check status
+ self.checkStatus({
+ success: function(data) {
+ self.render(1, data);
+ $(document.body).addClass('self-account-logged');
+ },
+ error: function() {
+ // alert("error")
+ }
+ });
+ // 4. init render
+ self.render(2);
+ }
+ };
+}(window, conf);
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/account.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/account.tpl
new file mode 100755
index 000000000..1321e723a
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/account.tpl
@@ -0,0 +1,91 @@
+<%style%>
+<%if $head.dir=='ltr'%>
+@import url('/widget/header-flat/account/ltr/ltr.css?__inline');
+<%else%>
+@import url('/widget/header-flat/account/rtl/rtl.css?__inline');
+<%/if%>
+<%/style%>
+
+<%* 声明对ltr/rtl的css依赖 *%>
+<%if $head.dir=='ltr'%>
+<%require name="common:widget/header-flat/account/ltr/ltr.more.css"%>
+<%else%>
+<%require name="common:widget/header-flat/account/rtl/rtl.more.css"%>
+<%/if%>
+
+
+
+
+
+
+ <%if $body.messageBoxforShop.isHidden==='0'%>
+
+ <%/if%>
+ <%*widget name="common:widget/header-flat/message/message.tpl"*%>
+
+
+
+
+
+
+<%script%>
+ <%*
+ /**
+ * Facebook页面登录退出的配置信息(可供PM使用)
+ * conf.commonLogin:入口。
+ * 信息:(1)iWidth,iHeight:弹出窗口宽高。
+ * (2)userip: 登录时的参数信息(可配)。
+ * (3)jumpUrl:登录时的参数信息(可配)。
+ * (4)loginUrl:登录时的参数信息(可配)。
+ * (5)checkLoginUrl:Ajax请求地址。
+ * (6)logoutUrl:退出时请求的URL地址,刷新页面。
+ * (7)domainName:各国机房服务器地址(优先选择的地址)。
+ * (8)txtDefaultBtn:默认按钮文字信息(可配)。
+ * (9)txtErrorMsg:错误状态提示信息(可配)。
+ * (10)level:权限级别(可配)。
+ */
+ *%>
+
+ conf.commonLogin = {
+ iWidth : <%$body.commonLogin.iWidth%>,
+ iHeight : <%$body.commonLogin.iHeight%>,
+ countryCode: conf.country,
+
+ <%if !empty($sysInfo.userip)%>
+ userip: "<%$sysInfo.userip%>",
+ <%else%>
+ userip: "sdfdslgksdlgk",
+ <%/if%>
+
+ loginCallbackName: "<%$body.commonLogin.loginCallbackName%>",
+
+ jumpUrl : "<%$body.commonLogin.jumpUrl%>",
+ hao123LoginUrl: "<%$body.commonLogin.hao123LoginUrl%>",
+ checkLoginUrl : "<%$body.commonLogin.checkLoginUrl%>",
+ logoutUrl : "<%$body.commonLogin.logoutUrl%>",
+ domainName : <%json_encode($body.commonLogin.domainName)%>,
+ txtErrorMsg : "<%$body.commonLogin.txtErrorMsg%>",
+ idcMap : <%json_encode($body.commonLogin.idcMap)%>,
+ level : "<%$body.commonLogin.level%>",
+ message : "<%$body.commonLogin.message%>",
+ infoMsg : "<%$body.commonLogin.infoMessage%>",
+ defauImg : "<%$body.headerTest.accountDefaultImg%>",
+ defauUrl : "<%$body.headerTest.accountUrl%>",
+ txtDefaultBtn : "<%$body.commonLogin.txtDefaultBtn%>",
+ logoutTxt : "<%$body.commonLogin.logoutTxt%>",
+ newLoginTxt : "<%$body.commonLogin.newLoginTxt%>",
+ manyLogin : "<%$body.commonLogin.manyLogin%>",
+ manyAccount : <%json_encode($body.commonLogin.manyAccount)%>,
+ activitySign : "<%$body.commonLogin.activitySign%>",
+ activitySignUrl: "<%$body.commonLogin.activitySignUrl%>"
+ };
+
+require.async(["common:widget/ui/jquery/jquery.js", "common:widget/header-flat/account/account-async.js"], function ($) {
+ if(window.loginCtroller) {
+ loginCtroller.init();
+ loginCtroller.isInited = true;
+ }
+});
+<%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/bg-account.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/bg-account.png
new file mode 100755
index 000000000..5876a043b
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/bg-account.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/bg-init.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/bg-init.png
new file mode 100755
index 000000000..aecd627e5
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/bg-init.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/btn-facebook-bg.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/btn-facebook-bg.png
new file mode 100755
index 000000000..37aa30806
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/btn-facebook-bg.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/btn-facebook-logo.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/btn-facebook-logo.png
new file mode 100755
index 000000000..18ba2e79e
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/btn-facebook-logo.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/btn-fb-logo.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/btn-fb-logo.png
new file mode 100755
index 000000000..ef7f2ede2
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/btn-fb-logo.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/btn-fb-logo_rtl.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/btn-fb-logo_rtl.png
new file mode 100755
index 000000000..af71900fb
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/btn-fb-logo_rtl.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/fb.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/fb.png
new file mode 100755
index 000000000..98a3f8049
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/fb.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/fb_hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/fb_hover.png
new file mode 100755
index 000000000..90014f9b0
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/fb_hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/gmail.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/gmail.png
new file mode 100755
index 000000000..c5246177c
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/gmail.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/gmail2.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/gmail2.png
new file mode 100755
index 000000000..f3aaf4b31
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/gmail2.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/gmail2_hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/gmail2_hover.png
new file mode 100755
index 000000000..2f78b3a3e
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/gmail2_hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/login.gif b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/login.gif
new file mode 100755
index 000000000..9e26c6716
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/login.gif differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/twitter.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/twitter.png
new file mode 100755
index 000000000..d97fbc3ee
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/twitter.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/yahoo.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/yahoo.png
new file mode 100755
index 000000000..062972b50
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/yahoo.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/yahoo2.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/yahoo2.png
new file mode 100755
index 000000000..a45a18e24
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/yahoo2.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/yahoo_hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/yahoo_hover.png
new file mode 100755
index 000000000..42891fea8
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/img/yahoo_hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/ltr/ltr.css
new file mode 100755
index 000000000..24eb6092f
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/ltr/ltr.css
@@ -0,0 +1,3 @@
+/*.account_wrap {
+ visibility: hidden;
+}*/
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/ltr/ltr.more.css
new file mode 100755
index 000000000..3794e3a69
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/ltr/ltr.more.css
@@ -0,0 +1,285 @@
+/* 消息盒子的寄生于account,修改样式时麻烦留意一下 */
+.account_wrap {
+ float: right;
+ position: relative;
+ max-width: 170px;
+}
+.account_wrap:hover .account_trig {
+ background-color: #0164C8;
+ background-color: rgba(0, 99, 199, 0.97);
+}
+.account_trig {
+ padding: 0 12px;
+ height: 50px;
+ min-width: 14px;
+ overflow: hidden;
+ cursor: pointer;
+ text-align: center;
+ vertical-align: middle;
+ position: relative;
+ display: table-cell;
+}
+.account_title {
+ width: auto;
+ max-width: 150px;
+ line-height: 50px;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ display: block;
+ color: rgba(255, 255, 255, 0.5);
+}
+.account_login-tip {
+ cursor: pointer;
+}
+.login-tip_con {
+ padding-left: 28px;
+ text-align: center;
+ height: 30px;
+ line-height: 30px;
+ color: #587dc7;
+ background: url(../img/btn-fb-logo.png?__sprite) no-repeat;
+ background-color: #ffffff;
+ font-size: 14px;
+ font-weight: 600;
+}
+.account-loginfo_wrap {
+ width: 237px;
+ word-wrap: break-word;
+ overflow: hidden;
+ padding: 9px 20px 20px;
+ position: relative;
+ right: 0;
+ top: 0;
+ background-color: #0164C8;
+ background-color: rgba(0, 99, 199, 0.97);
+}
+.account-loginfo_wrap img {
+ width: 70px;
+ height: 70px;
+ margin-right: 12px;
+ margin-left: 2px;
+ margin-top: 4px;
+ float: left;
+ border-radius: 35px;
+ box-shadow: -2px 0 3px #fff, 0 -2px 3px #fff, 0 2px 3px #fff, 2px 0 3px #fff;
+}
+.account_logout_content {
+ float: left;
+ width: 140px;
+}
+.account_logout_name {
+ color: #ffffff;
+ line-height: 16px;
+ font-size: 12px;
+ margin-bottom: 4px;
+ word-wrap: break-word;
+ overflow: hidden;
+}
+.account_logout_email {
+ color: #9CC3E9;
+ color: rgba(255,255,255,0.6);
+ line-height: 16px;
+ font-size: 12px;
+ margin-bottom: 8px;
+ word-wrap: break-word;
+ overflow: hidden;
+}
+.accout_logout_sign {
+ margin-bottom: 7px;
+}
+.account_logout_btn,
+.account_logout_sign_btn {
+ white-space: nowrap;
+ display: inline-block;
+ width: 94px;
+ height: 24px;
+ text-align: center;
+ line-height: 24px;
+ background-color: #1C81E5;
+ color: #FFF;
+ font-size: 12px;
+ overflow: hidden;
+}
+.account_logout_sign_btn {
+ background-color: #68A1DA;
+ width: 130px;
+}
+.account_logout-act .account_logout_btn {
+ width: 130px;
+ background-color: #217DD9;
+ color: rgba(255,255,255,0.6);
+}
+.account_logout-act .account_logout_btn:hover {
+ background-color: #1775D3;
+}
+.account_logout-act .account_logout_sign_btn:hover {
+ background-color: #3986D4;
+}
+.account-login_suc .account_trig img {
+ width: 26px;
+ height: 26px;
+ cursor: default;
+ border-radius: 13px;
+ box-shadow: -2px 0 3px #ffffff, 0 -2px 3px #ffffff, 0 2px 3px #ffffff, 2px 0 3px #ffffff;
+}
+.account-dropdown_wrap {
+ position: absolute;
+ right: 0;
+ top: 50px;
+ display: none;
+}
+
+.userbar-wrap .account_wrap {
+ visibility: visible;
+}
+
+/*has skin*/
+.skin-on .account_wrap:hover .account_trig,
+.skin-on .wrap-message-content,
+.skin-on .account-loginfo_wrap {
+ background-color: #333333;
+ background-color: rgba(0, 0, 0, 0.8);
+}
+.skin-on .wrap-message-content li:hover {
+ background-color: #0A0A0A;
+ background-color: rgba(0,0,0,0.6);
+}
+.skin-on .wrap-message-content li {
+ border-bottom-color: #717171;
+ border-bottom-color: rgba(255,255,255,0.3);
+}
+.skin-on .account_logout_btn {
+ background-color: #626262;
+}
+.skin-on .account_logout-act .account_logout_btn:hover {
+ background-color: #555555;
+}
+.skin-on .account_logout_sign_btn {
+ background-color: #8B8B8B;
+}
+.skin-on .account_logout-act .account_logout_sign_btn:hover {
+ background-color: #666666;
+}
+
+/*head fixed*/
+.header-fixed-st .account_trig {
+ height: 40px;
+}
+.header-fixed-st .account-dropdown_wrap {
+ top: 40px;
+}
+.header-fixed-st .account_title {
+ line-height: 40px;
+}
+
+/*many accounts*/
+.account_many .account_trig,
+.account_many .account_login-tip {
+ cursor: default;
+}
+.account_many .account_li {
+ height: 44px;
+ width: 44px;
+ border-radius: 26px;
+ border: 2px solid #fff;
+ display: inline-block;
+ margin-right: 13px;
+ background-color: #ffffff;
+ cursor: pointer;
+}
+.account_many .account_li:hover {
+ background-color: #327dcc;
+ background-color: rgba(50,125,204,0.7);
+}
+.account_many .account_li:active {
+ background-color: #327dcc;
+ border-color: rgba(255,255,255,0.5);
+}
+.account_many .account_li_last {
+ margin-right: 0;
+}
+.account_many .account_li_facebook span {
+ display: block;
+ width: 12px;
+ height: 26px;
+ background: url(../img/fb.png?__sprite) no-repeat;
+ margin-left: 16px;
+ margin-top: 9px;
+}
+.account_many .account_li_gmail span {
+ display: block;
+ width: 21px;
+ height: 16px;
+ background: url(../img/gmail.png?__sprite) no-repeat;
+ margin-left: 11px;
+ margin-top: 14px;
+}
+.account_many .account_li_twitter span {
+ display: block;
+ width: 25px;
+ height: 19px;
+ background: url(../img/twitter.png?__sprite) no-repeat;
+ margin-left: 9px;
+ margin-top: 12px;
+}
+.account_many .account_li_yahoo span {
+ display: block;
+ width: 26px;
+ height: 15px;
+ background: url(../img/yahoo.png?__sprite) no-repeat;
+ margin-left: 9px;
+ margin-top: 14px;
+}
+.account_many .account_li_facebook:hover span {
+ background: url(../img/fb_hover.png?__sprite) no-repeat;
+}
+.account_many .account_li_yahoo:hover span {
+ background: url(../img/yahoo_hover.png?__sprite) no-repeat;
+}
+.account_many .account_list {
+ overflow: hidden;
+ margin-top: 10px;
+ margin-bottom: 12px;
+ text-align: center;
+ font-size: 0;
+ letter-spacing: -4px;
+ word-spacing: -4px;
+}
+.account_many .account_login-tip_m {
+ font-size: 13px;
+ /* font-weight: bold;*/
+ text-align: center;
+}
+
+
+#bubbleaccount-guider2 {
+ visibility: hidden !important;
+}
+.self-account-logged #bubbleaccount-guider {
+ visibility: hidden !important;
+}
+.self-account-logged #bubbleaccount-guider2 {
+ visibility: visible !important;
+}
+
+.account_many_jp .account_li_gmail span {
+ width: 14px;
+ height: 22px;
+ background: url(../img/gmail2.png?__sprite) no-repeat;
+ margin-left: 14px;
+ margin-top: 11px;
+}
+.account_many_jp .account_li_yahoo span {
+ display: block;
+ width: 23px;
+ height: 13px;
+ background: url(../img/yahoo2.png?__sprite) no-repeat;
+ margin-left: 10px;
+ margin-top: 15px;
+}
+.account_many_jp .account_li_gmail:hover span {
+ background: url(../img/gmail2_hover.png?__sprite) no-repeat;
+}
+.account_many_jp .account_li_yahoo:hover span {
+ background: url(../img/yahoo2.png?__sprite) no-repeat;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/rtl/rtl.css
new file mode 100755
index 000000000..24eb6092f
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/rtl/rtl.css
@@ -0,0 +1,3 @@
+/*.account_wrap {
+ visibility: hidden;
+}*/
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/rtl/rtl.more.css
new file mode 100755
index 000000000..efd4dc88e
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/account/rtl/rtl.more.css
@@ -0,0 +1,263 @@
+/* 消息盒子的寄生于account,修改样式时麻烦留意一下 */
+.account_wrap {
+ float: left;
+ position: relative;
+ max-width: 170px;
+}
+.account_wrap:hover .account_trig {
+ background-color: #0164C8;
+ background-color: rgba(0, 99, 199, 0.97);
+}
+.account_trig {
+ padding: 0 12px;
+ height: 50px;
+ min-width: 14px;
+ overflow: hidden;
+ cursor: pointer;
+ text-align: center;
+ vertical-align: middle;
+ position: relative;
+ display: table-cell;
+}
+.account_title {
+ width: auto;
+ max-width: 150px;
+ line-height: 50px;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ display: block;
+ color: rgba(255, 255, 255, 0.5);
+}
+.account_login-tip {
+ cursor: pointer;
+}
+.login-tip_con {
+ padding-right: 28px;
+ text-align: center;
+ height: 30px;
+ line-height: 30px;
+ color: #587dc7;
+ background: url(../img/btn-fb-logo_rtl.png?__sprite) no-repeat right top;
+ background-color: #ffffff;
+ font-size: 14px;
+ font-weight: 600;
+}
+.account-loginfo_wrap {
+ width: 237px;
+ word-wrap: break-word;
+ overflow: hidden;
+ padding: 9px 20px 20px;
+ position: relative;
+ left: 0;
+ top: 0;
+ background-color: #0164C8;
+ background-color: rgba(0, 99, 199, 0.97);
+}
+.account-loginfo_wrap img {
+ width: 70px;
+ height: 70px;
+ margin-left: 12px;
+ margin-right: 2px;
+ margin-top: 4px;
+ float: right;
+ border-radius: 35px;
+ box-shadow: -2px 0 3px #fff, 0 -2px 3px #fff, 0 2px 3px #fff, 2px 0 3px #fff;
+}
+.account_logout_content {
+ float: right;
+ width: 140px;
+}
+.account_logout_name {
+ color: #ffffff;
+ line-height: 16px;
+ font-size: 12px;
+ margin-bottom: 4px;
+ word-wrap: break-word;
+ overflow: hidden;
+}
+.account_logout_email {
+ color: #9CC3E9;
+ color: rgba(255,255,255,0.6);
+ line-height: 16px;
+ font-size: 12px;
+ margin-bottom: 8px;
+ word-wrap: break-word;
+ overflow: hidden;
+}
+.accout_logout_sign {
+ margin-bottom: 7px;
+}
+.account_logout_btn,
+.account_logout_sign_btn {
+ white-space: nowrap;
+ display: inline-block;
+ width: 94px;
+ height: 24px;
+ text-align: center;
+ line-height: 24px;
+ background-color: #1C81E5;
+ color: #FFF;
+ font-size: 12px;
+ overflow: hidden;
+}
+.account_logout_sign_btn {
+ background-color: #68A1DA;
+ width: 130px;
+}
+.account_logout-act .account_logout_btn {
+ width: 130px;
+ background-color: #217DD9;
+ color: rgba(255,255,255,0.6);
+}
+.account_logout-act .account_logout_btn:hover {
+ background-color: #1775D3;
+}
+.account_logout-act .account_logout_sign_btn:hover {
+ background-color: #3986D4;
+}
+.account-login_suc .account_trig img {
+ width: 26px;
+ height: 26px;
+ cursor: default;
+ border-radius: 13px;
+ box-shadow: -2px 0 3px #ffffff, 0 -2px 3px #ffffff, 0 2px 3px #ffffff, 2px 0 3px #ffffff;
+}
+.account-dropdown_wrap {
+ position: absolute;
+ left: 0;
+ top: 50px;
+ display: none;
+}
+
+.userbar-wrap .account_wrap {
+ visibility: visible;
+}
+
+/*has skin*/
+.skin-on .account_wrap:hover .account_trig,
+.skin-on .wrap-message-content,
+.skin-on .account-loginfo_wrap {
+ background-color: #333333;
+ background-color: rgba(0, 0, 0, 0.8);
+}
+.skin-on .wrap-message-content li:hover {
+ background-color: #0A0A0A;
+ background-color: rgba(0,0,0,0.6);
+}
+.skin-on .wrap-message-content li {
+ border-bottom-color: #717171;
+ border-bottom-color: rgba(255,255,255,0.3);
+}
+.skin-on .account_logout_btn {
+ background-color: #626262;
+}
+.skin-on .account_logout-act .account_logout_btn:hover {
+ background-color: #555555;
+}
+.skin-on .account_logout_sign_btn {
+ background-color: #8B8B8B;
+}
+.skin-on .account_logout-act .account_logout_sign_btn:hover {
+ background-color: #666666;
+}
+
+/*head fixed*/
+.header-fixed-st .account_trig {
+ height: 40px;
+}
+.header-fixed-st .account-dropdown_wrap {
+ top: 40px;
+}
+.header-fixed-st .account_title {
+ line-height: 40px;
+}
+
+/*many accounts*/
+.account_many .account_trig,
+.account_many .account_login-tip {
+ cursor: default;
+}
+.account_many .account_li {
+ height: 44px;
+ width: 44px;
+ border-radius: 26px;
+ border: 2px solid #fff;
+ display: inline-block;
+ margin-left: 13px;
+ background-color: #ffffff;
+ cursor: pointer;
+}
+.account_many .account_li:hover {
+ background-color: #327dcc;
+ background-color: rgba(50,125,204,0.7);
+}
+.account_many .account_li:active {
+ background-color: #327dcc;
+ border-color: rgba(255,255,255,0.5);
+}
+.account_many .account_li_last {
+ margin-left: 0;
+}
+.account_many .account_li_facebook span {
+ display: block;
+ width: 12px;
+ height: 26px;
+ background: url(../img/fb.png?__sprite) no-repeat;
+ margin-right: 16px;
+ margin-top: 9px;
+}
+.account_many .account_li_gmail span {
+ display: block;
+ width: 21px;
+ height: 16px;
+ background: url(../img/gmail.png?__sprite) no-repeat;
+ margin-right: 11px;
+ margin-top: 14px;
+}
+.account_many .account_li_twitter span {
+ display: block;
+ width: 25px;
+ height: 19px;
+ background: url(../img/twitter.png?__sprite) no-repeat;
+ margin-right: 9px;
+ margin-top: 12px;
+}
+.account_many .account_li_yahoo span {
+ display: block;
+ width: 26px;
+ height: 15px;
+ background: url(../img/yahoo.png?__sprite) no-repeat;
+ margin-right: 9px;
+ margin-top: 14px;
+}
+.account_many .account_li_facebook:hover span {
+ background: url(../img/fb_hover.png?__sprite) no-repeat;
+}
+.account_many .account_li_yahoo:hover span {
+ background: url(../img/yahoo_hover.png?__sprite) no-repeat;
+}
+.account_many .account_list {
+ overflow: hidden;
+ margin-top: 10px;
+ margin-bottom: 12px;
+ text-align: center;
+ font-size: 0;
+ letter-spacing: -4px;
+ word-spacing: -4px;
+}
+.account_many .account_login-tip_m {
+ font-size: 13px;
+ /* font-weight: bold;*/
+ text-align: center;
+}
+
+
+#bubbleaccount-guider2 {
+ visibility: hidden !important;
+}
+.self-account-logged #bubbleaccount-guider {
+ visibility: hidden !important;
+}
+.self-account-logged #bubbleaccount-guider2 {
+ visibility: visible !important;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/add-fav-bar-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/add-fav-bar-async.js
new file mode 100755
index 000000000..633fd5c92
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/add-fav-bar-async.js
@@ -0,0 +1,65 @@
+var $ = require('common:widget/ui/jquery/jquery.js');
+var UT = require('common:widget/ui/ut/ut.js');
+var message = require('common:widget/ui/message/src/message.js');
+
+module.exports = function() {
+ if (!conf.addFavBar) return;
+
+ var _conf = conf.addFavBar,
+ container = $('#addFavBar'),
+
+ init = function() {
+
+ //当PM将showbarTime从非0改为0时,重置cookie。需要排除为空的情况
+ if (parseInt(_conf.showbarTime) === 0) {
+ $.cookie('Gh_b', 0);
+ }
+
+ //cookie中存的都是字符串,!('0') == false,所以需要转换为数字
+ !parseInt($.cookie('Gh_b')) && setBar();
+ },
+
+ setBar = function() {
+ if (_conf.hideBar) return;
+ bindEvent();
+ },
+
+
+ // Bind event
+ bindEvent = function() {
+ container
+ .on('click', '.fav-btn', function() {
+ hideBar();
+ })
+ .on('click', '.fav-close', function(e) {
+ var $kbd = $('#kbd');
+ e.preventDefault();
+ hideBar();
+ $kbd.length && $kbd.animate({
+ top: '130px'
+ }, 400);
+ })
+ .on('click', 'a', function() {
+ UT.send({
+ position: conf.pageType,
+ sort: $(this).attr('data-val'),
+ type: 'click',
+ modId: 'sethp-bar'
+ });
+ });
+ },
+
+ // Hide the bar and set cookie
+ hideBar = function() {
+ container.slideUp(400);
+ $.cookie('Gh_b', 1, {
+ expires: parseInt(_conf.showbarTime || 1, 10)
+ });
+
+ message.send('module.sidebar.changesize');
+ };
+
+ setTimeout(function() {
+ init();
+ }, 1e3);
+};
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/add-fav-bar.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/add-fav-bar.tpl
new file mode 100755
index 000000000..cb99a8813
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/add-fav-bar.tpl
@@ -0,0 +1,42 @@
+<%style%>
+<%if $head.dir=='ltr'%>
+@import url('/widget/header-flat/add-fav-bar/ltr/ltr.css?__inline');
+<%else%>
+@import url('/widget/header-flat/add-fav-bar/rtl/rtl.css?__inline');
+<%/if%>
+<%/style%>
+
+<%* 声明对ltr/rtl的css依赖 *%>
+<%if $head.dir=='ltr'%>
+<%require name="common:widget/header-flat/add-fav-bar/ltr/ltr.more.css"%>
+<%else%>
+<%require name="common:widget/header-flat/add-fav-bar/rtl/rtl.more.css"%>
+<%/if%>
+
+
+<%if empty($body.addFavBar.hideBar) && ($body.addFavBar.showbarTime === '0' || empty($smarty.cookies['Gh_b']))%>
+
+<%/if%>
+
+<%script%>
+ <%if isset($body.addFavBar)%>
+ conf.addFavBar = {
+ hideBar: "<%$body.addFavBar.hideBar%>",
+ showbarTime:"<%$body.addFavBar.showbarTime%>"
+ };
+ <%/if%>
+ require.async("common:widget/header-flat/add-fav-bar/add-fav-bar-async.js", function(addFavBar) {
+ addFavBar();
+ });
+<%/script%>
+
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/img/i-bar-addfav.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/img/i-bar-addfav.png
new file mode 100755
index 000000000..6cb56a600
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/img/i-bar-addfav.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/img/i-bar-bg.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/img/i-bar-bg.png
new file mode 100755
index 000000000..4d099072a
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/img/i-bar-bg.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/img/i-bar-down.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/img/i-bar-down.png
new file mode 100755
index 000000000..62a8886aa
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/img/i-bar-down.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/img/i-bar-sethome.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/img/i-bar-sethome.png
new file mode 100755
index 000000000..1b924b920
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/img/i-bar-sethome.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/img/i-close-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/img/i-close-hover.png
new file mode 100755
index 000000000..7a60797ee
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/img/i-close-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/img/i-close.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/img/i-close.png
new file mode 100755
index 000000000..2c4ab1d06
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/img/i-close.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/ltr/ltr.css
new file mode 100755
index 000000000..e01a064d0
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/ltr/ltr.css
@@ -0,0 +1,49 @@
+#ieSetHomePage {
+ display: none;
+}
+.bar-addfav {
+ font-size: 14px;
+ position: relative;
+ z-index: 400;
+ background-repeat: repeat-x;
+ background-image: -webkit-linear-gradient(top, #FFFFFF,#F1F1F1, #E2E2E2);
+ background-image: -moz-linear-gradient(top, #FFFFFF,#F1F1F1, #E2E2E2);
+ background-image: -ms-linear-gradient(top, #FFFFFF,#F1F1F1, #E2E2E2);
+ background-image: linear-gradient(top, #FFFFFF,#F1F1F1, #E2E2E2);
+ background-color: #f1f1f1;
+}
+.bar-addfav .l-wrap {
+ overflow: hidden;
+ height: 37px;
+}
+.bar-addfav .fav-title,
+.bar-addfav .fav-text {
+ line-height: 37px;
+ float: left;
+ padding-right: 5px;
+ color: #3890e7;
+}
+.bar-addfav .fav-title {
+ font-weight: 700;
+}
+.bar-addfav .fav-down {
+ float: left;
+ width: 21px;
+ height: 20px;
+ margin: 9px 5px 0 0;
+}
+.bar-addfav .fav-btn {
+ line-height: 20px;
+ float: left;
+ max-width: 150px;
+ height: 20px;
+ margin: 8px 0 0 25px;
+ padding-right: 20px;
+ padding-left: 20px;
+ cursor: pointer;
+ color: #fff;
+ border: 1px solid #c87d00;
+ border-radius: 2px;
+ outline: 0;
+ background-color: #f08e00;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/ltr/ltr.more.css
new file mode 100755
index 000000000..ecf4102dd
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/ltr/ltr.more.css
@@ -0,0 +1,14 @@
+.bar-addfav .fav-down {
+ background: url(../img/i-bar-down.png?__sprite) no-repeat;
+}
+.bar-addfav .fav-close {
+ float: right;
+ overflow: hidden;
+ width: 20px;
+ height: 20px;
+ margin-top: 9px;
+ background: url(../img/i-close.png?__sprite) no-repeat;
+}
+.bar-addfav .fav-close:hover {
+ background: url(../img/i-close-hover.png?__sprite) no-repeat;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/rtl/rtl.css
new file mode 100755
index 000000000..660ded57c
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/rtl/rtl.css
@@ -0,0 +1,49 @@
+#ieSetHomePage {
+ display: none;
+}
+.bar-addfav {
+ font-size: 14px;
+ position: relative;
+ z-index: 400;
+ background-color: #f1f1f1;
+ background-image: -webkit-linear-gradient(top, #fff, #f1f1f1, #e2e2e2);
+ background-image: -moz-linear-gradient(top, #fff, #f1f1f1, #e2e2e2);
+ background-image: -ms-linear-gradient(top, #fff, #f1f1f1, #e2e2e2);
+ background-image: linear-gradient(top, #fff, #f1f1f1, #e2e2e2);
+ background-repeat: repeat-x;
+}
+.bar-addfav .l-wrap {
+ overflow: hidden;
+ height: 37px;
+}
+.bar-addfav .fav-title,
+.bar-addfav .fav-text {
+ line-height: 37px;
+ float: right;
+ padding-left: 5px;
+ color: #3890e7;
+}
+.bar-addfav .fav-title {
+ font-weight: 700;
+}
+.bar-addfav .fav-down {
+ float: right;
+ width: 21px;
+ height: 20px;
+ margin: 9px 0 0 5px;
+}
+.bar-addfav .fav-btn {
+ line-height: 20px;
+ float: right;
+ max-width: 150px;
+ height: 20px;
+ margin: 8px 25px 0 0;
+ padding-right: 20px;
+ padding-left: 20px;
+ cursor: pointer;
+ color: #fff;
+ border: 1px solid #c87d00;
+ border-radius: 2px;
+ outline: 0;
+ background-color: #f08e00;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/rtl/rtl.more.css
new file mode 100755
index 000000000..0ca753f19
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/add-fav-bar/rtl/rtl.more.css
@@ -0,0 +1,14 @@
+.bar-addfav .fav-down {
+ background: url(../img/i-bar-down.png?__sprite) no-repeat;
+}
+.bar-addfav .fav-close {
+ float: left;
+ overflow: hidden;
+ width: 20px;
+ height: 20px;
+ margin-top: 9px;
+ background: url(../img/i-close.png?__sprite) no-repeat;
+}
+.bar-addfav .fav-close:hover {
+ background: url(../img/i-close-hover.png?__sprite) no-repeat;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/banner-site/banner-site-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/banner-site/banner-site-async.js
new file mode 100755
index 000000000..4ceffd581
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/banner-site/banner-site-async.js
@@ -0,0 +1,43 @@
+var $ = require("common:widget/ui/jquery/jquery.js");
+var UT = require("common:widget/ui/ut/ut.js");
+var helper = require("common:widget/ui/helper/helper.js");
+
+
+var TPL = ' ',
+ TPL2 = ' ';
+
+var DATA = conf.bannerSite["data"] || {};
+
+var fire = function(id) {
+ var $wrap = $(id), _frag = "";
+
+ var i = 0, j = DATA.length, t = {};
+
+ if($wrap.length && j) {
+
+ for(; i < j; i++) {
+ t = DATA[i];
+
+ if (!t["url"]) {
+ return;
+ }
+
+ (i === 0) && (t["className"] += " item-first");
+
+ _frag += helper.replaceTpl(((t && t["bgImg"]) ? TPL : TPL2), t);
+ }
+
+ $wrap.html(_frag);
+
+ $wrap.on("click", "a", function() {
+ UT.send({
+ "modId": "banner-site",
+ "type": "click",
+ "position": "site",
+ "sort": $(this).attr("href")
+ });
+ });
+ }
+};
+
+module.exports = fire;
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/banner-site/banner-site.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/banner-site/banner-site.tpl
new file mode 100755
index 000000000..1283c3a5d
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/banner-site/banner-site.tpl
@@ -0,0 +1,16 @@
+<%require name="common:widget/header-flat/banner-site/`$head.dir`/`$head.dir`.more.css"%>
+<%style%>
+ <%if !empty($body.bannerSite.style)%>
+ <%$body.bannerSite.style%>
+ <%/if%>
+<%/style%>
+
+
+
+
+<%script%>
+conf.bannerSite = <%json_encode($body.bannerSite)%>||{};
+require.async(["common:widget/header-flat/banner-site/banner-site-async.js"], function (fire) {
+ fire("#" + "<%$body.bannerSite.id|default:'fixedBannerSite'%>");
+});
+<%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/banner-site/img/game.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/banner-site/img/game.png
new file mode 100755
index 000000000..46d319d23
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/banner-site/img/game.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/banner-site/img/picture.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/banner-site/img/picture.png
new file mode 100755
index 000000000..f2a2b5aeb
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/banner-site/img/picture.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/banner-site/img/video.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/banner-site/img/video.png
new file mode 100755
index 000000000..4089a733c
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/banner-site/img/video.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/banner-site/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/banner-site/ltr/ltr.more.css
new file mode 100755
index 000000000..ce5105c91
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/banner-site/ltr/ltr.more.css
@@ -0,0 +1,47 @@
+.mod-banner-site {
+ float: right;
+ position: relative;
+ height: 50px;
+ display: none;
+}
+.mod-banner-site .hd-item {
+ float: right;
+ width: 42px;
+ margin-right: 12px;
+ height: 100%;
+ background-position: center center;
+ background-repeat: no-repeat;
+
+}
+.mod-banner-site .item-first {
+ margin-right: 0;
+}
+.mod-banner-site .game {
+ background-image: url(../img/game.png);
+}
+.mod-banner-site .picture {
+ background-image: url(../img/picture.png);
+}
+.mod-banner-site .video {
+ background-image: url(../img/video.png);
+}
+.mod-banner-site .game:hover {
+ background-color: #ff5c0d;
+ background-color: rgba(155,92,13,0.8);
+}
+.mod-banner-site .picture:hover {
+ background-color: #e51c63;
+ background-color: rgba(229,28,99,0.8);
+}
+.mod-banner-site .video:hover {
+ background-color: #1B1B1B;
+ background-color: rgba(27, 27, 27,0.8);
+}
+
+/*head fixed*/
+.header-fixed-st .mod-banner-site {
+ height: 40px;
+}
+.header-fixed .mod-banner-site {
+ display: block;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/banner-site/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/banner-site/rtl/rtl.more.css
new file mode 100755
index 000000000..735ac3ec2
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/banner-site/rtl/rtl.more.css
@@ -0,0 +1,47 @@
+.mod-banner-site {
+ float: left;
+ position: relative;
+ height: 50px;
+ display: none;
+}
+.mod-banner-site .hd-item {
+ float: left;
+ width: 42px;
+ margin-left: 12px;
+ height: 100%;
+ background-position: center center;
+ background-repeat: no-repeat;
+
+}
+.mod-banner-site .item-first {
+ margin-left: 0;
+}
+.mod-banner-site .game {
+ background-image: url(../img/game.png);
+}
+.mod-banner-site .picture {
+ background-image: url(../img/picture.png);
+}
+.mod-banner-site .video {
+ background-image: url(../img/video.png);
+}
+.mod-banner-site .game:hover {
+ background-color: #ff5c0d;
+ background-color: rgba(155,92,13,0.8);
+}
+.mod-banner-site .picture:hover {
+ background-color: #e51c63;
+ background-color: rgba(229,28,99,0.8);
+}
+.mod-banner-site .video:hover {
+ background-color: #1B1B1B;
+ background-color: rgba(27, 27, 27,0.8);
+}
+
+/*head fixed*/
+.header-fixed-st .mod-banner-site {
+ height: 40px;
+}
+.header-fixed .mod-banner-site {
+ display: block;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/calendar-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/calendar-async.js
new file mode 100755
index 000000000..0c20eaa3d
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/calendar-async.js
@@ -0,0 +1,206 @@
+var $ = require("common:widget/ui/jquery/jquery.js"),
+ __date = require("common:widget/ui/date/date.js"),
+ time = require("common:widget/ui/time/time.js"),
+ UT = require("common:widget/ui/ut/ut.js");
+require("common:widget/ui/date-new/date.js");
+
+var calenPath = { // plugin path
+ 'isl': 'isl',
+ 'buddhist': 'buddhist',
+ 'rokuyou': 'rokuyou',
+ 'lunar': 'lunar'
+ },
+ parseToArr = function(obj, fix) {
+ fix = fix || "value";
+ var i = 0,
+ j = obj.length,
+ arr = [];
+ for(; i < j; i++) {
+ arr.push(obj[i][fix] || obj[i]);
+ }
+ return arr;
+ },
+ _conf = conf.calendar || {},
+ seCalen = _conf.secondCalendar, // 副日历名称
+ dateMsg = _conf.dateMsg || {},
+ holiday = {},
+ events = {},
+ festival = {},
+ normal = {},
+ lyl = parseToArr(_conf.rokuyou || []),
+ organizeToHash = function(data, kind) {
+ if(!data) {return {};}
+ var newData = {},
+ tmpObj = {};
+ for (var i = 0, j = data.length; i < j; i++) {
+ tmpObj = data[i];
+ if(!tmpObj) continue;
+ newData["d" + tmpObj.date] = {
+ kind: tmpObj.kind || kind,
+ title: tmpObj.title,
+ url: tmpObj.url
+ }
+ }
+ return newData;
+ };
+
+holiday = organizeToHash(dateMsg["holiday"], "holiday"); // format data for easy handle
+events = organizeToHash(dateMsg["events"], "event"); // format data for easy handle
+festival = organizeToHash(dateMsg["festival"], "festival"); // format data for easy handle
+normal = organizeToHash(dateMsg["normal"]); // format data for easy handle
+
+var calenTpl = '',
+ toDate = function(y, M, d) {
+ /*var date = new Date();
+ date.setFullYear(y);
+ date.setDate(d);
+ date.setMonth(M - 1);*/
+ return new Date(y, M - 1, d);
+ },
+ formatDate = function(y, M, d) {
+ return ('d' + y + '-' + M + '-' + d);
+ },
+ getItemData = function(y, M, d) {
+ var str = formatDate(y, M, d),
+ obj = {},
+ ymd = {};
+
+ obj = normal[str] || events[str] || holiday[str] || festival[str] || null;
+ if(obj) {
+ if(obj.kind) {
+ ymd.className = 'class=mod-calendar-' + obj.kind;
+ }
+ if(obj.title) {
+ ymd.info = obj.title;
+ }
+ if(obj.url) {
+ ymd.url = obj.url;
+ }
+ ymd.noLink = "";
+ if(obj.url == "" || obj.url == "#") {
+ ymd.noLink = "no-link";
+ }
+ }
+ return ymd;
+ },
+ calenFuncMap = {
+ 'isl': function(y, M, d) {
+ var date = Date.toIsl(toDate(y, M, d)),
+ islM = parseToArr(_conf.islMonth || []);
+ if(islM && date.id == "1") {
+ return islM[date.im - 1] || "";
+ }
+ return date.id || "";
+ },
+ 'rokuyou': function(y, M, d) {
+ var date = toDate(y, M, d);
+ return lyl[Date.toLyl(date).jl] || "";
+ },
+ 'lunar': function(y, M, d) {
+ var lunarObj = __date.toLunar(y, M, d),
+ str = lunarObj.cd || "";
+ if (_conf.lunarNumber === "1") {
+ return str + (str == "1" ? ("/" + lunarObj.cm) : "");
+ } else {
+ return str == "1" ? lunarObj.CM : (lunarObj.CD || "");
+ }
+ },
+ 'buddhist': function(y, M, d) {
+ return "";
+ }
+ },
+ callback = function($glo, moreBtn, url, _co, week) {
+ var params = {
+ footer: moreBtn ? ('' + moreBtn + ' ') : '',
+ onFilterDays: function(data) {
+ data.noLink = "no-link";
+ if(seCalen && calenFuncMap[seCalen]) {
+ data.info = calenFuncMap[seCalen](data.y, data.M, data.d);
+ }
+ $.extend(data, getItemData(data.y, data.M, data.d));
+ return data;
+ },
+ onSwitch: function(data, $y, $m) {
+ $("#calYearList").find("li").filter(function() {
+ return $(this).attr("value") == data.y;
+ }).trigger("mousedown.dropdownlist");
+ $("#calMonthList").find("li").filter(function() {
+ return $(this).attr("value") == data.M;
+ }).trigger("mousedown.dropdownlist");
+ }
+ };
+ if(_co.useAbbrMonth === '1' && _co.abbrMonth) {
+ var abbrM = parseToArr(_co.abbrMonth);
+ params.fixMonth = function(i) {
+ return abbrM[i - 1] || "";
+ };
+ }
+ if(seCalen === "buddhist") {
+ params.fixYear = function(i) {
+ return i + (parseInt(_co.fixYear, 10) || 543);
+ };
+ }
+ if (_co.yearFrom) {
+ params.minDate = _co.yearFrom;
+ }
+ if (_co.yearTo) {
+ params.maxDate = _co.yearTo;
+ }
+ if (_co.isAbbrWeek === "1") {
+ params.isAbbrWeek = true;
+ } else {
+ params.isAbbrWeek = false;
+ }
+ if (_co.beginDay) {
+ params.beginDay = parseInt(_co.beginDay, 10);
+ }
+ if (week && week.length) {
+ params.weeks = parseToArr(week);
+ }
+ params.switchLoop = true;
+ $('.mod-calendar', $glo).calendar(params);
+ require.async("common:widget/ui/dropdownlist/dropdownlist.js", function(dropdown) {
+ new dropdown({
+ selector: "calYear",
+ defIndex: $("#calYear").get(0).selectedIndex,
+ supportSubmit: 1,
+ lineHeight: 36,
+ customScrollbar: 1
+ });
+ new dropdown({
+ selector: "calMonth",
+ defIndex: $("#calMonth").get(0).selectedIndex,
+ supportSubmit: 1,
+ lineHeight: 36,
+ customScrollbar: 1
+ });
+ });
+ };
+// require的文件必须为字符串吗?变量拼接的获取不到!
+var init = function($glo, moreBtn, url, _co, week) {
+ $('.calendar-wrapper', $glo).html(calenTpl);
+ if (seCalen && calenPath[seCalen]) {
+ if (calenPath[seCalen] === "rokuyou") {
+ require.async(["common:widget/ui/calendar/calendar.js", "common:widget/ui/date-new/plugin/rokuyou.js"], function() {
+ callback($glo, moreBtn, url, _co, week);
+ });
+ } else if (calenPath[seCalen] === "isl") {
+ require.async(["common:widget/ui/calendar/calendar.js", "common:widget/ui/date-new/plugin/isl.js"], function() {
+ callback($glo, moreBtn, url, _co, week);
+ });
+ } else if (calenPath[seCalen] === "buddhist") {
+ require.async(["common:widget/ui/calendar/calendar.js", "common:widget/ui/date-new/plugin/buddhist.js"], function() {
+ callback($glo, moreBtn, url, _co, week);
+ });
+ } else if (calenPath[seCalen] === "lunar") {
+ require.async(["common:widget/ui/calendar/calendar.js", "common:widget/ui/date-new/plugin/lunar.js"], function() {
+ callback($glo, moreBtn, url, _co, week);
+ });
+ }
+ } else {
+ require.async(["common:widget/ui/calendar/calendar.js"], function() {
+ callback($glo, moreBtn, url, _co, week);
+ });
+ }
+};
+module.exports = init;
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/clock-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/clock-async.js
new file mode 100755
index 000000000..b56ec8164
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/clock-async.js
@@ -0,0 +1,178 @@
+/*
+ * CLOCK
+ */
+window.Gl || (window.Gl = {});
+
+var $ = require("common:widget/ui/jquery/jquery.js"),
+ __date = require("common:widget/ui/date/date.js"),
+ time = require("common:widget/ui/time/time.js"),
+ UT = require("common:widget/ui/ut/ut.js");
+require("common:widget/ui/date-new/date.js");
+//clock
+//time & date & calendar
+Gl.clock = function(el) {
+ var _conf = conf.clock,
+ $wraper = $(".userbar-date-wrapper"),
+ $glo = $("#" + el),
+ $el = $glo,
+ url = _conf.url || "",
+ title = _conf.title || "",
+ tpl = _conf.tpl || '#{y}/ #{m}/ #{d}',
+ moreTpl = '
', // when has calendar
+ rate = _conf.rate || 500,
+ ssCache = 0, //seconds cache
+ tim, // for calendar timetamp
+ format = function() {
+ var date = time.getForm();
+
+ if (date.ss === ssCache) return "";
+ ssCache = date.ss; //update seconds
+ return tpl.replaceTpl(date);
+ },
+ toNum = function(n) {
+ return parseInt(n, 10);
+ };
+
+ // open calendar
+ if (_conf.headerTest && _conf.openCal === "1") {
+ $glo.addClass('userbar-date-cal');
+ $glo.html(moreTpl);
+
+ $(document.body).on("click", function(e) {
+ var $e = $(e.target);
+ if (!$e.closest('.userbar-date-cal').length) {
+ $glo.removeClass('date-open');
+ $wraper.removeClass('userbar-date-new_mod-show');
+ }
+ });
+ $(".calendar-wrapper", $glo).on("click", "a", function(e) {
+ var $that = $(this),
+ href = $that.attr("href");
+ if (href == "" || href == "#") {
+ e.preventDefault();
+ e.stopPropagation();
+ } else {
+ UT.send({
+ position: "clickable",
+ sort: href,
+ type: "click",
+ modId: "date"
+ });
+ }
+ }).on("mousedown", "a", function(e) {
+ var $that = $(this),
+ href = $that.attr("href");
+ if (href == "" || href == "#") {
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ });
+
+ // create Calendar
+ $glo.one("o.onceload", function() {
+ $.ajax({
+ url: "http://"+conf.country+".hao123.com/cmsdata?country="+conf.country+"&module=date&basemerge=true",
+ dataType: "jsonp"
+ }).done(function ( result ) {
+ conf.calendar = result.data.calendar;
+ require.async("common:widget/header-flat/clock/calendar-async.js", function(init) {
+ var wk = $.extend(true, [], conf.date.lunar && conf.date.lunar.wk );
+ init($glo, _conf.moreBtn, url, conf.calendar, conf.calendar.week || wk);
+ });
+ });
+ });
+ // add UT
+ $glo.on("click", function(e) {
+ var $e = $(e.target);
+ if (!$e.closest('.calendar-wrapper').length) {
+ $glo.toggleClass('date-open');
+ $wraper.toggleClass('userbar-date-new_mod-show');
+ UT.send({
+ ac: "b",
+ position: "control",
+ sort: $glo.hasClass('date-open') ? "open" : "close",
+ type: "click",
+ modId: "date"
+ });
+ e.preventDefault();
+ }
+ }).one("mouseenter", function() {
+ $glo.trigger('o.onceload');
+ }).on("click", ".mod-calendar_next", function(e) {
+ UT.send({
+ ac: "b",
+ position: "control",
+ sort: "next",
+ type: "click",
+ modId: "date"
+ });
+ }).on("click", ".mod-calendar_prev", function(e) {
+ UT.send({
+ ac: "b",
+ position: "control",
+ sort: "prev",
+ type: "click",
+ modId: "date"
+ });
+ }).on("click", ".dropdown", function(e) {
+ UT.send({
+ ac: "b",
+ position: "control",
+ sort: "select",
+ type: "click",
+ modId: "date"
+ });
+ }).on("mouseover", function(e) {
+ var $e = $(e.target);
+ if (!$e.closest('.calendar-wrapper').length) {
+ $glo.addClass('calendar-open');
+ } else {
+ $glo.removeClass('calendar-open');
+ }
+ }).on("mouseout", function(e) {
+ $glo.removeClass('calendar-open');
+ });
+ $(document.body).on("click", function(e) {
+ //clearTimeout(tim);
+ //tim = setTimeout(function() {
+ $('.userbar-date .dropdown-arrow').each(function(index, ele) {
+ var that = $(this),
+ par = that.closest('.dropdown-trigger');
+ if (that.hasClass('dropdown-arrow-up')) {
+ par.addClass('dropdown-ctrl-open');
+ } else {
+ par.removeClass('dropdown-ctrl-open');
+ }
+ });
+ // }, 10);
+ });
+ $(window).load(function() {
+ setTimeout( function() {
+ $glo.trigger('o.onceload');
+ }, 200);
+ });
+ $el = $glo.find(".date-wrapper");
+ } else {
+ $glo.on("click", "a", function(e) { // old UT log
+ UT.send({
+ position: "click",
+ sort: "click",
+ type: "click",
+ modId: "date"
+ });
+ });
+ if ( !! url) {
+ tpl = '' + tpl + ' ';
+ }
+ }
+ //display local time when initialize
+ $el.html(format(new Date));
+ $wraper.addClass('animate-opacity');
+
+ timer = setInterval(function() {
+ var html = format();
+
+ //render the time
+ if (html) $el.html(html);
+ }, rate);
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/clock-conf/clock-conf.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/clock-conf/clock-conf.tpl
new file mode 100755
index 000000000..7e78fe450
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/clock-conf/clock-conf.tpl
@@ -0,0 +1,19 @@
+<%script%>
+//conf.date
+ String.prototype.parseToArray=function(e,t){var n=this.split(t||"|");return e?function(t,r){for(;t--;)n[t]=parseInt(n[t],e);return n}(n.length):n};
+
+ conf.date={day:{0:"<%$body.date.today%>",1:"<%$body.date.tomorrow%>"},days:[31,28,31,30,31,30,31,31,30,31,30,31],lunar:{tpl:"#{y}-#{m}-#{d} #{W} \u519c\u5386 #{CM}#{CD} #{gy}(#{sx}) #{gm} #{gd} #{so} #{cf} #{gf}",leap:"ezc|esg|wog|gr9|15k0|16xc|1yl0|h40|ukw|gya|esg|wqe|wk0|15jk|2k45|zsw|16e8|yaq|tkg|1t2v|ei8|wj4|zp1|l00|lkw|2ces|8kg|tio|gdu|ei8|k12|1600|1aa8|lud|hxs|8kg|257n|t0g|2i8n|13rk|1600|2ld2|ztc|h40|2bas|7gw|t00|15ma|xg0|ztj|lgg|ztc|1v11|fc0|wr4|1sab|gcw|xig|1a34|l28|yhy|xu8|ew0|xr8|wog|g9s|1bvn|16xc|i1j|h40|tsg|fdh|es0|wk0|161g|15jk|1654|zsw|zvk|284m|tkg|ek0|xh0|wj4|z96|l00|lkw|yme|xuo|tio|et1|ei8|jw0|n1f|1aa8|l7c|gxs|xuo|tsl|t0g|13s0|16xg|1600|174g|n6a|h40|xx3|7gw|t00|141h|xg0|zog|10v8|y8g|gyh|exs|wq8|1unq|gc0|xf4|nys|l28|y8g|i1e|ew0|wyu|wkg|15k0|1aat|1640|hwg|nfn|tsg|ezb|es0|wk0|2jsm|15jk|163k|17ph|zvk|h5c|gxe|ek0|won|wj4|xn4|2dsl|lk0|yao".parseToArray(36),jqmap:"0|gd4|wrn|1d98|1tuh|2akm|2rfn|38g9|3plp|46vz|4o9k|55px|5n73|64o5|6m37|73fd|7kna|81qe|8io7|8zgq|9g4b|9wnk|ad3g|ath2|".parseToArray(36),jqnames:"\u5c0f\u5bd2|\u5927\u5bd2|\u7acb\u6625|\u96e8\u6c34|\u60ca\u86f0|\u6625\u5206|\u6e05\u660e|\u8c37\u96e8|\u7acb\u590f|\u5c0f\u6ee1|\u8292\u79cd|\u590f\u81f3|\u5c0f\u6691|\u5927\u6691|\u7acb\u79cb|\u5904\u6691|\u767d\u9732|\u79cb\u5206|\u5bd2\u9732|\u971c\u964d|\u7acb\u51ac|\u5c0f\u96ea|\u5927\u96ea|\u51ac\u81f3".parseToArray(),c1:"|\u4e00|\u4e8c|\u4e09|\u56db|\u4e94|\u516d|\u4e03|\u516b|\u4e5d|\u5341".parseToArray(),c2:"\u521d|\u5341|\u5eff|\u5345|".parseToArray(),wk:"<%$body.date.Sunday%>|<%$body.date.Monday%>|<%$body.date.Tuesday%>|<%$body.date.Wednesday%>|<%$body.date.Thursday%>|<%$body.date.Friday%>|<%$body.date.Saturday%>".parseToArray(),tg:"\u7532|\u4e59|\u4e19|\u4e01|\u620a|\u5df1|\u5e9a|\u8f9b|\u58ec|\u7678".parseToArray(),dz:"\u5b50|\u4e11|\u5bc5|\u536f|\u8fb0|\u5df3|\u5348|\u672a|\u7533|\u9149|\u620c|\u4ea5".parseToArray(),sx:"\u9f20|\u725b|\u864e|\u5154|\u9f99|\u86c7|\u9a6c|\u7f8a|\u7334|\u9e21|\u72d7|\u732a".parseToArray(),fixMonth:["2001-5-23~2001-6-20","2004-3-21~2004-4-18","2006-8-24~2006-9-21","2009-6-23~2009-7-21", "2012-5-21~2012-6-18","2014-10-24~2014-11-21","2017-7-23~2017-8-21", "2020-5-23~2020-6-29","2023-3-22~2023-4-19","2025-7-25~2025-8-22"],fixDate:["2002-1-1~2002-1-12=0|-1|0", "2002-1-14~2002-2-11=0|-1|1", "2002-1-13=0|0|-29", "2005-1-1~2005-1-9=0|-1|0", "2005-1-11~2005-2-8=0|-1|1", "2005-1-10=0|0|-29", "2007-1-1~2007-1-18=0|-1|1", "2007-1-20~2007-2-17=0|-1|1", "2007-1-19=0|0|-29", "2010-1-1~2010-1-14=0|-1|1", "2010-1-16~2010-2-13=0|-1|1", "2010-1-15=0|0|-29", "2013-1-1~2013-1-11=0|-1|1", "2013-1-12~2013-2-9=0|-1|0", "2015-1-1~2015-1-19=0|-1|0", "2015-1-21~2015-2-18=0|-1|1", "2015-1-20=0|0|-29", "2018-1-1~2018-1-16=0|-1|0", "2018-1-17~2018-2-15=0|-1|0", "2021-1-1~2021-1-12=0|-1|0", "2021-1-14~2021-2-11=0|-1|1", "2021-1-13=0|0|-29", "2024-1-1~2024-1-10=0|-1|0", "2024-1-12~2024-2-9=0|-1|1", "2024-1-11=0|0|-29"]},isl:{tpl:"#{IW} - #{d} \u0645\u0646 #{M} #{y} - #{id} #{IM} #{iy}",weekNames:["\u0627\u0644\u0623\u062d\u062f","\u0627\u0644\u0627\u062b\u0646\u064a\u0646","\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621","\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621","\u0627\u0644\u062e\u0645\u064a\u0633","\u0627\u0644\u062c\u0645\u0639\u0629","\u0627\u0644\u0633\u0628\u062a"],gMonthNames:["<%$body.date.Jan%>","<%$body.date.Feb%>","<%$body.date.Mar%>","<%$body.date.Apr%>","<%$body.date.May%>","<%$body.date.Jun%>","<%$body.date.Jul%>","<%$body.date.Aug%>","<%$body.date.Sep%>","<%$body.date.Oct%>","<%$body.date.Nov%>","<%$body.date.Dec%>"],monthNames:["\u0627\u0644\u0645\u062d\u0631\u0645","\u0635\u0641\u0631","\u0631\u0628\u064a\u0639 \u0627\u0644\u0623\u0648\u0644","\u0631\u0628\u064a\u0639 \u0627\u0644\u062b\u0627\u0646\u064a","\u062c\u0645\u0627\u062f\u064a \u0627\u0644\u0623\u0648\u0644\u0649","\u062c\u0645\u0627\u062f\u064a \u0627\u0644\u0622\u062e\u0631\u0629","\u0631\u062c\u0628","\u0634\u0639\u0628\u0627\u0646","\u0631\u0645\u0636\u0627\u0646","\u0634\u0648\u0627\u0644","\u0630\u0648 \u0627\u0644\u0642\u0639\u062f\u0629","\u0630\u0648 \u0627\u0644\u062d\u062c\u0629"],fixDate:[]}};
+
+ //clock configuration
+ conf.clock = {
+ imgUrl: "/static/web/common/img/gut.gif",
+ url: '<%$body.date.url%>',
+ title: '<%$body.date.title%>',
+ tpl: '<%$body.date.tpl%>',
+ islDateFix: '<%if isset($body.date.islDateFix)%><%$body.date.islDateFix%><%/if%>' || 0,
+ rate: 1000,
+ openCal: '<%$body.date.openCalendar%>',
+ moreBtn: '<%$body.date.moreBtn%>',
+ headerTest: '<%$body.headerTest.widget%>'
+ };
+<%/script%>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/clock.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/clock.tpl
new file mode 100755
index 000000000..e6f352e3b
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/clock.tpl
@@ -0,0 +1,29 @@
+<%style%>
+<%if $head.dir=='ltr'%>
+@import url('/widget/header-flat/clock/ltr/ltr.css?__inline');
+<%else%>
+@import url('/widget/header-flat/clock/rtl/rtl.css?__inline');
+<%/if%>
+<%/style%>
+
+<%* 声明对ltr/rtl的css依赖 *%>
+<%if $head.dir=='ltr'%> <%require name="common:widget/header-flat/clock/ltr/ltr.more.css"%> <%else%> <%require name="common:widget/header-flat/clock/rtl/rtl.more.css"%> <%/if%>
+
+<%if !empty($body.headerTest.widget)%><%/if%>
+
style="font-size:<%$body.date.fontSize%>"<%/if%>>
+<%if !empty($body.headerTest.widget)%>
<%/if%>
+<%widget name="common:widget/header-flat/clock/clock-conf/clock-conf.tpl"%>
+<%script%>
+ require.async("common:widget/ui/jquery/jquery.js", function($) {
+
+ $(window).one("e_go.clock", function () {
+ require.async("common:widget/header-flat/clock/clock-async.js", function () {
+ Gl.clock("dateBox");
+ });
+ });
+
+ //$(function () {
+ $(window).trigger("e_go.clock");
+ //});
+ });
+<%/script%>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/bell.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/bell.png
new file mode 100755
index 000000000..b0b8dd72e
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/bell.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/calendar-new.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/calendar-new.png
new file mode 100755
index 000000000..676802a72
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/calendar-new.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/calendar.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/calendar.png
new file mode 100755
index 000000000..60e6e6ed2
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/calendar.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/count_bg.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/count_bg.png
new file mode 100755
index 000000000..71c8fc7df
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/count_bg.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/countdown.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/countdown.png
new file mode 100755
index 000000000..ca747bdfc
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/countdown.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/events.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/events.png
new file mode 100755
index 000000000..d4ca94538
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/events.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/festval.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/festval.png
new file mode 100755
index 000000000..4432977e1
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/festval.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/football.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/football.png
new file mode 100755
index 000000000..418a40f1e
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/football.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/more_trigger-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/more_trigger-hover.png
new file mode 100755
index 000000000..cd547fd4b
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/more_trigger-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/more_trigger-hover_sk.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/more_trigger-hover_sk.png
new file mode 100755
index 000000000..45b0a9845
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/more_trigger-hover_sk.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/more_trigger.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/more_trigger.png
new file mode 100755
index 000000000..46f160b21
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/more_trigger.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/more_trigger_sk.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/more_trigger_sk.png
new file mode 100755
index 000000000..adfc0adf7
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/more_trigger_sk.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/next.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/next.png
new file mode 100755
index 000000000..254c9eb49
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/next.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/next_hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/next_hover.png
new file mode 100755
index 000000000..2a04f244c
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/next_hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/next_hover_rtl.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/next_hover_rtl.png
new file mode 100755
index 000000000..2a04f244c
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/next_hover_rtl.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/next_rtl.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/next_rtl.png
new file mode 100755
index 000000000..254c9eb49
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/next_rtl.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/prev.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/prev.png
new file mode 100755
index 000000000..06dfbfcc9
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/prev.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/prev_hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/prev_hover.png
new file mode 100755
index 000000000..7a8e5b8d9
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/prev_hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/prev_hover_rtl.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/prev_hover_rtl.png
new file mode 100755
index 000000000..7a8e5b8d9
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/prev_hover_rtl.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/prev_rtl.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/prev_rtl.png
new file mode 100755
index 000000000..06dfbfcc9
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/prev_rtl.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/worldcup-vs.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/worldcup-vs.png
new file mode 100755
index 000000000..7959deeda
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/img/worldcup-vs.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/ltr/ltr.css
new file mode 100755
index 000000000..c1339348b
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/ltr/ltr.css
@@ -0,0 +1,7 @@
+/*.userbar-date{ display: none;}
+.userbar-date-wrapper {
+ float: left;
+ position: relative;
+ z-index: 100;
+ background-repeat: no-repeat;
+}*/
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/ltr/ltr.more.css
new file mode 100755
index 000000000..4464bab6e
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/ltr/ltr.more.css
@@ -0,0 +1,609 @@
+/*form inline css*/
+.userbar-date{
+ display: none;
+}
+.userbar-date-wrapper {
+ float: right;
+ /*position: relative;*/
+ z-index: 100;
+ background-repeat: no-repeat;
+ opacity: 0;
+}
+
+
+
+.userbar-date{
+ white-space: nowrap;
+ display: block;
+ display: block !important;
+ position: relative;
+ float: left;
+ padding: 11px 20px 9px 20px;
+}
+.userbar-date a {
+ color: #fff;
+}
+.userbar-date span {
+ color: #b8e1cf;
+ font-size: 9px;
+ padding: 0 2px;
+}
+
+/*for countdown*/
+.userbar-date .down-wrapper {
+ height: 30px;
+ overflow: hidden;
+}
+.userbar-date .down-wrapper span {
+ color: #ffffff;
+ font-size: 12px;
+ padding: 0;
+}
+.down-wrapper .down-time {
+ float: right;
+ overflow: hidden;
+ height: 30px;
+/* width: 72px;*/
+}
+.userbar-date .down-wrapper .down-day {
+ font-size: 30px;
+ line-height: 30px;
+ float: left;
+ margin-right: 4px;
+ color: #fff000;
+}
+.down-wrapper .down-dhm {
+ float: right;
+}
+.userbar-date .down-wrapper .down-d {
+ color: #9BD5C1;
+ color: rgba(255,255,255,0.6);
+}
+.down-wrapper .down-tip {
+ float: left;
+ position: absolute;
+ left: 18px;
+}
+.userbar-date .mod-calendar_ft a {
+ display: inline;
+}
+.userbar-date .mod-calendar a {
+ color: #FFFFFF;
+}
+.userbar-date .mod-calendar_weeks {
+ color: #BACCEB;
+ color: rgba(255,255,255,0.6);
+ border-color: transparent;
+}
+.userbar-date .mod-calendar_next, .userbar-date .mod-calendar_prev {
+ width: 30px;
+ height: 50px;
+ padding: 0;
+ text-indent: -1000px;
+ overflow: hidden;
+ white-space: nowrap;
+ cursor: pointer;
+}
+.userbar-date .mod-calendar_next {
+ background: url(../img/next.png?__sprite) no-repeat;
+ margin-right: 1px;
+}
+.userbar-date .mod-calendar_next:hover {
+ background: url(../img/next_hover.png?__sprite) no-repeat;
+}
+.userbar-date .mod-calendar_prev {
+ background: url(../img/prev.png?__sprite) no-repeat;
+ margin-left: 1px;
+}
+.userbar-date .mod-calendar_prev:hover {
+ background: url(../img/prev_hover.png?__sprite) no-repeat;
+}
+.userbar-date .mod-calendar_year {
+ width: 61px;
+}
+.userbar-date .mod-calendar_month {
+ width: 46px;
+}
+.userbar-date .dropdown,.calendar-wrapper span {
+ font-size: 12px;
+ color: #000000;
+ padding: 0;
+}
+.userbar-date .mod-calendar_hd {
+ padding: 6px 0;
+}
+#calYearDropDown {
+ margin-right: 5px;
+}
+/*.userbar-date .mod-calendar-holder dd {
+ display: none;
+}*/
+.userbar-date .mod-calendar-countdown dl {
+ /*background: url(../img/bell.png) no-repeat center 4px;*/
+ background-color: #FCA438;
+ color: #fff;
+}
+/*.userbar-date .mod-calendar-countdown dt{
+ text-indent: -1000px;
+ overflow: hidden;
+ white-space: nowrap;
+}*/
+.down-show {
+ background-color: #049565;
+}
+.userbar-date .no-link {
+ cursor: default;
+}
+.userbar-date .ui-bubble-t .ui-bubble_in, .userbar-date .ui-bubble-t .ui-bubble_out {
+ left: 64px;
+}
+/*.userbar-date li.mod-calendar-today {
+ border-bottom: 3px solid;
+}*/
+.userbar-date .mod-calendar_days a:hover dl {
+ left: -2px;
+ right: auto;
+}
+/*.userbar-date .mod-calendar-today a:hover dl {
+ left: -1px;
+}*/
+.date-wrapper {
+ max-height: 30px;
+ line-height: 16px;
+}
+.userbar-date .mod-calendar_days li:nth-of-type(7n+7) a:hover dl {
+ left: auto;
+ right: -2px;
+}
+
+
+.userbar-date br {
+ display: block !important;
+}
+.userbar-date .calendar_bg {
+ display: inline !important;
+ float: left;
+ width: 30px;
+ height: 30px;
+ font-size: 14px;
+ font-weight: 700;
+ line-height: 36px;
+ padding: 0;
+ margin-right: 8px;
+ text-align: center;
+ color: #fff;
+ background: url(../img/calendar.png?__sprite) no-repeat;
+}
+
+
+/***倒计时&&日历增强***/
+body .userbar-date a {
+ display: block;
+ /*text-align: center;*/
+}
+.userbar-date-cal {
+ cursor: pointer;
+ padding: 11px 42px 9px 20px;
+}
+body .calendar-open, .userbar-date-cal:hover, body .date-open {
+ background-color: #0265C9;
+ background-color: rgba(0, 99, 199, 0.94);
+}
+.userbar-date-cal .date-tip {
+ width: 12px;
+ height: 12px;
+ background: url(../img/more_trigger.png?__sprite) no-repeat;
+ position: absolute;
+ right: 20px;
+ top: 18px;
+ pointer-events: none;
+ cursor: pointer;
+}
+.date-open .date-tip {
+ background: url(../img/more_trigger-hover.png?__sprite) no-repeat;
+}
+.userbar-date-cal .calendar-wrapper {
+ position: absolute;
+ top: 50px;
+ left: 0px;
+ background-color: #0265C9;
+ background-color: rgba(0, 99, 199, 0.94);
+ border-top-width: 0;
+ cursor: default;
+ display: none;
+}
+.date-open .calendar-wrapper {
+ display: block;
+}
+.userbar-date-cal .ui-arrow-t {
+ left: 52px;
+ border-bottom-color: #F0FFFB;
+}
+.userbar-date-cal .cal-btn {
+ display: inline-block;
+ max-width: 94%;
+ height: 34px;
+ line-height: 34px;
+ color: #07b67b;
+ font-size: 12px;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ position: absolute;
+ bottom: 0;
+ right: 12px;
+}
+.userbar-date .mod-calendar {
+ border-color: transparent;
+ background: #0F6CCA;
+ /*background: rgba(0, 99, 199, 0.06);*/
+ /*autopack*/
+ width: 377px;
+ position: relative;
+}
+.userbar-date .mod-calendar_bd,
+.userbar-date .mod-calendar_weeks li,
+.userbar-date .mod-calendar_days li,
+.userbar-date .mod-calendar_days dl,
+.userbar-date .mod-calendar_days a:hover dl,
+.userbar-date .mod-calendar_days a,
+.userbar-date .mod-calendar-holder dl {
+ background: transparent;
+ border-color: transparent;
+}
+.userbar-date .mod-calendar-festival a,
+.userbar-date .mod-calendar-holiday a {
+ background: url(../img/festval.png?__sprite) no-repeat;
+}
+.userbar-date .mod-calendar-event a {
+ background: url(../img/events.png?__sprite) no-repeat;
+}
+.userbar-date .mod-calendar-countdown a {
+ background: url(../img/countdown.png?__sprite) no-repeat;
+}
+.userbar-date .mod-calendar-football a {
+ background: url(../img/football.png?__sprite) no-repeat;
+}
+.userbar-date .mod-calendar-festival a:hover,
+.userbar-date .mod-calendar-holiday a:hover,
+.userbar-date .mod-calendar-event a:hover,
+.userbar-date .mod-calendar-countdown a:hover,
+.userbar-date .mod-calendar-football a:hover {
+ background: none;
+}
+.userbar-date .mod-calendar-festival a dd,
+.userbar-date .mod-calendar-holiday a dd,
+.userbar-date .mod-calendar-event a dd,
+.userbar-date .mod-calendar-countdown a dd,
+.userbar-date .mod-calendar-football a dd {
+ visibility: hidden;
+ color: #ffffff;
+}
+.userbar-date .mod-calendar-festival a:hover dl,
+.userbar-date .mod-calendar-holiday a:hover dl {
+ background-color: #F29C9F;
+ border-radius: 34px;
+ margin-left: -10px;
+ min-width: 70px;
+}
+.userbar-date .mod-calendar-event a:hover dl {
+ background-color: #7CD25F;
+ border-radius: 34px;
+ margin-left: -10px;
+ min-width: 70px;
+}
+.userbar-date .mod-calendar-countdown a:hover dl {
+ background-color: #F5C009;
+ border-radius: 34px;
+ margin-left: -10px;
+ min-width: 70px;
+}
+.userbar-date .mod-calendar-football a:hover dl {
+ background-color: #7CD25F;
+ border-radius: 34px;
+ margin-left: -10px;
+ min-width: 70px;
+}
+.userbar-date .mod-calendar_days a:hover dd {
+ visibility: visible;
+}
+.userbar-date .mod-calendar_days dt {
+ color: #ffffff;
+}
+.userbar-date .mod-calendar-holder dt,
+.mod-calendar_days dl dd {
+ color: #6FA7DF;
+ color: rgba(255,255,255,0.3);
+}
+.userbar-date .mod-calendar_days dd {
+ margin-top: -4px;
+}
+.userbar-date .mod-calendar_bd li {
+ border-bottom: 1px solid #1c81e5 !important;
+ border-bottom: 1px solid rgba(28,129,229,0.96) !important;
+}
+.userbar-date .mod-calendar_splt {
+ border-top: 1px solid #0F6CCA;
+ border-top-color: rgba(0,99,199,.06);
+ margin-top: -5px;
+}
+
+.userbar-date .mod-calendar-today dt {
+ font-size: 24px;
+ padding-top: 0 !important;
+ line-height: 36px;
+ background: #4ca6ff;
+ width: 36px;
+ height: 36px;
+ margin-left: 6px;
+ margin-top: 7px;
+ text-align: center;
+ border-radius: 18px;
+}
+.userbar-date .dropdown {
+ margin-top: 8px;
+}
+.userbar-date .mod-calendar_ft {
+ /* margin-top: -7px; */
+}
+
+.userbar-date .mod-calendar .mod-calendar_ft a {
+ /* padding-top: 12px; */
+ display: inline-block;
+}
+.userbar-date .dropdown-list {
+ background: #1c81e5;
+ border-width: 0;
+ text-indent: 0;
+}
+.userbar-date .dropdown span, .userbar-date .dropdown-list li {
+ font-size: 18px;
+ color: #ffffff;
+ background: transparent;
+}
+.userbar-date .dropdown-list li {
+ line-height: 36px;
+ height: 36px;
+}
+.userbar-date .dropdown-trigger,.userbar-date .dropdown-input {
+ border-width: 0;
+ height: 34px;
+ line-height: 34px;
+}
+.userbar-date .dropdown-list li:hover, .userbar-date .dropdown-list .dropdown-list-hover {
+ background-color: #1974CE;
+ background-color: rgba(0,0,0,0.1);
+}
+.userbar-date .dropdown .dropdown-arrow {
+ border-width: 0;
+ width: 12px;
+ height: 12px;
+ top: 11px;
+ right: 15px;
+ background: url(../img/more_trigger.png?__sprite) no-repeat;
+}
+.userbar-date .dropdown .dropdown-arrow-up {
+ background: url(../img/more_trigger-hover.png?__sprite) no-repeat;
+}
+.userbar-date .dropdown .dropdown-arrow i {
+ display: none;
+}
+.userbar-date .dropdown .dropdown-ctrl-open {
+ background: #1c81e5;
+}
+
+
+/**fix calendar style depend on UI**/
+.userbar-date .mod-calendar_days a, .userbar-date .mod-calendar_days dl {
+ height: 68px;
+}
+.userbar-date .mod-calendar_days dt {
+ padding-top: 16px;
+}
+
+/*has skin*/
+.skin-on .userbar-date-cal .date-tip {
+ background: url(../img/more_trigger_sk.png?__sprite) no-repeat;
+}
+.skin-on .date-open .date-tip {
+ background: url(../img/more_trigger-hover_sk.png?__sprite) no-repeat;
+}
+.skin-on .userbar-date .dropdown .dropdown-arrow {
+ background: url(../img/more_trigger_sk.png?__sprite) no-repeat;
+}
+.skin-on .userbar-date .dropdown .dropdown-arrow-up {
+ background: url(../img/more_trigger-hover_sk.png?__sprite) no-repeat;
+}
+.skin-on .calendar-open,
+.skin-on .userbar-date-cal:hover,
+.skin-on .date-open,
+.skin-on .userbar-date-cal .calendar-wrapper {
+ background-color: #333333;
+ background-color: rgba(0, 0, 0, 0.8);
+}
+.skin-on .userbar-date .mod-calendar {
+ background: none;
+}
+.skin-on .userbar-date .mod-calendar_bd li {
+ border-bottom-color: #717171 !important;
+ border-bottom-color: rgba(255,255,255,0.3) !important;
+}
+.skin-on .userbar-date .dropdown .dropdown-ctrl-open,
+.skin-on .userbar-date .dropdown-list {
+ background: #626262;
+}
+.skin-on .userbar-date .dropdown-list li:hover,
+.skin-on .userbar-date .dropdown-list .dropdown-list-hover {
+ background-color: #444444;
+ background-color: rgba(0,0,0,0.3);
+}
+.skin-on .userbar-date .mod-calendar_next:hover {
+ background: url(../img/next.png?__sprite) no-repeat;
+ background-color: #186EC0;
+ background-color: rgba(28,129,229,0.8);
+}
+.skin-on .userbar-date .mod-calendar_prev:hover {
+ background: url(../img/prev.png?__sprite) no-repeat;
+ background-color: #186EC0;
+ background-color: rgba(28,129,229,0.8);
+}
+
+/*倒计时增强*/
+.userbar-date-new_mod {
+ /*box-shadow: rgba(0,0,0,0.1) 0px 0px 0px 1px inset;
+ -webkit-box-shadow: rgba(0,0,0,0.1) 0px 0px 0px 1px inset;
+ -o-box-shadow: rgba(0,0,0,0.1) 0px 0px 0px 1px inset;
+ -moz-box-shadow: rgba(0,0,0,0.1) 0px 0px 0px 1px inset;
+ -ms-box-shadow: rgba(0,0,0,0.1) 0px 0px 0px 1px inset;*/
+ background-position: left top;
+}
+.userbar-date-new_mod:hover,
+.userbar-date-new_mod.userbar-date-new_mod-show {
+ background-color: #0164C8 !important;
+ background-color: rgba(0,99,199,.97) !important;
+}
+.userbar-date-new_mod2 {
+ background-position: right top;
+}
+.userbar-date-new_mod .userbar-date {
+ background: none !important;
+ width: auto !important;
+ float: none !important;
+}
+/*.userbar-date-new_mod .date-tip {
+ display: none !important;
+}*/
+/*@media \0screen {
+ .userbar-date-new_mod .calendar-open {
+ filter:progid:DXImageTransform.Microsoft.gradient(enabled='true',startColorstr='#33FFFFFF', endColorstr='#33FFFFFF');
+ }
+}*/
+.userbar-date-new_mod .down-tip {
+ visibility: hidden;
+}
+.userbar-date-new_mod .down-dhm .down-hm,
+.userbar-date-new_mod .down-dhm br {
+ display: none !important;
+}
+.userbar-date-new_mod .userbar-date .down-wrapper .down-day,
+.userbar-date-new_mod .userbar-date .down-wrapper .down-dhm {
+ float: none;
+ display: block;
+}
+.userbar-date-new_mod .userbar-date .down-wrapper .down-day {
+ margin-top: -3px;
+ color: #f83a66;
+ width: 40px;
+ float: right;
+ margin-right: 0;
+ overflow: hidden;
+ letter-spacing: 2px;
+}
+.userbar-date-new_mod .userbar-date .down-wrapper .down-d {
+ color: #FFFFFF;
+ display: block;
+ font-size: 10px;
+ -webkit-transform: scale(0.8);
+ margin-top: 24px;
+ padding-left: 2px;
+ text-align: center;
+}
+.userbar-date-new_mod .userbar-date .down-wrapper,
+.userbar-date-new_mod .down-wrapper .down-time {
+ overflow: visible;
+}
+.userbar-date-new_mod .down-wrapper .down-time {
+ background: url(../img/count_bg.png?__sprite) no-repeat;
+ width: 45px;
+ margin-top: -9px;
+ padding-top: 10px;
+}
+.userbar-date-new_mod2 .down-wrapper .down-time {
+ float: left;
+}
+.skin-on .userbar-date-new_mod:hover,
+.skin-on .userbar-date-new_mod.userbar-date-new_mod-show {
+ background-color: #333 !important;
+ background-color: rgba(0,0,0,.8) !important;
+}
+
+
+/*head fixed*/
+.header-fixed .userbar-date {
+ width: auto !important;
+}
+.header-fixed .down-wrapper {
+ display: none !important;
+}
+.header-fixed .date-wrapper {
+ display: block !important;
+ line-height: 20px;
+}
+.header-fixed .userbar-date .calendar_bg,
+.header-fixed .userbar-date br {
+ display: none !important;
+}
+.header-fixed-st .userbar-date-cal .calendar-wrapper {
+ top: 40px;
+}
+.header-fixed-st .userbar-date-cal .date-tip {
+ top: 15px;
+}
+.header-fixed .userbar-date-new_mod {
+ background-image: none !important;
+ width: auto !important;
+}
+
+.header-fixed-up .date-wrapper {
+ line-height: 30px;
+}
+
+/**世界杯赛事**/
+.userbar-data-worldcup .userbar-date-cal{
+ padding: 0
+}
+.userbar-data-worldcup .worldcup{
+ margin: 8px 45px 0 16px;
+ height: 42px;
+ overflow: hidden;
+}
+.userbar-data-worldcup .match-info{
+ float: left;
+ margin-right: 8px;
+ color: #ffef00;
+}
+.userbar-data-worldcup .match-info .time{
+ font-size: 21px;
+}
+.userbar-data-worldcup .team-vs{
+ float: left;
+}
+.userbar-data-worldcup .team-vs .team-vs-icon{
+ display: inline-block;
+ width: 38px;
+ height: 33px;
+ background: url(../img/worldcup-vs.png?__sprite);
+ vertical-align: middle;
+}
+.header-fixed .userbar-data-worldcup .worldcup{
+ display: none;
+}
+.header-fixed .userbar-data-worldcup .userbar-date-cal{
+ padding: 0 16px;
+}
+.header-fixed .userbar-data-worldcup .date-wrapper{
+ line-height: 40px;
+ height: 40px;
+ margin-right: 25px;
+ height: 40px;
+ max-height: 40px;
+}
+.animate-opacity{
+ -webkit-transition: opacity linear .6s;
+ -moz-transition: opacity linear .6s;
+ -ms-transition: opacity linear .6s;
+ -o-transition: opacity linear .6s;
+ transition: opacity linear .6s;
+ opacity: 1;
+ filter: alpha(opacity=100);
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/rtl/rtl.css
new file mode 100755
index 000000000..9271b012f
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/rtl/rtl.css
@@ -0,0 +1,9 @@
+/*.userbar-date{
+ display: none;
+}
+.userbar-date-wrapper {
+ float: right;
+ position: relative;
+ z-index: 100;
+ background-repeat: no-repeat;
+}*/
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/rtl/rtl.more.css
new file mode 100755
index 000000000..e2dca1410
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/clock/rtl/rtl.more.css
@@ -0,0 +1,612 @@
+/*form inline css*/
+.userbar-date{
+ display: none;
+}
+.userbar-date-wrapper {
+ float: left;
+ /*position: relative;*/
+ z-index: 100;
+ background-repeat: no-repeat;
+ opacity: 0;
+}
+
+
+.userbar-date{
+ white-space: nowrap;
+ display: block;
+ display: block !important;
+ position: relative;
+ float: right;
+ padding: 11px 20px 9px 20px;
+}
+.userbar-date a {
+ color: #fff;
+}
+.userbar-date span {
+ color: #b8e1cf;
+ font-size: 9px;
+ padding: 0 2px;
+}
+
+/*for countdown*/
+.userbar-date .down-wrapper {
+ height: 30px;
+ overflow: hidden;
+}
+.userbar-date .down-wrapper span {
+ color: #ffffff;
+ font-size: 12px;
+ padding: 0;
+}
+.down-wrapper .down-time {
+ float: left;
+ overflow: hidden;
+ height: 30px;
+/* width: 72px;*/
+}
+.userbar-date .down-wrapper .down-day {
+ font-size: 30px;
+ line-height: 30px;
+ float: right;
+ margin-left: 4px;
+ color: #fff000;
+}
+.down-wrapper .down-dhm {
+ float: left;
+}
+.userbar-date .down-wrapper .down-d {
+ color: #9BD5C1;
+ color: rgba(255,255,255,0.6);
+}
+.down-wrapper .down-tip {
+ float: right;
+ position: absolute;
+ right: 18px;
+}
+.userbar-date .mod-calendar_ft a {
+ display: inline;
+}
+.userbar-date .mod-calendar a {
+ color: #FFFFFF;
+}
+.userbar-date .mod-calendar_weeks {
+ color: #BACCEB;
+ color: rgba(255,255,255,0.6);
+ border-color: transparent;
+}
+.userbar-date .mod-calendar_next, .userbar-date .mod-calendar_prev {
+ width: 30px;
+ height: 50px;
+ padding: 0;
+ text-indent: -1000px;
+ overflow: hidden;
+ white-space: nowrap;
+ cursor: pointer;
+}
+.userbar-date .mod-calendar_next {
+ background: url(../img/prev_rtl.png?__sprite) no-repeat;
+}
+.userbar-date .mod-calendar_next:hover {
+ background: url(../img/prev_hover_rtl.png?__sprite) no-repeat;
+}
+.userbar-date .mod-calendar_prev {
+ background: url(../img/next_rtl.png?__sprite) no-repeat;
+}
+.userbar-date .mod-calendar_prev:hover {
+ background: url(../img/next_hover_rtl.png?__sprite) no-repeat;
+}
+.userbar-date .mod-calendar_prev{ float: right; margin-right: 1px;margin-left: 0;}
+.userbar-date .mod-calendar_next{ float: left; margin-left: 1px;margin-right: 0;}
+.userbar-date .mod-calendar_grid li {float:right;}
+.userbar-date .mod-calendar_ft {text-align: left;}
+.userbar-date .mod-calendar_year {
+ width: 61px;
+}
+.userbar-date .mod-calendar_month {
+ width: 62px;
+}
+.userbar-date .dropdown,.calendar-wrapper span {
+ font-size: 12px;
+ color: #000000;
+ padding: 0;
+}
+.userbar-date .mod-calendar_hd {
+ padding: 6px 0;
+}
+#calYearDropDown {
+ margin-left: 5px;
+}
+/*.userbar-date .mod-calendar-holder dd {
+ display: none;
+}*/
+.userbar-date .mod-calendar-countdown dl {
+ /*background: url(../img/bell.png) no-repeat center 4px;*/
+ background-color: #FCA438;
+ color: #fff;
+}
+/*.userbar-date .mod-calendar-countdown dt{
+ text-indent: -1000px;
+ overflow: hidden;
+ white-space: nowrap;
+}*/
+.down-show {
+ background-color: #049565;
+}
+.userbar-date .no-link {
+ cursor: default;
+}
+.userbar-date .ui-bubble-t .ui-bubble_in, .userbar-date .ui-bubble-t .ui-bubble_out {
+ right: 64px;
+}
+/*.userbar-date li.mod-calendar-today {
+ border-bottom: 3px solid;
+}*/
+.userbar-date .mod-calendar_days a:hover dl {
+ right: -2px;
+ left: auto;
+}
+/*.userbar-date .mod-calendar-today a:hover dl {
+ right: 1px;
+}*/
+.date-wrapper {
+ max-height: 30px;
+ line-height: 16px;
+}
+.userbar-date .mod-calendar_days li:nth-of-type(7n+7) a:hover dl {
+ right: auto;
+ left: -2px;
+}
+
+
+.userbar-date br {
+ display: block !important;
+}
+.userbar-date .calendar_bg {
+ display: inline !important;
+ float: right;
+ width: 30px;
+ height: 30px;
+ font-size: 14px;
+ font-weight: 700;
+ line-height: 36px;
+ padding: 0;
+ margin-left: 8px;
+ text-align: center;
+ color: #fff;
+ background: url(../img/calendar.png?__sprite) no-repeat;
+}
+
+
+/***倒计时&&日历增强***/
+body .userbar-date a {
+ display: block;
+ /*text-align: center;*/
+}
+.userbar-date-cal {
+ cursor: pointer;
+ padding: 11px 20px 9px 60px;
+}
+body .calendar-open,.userbar-date-cal:hover,body .date-open {
+ background-color: #0265C9;
+ background-color: rgba(0, 99, 199, 0.94);
+}
+.userbar-date-cal .date-tip {
+ width: 12px;
+ height: 12px;
+ background: url(../img/more_trigger.png?__sprite) no-repeat;
+ position: absolute;
+ left: 20px;
+ top: 18px;
+ pointer-events: none;
+ cursor: pointer;
+}
+.date-open .date-tip {
+ background: url(../img/more_trigger-hover.png?__sprite) no-repeat;
+}
+.userbar-date-cal .calendar-wrapper {
+ position: absolute;
+ top: 50px;
+ right: 0px;
+ background-color: #0265C9;
+ background-color: rgba(0, 99, 199, 0.94);
+ border-top-width: 0;
+ cursor: default;
+ display: none;
+}
+.date-open .calendar-wrapper {
+ display: block;
+}
+.userbar-date-cal .ui-arrow-t {
+ right: 52px;
+ border-bottom-color: #F0FFFB;
+}
+.userbar-date-cal .cal-btn {
+ display: inline-block;
+ max-width: 94%;
+ height: 34px;
+ line-height: 34px;
+ color: #07b67b;
+ font-size: 12px;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ position: absolute;
+ bottom: 0;
+ left: 12px;
+}
+.userbar-date .mod-calendar {
+ border-color: transparent;
+ background: #0F6CCA;
+ background: rgba(0, 99, 199, 0.06);
+ /*autopack*/
+ width: 377px;
+ position: relative;
+}
+.userbar-date .mod-calendar_bd,
+.userbar-date .mod-calendar_weeks li,
+.userbar-date .mod-calendar_days li,
+.userbar-date .mod-calendar_days dl,
+.userbar-date .mod-calendar_days a:hover dl,
+.userbar-date .mod-calendar_days a,
+.userbar-date .mod-calendar-holder dl {
+ background: transparent;
+ border-color: transparent;
+}
+.userbar-date .mod-calendar-festival a,
+.userbar-date .mod-calendar-holiday a {
+ background: url(../img/festval.png?__sprite) no-repeat;
+}
+.userbar-date .mod-calendar-event a {
+ background: url(../img/events.png?__sprite) no-repeat;
+}
+.userbar-date .mod-calendar-countdown a {
+ background: url(../img/countdown.png?__sprite) no-repeat;
+}
+.userbar-date .mod-calendar-football a {
+ background: url(../img/football.png?__sprite) no-repeat;
+}
+.userbar-date .mod-calendar-festival a:hover,
+.userbar-date .mod-calendar-holiday a:hover,
+.userbar-date .mod-calendar-event a:hover,
+.userbar-date .mod-calendar-countdown a:hover,
+.userbar-date .mod-calendar-football a:hover {
+ background: none;
+}
+.userbar-date .mod-calendar-festival a dd,
+.userbar-date .mod-calendar-holiday a dd,
+.userbar-date .mod-calendar-event a dd,
+.userbar-date .mod-calendar-countdown a dd,
+.userbar-date .mod-calendar-football a dd {
+ visibility: hidden;
+ color: #ffffff;
+}
+.userbar-date .mod-calendar-festival a:hover dl,
+.userbar-date .mod-calendar-holiday a:hover dl {
+ background-color: #F29C9F;
+ border-radius: 34px;
+ margin-right: -10px;
+ min-width: 70px;
+}
+.userbar-date .mod-calendar-event a:hover dl {
+ background-color: #7CD25F;
+ border-radius: 34px;
+ margin-right: -10px;
+ min-width: 70px;
+}
+.userbar-date .mod-calendar-countdown a:hover dl {
+ background-color: #F5C009;
+ border-radius: 34px;
+ margin-right: -10px;
+ min-width: 70px;
+}
+.userbar-date .mod-calendar-football a:hover dl {
+ background-color: #7CD25F;
+ border-radius: 34px;
+ margin-right: -10px;
+ min-width: 70px;
+}
+.userbar-date .mod-calendar_days a:hover dd {
+ visibility: visible;
+}
+.userbar-date .mod-calendar_days dt {
+ color: #ffffff;
+}
+.userbar-date .mod-calendar-holder dt,
+.mod-calendar_days dl dd {
+ color: #6FA7DF;
+ color: rgba(255,255,255,0.3);
+}
+.userbar-date .mod-calendar_days dd {
+ margin-top: -4px;
+}
+.userbar-date .mod-calendar_bd li {
+ border-bottom: 1px solid #1c81e5 !important;
+ border-bottom: 1px solid rgba(28,129,229,0.96) !important;
+}
+.userbar-date .mod-calendar_splt {
+ border-top: 1px solid #0F6CCA;
+ border-top-color: rgba(0,99,199,.06);
+ margin-top: -5px;
+}
+
+.userbar-date .mod-calendar-today dt {
+ font-size: 24px;
+ padding-top: 0 !important;
+ line-height: 36px;
+ background: #4ca6ff;
+ width: 36px;
+ height: 36px;
+ margin-right: 6px;
+ margin-top: 7px;
+ text-align: center;
+ border-radius: 18px;
+}
+.userbar-date .dropdown {
+ margin-top: 8px;
+}
+.userbar-date .mod-calendar_ft {
+ /* margin-top: -7px; */
+}
+
+.userbar-date .mod-calendar .mod-calendar_ft a {
+ /* padding-top: 12px; */
+ display: inline-block;
+}
+.userbar-date .dropdown-list {
+ background: #1c81e5;
+ border-width: 0;
+ text-indent: 0;
+}
+.userbar-date .dropdown span, .userbar-date .dropdown-list li {
+ font-size: 18px;
+ color: #ffffff;
+ background: transparent;
+}
+.userbar-date .dropdown-list li {
+ line-height: 36px;
+ height: 36px;
+}
+.userbar-date .dropdown-trigger,.userbar-date .dropdown-input {
+ border-width: 0;
+ height: 34px;
+ line-height: 34px;
+}
+.userbar-date .dropdown-list li:hover, .userbar-date .dropdown-list .dropdown-list-hover {
+ background-color: #1974CE;
+ background-color: rgba(0,0,0,0.1);
+}
+.userbar-date .dropdown .dropdown-arrow {
+ border-width: 0;
+ width: 12px;
+ height: 12px;
+ top: 11px;
+ left: 15px;
+ background: url(../img/more_trigger.png?__sprite) no-repeat;
+}
+.userbar-date .dropdown .dropdown-arrow-up {
+ background: url(../img/more_trigger-hover.png?__sprite) no-repeat;
+}
+.userbar-date .dropdown .dropdown-arrow i {
+ display: none;
+}
+.userbar-date .dropdown .dropdown-ctrl-open {
+ background: #1c81e5;
+}
+
+
+/**fix calendar style depend on UI**/
+.userbar-date .mod-calendar_days a, .userbar-date .mod-calendar_days dl {
+ height: 68px;
+}
+.userbar-date .mod-calendar_days dt {
+ padding-top: 16px;
+}
+
+/*has skin*/
+.skin-on .userbar-date-cal .date-tip {
+ background: url(../img/more_trigger_sk.png?__sprite) no-repeat;
+}
+.skin-on .date-open .date-tip {
+ background: url(../img/more_trigger-hover_sk.png?__sprite) no-repeat;
+}
+.skin-on .userbar-date .dropdown .dropdown-arrow {
+ background: url(../img/more_trigger_sk.png?__sprite) no-repeat;
+}
+.skin-on .userbar-date .dropdown .dropdown-arrow-up {
+ background: url(../img/more_trigger-hover_sk.png?__sprite) no-repeat;
+}
+.skin-on .calendar-open,
+.skin-on .userbar-date-cal:hover,
+.skin-on .date-open,
+.skin-on .userbar-date-cal .calendar-wrapper {
+ background-color: #333333;
+ background-color: rgba(0, 0, 0, 0.8);
+}
+.skin-on .userbar-date .mod-calendar {
+ background: none;
+}
+.skin-on .userbar-date .mod-calendar_bd li {
+ border-bottom-color: #717171 !important;
+ border-bottom-color: rgba(255,255,255,0.3) !important;
+}
+.skin-on .userbar-date .dropdown .dropdown-ctrl-open,
+.skin-on .userbar-date .dropdown-list {
+ background: #626262;
+}
+.skin-on .userbar-date .dropdown-list li:hover,
+.skin-on .userbar-date .dropdown-list .dropdown-list-hover {
+ background-color: #444444;
+ background-color: rgba(0,0,0,0.3);
+}
+.skin-on .userbar-date .mod-calendar_next:hover {
+ background: url(../img/prev_rtl.png?__sprite) no-repeat;
+ background-color: #186EC0;
+ background-color: rgba(28,129,229,0.8);
+}
+.skin-on .userbar-date .mod-calendar_prev:hover {
+ background: url(../img/next_rtl.png?__sprite) no-repeat;
+ background-color: #186EC0;
+ background-color: rgba(28,129,229,0.8);
+}
+
+/*倒计时增强*/
+.userbar-date-new_mod {
+ /*box-shadow: rgba(0,0,0,0.1) 0px 0px 0px 1px inset;
+ -webkit-box-shadow: rgba(0,0,0,0.1) 0px 0px 0px 1px inset;
+ -o-box-shadow: rgba(0,0,0,0.1) 0px 0px 0px 1px inset;
+ -moz-box-shadow: rgba(0,0,0,0.1) 0px 0px 0px 1px inset;
+ -ms-box-shadow: rgba(0,0,0,0.1) 0px 0px 0px 1px inset;*/
+ background-position: right top;
+}
+.userbar-date-new_mod .userbar-date-cal {
+ padding-left: 42px;
+}
+.userbar-date-new_mod:hover,
+.userbar-date-new_mod.userbar-date-new_mod-show {
+ background-color: #0164C8 !important;
+ background-color: rgba(0,99,199,.97) !important;
+}
+.userbar-date-new_mod2 {
+ background-position: left top;
+}
+.userbar-date-new_mod .userbar-date {
+ background: none !important;
+ width: auto !important;
+ float: none !important;
+}
+/*.userbar-date-new_mod .date-tip {
+ display: none !important;
+}*/
+/*@media \0screen {
+ .userbar-date-new_mod .calendar-open {
+ filter:progid:DXImageTransform.Microsoft.gradient(enabled='true',startColorstr='#33FFFFFF', endColorstr='#33FFFFFF');
+ }
+}*/
+.userbar-date-new_mod .down-tip {
+ visibility: hidden;
+}
+.userbar-date-new_mod .down-dhm .down-hm,
+.userbar-date-new_mod .down-dhm br {
+ display: none !important;
+}
+.userbar-date-new_mod .userbar-date .down-wrapper .down-day,
+.userbar-date-new_mod .userbar-date .down-wrapper .down-dhm {
+ float: none;
+ display: block;
+}
+.userbar-date-new_mod .userbar-date .down-wrapper .down-day {
+ margin-top: -4px;
+ color: #f83a66;
+ width: 40px;
+ float: left;
+ margin-left: 1px;
+ overflow: hidden;
+ letter-spacing: 2px;
+}
+.userbar-date-new_mod .userbar-date .down-wrapper .down-d {
+ color: #FFFFFF;
+ display: block;
+ font-size: 10px;
+ -webkit-transform: scale(0.8);
+ margin-top: 22px;
+ padding-right: 2px;
+ text-align: center;
+}
+.userbar-date-new_mod .userbar-date .down-wrapper,
+.userbar-date-new_mod .down-wrapper .down-time {
+ overflow: visible;
+}
+.userbar-date-new_mod .down-wrapper .down-time {
+ background: url(../img/count_bg.png?__sprite) no-repeat;
+ width: 45px;
+ margin-top: -9px;
+ padding-top: 10px;
+}
+.userbar-date-new_mod2 .down-wrapper .down-time {
+ float: right;
+}
+.skin-on .userbar-date-new_mod:hover,
+.skin-on .userbar-date-new_mod.userbar-date-new_mod-show {
+ background-color: #333 !important;
+ background-color: rgba(0,0,0,.8) !important;
+}
+
+
+/*head fixed*/
+.header-fixed .userbar-date {
+ width: auto !important;
+}
+.header-fixed .down-wrapper {
+ display: none !important;
+}
+.header-fixed .date-wrapper {
+ display: block !important;
+ line-height: 20px;
+}
+.header-fixed .userbar-date .calendar_bg,
+.header-fixed .userbar-date br {
+ display: none !important;
+}
+.header-fixed-st .userbar-date-cal .calendar-wrapper {
+ top: 40px;
+}
+.header-fixed-st .userbar-date-cal .date-tip {
+ top: 15px;
+}
+.header-fixed .userbar-date-new_mod {
+ background-image: none !important;
+ width: auto !important;
+}
+
+.header-fixed-up .date-wrapper {
+ line-height: 30px;
+}
+
+/**世界杯赛事**/
+.userbar-data-worldcup .userbar-date-cal{
+ padding: 0
+}
+.userbar-data-worldcup .worldcup{
+ margin: 8px 16px 0 45px;
+ height: 42px;
+ overflow: hidden;
+}
+.userbar-data-worldcup .match-info{
+ float: right;
+ margin-left: 8px;
+ color: #ffef00;
+}
+.userbar-data-worldcup .match-info .time{
+ font-size: 21px;
+}
+.userbar-data-worldcup .team-vs{
+ float: right;
+}
+.userbar-data-worldcup .team-vs .team-vs-icon{
+ display: inline-block;
+ width: 38px;
+ height: 33px;
+ background: url(../img/worldcup-vs.png?__sprite);
+ vertical-align: middle;
+}
+.header-fixed .userbar-data-worldcup .worldcup{
+ display: none;
+}
+.header-fixed .userbar-data-worldcup .userbar-date-cal{
+ padding: 0 16px;
+}
+.header-fixed .userbar-data-worldcup .date-wrapper{
+ line-height: 40px;
+ margin-left: 25px;
+ height: 40px;
+ max-height: 40px;
+}
+.animate-opacity{
+ -webkit-transition: opacity linear .6s;
+ -moz-transition: opacity linear .6s;
+ -ms-transition: opacity linear .6s;
+ -o-transition: opacity linear .6s;
+ transition: opacity linear .6s;
+ opacity: 1;
+ filter: alpha(opacity=100);
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/fontsize-switch/fontsize-switch-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/fontsize-switch/fontsize-switch-async.js
new file mode 100755
index 000000000..0eec1ecc5
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/fontsize-switch/fontsize-switch-async.js
@@ -0,0 +1,56 @@
+//依赖
+var $ = require("common:widget/ui/jquery/jquery.js");
+
+//变量
+var $html = $("html");
+var $body = $("body");
+var $mod = $("#fontsizeSwitch");
+var $switchers = $mod.find(".switcher");
+var classPrefix = "fontsize-switch-";
+
+//初始化
+init();
+
+function init() {
+ var storeFontsize = $.store("fontsize");
+ var bodyFontsize = parseInt($body.css("font-size"));
+ //添加html类名
+ if (storeFontsize && storeFontsize != bodyFontsize) {
+ $html.addClass(classPrefix + storeFontsize);
+ }
+ //为当前字号元素添加cur类
+ $switchers.filter("[data-size=" + (storeFontsize || bodyFontsize) + "]").addClass("cur");
+ //切换fontsize
+ $mod.on("click", ".switcher", function(e) {
+ setFont($(this).attr("data-size"));
+ //切换下一个fontsize
+ }).on("click", ".switcher-next", function(e) {
+ var curFontsize = $.store("fontsize") || parseInt($body.css("font-size"));
+ var $curSwitcher = $switchers.filter("[data-size=" + curFontsize + "]");
+ if (!$curSwitcher.length) {
+ $curSwitcher = $switchers.eq(0);
+ }
+ var $nextSwitcher = $switchers.eq($curSwitcher.index() % $switchers.length);
+ setFont($nextSwitcher.attr("data-size"));
+ });
+}
+
+//设置fontsize
+function setFont(fontsize) {
+ var fontClass = classPrefix + fontsize;
+ //不为当前字号时
+ if (!$html.hasClass(fontClass)) {
+ $switchers.filter(".cur").removeClass("cur");
+ $switchers.filter("[data-size=" + fontsize + "]").addClass("cur");
+ $.store("fontsize", fontsize, {
+ expires: 365
+ });
+ //删除遗留的字号类名
+ $.each($html.get(0).className.split(" "), function(index, value) {
+ if (value.indexOf(classPrefix) == 0) {
+ $html.removeClass(value);
+ }
+ });
+ $html.addClass(fontClass);
+ }
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/fontsize-switch/fontsize-switch.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/fontsize-switch/fontsize-switch.tpl
new file mode 100755
index 000000000..91be065cc
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/fontsize-switch/fontsize-switch.tpl
@@ -0,0 +1,25 @@
+<%style%>
+<%if $head.dir=='ltr'%>
+@import url('/widget/header-flat/fontsize-switch/ltr/ltr.css?__inline');
+<%else%>
+@import url('/widget/header-flat/fontsize-switch/rtl/rtl.css?__inline');
+<%/if%>
+<%/style%>
+
+<%* 声明对ltr/rtl的css依赖 *%>
+<%if $head.dir=='ltr'%>
+ <%require name="common:widget/header-flat/fontsize-switch/ltr/ltr.more.css"%>
+<%else%>
+ <%require name="common:widget/header-flat/fontsize-switch/rtl/rtl.more.css"%>
+<%/if%>
+
+
+
+ <%foreach $body.headerTest.fontsizeSwitch as $fontItem%>
+ <%$fontItem.word%>
+ <%/foreach%>
+
+
+<%script%>
+ require.async("common:widget/header-flat/fontsize-switch/fontsize-switch-async.js");
+<%/script%>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/fontsize-switch/img/fontsize.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/fontsize-switch/img/fontsize.png
new file mode 100755
index 000000000..a2c6d778e
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/fontsize-switch/img/fontsize.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/fontsize-switch/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/fontsize-switch/ltr/ltr.css
new file mode 100755
index 000000000..2be44a093
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/fontsize-switch/ltr/ltr.css
@@ -0,0 +1 @@
+/*.mod-fontsize-swtich{visibility: hidden;}*/
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/fontsize-switch/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/fontsize-switch/ltr/ltr.more.css
new file mode 100755
index 000000000..ef5b38e22
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/fontsize-switch/ltr/ltr.more.css
@@ -0,0 +1,13 @@
+.mod-fontsize-swtich{visibility: visible !important;width: 42px;float: right;text-align: center;}
+.mod-fontsize-swtich:hover{background-color: #0A69C9;background-color: rgba(0,99,199,0.96);}
+
+.mod-fontsize-swtich li{width: 42px;height: 50px;line-height: 50px;cursor: pointer;}
+.mod-fontsize-swtich li.cur{cursor: default;}
+.mod-fontsize-swtich .switcher-next i{display: inline-block;width: 26px;height: 25px;background-image: url(../img/fontsize.png?__sprite);margin-top: 12px;}
+.mod-fontsize-swtich .switcher{display: none;color: #fff;}
+.mod-fontsize-swtich:hover .switcher{display: block;}
+.mod-fontsize-swtich .switcher:hover{background-color: #075DB5;background-color: rgba(0,0,0,.1);}
+
+/*has skin*/
+.skin-on .mod-fontsize-swtich:hover,
+.skin-on .mod-fontsize-swtich .switcher:hover{background-color: #333333;background-color: rgba(0, 0, 0, 0.8);}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/fontsize-switch/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/fontsize-switch/rtl/rtl.css
new file mode 100755
index 000000000..e69de29bb
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/fontsize-switch/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/fontsize-switch/rtl/rtl.more.css
new file mode 100755
index 000000000..e69de29bb
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/header-flat-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/header-flat-async.js
new file mode 100755
index 000000000..e15eb7ea8
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/header-flat-async.js
@@ -0,0 +1,48 @@
+var $ = require("common:widget/ui/jquery/jquery.js");
+
+var CON = conf.headerTest,
+ isScrolled = false,
+ fixedClass = "header-fixed" + (CON.ceilingMore === "1" ? " header-fixed-up" : " header-fixed-st"),
+ $head = $("#top"),
+ $win = $(window),
+ $doc = $(document),
+ $body = $(document.body),
+ initHeight = $head.parent().outerHeight(),
+ curHeight = 0;
+
+setTimeout(function() {
+ //吸顶
+ if (CON.isCeiling === "1") {
+ $win.on("scroll", function() {
+ isScrolled = true;
+ });
+
+ window.setTimeout(function() {
+ if (isScrolled) {
+ isScrolled = false;
+ curHeight = initHeight;
+
+ if ($doc.scrollTop() > curHeight) {
+ if (!$body.hasClass(fixedClass)) {
+ $head.css("position", "fixed");
+ $body.addClass(fixedClass);
+ if (CON.ceilingMore === "1") {
+ $win.trigger("headerFixed.transTo");
+ $win.trigger("headerFixed.changed");
+ }
+ }
+ } else {
+ if ($body.hasClass(fixedClass)) {
+ $head.css("position", "relative");
+ $body.removeClass(fixedClass);
+ if (CON.ceilingMore === "1") {
+ $win.trigger("headerFixed.restore");
+ $win.trigger("headerFixed.changed");
+ }
+ }
+ }
+ }
+ window.setTimeout(arguments.callee, 250);
+ }, 250);
+ }
+}, 1000);
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/header-flat-new.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/header-flat-new.tpl
new file mode 100755
index 000000000..7f38b8d65
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/header-flat-new.tpl
@@ -0,0 +1,50 @@
+<%style%>
+<%if $head.dir=='ltr'%>
+@import url('/widget/header-flat/ltr/ltr.fn.css?__inline');
+<%else%>
+@import url('/widget/header-flat/rtl/rtl.css?__inline');
+<%/if%>
+<%/style%>
+
+
+ <%widget name="common:widget/header-flat/logo/logo.tpl"%>
+ <%if !empty($body.searchBox.widget)%>
+ <%widget name="common:widget/`$body.searchBox.widget`/`$body.searchBox.widget`.tpl"%>
+ <%else%>
+ <%widget name="common:widget/search-box/search-box.tpl"%>
+ <%/if%>
+ <%*widget name="common:widget/search-box-flat-head/search-box-flat-head.tpl"*%>
+
+ <%if !empty($body.headerTest.logoSibling)%>
+ <%foreach explode("|", $body.headerTest.logoSibling) as $item%>
+ <%widget name="common:widget/header-flat/`$item`/`$item`.tpl"%>
+ <%/foreach%>
+ <%/if%>
+
+
+
+
+ <%widget name="common:widget/header-flat/navigation/navigation.tpl"%>
+
+
+ <%if !empty($body.headerTest.showContent)%>
+ <%foreach array_reverse(explode("|", $body.headerTest.showContent)) as $module%>
+ <%widget name="common:widget/header-flat/`$module`/`$module`.tpl"%>
+ <%/foreach%>
+ <%/if%>
+
+
+
+<%script%>
+ conf.headerTest = {
+ dateWidth : "<%$body.headerTest.dateWidth%>",
+ weatherWidth : "<%$body.headerTest.weather.width%>",
+ isCeiling: "<%$body.headerTest.isCeiling%>",
+ ceilingMore: "<%$body.headerTest.ceilingMore%>",
+ settingTip: "<%$body.headerTest.settingTip%>",
+ ceilingLogo: "<%$body.headerTest.ceilingLogo%>"
+ };
+ require.async("common:widget/header-flat/header-flat-async.js");
+<%/script%>
+
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/header-flat.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/header-flat.tpl
new file mode 100755
index 000000000..f0c4a49ab
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/header-flat.tpl
@@ -0,0 +1,109 @@
+<%style%>
+<%if $head.dir=='ltr'%>
+@import url('/widget/header-flat/ltr/ltr.css?__inline');
+<%else%>
+@import url('/widget/header-flat/rtl/rtl.css?__inline');
+<%/if%>
+<%/style%>
+
+<%* 声明对ltr/rtl的css依赖 *%>
+<%if $head.dir=='ltr'%>
+<%require name="common:widget/header-flat/ltr/ltr.more.css"%>
+<%else%>
+<%require name="common:widget/header-flat/rtl/rtl.more.css"%>
+<%/if%>
+
+<%if $body.headerTest.isCeiling == '1'%>
+<%if $body.headerTest.ceilingMore == '1' && $body.searchBox.widget =='search-box-4ps'%>
+ <%if $head.dir=='ltr'%>
+ <%require name="common:widget/header-flat/ltr/ltr.ps.css"%>
+ <%else%>
+ <%require name="common:widget/header-flat/rtl/rtl.ps.css"%>
+ <%/if%>
+<%/if%>
+<%/if%>
+
+<%if !empty($body.headerTest.ceilingHide)%>
+ <%assign var="headArr" value=[
+ "userbar-btn-header" => ".header-fixed .userbar-btn",
+ "account" => ".header-fixed .account_wrap",
+ "site-switch" => ".header-fixed .settings",
+ "banner-site" => ".header-fixed .mod-banner-site"
+ ]%>
+ <%assign var="ceilingArr" value=[]%>
+ <%foreach explode("|", $body.headerTest.ceilingHide) as $item%>
+ <%if !empty($item) && !empty($headArr[$item]) && array_push($ceilingArr, $headArr[$item])%>
+ <%/if%>
+ <%/foreach%>
+
+ <%if $ceilingArr != []%>
+ <%style%>
+ <%join(",", $ceilingArr)%> {display: none;}
+ <%/style%>
+ <%/if%>
+<%/if%>
+<%*newUserRedirect*%>
+<%assign var="newUserName" value="newUser"%>
+<%*cookieRedirect*%>
+<%assign var="cookieName" value="simplenav"%>
+<%foreach $head.cookieRedirect as $cookieItem%>
+ <%if $cookieItem@first%>
+ <%$cookieName = $cookieItem@key%>
+ <%/if%>
+<%/foreach%>
+
+<%if $smarty.get.tn && (!empty($smarty.cookies.$cookieName) || $smarty.cookies.$newUserName == "0")%>
+ <%widget name="common:widget/header-flat/simple-nav/simple-nav.tpl"%>
+<%else%>
+ <%if empty($body.addFavBar.hideBar)%>
+ <%widget name="common:widget/header-flat/add-fav-bar/add-fav-bar.tpl"%>
+ <%/if%>
+<%/if%>
+
+
+ <%widget name="common:widget/header-flat/logo/logo.tpl"%>
+
+
+ <%if !empty($body.headerTest.logoSibling)%>
+ <%foreach explode("|", $body.headerTest.logoSibling) as $item%>
+ <%if $item == "weather"%>
+
style="font:<%$body.headerTest.weather.font%>;"<%/if%>>
+ <%*
*%>
+ <%widget name="common:widget/header-flat/`$item`/`$item`.tpl"%>
+
+
+
+ <%else%>
+ <%widget name="common:widget/header-flat/`$item`/`$item`.tpl"%>
+ <%/if%>
+ <%/foreach%>
+ <%/if%>
+
+
+ <%if !empty($body.headerTest.showContent)%>
+ <%foreach array_reverse(explode("|", $body.headerTest.showContent)) as $module%>
+ <%widget name="common:widget/header-flat/`$module`/`$module`.tpl"%>
+ <%/foreach%>
+ <%/if%>
+
+
+
+
+
+<%script%>
+ conf.headerTest = {
+ dateWidth : "<%$body.headerTest.dateWidth%>",
+ weatherWidth : "<%$body.headerTest.weather.width%>",
+ isCeiling: "<%$body.headerTest.isCeiling%>",
+ ceilingMore: "<%$body.headerTest.ceilingMore%>",
+ settingTip: "<%$body.headerTest.settingTip%>",
+ ceilingLogo: "<%$body.headerTest.ceilingLogo%>"
+ };
+ require.async("common:widget/header-flat/header-flat-async.js");
+<%/script%>
+
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/arrow1-rtl.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/arrow1-rtl.png
new file mode 100755
index 000000000..36e8342ae
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/arrow1-rtl.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/arrow1.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/arrow1.png
new file mode 100755
index 000000000..a47042dd0
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/arrow1.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/arrow2-rtl.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/arrow2-rtl.png
new file mode 100755
index 000000000..72b1c55bf
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/arrow2-rtl.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/arrow2.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/arrow2.png
new file mode 100755
index 000000000..dde31d817
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/arrow2.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/btn-rtl.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/btn-rtl.png
new file mode 100755
index 000000000..7dca042aa
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/btn-rtl.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/btn.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/btn.png
new file mode 100755
index 000000000..53eb3293d
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/btn.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/calendar.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/calendar.png
new file mode 100755
index 000000000..60e6e6ed2
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/calendar.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/calendar_s.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/calendar_s.png
new file mode 100755
index 000000000..512736ebc
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/calendar_s.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/drop-down.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/drop-down.png
new file mode 100755
index 000000000..40993b5cb
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/drop-down.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/drop-up.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/drop-up.png
new file mode 100755
index 000000000..020a7527f
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/drop-up.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/drop.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/drop.png
new file mode 100755
index 000000000..35cf32126
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/drop.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/i-arrow-open.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/i-arrow-open.png
new file mode 100755
index 000000000..78d2ca0f9
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/i-arrow-open.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/i-arrow.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/i-arrow.png
new file mode 100755
index 000000000..424355a60
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/i-arrow.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/i-search.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/i-search.png
new file mode 100755
index 000000000..e99be9b12
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/i-search.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/icon-delete-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/icon-delete-hover.png
new file mode 100755
index 000000000..2dadce85c
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/icon-delete-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/icon-delete.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/icon-delete.png
new file mode 100755
index 000000000..72ad45601
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/icon-delete.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/icon-logotips-rtl.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/icon-logotips-rtl.png
new file mode 100755
index 000000000..f9deeece5
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/icon-logotips-rtl.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/icon-logotips.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/icon-logotips.png
new file mode 100755
index 000000000..a8ac5b151
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/icon-logotips.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/icon-msg-notice-over-rtl.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/icon-msg-notice-over-rtl.png
new file mode 100755
index 000000000..6b2423429
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/icon-msg-notice-over-rtl.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/icon-msg-notice-over.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/icon-msg-notice-over.png
new file mode 100755
index 000000000..6352a62a5
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/icon-msg-notice-over.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/icon-msg-notice-rtl.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/icon-msg-notice-rtl.png
new file mode 100755
index 000000000..51a5e55b9
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/icon-msg-notice-rtl.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/icon-msg-notice.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/icon-msg-notice.png
new file mode 100755
index 000000000..30fa678e5
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/icon-msg-notice.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/logo_test.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/logo_test.png
new file mode 100755
index 000000000..780cf0bd6
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/logo_test.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/more_trigger-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/more_trigger-hover.png
new file mode 100755
index 000000000..cd547fd4b
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/more_trigger-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/more_trigger-hover_sk.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/more_trigger-hover_sk.png
new file mode 100755
index 000000000..45b0a9845
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/more_trigger-hover_sk.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/more_trigger.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/more_trigger.png
new file mode 100755
index 000000000..46f160b21
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/more_trigger.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/more_trigger_sk.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/more_trigger_sk.png
new file mode 100755
index 000000000..adfc0adf7
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/more_trigger_sk.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/select-city_tip.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/select-city_tip.png
new file mode 100755
index 000000000..33c7837e6
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/select-city_tip.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/weather-tip_down.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/weather-tip_down.png
new file mode 100755
index 000000000..f5d1bb95a
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/weather-tip_down.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/weather-tip_down_rtl.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/weather-tip_down_rtl.png
new file mode 100755
index 000000000..e6b5afbc4
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/weather-tip_down_rtl.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/weather-tip_up.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/weather-tip_up.png
new file mode 100755
index 000000000..7bd7cdbc5
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/weather-tip_up.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/weather-tip_up_rtl.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/weather-tip_up_rtl.png
new file mode 100755
index 000000000..e32954234
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/img/weather-tip_up_rtl.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/img/del_ative.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/img/del_ative.png
new file mode 100755
index 000000000..12bb63a4f
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/img/del_ative.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/img/del_gray.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/img/del_gray.png
new file mode 100755
index 000000000..efb7884bf
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/img/del_gray.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/img/del_normal.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/img/del_normal.png
new file mode 100755
index 000000000..a2ab6e855
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/img/del_normal.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/img/flat-i-logotips-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/img/flat-i-logotips-hover.png
new file mode 100755
index 000000000..bc185f617
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/img/flat-i-logotips-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/img/flat-i-logotips-yellow.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/img/flat-i-logotips-yellow.png
new file mode 100755
index 000000000..f1c0ea9b6
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/img/flat-i-logotips-yellow.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/img/flat-i-logotips.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/img/flat-i-logotips.png
new file mode 100755
index 000000000..beda9c405
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/img/flat-i-logotips.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/img/i-logotips.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/img/i-logotips.png
new file mode 100755
index 000000000..2007de5da
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/img/i-logotips.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/img/logo_test.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/img/logo_test.png
new file mode 100755
index 000000000..780cf0bd6
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/img/logo_test.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/logo-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/logo-async.js
new file mode 100755
index 000000000..680433f48
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/logo-async.js
@@ -0,0 +1,232 @@
+// welcome tip
+
+var $ = require("common:widget/ui/jquery/jquery.js");
+var UT = require("common:widget/ui/ut/ut.js");
+var helper = require("common:widget/ui/helper/helper.js");
+require("common:widget/ui/jquery/widget/jquery.sethome/jquery.sethome.js");
+
+window.Gl || (window.Gl = {});
+
+var confAct = conf.logoActivity || {},
+ curUa = navigator.userAgent.toLowerCase().match(/(msie|firefox|chrome)/),
+ curBrowser = curUa ? curUa[1] : "",
+ actLogo = {},
+ actTips = {};
+
+curBrowser = ((curBrowser === "msie") || (document.documentMode == 11)) ? "ie" : curBrowser;
+actLogo = confAct[curBrowser] ? confAct[curBrowser].logo : null;
+actTips = confAct[curBrowser] ? confAct[curBrowser].logoTips : null;
+
+function isNotEmpty(str) {
+ return ($.trim(str) !== "");
+}
+
+Gl.logo = function (type) {
+ var indexLogo = $("#indexLogo"),
+ indexLogoImg = $("#indexLogoImg"),
+ /*secLogoImg = $("#secLogoImg"),*/
+ indexSlogan = $(".userbar-logo_slogan");
+
+ setTimeout(function() {
+ indexLogoImg.attr("src", conf.logo.imgSrc);
+ }, 1e3);
+
+ if (type !== "index") {
+ /*indexLogoImg.hide();
+ secLogoImg.show();*/
+ } else {
+ if (confAct.isHidden === "0" && actLogo) {
+ var imgSrc = actLogo["src"],
+ logoUrl = actLogo["url"],
+ sloganTxt = actLogo["slogan"],
+ sloganSz = actLogo["sloganSize"],
+ indexTtl = actLogo["indexTitle"];
+ setTimeout(function() {
+ indexLogoImg.attr("src", imgSrc);
+ }, 1e3);
+ indexLogo.attr("href", logoUrl);
+ indexSlogan.html(sloganTxt);
+ isNotEmpty(sloganSz) && indexSlogan.css("font-size", sloganSz);
+ indexLogo.attr("title", indexTtl);
+ indexLogoImg.attr("title", indexTtl);
+ indexLogoImg.attr("alt", indexTtl);
+ }
+ }
+
+ indexLogo.on("click", function ( e ) {
+ var logoTip = $("#logoTips").eq(0),
+ noJump = conf.logo.noJump;
+ UT.send({
+ position: "logo",
+ modId: "logo",
+ type: "click"
+ });
+ if(logoTip && isNotEmpty(conf.logo.autoCloseTip)) {
+ logoTip.hide();
+ $.cookie("Gh_l", conf.logoTips.country || "jp");
+ }
+ if( type === "index" && conf.logo.notOpenNew === "true" ){
+ e.preventDefault();
+ return;
+ }
+ else if (type === "index" && ($(this).attr("href") === '/' || $(this).attr("href").match(/^\/\?/)))
+ $(this).sethome();
+ else if (type === "index"){//如果有passQueryParam,则点击链接要带上这个参数
+ var url = $(this).attr("href"),
+ paramKey = conf.logo.passQueryParam.trim();
+ url = helper.appendQueryToUrl(url, paramKey);
+ !noJump && window.open(url);
+ }
+ else{
+ !noJump && (window.location.href = $(this).attr("href") || "/");
+ }
+ });
+}
+
+Gl.logoTips = function () {
+ if(!(this instanceof Gl.logoTips)) return new Gl.logoTips();
+
+ var that = this;
+ that.tip = $("#logoTips");
+ that.tipLink = $("#tipLink");
+ that.closeBtn = $("#tipClose");
+ that.conf = conf.logoTips;
+
+ that.init();
+ if(conf.pageType === "index") {
+ that.fixActTips(confAct.isHidden, actTips);
+ }
+}
+Gl.logoTips.prototype = {
+ constructor: Gl.logoTips,
+
+ init: function () {
+ var that = this;
+ var myConf;
+ if(confAct.isHidden === "0" && actTips) {
+ myConf = confAct.logoTips;
+ } else {
+ myConf = that.conf;
+ }
+ if (myConf.show) {
+ //点击logotips跳转分类区在二级页不适用
+ if((!conf.pageType || conf.pageType != "index") && /^{[0-9]+}$/.test(that.tipLink.attr("href"))){
+ that.tip.hide();
+ return;
+ }
+ that.bindEvent();
+ if (myConf.alwaysShow) {
+ that.show();
+ } else if (myConf.userOption) {
+ (!$.cookie("Gh_l") || $.cookie("Gh_l") !== that.conf.country) && that.show();
+ } else {
+ $.cookie("oldFriend", null);
+ that.setStore("oldFriend", myConf.version, function() {
+ that.show();
+ });
+ }
+ }
+ },
+ bindEvent: function () {
+ var that = this;
+ that.tipLink.on("click", function (e) {
+ var href = $(this).attr("href");
+ e.preventDefault();
+ if(href && href !== "#"){//如果有passQueryParam,则点击链接要带上这个参数
+ //针对点击logotips可跳转到指定分类区的处理
+ if (/^{[0-9]+}$/.test(href)) {
+ var sortIndex = href.substring(1, href.length-1);
+ var sortSite = $("dl[log-index="+sortIndex+"]", ".box-sort");
+ var sortMarginTop = conf.logoTips.sortMarginTop || 40;
+ var sortDisappearTime = conf.logoTips.sortDisappearTime || 1500;
+ if(sortSite.length>0){
+ var embedHome = $("#embed-iframe-nav .home");
+ if(embedHome.length>0 && !embedHome.hasClass("current")){
+ embedHome.trigger("click");
+ }
+ $(window).scrollTop(sortSite.offset().top - sortMarginTop);
+ var sortSiteHeight = sortSite.height()-2;
+ //按需加载导致获取高度可能有问题,采用一定延时
+ if (sortIndex>4 && sortSiteHeight<50) {
+ setTimeout(function(){
+ sortSiteHeight = sortSite.height()-2;
+ sortSite.height(sortSiteHeight);
+ }, 50);
+ }else{
+ sortSite.height(sortSiteHeight);
+ }
+ sortSite.addClass("selected");
+ setTimeout(function(){
+ sortSite.removeClass("selected");
+ sortSite.height(sortSiteHeight+2);
+ }, sortDisappearTime);
+ }
+ }else{
+ var url = $(this).attr("href"),
+ paramKey = that.conf.passQueryParam.trim();
+ url = helper.appendQueryToUrl(url, paramKey);
+ window.open(url, "_blank");
+ }
+ }
+ if(confAct.isHidden === "0" && actTips) {
+ confAct.logoTips.userOption && $.cookie("Gh_l",that.conf.country);
+ } else {
+ that.conf.userOption && $.cookie("Gh_l",that.conf.country);
+ }
+ that.tip.hide();
+ UT.send({
+ position: "logoTipsLink",
+ modId: "logo",
+ type: "click"
+ });
+ });
+ that.closeBtn.on("mouseenter", function () {
+ $(this).addClass("tip-close_hover");
+ });
+ that.closeBtn.on("mouseleave", function () {
+ $(this).removeClass("tip-close_hover");
+ });
+ that.closeBtn.on("click", function (e) {
+ e.preventDefault();
+ that.tip.hide();
+ UT.send({
+ position: "logoTipsClose",
+ ac:"b",
+ modId: "logo",
+ type: "click"
+ });
+ $.cookie("Gh_l",that.conf.country);
+ });
+ },
+ show: function () {
+ var that = this,
+ timeout = parseInt(that.conf.tipsHideTime, 10);
+ that.tip.show();
+ if (timeout) {
+ setTimeout(function() {
+ that.tip.hide();
+ }, timeout);
+ }
+ return true;
+ },
+ setStore: function (key, value, callback, expires) {
+ var that = this;
+ $.store(key) !== value && callback();
+ $.store(key, value, {expires: expires || 2000});
+ },
+ fixActTips: function(isHidden, data) {
+ var that = this;
+ if(isHidden === "0" && data) {
+ isNotEmpty(data["tipsWidth"]) && that.tip.css("width", data["tipsWidth"]);
+ that.tipLink.attr("href", data["url"]);
+ that.tip.children('p').first().contents().filter(function() {
+ return this.nodeType === 3;
+ }).replaceWith(data["text"]);
+ if (isNotEmpty(data["closeText"])) {
+ that.tipLink.html(data["closeText"] + ' ');
+ } else {
+ that.tipLink.html('');
+ }
+ }
+ }
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/logo.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/logo.tpl
new file mode 100755
index 000000000..906e09b02
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/logo.tpl
@@ -0,0 +1,94 @@
+<%style%>
+<%if $head.dir=='ltr'%>
+@import url('/widget/header-flat/logo/ltr/ltr.css?__inline');
+<%else%>
+@import url('/widget/header-flat/logo/rtl/rtl.css?__inline');
+<%/if%>
+<%/style%>
+
+<%style%>
+<%if !empty($body.headerTest.ceilingLogo)%>
+.header-fixed #indexLogo {
+ background: url(<%$body.headerTest.ceilingLogo%>) no-repeat <%if $head.dir=='ltr'%>left<%else%>right<%/if%> center !important;
+}
+<%/if%>
+<%if !empty($body.headerTest.widget)%>
+.userbar-logo {
+ width: <%if $head.dir=='ltr'%><%$body.headerTest.logoWidth|default:'345'%><%else%><%$body.headerTest.logoWidth|default:'345'%><%/if%>px;
+}
+<%/if%>
+<%/style%>
+
+
+<%* 声明对ltr/rtl的css依赖 *%>
+<%if $head.dir=='ltr'%>
+<%require name="common:widget/header-flat/logo/ltr/ltr.more.css"%>
+<%else%>
+<%require name="common:widget/header-flat/logo/rtl/rtl.more.css"%>
+<%/if%>
+
+
+
+ <%* 如果存在匹配的渠道 *%>
+ <%if $smarty.cookies.tnValue !== '/' %>
+ <%foreach $body.logo.tns as $tnLogo%>
+ <%if !empty($tnLogo.tnNum) && (preg_match($tnLogo.tnNum, $root.urlparam.tn) || strpos($root.urlparam.tn,$tnLogo.tnNum) !== false) %>
+ <%$body.logo.url = $tnLogo.url%>
+ <%$body.logo.src = $tnLogo.src%>
+ <%$body.logo.indexTitle = $tnLogo.indexTitle%>
+ <%$body.logo.secTitle = $tnLogo.secTitle%>
+ <%$body.logo.slogan = $tnLogo.slogan%>
+ <%$body.logo.sloganSize = $tnLogo.sloganSize%>
+ <%/if%>
+ <%/foreach%>
+ <%foreach $body.logoTips.tns as $tnTips%>
+ <%if !empty($tnTips.tnNum) && (preg_match($tnLogo.tnNum, $root.urlparam.tn) || strpos($root.urlparam.tn,$tnTips.tnNum) !== false) %>
+ <%$body.logoTips.url = $tnTips.url%>
+ <%$body.logoTips.text = $tnTips.text%>
+ <%$body.logoTips.closeText = $tnTips.closeText%>
+ <%$body.logoTips.version = $tnTips.version%>
+ <%$body.logoTips.show = $tnTips.show%>
+ <%$body.logoTips.alwaysShow = $tnTips.alwaysShow%>
+ <%$body.logoTips.userOption = $tnTips.userOption%>
+ <%$body.logoTips.tipsWidth = $tnTips.tipsWidth%>
+ <%/if%>
+ <%/foreach%>
+ <%/if%>
+
+
+
+
+
style="font-size:<%$body.logo.sloganSize%>"<%/if%>><%$body.logo.slogan%>
+
style="width:<%$body.logoTips.tipsWidth%>px"<%/if%>>
+
+
<%$body.logoTips.text%> <%$body.logoTips.closeText%><%if !empty($body.logoTips.closeText)%> <%/if%>
+
+
+
+<%script%>
+ conf.logo = {
+ imgSrc: "<%$body.logo.src%>",
+ passQueryParam: "<%$body.logo.passQueryParam%>",
+ notOpenNew : "<%$body.logo.notOpenNew%>",
+ autoCloseTip: "<%$body.logo.autoCloseTip%>",
+ noJump: "<%$body.logo.noJump%>"
+ };
+ conf.logoTips = {
+ show: "<%$body.logoTips.show%>",
+ alwaysShow: "<%$body.logoTips.alwaysShow%>",
+ version: "<%$body.logoTips.version%>",
+ userOption: "<%$body.logoTips.userOption%>",
+ country: conf.country,
+ passQueryParam: "<%$body.logo.passQueryParam%>",
+ sortDisappearTime: "<%$body.logoTips.sortDisappearTime%>",
+ sortMarinTop: "<%$body.logoTips.sortMarinTop%>",
+ tipsHideTime: "<%$body.logoTips.tipsHideTime%>"
+ };
+ conf.logoActivity = <%json_encode($body.logoActivity)%>;
+ require.async(["common:widget/ui/jquery/jquery.js", "common:widget/header-flat/logo/logo-async.js"], function ($) {
+ Gl.logo(conf.pageType);
+ Gl.logoTips();
+ });
+<%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/ltr/ltr.css
new file mode 100755
index 000000000..ece6b998a
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/ltr/ltr.css
@@ -0,0 +1,17 @@
+.userbar-logo {
+ height: 50px;
+ position: relative;
+ z-index: 10;
+ font-size: 12px;
+}
+.userbar-logo_slogan {
+ position: absolute;
+ font-size: 13px;
+ left: 133px;
+ top: 26px;
+ white-space: nowrap;
+}
+.userbar-logo_tip {
+ display: none;
+ visibility: hidden;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/ltr/ltr.more.css
new file mode 100755
index 000000000..f988f35c2
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/ltr/ltr.more.css
@@ -0,0 +1,107 @@
+.userbar-logo_tip {
+ position: absolute;
+ top: 49px;
+ left: 0;
+ padding: 5px 17px 5px 7px;
+ width: 230px;
+ max-width: 230px;
+ border: 1px solid #e6e6e6;
+ color: #666;
+ background-color: #fff;
+ border-radius: 2px;
+
+ visibility: visible !important;
+}
+.userbar-logo_tip a{
+ color: #666;
+}
+.userbar-logo_tip p a:hover{
+ color: #1c81e5;
+}
+.userbar-logo_tip .arrow, .userbar-logo_tip .arrow_bg {
+ position: absolute;
+ height: 0;
+ width: 0;
+ border: 8px dashed transparent;
+}
+.userbar-logo_tip .arrow {
+ border-bottom-color: #e6e6e6;
+ border-bottom-style: solid;
+ top: -16px;
+ left: 19px;
+}
+.userbar-logo_tip .arrow_bg {
+ border-bottom-color: #fff;
+ border-bottom-style: solid;
+ margin: -7px 0 0 -8px;
+}
+.userbar-logo_tip .tip-close {
+ display: block;
+ width: 12px;
+ height: 12px;
+ position: absolute;
+ top: 4px;
+ right: 4px;
+ background: url(../img/flat-i-logotips.png?__sprite) no-repeat;
+ cursor: pointer;
+}
+.userbar-logo_tip .tip-close_hover {
+ background: url(../img/flat-i-logotips.png?__sprite) no-repeat;
+}
+.userbar-logo_tip .tipLinkArrow{
+ position: relative;
+ display: inline-block;
+ width: 12px;
+ height: 12px;
+ background: url(../img/flat-i-logotips.png?__sprite) no-repeat -12px 0px;
+}
+.userbar-logo_tip a:hover .tipLinkArrow{
+ background: url(../img/flat-i-logotips-hover.png?__sprite) no-repeat -12px 0px;
+}
+
+/**yellow logoTips***/
+.userbar-logo_tip.yellow{
+ border: none;
+ background-color: #f3a534;
+ color: #fff;
+}
+.userbar-logo_tip.yellow .tip-close{
+ background: url(../img/flat-i-logotips-yellow.png?__sprite) no-repeat;
+}
+.userbar-logo_tip.yellow .tip-close_hover {
+ background: url(../img/flat-i-logotips-yellow.png?__sprite) no-repeat;
+}
+.userbar-logo_tip.yellow .tipLinkArrow{
+ background: url(../img/flat-i-logotips-yellow.png?__sprite) no-repeat -12px 0px;
+}
+.userbar-logo_tip.yellow .arrow{
+ border-bottom-color: #f3a534;
+}
+.userbar-logo_tip.yellow .arrow_bg{
+ border-bottom-color: #f3a534;
+}
+.userbar-logo_tip.yellow a{
+ color: #fff;
+}
+
+
+/*head fixed*/
+.header-fixed-st #indexLogo,
+.header-fixed-st .userbar-logo {
+ height: 40px;
+}
+.header-fixed #indexLogo {
+ float: left;
+ width: 94px;
+ background: url(../img/logo_test.png) no-repeat left center;
+}
+.header-fixed #indexLogo img,
+.header-fixed .userbar-logo_slogan,
+.header-fixed .userbar-logo_tip {
+ display: none !important;
+}
+
+.header-fixed-up #indexLogo,
+.header-fixed-up .userbar-logo {
+ height: 50px;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/rtl/rtl.css
new file mode 100755
index 000000000..925297330
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/rtl/rtl.css
@@ -0,0 +1,17 @@
+.userbar-logo {
+ height: 50px;
+ position: relative;
+ z-index: 10;
+ font-size: 12px;
+}
+.userbar-logo_slogan {
+ position: absolute;
+ font-size: 13px;
+ right: 133px;
+ top: 26px;
+ white-space: nowrap;
+}
+.userbar-logo_tip {
+ display: none;
+ visibility: hidden;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/rtl/rtl.more.css
new file mode 100755
index 000000000..1466b6d75
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/logo/rtl/rtl.more.css
@@ -0,0 +1,106 @@
+.userbar-logo_tip {
+ position: absolute;
+ top: 49px;
+ right: 0;
+ padding: 5px 7px 5px 17px;
+ width: 230px;
+ max-width: 230px;
+ border: 1px solid #e6e6e6;
+ color: #666;
+ background-color: #fff;
+ border-radius: 2px;
+
+ visibility: visible !important;
+}
+.userbar-logo_tip a{
+ color: #666;
+}
+.userbar-logo_tip p a:hover{
+ color: #1c81e5;
+}
+.userbar-logo_tip .arrow, .userbar-logo_tip .arrow_bg {
+ position: absolute;
+ height: 0;
+ width: 0;
+ border: 8px dashed transparent;
+}
+.userbar-logo_tip .arrow {
+ border-bottom-color: #e6e6e6;
+ border-bottom-style: solid;
+ top: -16px;
+ right: 19px;
+}
+.userbar-logo_tip .arrow_bg {
+ border-bottom-color: #fff;
+ border-bottom-style: solid;
+ margin: -7px -8px 0 0;
+}
+.userbar-logo_tip .tip-close {
+ display: block;
+ width: 12px;
+ height: 12px;
+ position: absolute;
+ top: 4px;
+ left: 4px;
+ background: url(../img/flat-i-logotips.png?__sprite) no-repeat;
+ cursor: pointer;
+}
+.userbar-logo_tip .tip-close_hover {
+ background: url(../img/flat-i-logotips.png?__sprite) no-repeat;
+}
+.userbar-logo_tip .tipLinkArrow{
+ position: relative;
+ display: inline-block;
+ width: 12px;
+ height: 12px;
+ background: url(../img/flat-i-logotips.png?__sprite) no-repeat -3px -13px;
+}
+.userbar-logo_tip a:hover .tipLinkArrow{
+ background: url(../img/flat-i-logotips-hover.png?__sprite) no-repeat -3px -13px;
+}
+
+/**yellow logoTips***/
+.userbar-logo_tip.yellow{
+ border: none;
+ background-color: #f3a534;
+ color: #fff;
+}
+.userbar-logo_tip.yellow .tip-close{
+ background: url(../img/flat-i-logotips-yellow.png?__sprite) no-repeat;
+}
+.userbar-logo_tip.yellow .tip-close_hover {
+ background: url(../img/flat-i-logotips-yellow.png?__sprite) no-repeat;
+}
+.userbar-logo_tip.yellow .tipLinkArrow{
+ background: url(../img/flat-i-logotips-yellow.png?__sprite) no-repeat -3px -13px;
+}
+.userbar-logo_tip.yellow .arrow{
+ border-bottom-color: #f3a534;
+}
+.userbar-logo_tip.yellow .arrow_bg{
+ border-bottom-color: #f3a534;
+}
+.userbar-logo_tip.yellow a{
+ color: #fff;
+}
+
+
+/*head fixed*/
+.header-fixed-st #indexLogo,
+.header-fixed-st .userbar-logo {
+ height: 40px;
+}
+.header-fixed #indexLogo {
+ float: right;
+ width: 94px;
+ background: url(../img/logo_test.png) no-repeat right center;
+}
+.header-fixed #indexLogo img,
+.header-fixed .userbar-logo_slogan,
+.header-fixed .userbar-logo_tip {
+ display: none !important;
+}
+.header-fixed-up #indexLogo,
+.header-fixed-up .userbar-logo {
+ height: 50px;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/ltr/ltr.css
new file mode 100755
index 000000000..45bdfa752
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/ltr/ltr.css
@@ -0,0 +1,71 @@
+/*============userbar=============*/
+
+.userbar-wrap {
+ background: #1c81e5;
+ min-width: 960px;
+ position: relative;
+ height: 50px;
+ zoom: 1;
+ z-index: 400;
+}
+
+.userbar {
+ height: 50px;
+ margin: 0 auto;
+ color: #fff;
+ position: relative;
+ z-index: 9;
+}
+/*.userbar-tool {
+ display: none;
+}
+.weather-more {
+ display: none;
+}
+
+.weather-more_wrap {
+ border-bottom: 1px solid #fff;
+}*/
+
+
+.userbar-logo {
+ max-width: 345px;
+}
+/*.weather-wrap {
+ position: relative;
+ float: left;
+ visibility: hidden;
+}
+div.userbar-weather {
+ float: left;
+}*/
+
+.userbar-glo {
+ position: absolute;
+ right: 0;
+ top: 0;
+ display: none;
+}
+/*.userbar-logoSibling {
+ margin-right: 62px;
+}*/
+
+/*960*/
+/*.w960 .userbar-logoSibling {
+ margin-right: 18px;
+}*/
+
+/*has skin*/
+body.skin-on .userbar-wrap {
+ background: #666666;
+ background: rgba(0,0,0,0.6);
+}
+
+
+/*head fixed*/
+.header-fixed .userbar-wrap {
+ position: fixed;
+ width: 100%;
+ top: 0;
+ left: 0;
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/ltr/ltr.fn.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/ltr/ltr.fn.css
new file mode 100755
index 000000000..4f3ec6d3c
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/ltr/ltr.fn.css
@@ -0,0 +1,72 @@
+/*============userbar=============*/
+.head-top-wrap{
+ height:105px;
+ margin-top:30px;
+}
+.userbar-logo {
+ max-width: 230px;
+ padding-top: 10px;
+}
+.userbar-wrap {
+ background: #1c81e5;
+ min-width: 960px;
+ position: relative;
+ height: 40px;
+ zoom: 1;
+ z-index: 100;
+}
+/*.userbar {
+ height: 40px;
+ margin: 0 auto;
+ color: #fff;
+ position: relative;
+ z-index: 9;
+}*/
+.userbar-tool{
+ padding-right: 7px;
+}
+.userbar-tool .settings-btn{
+ height: 16px;
+ padding: 12px 10px;
+}
+.userbar-tool .settings-btn .btn-holder {
+ display: block;
+ width: 16px;
+ height: 16px;
+ background: url(../site-switch/img/i-settings-btn-s.png?__sprite) no-repeat;
+}
+.userbar-tool .settings-dropdown{
+ top: 40px;
+}
+.userbar-tool .account-loginfo_wrap{
+ padding: 20px;
+}
+.userbar-tool .account_trig{
+ height: 16px;
+ padding: 12px 10px;
+}
+.userbar-tool .account-dropdown_wrap{
+ top: 40px;
+}
+.userbar-tool .account-login_suc .account_trig img{
+ width: 16px;
+ height: 16px;
+ border-radius: 8px;
+}
+.userbar-tool .userbar-btn .btn-item-anchor{
+ width: 16px;
+ height: 16px;
+ padding: 12px 10px;
+}
+.userbar-tool .userbar-btn .btn-sethome{
+ margin-top: 0;
+ background: url(../userbar-btn-header/img/setHome-s.png?__sprite) no-repeat;
+}
+.userbar-tool .userbar-btn .btn-addfav{
+ margin-top: 0;
+ background: url(../userbar-btn-header/img/addfav-s.png?__sprite) no-repeat;
+}
+.userbar-tool .userbar-btn .btn-down{
+ margin-top: 0;
+ background: url(../userbar-btn-header/img/down-s.png?__sprite) no-repeat;
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/ltr/ltr.more.css
new file mode 100755
index 000000000..e03943f28
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/ltr/ltr.more.css
@@ -0,0 +1,673 @@
+/* from inline css */
+.userbar-tool {
+ display: none;
+}
+.weather-more {
+ display: none;
+}
+.weather-more_wrap {
+ border-bottom: 1px solid #fff;
+}
+.weather-wrap {
+ position: relative;
+ visibility: hidden;
+ float: left;
+ opacity: 0;
+}
+div.userbar-weather {
+ float: left;
+}
+.userbar-glo {
+ display: block !important;
+}
+.userbar-logoSibling {
+ margin-right: 62px;
+}
+
+/* 960 */
+.w960 .userbar-logoSibling {
+ margin-right: 18px;
+}
+
+/* ============userbar============= */
+.userbar-tool {
+ position: relative;
+ z-index: 101;
+ display: block;
+ display: block !important;
+ overflow: visible;
+}
+.userbar a:hover {
+ text-decoration: none;
+}
+
+/* ============userbar============= */
+.weather-wrap .weather-more_wrap {
+ overflow: visible;
+ zoom: 1;
+ height: 0;
+ border-width: 0;
+}
+.weather-more_show {
+ height: auto;
+ border-top: 1px solid #0a6f4e;
+}
+.weather-more_line {
+ border-bottom: 1px solid #0a6f4e;
+ -webkit-box-shadow: 0 0 4px rgba(0, 0, 0, .1) inset;
+ -moz-box-shadow: 0 0 4px rgba(0, 0, 0, .1) inset;
+ box-shadow: 0 0 4px rgba(0, 0, 0, .1) inset;
+ -o-box-shadow: 0 0 4px rgba(0, 0, 0, .1) inset;
+}
+.weather-more {
+ display: none;
+}
+.module-mask {
+ cursor: pointer;
+ background: rgba(255, 255, 255, .1);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled='true', startColorstr='#19FFFFFF', endColorstr='#19FFFFFF');
+ -ms-filter: 'progid:DXImageTransform.Microsoft.gradient(enabled=\'true\', startColorstr=\'#19FFFFFF\', endColorstr=\'#19FFFFFF\')';
+}
+
+/* weather */
+.weather_last,
+.weather-info .dot_img,
+.weather-info .temperature_hum,
+.userbar-weather li.weather_last {
+ display: none;
+}
+.weather-info .text {
+ font-size: 12px;
+ visibility: visible;
+}
+.weather-info .temperature_p {
+ font-size: 12px;
+}
+.userbar-weather div.fl {
+ width: auto;
+ height: 45px;
+ margin-left: 0;
+ padding-top: 5px;
+ padding-right: 42px;
+ padding-left: 20px;
+ cursor: pointer;
+}
+.userbar-weather .fl:hover,
+.weather-wrap-open .userbar-weather .fl {
+ background-color: #0164c8;
+ background-color: rgba(0, 99, 199, .97);
+}
+.weather-wrap .userbar-weather {
+ height: 50px;
+ margin-right: 0;
+ padding-top: 0;
+}
+.userbar-weather .fl li {
+ margin-right: 0;
+}
+div.userbar-weather_console {
+ position: absolute;
+ top: 78px;
+ left: 114px;
+ display: none;
+ height: auto;
+}
+div.userbar-weather_console a {
+ font-size: 14px;
+ font-weight: 700;
+ color: #000;
+}
+#weatherView li img {
+ width: 40px;
+ height: 36px;
+ margin-top: -2px;
+}
+.userbar-weather .weather-info span {
+ font-weight: 500;
+}
+.userbar-weather_console .weather-days {
+ display: none;
+}
+.weather-wrap .weather-more_wrap {
+ position: absolute;
+ top: 50px;
+ left: 0;
+ display: none;
+ height: auto;
+}
+.weather-wrap .weather-more {
+ display: block;
+ overflow: hidden;
+ width: 340px;
+ padding: 23px 30px 15px;
+ background: #0868c9;
+ background: rgba(0, 99, 199, .97);
+}
+.weather-wrap .weather-more li {
+ font-size: 18px;
+ line-height: 40px;
+ position: relative;
+ overflow: hidden;
+ width: 100%;
+ height: 42px;
+ margin: 0;
+ padding: 0;
+ color: #fff;
+ background: transparent;
+}
+.weather-wrap .weather-more li img {
+ position: absolute;
+ left: 50%;
+ margin-left: -20px;
+ padding: 0;
+}
+body .weather-more_odd {
+ margin-left: 1px;
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+ _margin-left: 0;
+ -o-box-shadow: none;
+}
+.weather-wrap .weather-more .weather-more_today {
+ position: relative;
+ float: none;
+ overflow: hidden;
+ width: auto;
+ height: auto;
+ margin-bottom: 17px;
+ padding: 0;
+ text-align: left;
+ border-bottom: 1px solid #1b80e4;
+ border-bottom-color: rgba(28, 129, 229, .96);
+ background: transparent;
+}
+.weather-more_today .temperature_big {
+ font-size: 42px;
+ font-weight: normal;
+ padding-left: 117px;
+}
+.weather-wrap .dot_img_head {
+ margin-right: 6px;
+ margin-bottom: 0;
+ background: url(../img/drop.png?__sprite) no-repeat;
+}
+.weather-more_wrap .weather-more_line {
+ border: none;
+}
+.weather-more .humidity {
+ font-size: 18px;
+ font-weight: normal;
+ padding: 0 4px;
+}
+.weather-more_today p {
+ margin-top: 24px;
+ margin-bottom: 55px;
+}
+.weather-more_today p:first-child {
+ font-size: 14px;
+ font-weight: 600;
+ line-height: 30px;
+ margin: 0;
+ padding-left: 130px !important;
+ text-align: right;
+ color: #9cc3e9 !important;
+ color: rgba(255, 255, 255, .6) !important;
+}
+.weather-wrap .weather-more .weather-more_today img {
+ position: absolute;
+ top: 50px;
+ left: 40px;
+ padding: 0;
+}
+.weather-more_today .weather-more_tip-remind {
+ font-size: 12px;
+ font-weight: 400;
+ float: left;
+ overflow: hidden;
+ max-width: 132px;
+ margin-top: -14px;
+ padding-left: 122px;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+body div.userbar-weather_city-cur a {
+ font-size: 18px;
+ display: inline-block;
+ min-height: 15px;
+ padding-right: 36px;
+ color: #fff;
+ background: url(../img/select-city_tip.png) no-repeat right top;
+}
+
+/* .weather-wrap_arrow,
+.weather-wrap_arrow-bg {
+ position: absolute;
+ height: 0;
+ width: 0;
+ border: 6px solid transparent;
+}
+.weather-wrap_arrow {
+ border-bottom-color: #bee2d6;
+ bottom: -1px;
+ left: 64px;
+ display: none;
+ z-index: 2;
+}
+.weather-wrap_arrow-bg {
+ border-bottom-color: #EBFCF7;
+ margin: -6px 0 0 -7px;
+}
+*/
+div.userbar-weather_tip {
+ right: 0;
+ left: -1px;
+ border-color: #00ae74;
+ background-color: #f0fffc;
+}
+div.userbar-weather_tip .arrow {
+ border-bottom-color: #00ae74;
+}
+div.userbar-weather_tip .arrow_bg {
+ border-bottom-color: #f0fffc;
+}
+.city-select .box-prompt-inner,
+.weather-wrap div.city-select {
+ border: none;
+}
+.weather-wrap div.city-select {
+ font-size: 18px;
+ top: -28px;
+ right: 0;
+ left: -114px;
+ width: 400px;
+ height: 310px;
+ /* overflow: hidden;
+ */
+
+ color: #fff;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+ background: #0868c9;
+ background: rgba(0, 99, 199, .97);
+ -o-border-radius: 0;
+}
+.city-select .weather_cur-city {
+ font-size: 18px;
+ font-weight: normal;
+ height: 20px;
+ margin-top: 30px;
+ margin-bottom: 18px;
+}
+.city-select .weather_close-btn {
+ font-size: 18px;
+ position: absolute;
+ top: 16px;
+ right: 20px;
+ display: none;
+ color: #b3e0d1;
+}
+.weather-wrap .city-select select {
+ font-size: 18px;
+ /* height: 40px;
+ */
+ line-height: 18px;
+ width: 100%;
+ margin-bottom: 19px;
+ padding: 8px 0;
+ color: #fff;
+ border: 0;
+ /* padding-left: 16px;
+ */
+ background: #1c81e5;
+}
+.weather-wrap .city-select label {
+ font-size: 14px;
+ margin-top: 10px;
+ margin-bottom: 10px;
+ color: #9cc3e9;
+ color: rgba(255, 255, 255, .6);
+}
+.weather-wrap .city-select .btn-bar {
+ position: absolute;
+ bottom: 0;
+ width: 400px;
+ margin-left: -30px;
+ text-align: center;
+}
+.weather-wrap .mod-btn_normal,
+.weather-wrap .mod-btn_cancel {
+ font-size: 18px;
+ font-weight: bold;
+ line-height: 60px;
+ float: left;
+ width: 200px;
+ height: 60px;
+ margin-top: -5px;
+ text-align: center;
+ background: #004d99;
+}
+.weather-wrap .mod-btn_cancel {
+ float: right;
+ width: 199px;
+}
+.weather-wrap .mod-btn_normal:hover,
+.weather-wrap .mod-btn_cancel:hover {
+ background-color: #003973;
+}
+.weather-wrap .mod-btn_normal .ui-button-text,
+.weather-wrap .mod-btn_cancel .ui-button-text {
+ color: #fff;
+}
+.weather-wrap .weather-tip_def {
+ position: absolute;
+ top: 18px;
+ right: 20px;
+ width: 12px;
+ height: 12px;
+ cursor: pointer;
+ pointer-events: none;
+ background: url(../img/more_trigger.png?__sprite) no-repeat;
+}
+.weather-wrap .weather-tip_up {
+ background: url(../img/more_trigger-hover.png?__sprite) no-repeat;
+}
+.userbar-weather_city-cur {
+ position: absolute;
+ left: -84px;
+ white-space: nowrap;
+}
+.weather-wrap .weather-more li .wea-fl {
+ float: left;
+}
+.weather-wrap .weather-more li .wea-fr {
+ float: right;
+ margin-right: -5px;
+}
+.weather-wrap .weather-more li .wea-hide {
+ display: none;
+}
+.weather-wrap .weather-more li .wea-small {
+ font-size: 12px;
+ color: #9cc3e9;
+ color: rgba(220, 220, 220, .6);
+}
+.weather-wrap .weather-more .wea-flr {
+ float: right;
+ margin-top: -14px;
+ margin-right: -9px;
+}
+.weather-wrap .box-prompt-inner {
+ padding: 8px 30px;
+}
+.weather-more_wrap .weather-origin_wrap {
+ position: relative;
+}
+.weather-more_wrap .weather-origin {
+ display: none;
+}
+.weather-more_wrap .weather-origin_wrap .weather-more {
+ padding-bottom: 40px;
+}
+.weather-more_wrap .weather-origin_wrap .weather-origin {
+ font-size: 13px;
+ position: absolute;
+ right: 30px;
+ bottom: 18px;
+ display: block;
+ color: #fff;
+}
+.weather-more_wrap .weather-origin_wrap .weather-origin:hover {
+ opacity: .6;
+ filter: alpha(opacity=60);
+}
+
+/* has skin */
+.skin-on .weather-wrap .weather-tip_def {
+ background: url(../img/more_trigger_sk.png?__sprite) no-repeat;
+}
+.skin-on .weather-wrap .weather-tip_up {
+ background: url(../img/more_trigger-hover_sk.png?__sprite) no-repeat;
+}
+.skin-on .userbar-weather .fl:hover,
+.skin-on .weather-wrap-open .userbar-weather .fl,
+.skin-on .weather-wrap .weather-more,
+.skin-on .weather-wrap div.city-select {
+ background-color: #333;
+ background-color: rgba(0, 0, 0, .8);
+}
+.skin-on .weather-wrap .weather-more .weather-more_today {
+ border-bottom-color: #717171;
+ border-bottom-color: rgba(255, 255, 255, .3);
+}
+.skin-on .weather-wrap .city-select select {
+ background-color: #626262;
+}
+.skin-on .weather-wrap .mod-btn_normal,
+.skin-on .weather-wrap .mod-btn_cancel {
+ background-color: #535353;
+}
+.skin-on .weather-wrap .mod-btn_normal:hover,
+.skin-on .weather-wrap .mod-btn_cancel:hover {
+ background-color: #434343;
+}
+.skin-on .weather-wrap .mod-btn_normal {
+ border-right: 1px solid #717171;
+ border-right-color: rgba(255, 255, 255, .3);
+}
+.skin-on .userbar-weather .dropdown-trigger,
+.skin-on .userbar-weather .dropdown .dropdown-input,
+.skin-on .userbar-weather .dropdown-list,
+.skin-on .userbar-weather .dropdown-list .dropdown-list-inner {
+ background-color: #626262;
+}
+.skin-on .userbar-weather .dropdown-list li:hover,
+.skin-on .userbar-weather .dropdown-list-hover {
+ background-color: #444;
+}
+.skin-on .userbar-weather .dropdown .dropdown-arrow {
+ background: url(../img/drop-up.png?__sprite) no-repeat;
+}
+.skin-on .userbar-weather .dropdown .dropdown-arrow-up {
+ background: url(../img/drop-down.png?__sprite) no-repeat;
+}
+
+/* head fixed */
+.header-fixed .userbar-wrap {
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ background-color: #328de8;
+ background-color: rgba(28, 129, 229, .9);
+}
+.header-fixed-st .userbar-wrap,
+.header-fixed-st .userbar {
+ height: 40px;
+}
+.header-test-holder {
+ display: none;
+ height: 50px;
+}
+.header-fixed-st .header-test-holder {
+ display: block;
+}
+.header-fixed .newerguide-tip {
+ display: none !important;
+}
+.header-fixed-st .skinbox-more-hide {
+ position: static !important;
+}
+.header-fixed-up .userbar-logoSibling {
+ display: none;
+}
+.header-fixed .skinbox-more-mask,
+.header-fixed .skinbox-more-wrap {
+ display: none !important;
+}
+
+/* 页头吸顶高度为50px时的搜索框 */
+/* 普通搜索框 */
+.header-fixed-up .sk-wrap,
+.header-fixed-up .box-search_tab,
+.header-fixed-up .box-search_hsrch {
+ display: none;
+ display: none !important;
+}
+.header-fixed-up .box-search_wrap {
+ position: fixed;
+ z-index: 499;
+ top: 4px;
+ margin-left: 123px;
+}
+.header-fixed-up .sg_tri .sg_btn .sg_new_num,
+.header-fixed-up .sg_v_tri .sg_v_btn .sg_v_new_num {
+ top: -7px;
+}
+.header-fixed-up .box-search_inner {
+ height: auto;
+}
+.header-fixed-up #searchGroupForm {
+ /* overflow: hidden;
+ */
+}
+.header-fixed-up .btn-search {
+ width: auto;
+ border-width: 0;
+}
+.header-fixed-up .btn-search_c {
+ position: absolute;
+ z-index: 14;
+ top: 7px;
+ right: 3px;
+ overflow: hidden;
+ width: 23px;
+ height: 23px;
+ white-space: nowrap;
+ text-indent: -1000px;
+ border: 2px solid #2186ea;
+ border-radius: 2px;
+ background: url(../img/i-search.png?__sprite) no-repeat;
+ background-color: #2186ea;
+}
+.header-fixed-up .btn-search_c:hover {
+ border-color: #1c81e5;
+ background-color: #1c81e5;
+}
+.header-fixed-up .box-search_form {
+ padding-left: 0;
+}
+.header-fixed-up .box-search_form .input {
+ padding-right: 28px;
+ background-color: white;
+}
+.header-fixed-up .box-search_form .input input {
+ margin-left: 34px;
+}
+.header-fixed-up .box-search_logo_wrap {
+ position: absolute;
+ z-index: 7;
+ top: 17px;
+ left: 7px;
+ width: auto;
+ height: auto;
+}
+.header-fixed-up .box-search_logo img {
+ width: 16px;
+ height: 16px;
+ margin-top: 8px;
+ margin-left: 6px;
+}
+.header-fixed-up .box-search .box-search_logo dt,
+.header-fixed-up .box-search .box-search_logo dd {
+ padding: 0;
+}
+.header-fixed-up .box-search_logo a {
+ /* border-right: 1px solid #B1B1B1;
+ */
+ height: 33px;
+}
+.header-fixed-up .box-search_logo dt {
+ background-color: #f2f2f2;
+}
+.header-fixed-up .box-search_logos_show dt {
+ width: 37px;
+ background-image: none;
+}
+.header-fixed-up .box-search .sug-search,
+.header-fixed-up .box-search .baidu_sug,
+.header-fixed-up .box-search .baidu_video_sug {
+ left: 37px;
+ width: 572px;
+}
+.header-fixed-up .box-search_logo dt a {
+ background: url(../img/i-arrow.png) no-repeat 26px 13px;
+}
+.header-fixed-up .box-search_logos_show dt a {
+ background: url(../img/i-arrow-open.png) no-repeat 26px 13px;
+}
+.header-fixed-up .box-search_logos_show {
+ overflow: visible;
+ height: 0;
+ border: 0;
+}
+.header-fixed-up .box-search_logos_show dd {
+ margin-left: -1px;
+ text-align: left;
+ background-color: #fff;
+}
+.header-fixed-up .box-search_logos_show .box-search_logo_hover {
+ background-color: #f5f7f7;
+}
+.header-fixed-up .box-search_logo .box-search_logo_first {
+ border-top: 1px solid #c0c0c0;
+}
+.header-fixed-up .box-search_logo .box-search_logo_last {
+ border-bottom: 1px solid #c0c0c0;
+}
+.header-fixed-up .box-search_logo dd a {
+ white-space: nowrap;
+ color: #8c8b8b;
+ border-right: 1px solid #c0c0c0;
+ border-left: 1px solid #c0c0c0;
+}
+.header-fixed-up .box-search_logo dd a:hover {
+ color: #5d5d5d;
+}
+.box-search-logo-item-tips {
+ display: none;
+}
+.header-fixed-up .box-search-logo-item-tips {
+ display: inline;
+ margin-left: 6px;
+ vertical-align: -5px;
+}
+.header-fixed-up .btn-search_ico {
+ display: none;
+ display: none !important;
+}
+.header-fixed-up .baidu_sug,
+.header-fixed-up .baidu_video_sug {
+ margin-left: 0;
+}
+.header-fixed-up .box-search_logo_disabled dt a {
+ background: 0 0;
+}
+.header-fixed-up .box-search_logo_disabled dt {
+ width: 37px;
+}
+.header-fixed-up .box-search_logo_disabled dt a {
+ padding-right: 6px;
+}
+.header-fixed-up .box-search .box-search_logo_disabled dt {
+ background: none;
+ background-color: #f0f0f0;
+}
+
+/* w960 */
+.w960 .header-fixed-up .box-search .sug-search,
+.w960 .header-fixed-up .box-search .baidu_sug,
+.w960 .header-fixed-up .box-search .baidu_video_sug {
+ width: 493px;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/ltr/ltr.ps.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/ltr/ltr.ps.css
new file mode 100755
index 000000000..dcf31a885
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/ltr/ltr.ps.css
@@ -0,0 +1,15 @@
+/*for PS*/
+.header-fixed-up .radios {
+ display: none;
+ display: none !important;
+}
+body.header-fixed-up .box-search_logo dt {
+ padding-right: 15px;
+ height: 33px;
+ cursor: pointer;
+ background: #F2F2F2 url(../img/i-arrow.png) no-repeat 26px 13px;
+}
+body.header-fixed-up .box-search_logos_show dt {
+ width: 22px;
+ background-image: url(../img/i-arrow-open.png);
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/img/btn-facebook-logo.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/img/btn-facebook-logo.png
new file mode 100755
index 000000000..18ba2e79e
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/img/btn-facebook-logo.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/img/icon-delete-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/img/icon-delete-hover.png
new file mode 100755
index 000000000..fcbd96676
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/img/icon-delete-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/img/icon-delete-new.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/img/icon-delete-new.png
new file mode 100755
index 000000000..62354ca53
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/img/icon-delete-new.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/img/icon-delete-new_hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/img/icon-delete-new_hover.png
new file mode 100755
index 000000000..ca92cf840
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/img/icon-delete-new_hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/img/icon-delete.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/img/icon-delete.png
new file mode 100755
index 000000000..f6a6757a7
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/img/icon-delete.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/img/icon-msg-new.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/img/icon-msg-new.png
new file mode 100755
index 000000000..c5417dc1d
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/img/icon-msg-new.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/img/icon-msg-notice-over-rtl.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/img/icon-msg-notice-over-rtl.png
new file mode 100755
index 000000000..213bb14c2
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/img/icon-msg-notice-over-rtl.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/img/icon-msg-notice-over.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/img/icon-msg-notice-over.png
new file mode 100755
index 000000000..36afab5cf
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/img/icon-msg-notice-over.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/img/icon-msg-notice-rtl.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/img/icon-msg-notice-rtl.png
new file mode 100755
index 000000000..5465eaa2d
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/img/icon-msg-notice-rtl.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/img/icon-msg-notice.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/img/icon-msg-notice.png
new file mode 100755
index 000000000..ad4f9f309
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/img/icon-msg-notice.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/ltr/ltr.more.css
new file mode 100755
index 000000000..64a6faf09
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/ltr/ltr.more.css
@@ -0,0 +1,280 @@
+.wrap-message {
+ float: left;
+ position: relative;
+}
+.wrap-message-content {
+ position: relative;
+ background-color: #0164C8;
+ background-color: rgba(0,99,199,0.97);
+ width: 277px;
+}
+.wrap-message-content li {
+ border-bottom: 1px solid #1B80E4;
+ border-bottom-color: rgba(28,129,229,0.96);
+}
+.wrap-message-content li:hover {
+ background-color: #075DB5;
+ background-color: rgba(0,0,0,.1);
+}
+.wrap-message-content .message-target {
+ float: left;
+ color: #fff;
+ width: 255px;
+ font-size: 12px;
+ min-height: 58px;
+}
+/*.message-target:hover span {
+ color: #fff;
+}*/
+a.message-target:hover span {
+ text-decoration: underline;
+}
+span.message-target span {
+ cursor: default;
+}
+.message-over-item .message-target {
+ color: #999999;
+}
+/*.message-over-item .message-target:hover span {
+ color: #777777;
+}*/
+.message-target span {
+ display: block;
+ width: 200px;
+ float: left;
+ margin: 19px 0 10px 10px;
+}
+.ico-message-delete {
+ float: right;
+ margin-top: 10px;
+ margin-right: 10px;
+ display: none;
+ width: 11px;
+ height: 11px;
+ background: url("../img/icon-delete.png?__sprite") no-repeat;
+}
+.ico-message-delete:hover {
+ cursor: pointer;
+ background: url("../img/icon-delete-hover.png?__sprite") no-repeat;
+}
+.wrap-message-content li:hover .ico-message-delete {
+ display: block;
+}
+.ico-message-new {
+ position: absolute;
+ right: 10px;
+ top: 10px;
+ width: 12px;
+ height: 12px;
+ background: url("../img/icon-msg-new.png?__sprite") no-repeat;
+}
+.ico-message-type {
+ width: 28px;
+ height: 25px;
+ float: left;
+ margin-left: 15px;
+ margin-top: 17px;
+ background: url("../img/icon-msg-notice.png?__sprite") no-repeat;
+}
+.ico-message-type1,
+.ico-message-type2 {
+ background: url("../img/icon-msg-notice.png?__sprite") no-repeat;
+}
+.message-over-item .ico-message-type {
+ background-image: url("../img/icon-msg-notice-over.png?__sprite");
+}
+.message-over-item .ico-message-type1,
+.message-over-item .ico-message-type2 {
+ background-image: url("../img/icon-msg-notice-over.png?__sprite");
+}
+.message-no-item {
+ line-height: 58px;
+ text-align: center;
+}
+.message-no-item span {
+ width: 100%;
+ overflow: hidden;
+ color: #FFFFFF;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+/*head fixed*/
+.header-fixed-st .ico-message-new{top: 6px;}
+
+
+
+.account-msg-shop .wrap-message-content {
+ width: 428px;
+ border: 1px solid #CCCCCC;
+ border-bottom-width: 0;
+ background-color: #FFFFFF;
+ max-height: 396px;
+ position: relative;
+}
+.account-msg-shop .wrap-message-content li {
+ height: 76px;
+ padding-top: 11px;
+ padding-bottom: 11px;
+ border-bottom: 1px dashed #E4E4E4;
+ position: relative;
+ margin-left: 13px;
+ margin-right: 18px;
+}
+.account-msg-shop .wrap-message-content li:hover {
+ background-color: transparent;
+}
+.account-msg-shop .ico-shop {
+ float: left;
+ width: 74px;
+ height: 74px;
+ border: 1px solid #E0E0E0;
+ margin-right: 14px;
+}
+.account-msg-shop .account-dropdown_wrap,
+.account-msg-shop .wrap-message-content .message-target {
+ color: #3E3E3E;
+}
+.account-msg-shop .wrap-message-content .message-target {
+ width: auto;
+}
+.account-msg-shop .wrap-message-content .message-target:hover .ico-des p {
+ text-decoration: underline;
+}
+.account-msg-shop .ico-des {
+ float: left;
+ width: 278px;
+ line-height: 16px;
+ height: 48px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+.account-msg-shop .ico-fur {
+ position: absolute;
+ left: 100px;
+ bottom: 12px;
+ font-size: 14px;
+ width: 300px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ color: #686868;
+}
+.account-msg-shop .ico-fur span {
+ font-size: 12px;
+}
+.account-msg-shop .ico-price {
+ color: #E02304;
+}
+.account-msg-shop .ico-more {
+ position: absolute;
+ right: 29px;
+ bottom: 15px;
+ height: 24px;
+ line-height: 24px;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ padding-left: 12px;
+ padding-right: 12px;
+ background-color: #FF7200;
+ color: #ffffff;
+ font-size: 14px;
+ max-width: 100px;
+}
+.account-msg-shop .ico-more:hover {
+ background-color: #F85116;
+}
+.account-msg-shop .ico-more:active {
+ background-color: #A53209;
+}
+.account-msg-shop .ico-message-delete {
+ position: absolute;
+ right: -7px;
+ top: 3px;
+ width: 15px;
+ height: 15px;
+ background: url("../img/icon-delete-new.png?__sprite") no-repeat;
+}
+.account-msg-shop .ico-message-delete:hover {
+ background: url("../img/icon-delete-new_hover.png?__sprite") no-repeat;
+}
+
+.account-msg-shop .arrow,
+.account-msg-shop .arrow_bg {
+ position: absolute;
+ height: 0;
+ width: 0;
+ border: 8px dashed transparent;
+ z-index: 2;
+ pointer-events: none;
+}
+.account-msg-shop .arrow {
+ border-bottom-color: #CCCCCC;
+ border-bottom-style: solid;
+ top: -16px;
+ right: 15px;
+}
+.account-msg-shop .arrow_bg {
+ border-bottom-color: #fff;
+ border-bottom-style: solid;
+ margin: -7px 0 0 -8px;
+}
+.account-msg-shop .ico-message-new {
+ left: 22px;
+ right: auto;
+ top: 5px;
+ min-width: 14px;
+ line-height: 14px;
+ height: 14px;
+ text-align: center;
+ background: #FF7200;
+ border-radius: 7px;
+}
+.header-fixed-st .account-msg-shop .ico-message-new {
+ top: 1px;
+}
+.account-msg-shop .account-loginfo_wrap {
+ width: 388px;
+ border: 1px solid #CCCCCC;
+ border-top-color: #E4E4E4;
+ margin-top: -1px;
+ padding-top: 20px;
+ background-color: #ffffff;
+}
+.account-msg-shop .account_login-tip {
+ width: 242px;
+ margin: 0 auto;
+}
+.account-msg-shop .login-tip_con {
+ background: url(../img/btn-facebook-logo.png?__sprite) no-repeat;
+ background-color: #587DC7;
+ color: #ffffff;
+ height: 28px;
+}
+.account-msg-shop .wrap-message-content .message-no-item {
+ border-bottom-width: 0;
+ height: 44px;
+ padding-top: 0;
+}
+.account-msg-shop .message-no-item span {
+ color: #3E3E3E;
+}
+.account-msg-shop .mod-scroll {
+ border-width: 0;
+}
+.account-msg-shop .account_logout_email {
+ color: #9D9D9D;
+}
+.account-msg-shop .account_logout_name {
+ color: #3E3E3E;
+}
+.account-msg-shop .account_logout-tip {
+ margin-left: 46px;
+}
+.account-msg-shop .account-loginfo_wrap img {
+ margin-right: 20px;
+}
+.account-msg-shop ..account_logout_content {
+ width: 220px;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/message-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/message-async.js
new file mode 100755
index 000000000..b1cd2ffb3
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/message-async.js
@@ -0,0 +1,392 @@
+var $ = require("common:widget/ui/jquery/jquery.js");
+var Helper = require("common:widget/ui/helper/helper.js");
+var Md5 = require('common:widget/ui/md5/md5.js');
+var UT = require("common:widget/ui/ut/ut.js");
+
+/*****************************
+消息盒子
+------------------------------
+MRD地址:http://10.65.211.71:8200/doc/61aa0959-2f0b-4761-8073-41455e74e7ae
+------------------------------
+可传入的参数说明
+ apiUrlPrefix:API请求的前缀
+ apiUrlParam:API请求的参数
+ noMsgContent:无消息时显示的文本
+ maxNumber:消息数的最大值
+ msgLineHeight:每条消息的最大显示高度(溢出省略)
+
+*****************************/
+var Message = function(userOption){
+ var defaultOption = {
+ records: [],
+ deletedIds: [],
+ clickedIds: [],
+ hasBubble: false,
+ htmlTpl: ''
+ + '<#{tagName} #{attrs} class="message-target" data-sort="msgcontent" data-val="#{id}">'
+ + ' '
+ + '#{description} '
+ + '#{tagName}>'
+ + ' '
+ +' ',
+ htmlShopTpl: ''
+ + ''
+ + ' '
+ + ''
+ + ' '
+ + '#{supplier} | #{timestamp} '
+ + '#{submit} '
+ + ' '
+ +' ',
+ apiUrlPrefix: conf.apiUrlPrefix,
+ apiUrlParam: "?app=msgbox&act=contents&num=5&country=" + conf.country,
+ noMsgContent: "There is no message.",
+ maxNumber: 5,
+ msgLineHeight: 30,
+ _callbacks: {}
+ }
+ $.extend(this, defaultOption, userOption);
+};
+
+Message.prototype = {
+
+ constructor: Message,
+
+ //模型绑定事件
+ bind: function(ev, callback){
+ (this._callbacks[ev] || (this._callbacks[ev] = [])).push(callback);
+ },
+
+ //触发模型事件
+ trigger: function(ev){
+ var callbacks;
+ if (!(callbacks = this._callbacks[ev])) {
+ return this;
+ }
+ $.each(callbacks, function(){
+ this();
+ });
+ },
+
+ /*新增消息(暂时无用)
+ addRecord: function(message){
+ if (this.records.length < this.maxNumber) {
+ this.records.push(message);
+ this.trigger("change");
+ }
+ },*/
+
+ //删除消息
+ delRecord: function(delId){
+ var locRecords = this.records;
+ var matchIndex;
+ for(matchIndex=0; matchIndex= 0) {
+ return;
+ }
+ var storeIds = $.store(storeName);
+ if (storeIds) {
+ if (!conf.msgBoxShop && (ids.length >= this.maxNumber)) {
+ var minIndex = 0;
+ for(var i=1; i";
+ }else{
+ var clickedIds = this.clickedIds;
+ for(var i=0; i= 0 ? "message-over-item" : ""
+ }));
+ continue;
+ }
+ if( message.type == "3" ){
+ message.tagName = "span";
+ message.attrs = "";
+ }else{
+ message.tagName = "a";
+ message.attrs = "href=" + message.target + " target='_blank'";
+ }
+ content += Helper.replaceTpl(this.htmlTpl, $.extend(message, {
+ "class": $.inArray(message.id + '', clickedIds) >= 0 ? "message-over-item" : ""
+ }));
+ }
+ }
+ this.contentWrap.find("ul").empty().append(content);
+ // this.linesEllipsis(this.contentWrap.find("li a span"));
+ },
+
+ //多行的溢出省略(工具函数)
+ // linesEllipsis: function(jqDom){
+ // var self = this;
+ // jqDom.each(function(i){
+ // var jqThis = $(this);
+ // while (jqThis.outerHeight() > self.msgLineHeight) {
+ // jqThis.text(jqThis.text().replace(/(\s)*([a-zA-Z0-9]+|\W)(\.\.\.)?$/, "..."));
+ // }
+ // });
+ // },
+
+ //定义一些需要用到的变量
+ defineVar: function(){
+ this.newIcon = $(".ico-message-new");
+ this.messageBox = $(".box-message");
+ this.contentWrap = $(".wrap-message-content");
+ this.lastTimestamp = parseInt($.store("msgTimestamp") || 0, 10);
+ },
+
+ //事件绑定
+ bindEvent: function(){
+ var self = this;
+ this.messageBox.one("mouseenter", function(){
+ self.trigger("change");
+ self.newIcon.addClass("hide");
+ $.store("msgHoverd", self.ver || "1", {expires: 30});
+ });
+ this.bind("change", $.proxy(this.updateTpl, this));
+ $(document.body).on("click", function(e){
+ var target = $(e.target),
+ messageTarget = target.closest(".message-target");
+ if(target.hasClass("ico-message-delete")){
+ var id = target.parent().attr("data-id");
+ self.delRecord(id);
+ e.preventDefault();
+ }else if(messageTarget.length>0 && messageTarget.is("a") && !target.closest("li").hasClass("message-over-item")){
+ var id= target.closest("li").attr("data-id");
+ self.addClickedId(id);
+ }
+ });
+ // 对不是a链接的消息,使其hover之后就变灰
+ this.messageBox.on("mouseenter", ".account-dropdown_wrap li", function(e){
+ // 保证已经初始化了DOM
+ // self.trigger("change");
+ var target = $(e.target),
+ messageTarget = target.closest("li");
+ if(messageTarget.find(".message-target").is("span") && !target.closest("li").hasClass("message-over-item")){
+ var id= target.closest("li").attr("data-id");
+ // 将hover统一当作click,统一效果(可能不是很符合语义,升级带来的问题)
+ self.addClickedId(id);
+ self.trigger( "change" );
+ }
+ });
+
+ if(conf.msgBoxShop) {
+ this.messageBox
+ .on("click", ".message-target", function(e) {
+ UT.send({
+ modId: "msgbox",
+ type: "click",
+ sort: self.hasBubble ? "hasBubble" : "noBubble",
+ position: (window["loginCtroller"] && loginCtroller.verify == 1) ? "logged": "nolog"
+ });
+ UT.send({
+ modId: "msgbox",
+ type: "click",
+ position: "content"
+ });
+ })
+ .on("click", ".ico-more", function(e) {
+ UT.send({
+ modId: "msgbox",
+ type: "click",
+ sort: self.hasBubble ? "hasBubble" : "noBubble",
+ position: (window["loginCtroller"] && loginCtroller.verify == 1) ? "logged": "nolog"
+ });
+ UT.send({
+ modId: "msgbox",
+ type: "click",
+ position: "button"
+ });
+ })
+ .on("click", ".ico-message-delete", function(e) {
+ UT.send({
+ modId: "msgbox",
+ type: "click",
+ position: "delete"
+ });
+ });
+ }
+ },
+
+ calculateTipNumber: function(ver) {
+ var data = this.records;
+ var _del = $.store("msgDelIds");
+ var len = 0;
+ var _bool = false;
+
+ _del = _del && _del.split("|");
+ for(var i = 0, l = data.length; i < l; i++) {
+ if(parseInt(data[i]["version"], 10) > ver) {
+ if(_del) {
+ $.each(_del, function(index, value) {
+ if(value == data[i]["id"]) {
+ _bool = true;
+ return false;
+ }
+ });
+ if(!_bool) {
+ ++len;
+ }
+ _bool = false;
+ } else {
+ ++len;
+ }
+ }
+ }
+ if(len) {
+ this.newIcon.html(len > 99 ? "...": len).removeClass("hide");
+ this.hasBubble = true;
+ }
+ },
+
+ //是否有新消息的判断
+ judgeFresh: function(timestamp){
+ if (conf.msgBoxShop) {
+ timestamp = parseInt(timestamp, 10);
+ this.ver = timestamp;
+ }
+ var hoverdCookie = $.store("msgHoverd");
+ var timeCookie = this.lastTimestamp;
+ if (timestamp > timeCookie || (timestamp == timeCookie && !hoverdCookie) || (conf.msgBoxShop && hoverdCookie != timestamp)) {
+ UT.send({
+ modId: "msgbox",
+ type: "others",
+ sort: "show",
+ position: "newicon"
+ });
+ if(conf.msgBoxShop) {
+ this.calculateTipNumber(parseInt(hoverdCookie, 10)||0);
+ } else {
+ this.newIcon.removeClass("hide");
+ }
+ }
+ $.store("msgTimestamp", timestamp, {expires: 30});
+ },
+
+ addScrollBar: function() {
+ var that = this;
+ require.async("common:widget/ui/scrollable/scrollable.js", function(scrollObj) {
+ that.contentWrap.find("ul").scrollable();
+ });
+ },
+ //消息数据的请求
+ ajaxLoad: function(){
+ var self = this;
+
+ var _data = conf.msgBoxShop;
+ var content = _data? _data.content: null;
+ if(content) {
+ if (content.data.length) {
+ self.submitWord = _data.submitWord;
+ self.records = content.data;
+ self.judgeFresh(_data.version);
+ self.filterRecord();
+ self.addScrollBar();
+ }
+ return;
+ }
+
+ var apiUrl = this.apiUrlPrefix + this.apiUrlParam;
+ $.ajax({
+ // test
+ // url : "/static/web/message.json",
+ // dataType : "json",
+ // cache : true,
+ url: apiUrl,
+ dataType: "jsonp",
+ jsonp: "jsonp",
+ jsonpCallback: "ghao123_" + Md5(this.apiUrlParam, 16),
+ cache: false,
+ success: function(data){
+ var content = data.content;
+ if (content.data.length) {
+ self.judgeFresh(content.data[0].timestamp);
+ self.records = content.data;
+ self.filterRecord();
+ }
+ }
+ });
+ },
+
+ //初始化
+ init: function(){
+ this.defineVar();
+ this.bindEvent();
+ this.initDelId();
+ this.initClkId();
+ this.ajaxLoad();
+ }
+};
+
+module.exports = Message;
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/message.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/message.tpl
new file mode 100755
index 000000000..f5ca74eea
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/message.tpl
@@ -0,0 +1,20 @@
+<%if $head.dir=='ltr'%>
+<%require name="common:widget/header-flat/message/ltr/ltr.more.css"%>
+<%else%>
+<%require name="common:widget/header-flat/message/rtl/rtl.more.css"%>
+<%/if%>
+
+
+
+<%script%>
+conf.messageBox = <%json_encode($body.messageBox)%>;
+<%if $body.messageBoxforShop.isHidden==='0'%>
+conf.msgBoxShop = <%json_encode($body.messageBoxforShop)%>;
+<%/if%>
+require.async(["common:widget/header-flat/message/message-async.js"], function(Message){
+ var message = new Message(conf.messageBox);
+ message.init();
+});
+<%/script%>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/rtl/rtl.more.css
new file mode 100755
index 000000000..9b594035f
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/message/rtl/rtl.more.css
@@ -0,0 +1,104 @@
+.wrap-message {
+ float: right;
+ position: relative;
+}
+.wrap-message-content {
+ position: relative;
+ background-color: #0164C8;
+ background-color: rgba(0,99,199,0.97);
+ width: 277px;
+}
+.wrap-message-content li {
+ border-bottom: 1px solid #1B80E4;
+ border-bottom-color: rgba(28,129,229,0.96);
+}
+.wrap-message-content li:hover {
+ background-color: #075DB5;
+ background-color: rgba(0,0,0,.1);
+}
+.wrap-message-content .message-target {
+ float: right;
+ color: #fff;
+ width: 255px;
+ font-size: 12px;
+ min-height: 58px;
+}
+/*.message-target:hover span {
+ color: #00ad72;
+}*/
+a.message-target:hover span {
+ text-decoration: underline;
+}
+span.message-target span {
+ cursor: default;
+}
+.message-over-item .message-target {
+ color: #999999;
+}
+/*.message-over-item .message-target:hover span {
+ color: #777777;
+}*/
+.message-target span {
+ display: block;
+ width: 200px;
+ float: right;
+ margin: 19px 10px 10px 0;
+}
+.ico-message-delete {
+ color: #9dd2bf;
+ float: left;
+ margin-top: 10px;
+ margin-left: 10px;
+ display: none;
+ width: 11px;
+ height: 11px;
+ background: url("../img/icon-delete.png?__sprite") no-repeat;
+}
+.ico-message-delete:hover {
+ cursor: pointer;
+ background: url("../img/icon-delete-hover.png?__sprite") no-repeat;
+}
+.wrap-message-content li:hover .ico-message-delete {
+ display: block;
+}
+.ico-message-new {
+ position: absolute;
+ left: 10px;
+ top: 10px;
+ width: 12px;
+ height: 12px;
+ background: url("../img/icon-msg-new.png?__sprite") no-repeat;
+}
+.ico-message-type {
+ width: 28px;
+ height: 25px;
+ float: right;
+ margin-right: 15px;
+ margin-top: 17px;
+ background: url("../img/icon-msg-notice-rtl.png?__sprite") no-repeat;
+}
+.ico-message-type1,
+.ico-message-type2 {
+ background: url("../img/icon-msg-notice-rtl.png?__sprite") no-repeat;
+}
+.message-over-item .ico-message-type {
+ background-image: url("../img/icon-msg-notice-over-rtl.png?__sprite");
+}
+.message-over-item .ico-message-type1,
+.message-over-item .ico-message-type2 {
+ background-image: url("../img/icon-msg-notice-over-rtl.png?__sprite");
+}
+.message-no-item {
+ line-height: 58px;
+ text-align: center;
+}
+.message-no-item span {
+ width: 100%;
+ overflow: hidden;
+ color: #FFFFFF;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+/*head fixed*/
+.header-fixed-st .ico-message-new{top: 6px;}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/nav/img/i-arrow-down.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/nav/img/i-arrow-down.png
new file mode 100755
index 000000000..1eebd2938
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/nav/img/i-arrow-down.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/nav/img/i-arrow-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/nav/img/i-arrow-hover.png
new file mode 100755
index 000000000..bb24a6208
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/nav/img/i-arrow-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/nav/img/i-arrow-up.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/nav/img/i-arrow-up.png
new file mode 100755
index 000000000..a9d99d3bf
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/nav/img/i-arrow-up.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/nav/img/title-mask.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/nav/img/title-mask.png
new file mode 100755
index 000000000..7d1c73007
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/nav/img/title-mask.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/nav/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/nav/ltr/ltr.css
new file mode 100755
index 000000000..58f77fd97
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/nav/ltr/ltr.css
@@ -0,0 +1,345 @@
+.mod-nav-wrap{
+ display: block!important;
+ -webkit-transition: height .5s;
+ -moz-transition: height .5s;
+ -o-transition: height .5s;
+ transition: height .5s;
+ height: 30px;
+ z-index: 5;
+ position: relative;
+}
+.mod-nav-wrap .nav-item{
+ float: left;
+ height: 30px;
+ line-height: 30px;
+ position: relative;
+}
+.mod-nav-wrap .nav-item .nav-el{
+ background-color: #f5f6f8;
+ color: #333;
+ display: block;
+ width: 100%;
+ height: 100%;
+}
+.mod-nav-wrap .nav-item .nav-first .i-nav{
+ border-left-width: 0;
+}
+.mod-nav-wrap .i-nav{
+ width: 40px;
+ height: 30px;
+ display: block;
+ float: left;
+ border-left: 1px solid #fff;
+ cursor: pointer;
+}
+.mod-nav-wrap .nav-text-wrap{
+ height: 28px;
+ margin-left: 40px;
+ /*padding-right: 21px;*/
+ border: 1px solid #e6e6e6;
+ border-left-width: 0;
+ -webkit-transition: all .2s linear;
+ -moz-transition: all .2s linear;
+ -ms-transition: all .2s linear;
+ transition: all .2s linear;
+ cursor: pointer;
+}
+.mod-nav-wrap .nav-item-text{
+ display: block;
+ height: 28px;
+ line-height: 28px;
+ text-align: center;
+ overflow: hidden;
+ padding-right: 21px;
+
+}
+.mod-nav-wrap .i-arrow{
+ display: block;
+ position: absolute;
+ background: url(../img/i-arrow-down.png) no-repeat;
+ width: 6px;
+ height: 4px;
+ top: 13px;
+ right: 16px;
+}
+.mod-nav-wrap .i-hover-arrow{
+ display: none;
+ position: absolute;
+ background: url(../img/i-arrow-hover.png) no-repeat;
+ width: 11px;
+ height: 6px;
+ bottom: -1px;
+ right: 50%;
+ z-index: 1;
+}
+.mod-nav-wrap .i-arrow-hover{
+ background: url(../img/i-arrow-up.png) no-repeat;
+}
+
+
+.mod-nav-wrap .nav-hover-wrap{
+ display: none;
+ background-color: #fff;
+ border: 1px solid #ccc;
+ padding: 20px 16px;
+ z-index: 0;
+ position: absolute;
+ -webkit-box-shadow: 0 5px 20px #b0b0b0;
+ -moz-box-shadow: 0 5px 20px #b0b0b0;
+ -ms-box-shadow: 0 5px 20px #b0b0b0;
+ box-shadow: 0 5px 20px #b0b0b0;
+}
+.mod-nav-wrap .nav-reco{
+ display: inline-block;
+}
+.mod-nav-wrap .nav-reco-ul{
+ overflow: hidden;
+}
+.mod-nav-wrap .nav-reco-item .nav-reco-wrap{
+ position: relative;
+ width: 100%;
+ height: 100%;
+ display: block;
+}
+.mod-nav-wrap .nav-reco-item .nav-reco-img{
+ width: 100%;
+ height: 100%;
+}
+.mod-nav-wrap .nav-reco-item .nav-reco-title{
+ display: none;
+}
+.mod-nav-wrap .nav-reco-item .nav-mask{
+ display: none;
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ display: none;
+ background-color: #000;
+ opacity: .1;
+ filter: alpha(opacity=10);
+ z-index: 2;
+}
+.mod-nav-wrap .nav-tab{
+ /*float: left;*/
+ display: inline-block;
+ vertical-align: top;
+ position: relative;
+ height: 224px;
+}
+.mod-nav-wrap .nav-tab-ul{
+ overflow: hidden;
+ width: 120px;
+ display: inline-block;
+}
+.mod-nav-wrap .nav-tab-ul .cur{
+ background-color: #f5f6f8;
+ color: #1b81e5;
+ display: block;
+}
+.mod-nav-wrap .nav-tab-ul .cur a{
+ color: #1b81e5;
+}
+.mod-nav-wrap .nav-tab-item{
+ width: 110px;
+ height: 28px;
+ line-height: 28px;
+ font-size: 14px;
+ padding-left: 10px;
+ color: #333;
+ cursor: pointer;
+}
+.mod-nav-wrap .nav-subtab-ul{
+ overflow: hidden;
+ width: 140px;
+ display: inline-block;
+ vertical-align: top;
+ height: 224px;
+ background: #f5f6f8;
+}
+.mod-nav-wrap .nav-subtab-ul .cur{
+ display: block;
+}
+.mod-nav-wrap .nav-subtab-item{
+ width: 140px;
+ /*height: 224px;*/
+ /*padding-left: 20px;*/
+ /*display: none;*/
+ /*position: relative;
+ overflow: hidden;
+ height: 224px;*/
+}
+.mod-nav-wrap .nav-subtab-container{
+
+}
+.mod-nav-wrap .nav-subtab-a{
+ display: block;
+ padding-left: 20px;
+ color: #666;
+ line-height: 28px;
+ width: 110px;
+ overflow: hidden;
+}
+.mod-nav-wrap .nav-subtab-a:hover{
+ color: #1b81e5;
+ text-decoration: underline;
+}
+.mod-nav-wrap .nav-tab .nav-more{
+ position: absolute;
+ right: 0;
+ bottom: -30px;
+ font-size: 14px;
+ color: #1b81e5;
+}
+.mod-nav-wrap .nav-tab .nav-more:hover{
+ text-decoration: underline;
+}
+.mod-nav-wrap .nav-tab .nav-more b{
+ font-family: Tahoma;
+ font-size: 20px;
+ vertical-align: middle;
+ display: inline-block;
+ margin-top: -5px;
+}
+
+.mod-nav-wrap .nav01 {
+ width: 530px;
+}
+.mod-nav-wrap .nav01 .nav-reco{
+ width: 265px;
+}
+.mod-nav-wrap .nav01 .nav-reco-item{
+ float: left;
+ width: 84px;
+ height: 115px;
+ border: 1px solid #fff;
+ margin: -1px 0 0 -1px;
+}
+.mod-nav-wrap .nav01 .nav-reco-item .nav-reco-wrap{
+ position: relative;
+ width: 100%;
+ height: 100%;
+ display: block;
+}
+.mod-nav-wrap .nav01 .nav-reco-item .nav-reco-img{
+ width: 100%;
+ height: 100%;
+}
+.mod-nav-wrap .nav01 .nav-reco-item .nav-reco-title{
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ color: #fff;
+ text-align: center;
+ width: 100%;
+ line-height: 20px;
+ height: 20px;
+ display: block;
+ background: url(../img/title-mask.png?__sprite) repeat-x;
+
+}
+
+.mod-nav-wrap .nav02 {
+ width: 550px;
+}
+.mod-nav-wrap .nav02 .nav-reco{
+ width: 285px;
+}
+.mod-nav-wrap .nav02 .nav-reco-item{
+ float: left;
+ width: 75px;
+ height: 110px;
+ margin: 0 18px 10px 0;
+}
+
+.mod-nav-wrap .nav02 .nav-reco-item .nav-reco-img{
+ border-radius: 10px;
+ width: 75px;
+ height: 75px;
+}
+.mod-nav-wrap .nav02 .nav-reco-item .nav-reco-title{
+ /*position: absolute;
+ bottom: 0;
+ left: 0;*/
+ color: #666;
+ text-align: center;
+ width: 100%;
+ display: block;
+ width: 75px;
+ height: 30px;
+ word-break: break-word;
+ line-height: 15px;
+ overflow: hidden;
+ margin-top: 5px;
+}
+.mod-nav-wrap .nav02 .nav-reco-wrap:hover .nav-reco-title{
+ color: #1b81e5;
+}
+
+.mod-nav-wrap .nav03 {
+ width: 655px;
+ /*right: 0;*/
+}
+.mod-nav-wrap .nav03 .nav-reco{
+ width: 390px;
+}
+.mod-nav-wrap .nav03 .nav-reco-item{
+ float: left;
+ width: 125px;
+ height: 75px;
+ border: 1px solid #fff;
+ margin: -1px 0 0 -1px;
+}
+.mod-nav-wrap .nav03 .first{
+ width: 251px;
+ height: 151px;
+}
+.mod-nav-wrap .nav03 .nav-reco-item .nav-reco-title{
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ color: #fff;
+ text-align: center;
+ width: 100%;
+ line-height: 20px;
+ display: block;
+ overflow: hidden;
+ height: 20px;
+ background: url(../img/title-mask.png?__sprite) repeat-x;
+
+}
+.mod-nav-wrap .nav04 {
+ width: 565px;
+ /*right: 0;*/
+}
+.mod-nav-wrap .nav04 .nav-reco{
+ width: 300px;
+}
+.mod-nav-wrap .nav04 .nav-reco-item{
+ float: left;
+ width: 95px;
+ height: 115px;
+ border: 1px solid #efefef;
+ margin: -1px 0 0 -1px;
+ overflow: hidden;
+}
+.mod-nav-wrap .nav04 .nav-reco-wrap{
+ -webkit-transition: all .3s ease;
+ -moz-transition: all .3s ease;
+ -ms-transition: all .3s ease;
+ transition: all .3s ease;
+}
+.mod-nav-wrap .nav04 .nav-reco-wrap:hover{
+ -webkit-transform: scale(1.03);
+ -moz-transform: scale(1.03);
+ -ms-transform: scale(1.03);
+ -o-transform: scale(1.03);
+ transform: scale(1.03);
+}
+.mod-nav-wrap .nav04 .nav-reco-ul{
+ padding: 1px;
+}
+.mod-nav-wrap .nav01 .nav-reco-wrap:hover .nav-mask, .mod-nav-wrap .nav03 .nav-reco-wrap:hover .nav-mask{
+ display: block;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/nav/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/nav/ltr/ltr.more.css
new file mode 100755
index 000000000..e69de29bb
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/nav/nav-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/nav/nav-async.js
new file mode 100755
index 000000000..ca17f491b
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/nav/nav-async.js
@@ -0,0 +1,221 @@
+var $ = require('common:widget/ui/jquery/jquery.js');
+var UT = require('common:widget/ui/ut/ut.js');
+var helper = require('common:widget/ui/helper/helper.js');
+var message = require('common:widget/ui/message/src/message.js');
+var scroll = require("common:widget/ui/scrollable/scrollable.js");
+
+require('common:widget/ui/slide/slide.js');
+require('common:widget/ui/slide/plugin/pagination.js');
+require('common:widget/ui/slide/plugin/animate.js');
+require('common:widget/ui/slide/plugin/control.js');
+
+var nav = function(navData){
+ var navOption = {
+ $mod: $('#navWrap'),
+ selectId: "",
+ preloadTpl: ""
+ };
+ var navTpl = {
+ //导航hover推荐区
+ // navReco: ['',
+ // '',
+ // ' ',
+ // '#{title} ',
+ // ' ',
+ // ' ',
+ // ' '].join(''),
+ //导航hovertab区
+ navTabCon: '#{title} '
+ };
+ $.extend(this, navOption, navTpl, navData);
+
+ this.init();
+}
+nav.prototype = {
+ /**
+ * 初始化入口
+ */
+ init: function(){
+ var self = this;
+ self._bindEvent();
+ self._adjustPos();
+ },
+ _adjustPos: function(){
+ var self = this;
+ var $mod = self.$mod;
+ var $navItem = $mod.find('.nav-item');
+ var winWidth = $mod.parent().width();
+
+ $.each($navItem, function(i,item){
+ var $item = $(item);
+ var restWidth = winWidth - $item.position().left;
+ var $navCard = $item.find('.nav-hover-wrap');
+ var navCardWidth = $navCard.outerWidth();
+
+ if (restWidth
+ .mod-nav-wrap{
+ display: none;
+ height: 0;
+ }
+<%/style%>
+<%style%>
+ <%if $head.dir=='ltr'%>
+ @import url('/widget/header-flat/nav/ltr/ltr.css?__inline');
+ <%else%>
+ @import url('/widget/header-flat/nav/rtl/rtl.css?__inline');
+ <%/if%>
+<%/style%>
+
+<%* 声明对ltr/rtl的css依赖 *%>
+<%*require name="common:widget/header-flat/nav/`$head.dir`/`$head.dir`.more.css"*%>
+
+
+ <%foreach $body.navigation.navData as $navItem%>
+
+
+
+
+ <%$navItem.text%>
+
+
+
+
+
+
+
+ <%foreach $navItem.tabs as $tab%>
+ <%if $tab@index < 8%>
+ <%$tab.title%>
+ <%/if%>
+ <%/foreach%>
+
+
+
+
+ <%foreach $navItem.tabs[0].subtab as $subtab%>
+
<%$subtab.title%>
+ <%/foreach%>
+
+
+ <%if !empty($navItem.moreUrl)%>
+
<%$navItem.moreText%> ›
+ <%/if%>
+
+
+
+
+ <%/foreach%>
+
+
+
+<%script%>
+ conf.nav = {
+ data: <%json_encode($body.navigation)%>
+ };
+ require.async("common:widget/header-flat/nav/nav-async.js", function(nav){
+ new nav(conf.nav.data);
+ });
+<%/script%>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/nav/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/nav/rtl/rtl.css
new file mode 100755
index 000000000..e69de29bb
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/nav/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/nav/rtl/rtl.more.css
new file mode 100755
index 000000000..e69de29bb
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/navigation/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/navigation/ltr/ltr.css
new file mode 100755
index 000000000..791138033
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/navigation/ltr/ltr.css
@@ -0,0 +1,3 @@
+.mod-nav-wrap{
+ visibility: hidden;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/navigation/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/navigation/ltr/ltr.more.css
new file mode 100755
index 000000000..e4be4b1c1
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/navigation/ltr/ltr.more.css
@@ -0,0 +1,28 @@
+.mod-nav-wrap{
+ visibility: visible;
+}
+.mod-nav-wrap .nav-item{
+ float: left;
+ width: 120px;
+ height: 40px;
+ line-height: 40px;
+ text-align: center;
+ font-size: 15px;
+ color: #fff;
+}
+.mod-nav-wrap .nav-item a{
+ color: #fff;
+ display: block;
+ width: 100%;
+ height: 100%;
+}
+.mod-nav-wrap .cur{
+ background-color: #0A69C9;
+ cursor: default;
+}
+.mod-nav-wrap .cur span{
+ cursor: default;
+}
+.mod-nav-wrap .nav-item:hover{
+ background-color: #0A69C9;
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/navigation/navigation-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/navigation/navigation-async.js
new file mode 100755
index 000000000..59975ec35
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/navigation/navigation-async.js
@@ -0,0 +1,12 @@
+var $ = require("common:widget/ui/jquery/jquery.js");
+
+var $navWrap = $("#navWrap");
+
+$navWrap.on("click", '.nav-el', function(e) {
+ UT.send({
+ position: "nav",
+ sort: $(this).attr("href"),
+ type: "click",
+ modId: "navigation"
+ });
+});
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/navigation/navigation.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/navigation/navigation.tpl
new file mode 100755
index 000000000..4202b1869
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/navigation/navigation.tpl
@@ -0,0 +1,29 @@
+<%style%>
+ <%if $head.dir=='ltr'%>
+ @import url('/widget/header-flat/navigation/ltr/ltr.css?__inline');
+ <%else%>
+ @import url('/widget/header-flat/navigation/rtl/rtl.css?__inline');
+ <%/if%>
+<%/style%>
+
+<%* 声明对ltr/rtl的css依赖 *%>
+<%require name="common:widget/header-flat/navigation/`$head.dir`/`$head.dir`.more.css"%>
+
+
+ <%foreach $body.navigation.navData as $navItem%>
+
+ <%if $navItem@first%>
+ <%$navItem.text%>
+ <%else%>
+
+ <%$navItem.text%>
+
+ <%/if%>
+
+ <%/foreach%>
+
+
+
+<%script%>
+ require.async("common:widget/header-flat/navigation/navigation-async.js");
+<%/script%>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/navigation/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/navigation/rtl/rtl.css
new file mode 100755
index 000000000..e69de29bb
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/navigation/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/navigation/rtl/rtl.more.css
new file mode 100755
index 000000000..e69de29bb
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/rtl/rtl.css
new file mode 100755
index 000000000..066db543b
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/rtl/rtl.css
@@ -0,0 +1,70 @@
+/*============userbar=============*/
+
+.userbar-wrap {
+ background: #1c81e5;
+ min-width: 960px;
+ position: relative;
+ height: 50px;
+ zoom: 1;
+ z-index: 400;
+}
+.userbar {
+ height: 50px;
+ margin: 0 auto;
+ color: #fff;
+ position: relative;
+ z-index: 9;
+}
+/*.userbar-tool {
+ display: none;
+}
+.weather-more {
+ display: none;
+}
+.weather-more_wrap {
+ border-bottom: 1px solid #fff;
+}*/
+
+
+.userbar-logo {
+ max-width: 345px;
+}
+/*.weather-wrap {
+ position: relative;
+ float: right;
+ visibility: hidden;
+}
+body .userbar-weather {
+ width: auto;
+ float: right;
+}*/
+
+.userbar-glo {
+ position: absolute;
+ left: 0;
+ top: 0;
+ display: none;
+}
+/*.userbar-logoSibling {
+ margin-left: 62px;
+}*/
+
+/*960*/
+/*.w960 .userbar-logoSibling {
+ margin-left: 18px;
+}*/
+
+/*has skin*/
+body.skin-on .userbar-wrap {
+ background: #666666;
+ background: rgba(0,0,0,0.6);
+}
+
+
+/*head fixed*/
+.header-fixed .userbar-wrap {
+ position: fixed;
+ width: 100%;
+ top: 0;
+ right: 0;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/rtl/rtl.more.css
new file mode 100755
index 000000000..f831883d5
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/rtl/rtl.more.css
@@ -0,0 +1,676 @@
+/*from inline css*/
+.userbar-tool {
+ display: none;
+}
+.weather-more {
+ display: none;
+}
+.weather-more_wrap {
+ border-bottom: 1px solid #fff;
+}
+.weather-wrap {
+ position: relative;
+ float: right;
+ visibility: hidden;
+ opacity: 0;
+}
+body .userbar-weather {
+ width: auto;
+ float: right;
+}
+.userbar-glo {
+ display: block !important;
+}
+.userbar-logoSibling {
+ margin-left: 62px;
+}
+
+/*960*/
+.w960 .userbar-logoSibling {
+ margin-left: 18px;
+}
+
+
+
+
+/*============userbar=============*/
+.userbar-tool {
+ position: relative;
+ overflow: visible;
+ z-index: 101;
+ display: block;
+ display: block !important;
+}
+
+.userbar a:hover {
+ text-decoration: none;
+}
+
+/*============userbar=============*/
+.weather-wrap .weather-more_wrap {
+ overflow: visible;
+ height: 0;
+ border-width: 0;
+ zoom: 1;
+}
+.weather-more_show {
+ height: auto;
+ border-top: 1px solid #0a6f4e;
+}
+
+
+
+
+
+
+/*weather*/
+ .weather_last, .weather-info .dot_img, .weather-info .temperature_hum, .userbar-weather li.weather_last {
+ display: none;
+}
+body .weather-info {
+ width: auto;
+}
+.weather-info .text {
+ visibility: visible;
+ font-size: 12px;
+}
+.weather-info .temperature_p {
+ font-size: 12px;
+}
+.userbar-weather ul.fl {
+ height: 45px;
+ padding-top: 5px;
+ margin-right: 0;
+ margin-top: 0;
+ width: auto;
+ padding-right: 20px;
+ padding-left: 42px;
+ cursor: pointer;
+}
+.userbar-weather ul.fl:hover, .weather-wrap-open .userbar-weather .fl {
+ background-color: #0164C8;
+ background-color: rgba(0,99,199,0.97);}
+.weather-wrap .userbar-weather {
+ margin-left: 0;
+ height: 50px;
+ padding-top: 0;
+ z-index: 1;
+}
+.userbar-weather .fl li {
+ margin-left: 0;
+}
+div.userbar-weather_console {
+ position: absolute;
+ right: 114px;
+ top: 78px;
+ height: auto;
+ display: none;
+}
+div.userbar-weather_console a {
+ color: #000000;
+ font-size: 14px;
+ font-weight: 700;
+}
+#weatherView li img {
+ width: 40px;
+ height: 36px;
+ margin-top: -2px;
+}
+.userbar-weather .weather-info span {
+ font-weight: 500;
+}
+.userbar-weather_console .weather-days {
+ display: none;
+}
+.weather-wrap .weather-more_wrap {
+ position: absolute;
+ right: 0px;
+ top: 50px;
+ height: auto;
+ display: none;
+}
+.weather-wrap .weather-more {
+ display: block;
+ width: 340px;
+ padding: 23px 30px 15px;
+ overflow: hidden;
+ background: #0868C9;
+ background: rgba(0,99,199,0.97);
+}
+.weather-wrap .weather-more li {
+ padding: 0;
+ height: 42px;
+ line-height: 40px;
+ overflow: hidden;
+ color: #FFFFFF;
+ width: 100%;
+ background: transparent;
+ margin: 0;
+ position: relative;
+ font-size: 18px;
+}
+.weather-wrap .weather-more li img {
+ padding: 0;
+ position: absolute;
+ right: 50%;
+ margin-right: -20px;
+}
+body .weather-more_odd {
+ margin-right: 1px;
+ _margin-right: 0;
+ -moz-box-shadow: none;
+ -webkit-box-shadow: none;
+ -o-box-shadow: none;
+ box-shadow: none;
+}
+.weather-wrap .weather-more .weather-more_today {
+ float: none;
+ text-align: right;
+ width: auto;
+ height: auto;
+ padding: 0;
+ background: transparent;
+ overflow: hidden;
+ position: relative;
+ border-bottom: 1px solid #1B80E4;
+ border-bottom-color: rgba(28,129,229,0.96);
+ margin-bottom: 17px;
+}
+.weather-more_today .temperature_big {
+ font-size: 42px;
+ padding-right: 95px;
+ font-weight: normal;
+}
+.weather-wrap .dot_img_head {
+ margin-bottom: 0px;
+ margin-left: 2px;
+ background: url(../img/drop.png?__sprite) no-repeat;
+}
+.weather-more_wrap .weather-more_line {
+ border: none;
+}
+.weather-more .humidity {
+ font-size: 18px;
+ font-weight: normal;
+ padding: 0 4px;
+}
+.weather-more_today p {
+ margin-top: 24px;
+ margin-bottom: 55px;
+}
+.weather-more_today p:first-child {
+ margin: 0;
+ padding-right: 130px !important;
+ text-align: left;
+ font-weight: 600;
+ font-size: 14px;
+ line-height: 30px;
+ color: #9CC3E9 !important;
+ color: rgba(255,255,255,0.6) !important;
+}
+.weather-wrap .weather-more .weather-more_today img {
+ position: absolute;
+ top: 50px;
+ right: 40px;
+ padding: 0;
+}
+.weather-more_today .weather-more_tip-remind {
+ padding-right: 121px;
+ font-weight: 400;
+ font-size: 12px;
+ float: right;
+ margin-top: -4px;
+ max-width: 132px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ direction: rtl;
+}
+body div.userbar-weather_city-cur a {
+ background: url(../img/select-city_tip.png) no-repeat left top;
+ padding-left: 36px;
+ display: inline-block;
+ min-height: 15px;
+ color: #ffffff;
+ font-size: 18px;
+}
+/*.weather-wrap_arrow, .weather-wrap_arrow-bg {
+ position: absolute;
+ height: 0;
+ width: 0;
+ border: 6px solid transparent;
+}
+.weather-wrap_arrow {
+ border-bottom-color: #bee2d6;
+ bottom: -1px;
+ right: 64px;
+ display: none;
+ z-index: 2;
+}
+.weather-wrap_arrow-bg {
+ border-bottom-color: #EBFCF7;
+ margin: -6px -7px 0 0;
+}*/
+div.userbar-weather_tip {
+ left: 0;
+ right: -1px;
+ background-color: #F0FFFC;
+ border-color: #00AE74;
+}
+div.userbar-weather_tip .arrow {
+ border-bottom-color: #00AE74;
+}
+div.userbar-weather_tip .arrow_bg {
+ border-bottom-color: #F0FFFC;
+}
+.city-select .box-prompt-inner, .weather-wrap div.city-select {
+ border: none;
+}
+.weather-wrap div.city-select {
+ left: 0;
+ right: -114px;
+ top: -28px;
+ width: 400px;
+ height: 310px;
+ background: #0868C9;
+ background: rgba(0, 99, 199, 0.97);
+ /*overflow: hidden;*/
+ color: #FFFFFF;
+ font-size: 18px;
+ -moz-border-radius: 0px;
+ -webkit-border-radius: 0px;
+ -o-border-radius: 0px;
+ border-radius: 0px;
+}
+.city-select .weather_cur-city {
+ font-size: 18px;
+ font-weight: normal;
+ height: 20px;
+ margin-bottom: 18px;
+ margin-top: 30px;
+}
+.city-select .weather_close-btn {
+ position: absolute;
+ top: 16px;
+ left: 20px;
+ font-size: 18px;
+ color: #B3E0D1;
+ display: none;
+}
+.weather-wrap .city-select select {
+ width: 100%;
+ /* height: 40px;*/
+ line-height: 18px;
+ color: #FFFFFF;
+ font-size: 18px;
+ /*padding-right: 16px;*/
+ padding: 8px 0;
+ background: #1c81e5;
+ border: 0;
+ margin-bottom: 19px;
+}
+.weather-wrap .city-select label {
+ font-size: 14px;
+ margin-top: 10px;
+ margin-bottom: 10px;
+ color: #9CC3E9;
+ color: rgba(255,255,255,0.6);
+}
+.weather-wrap .city-select .btn-bar {
+ width: 400px;
+ margin-right: -30px;
+ text-align: center;
+ position: absolute;
+ bottom: 0;
+}
+.weather-wrap .mod-btn_normal,
+.weather-wrap .mod-btn_cancel {
+ float: right;
+ height: 60px;
+ line-height: 60px;
+ text-align: center;
+ font-size: 18px;
+ font-weight: bold;
+ width: 200px;
+ background: #004d99;
+ margin-top: -5px;
+}
+.weather-wrap .mod-btn_cancel {
+ float: left;
+ width: 199px;
+}
+.weather-wrap .mod-btn_normal:hover,
+.weather-wrap .mod-btn_cancel:hover {
+ background-color: #003973;
+}
+.weather-wrap .mod-btn_normal .ui-button-text,.weather-wrap .mod-btn_cancel .ui-button-text {
+ color: #ffffff;
+}
+
+
+.weather-wrap .weather-tip_def {
+ width: 12px;
+ height: 12px;
+ background: url(../img/more_trigger.png?__sprite) no-repeat;
+ position: absolute;
+ left: 20px;
+ top: 18px;
+ pointer-events: none;
+ cursor: pointer;
+ z-index: 1;
+}
+.weather-wrap .weather-tip_up {
+ background: url(../img/more_trigger-hover.png?__sprite) no-repeat;
+}
+
+
+.userbar-weather_city-cur {
+ white-space: nowrap;
+ position: absolute;
+ right: -84px;
+}
+.weather-wrap .weather-more li .wea-fl {
+ float: right;
+}
+.weather-wrap .weather-more li .wea-fr {
+ float: left;
+ margin-left: -5px;
+}
+.weather-wrap .weather-more li .wea-hide {
+ display: none;
+}
+.weather-wrap .weather-more li .wea-small {
+ font-size: 12px;
+ color: #9CC3E9;
+ color: rgba(220,220,220,0.6);
+}
+.weather-wrap .weather-more .wea-flr {
+ float: left;
+ margin-top: -4px;
+ margin-left: -9px;
+}
+.weather-wrap .box-prompt-inner {
+ padding: 8px 30px;
+}
+.weather-wrap .humidity {
+ margin-left: 0px;
+}
+.weather-more_wrap .weather-origin_wrap{
+ position: relative;
+}
+.weather-more_wrap .weather-origin{
+ display: none;
+}
+.weather-more_wrap .weather-origin_wrap .weather-more{
+ padding-bottom: 40px;
+}
+.weather-more_wrap .weather-origin_wrap .weather-origin{
+ display: block;
+ position: absolute;
+ bottom: 18px;
+ color: #fff;
+ left: 30px;
+ font-size: 13px;
+}
+.weather-more_wrap .weather-origin_wrap .weather-origin:hover{
+ filter:alpha(opacity=60);
+ opacity: 0.6;
+}
+/*has skin*/
+.skin-on .weather-wrap .weather-tip_def {
+ background: url(../img/more_trigger_sk.png?__sprite) no-repeat;
+}
+.skin-on .weather-wrap .weather-tip_up {
+ background: url(../img/more_trigger-hover_sk.png?__sprite) no-repeat;
+}
+.skin-on .userbar-weather .fl:hover,
+.skin-on .weather-wrap-open .userbar-weather .fl,
+.skin-on .weather-wrap .weather-more,
+.skin-on .weather-wrap div.city-select {
+ background-color: #333333;
+ background-color: rgba(0, 0, 0, 0.8);
+}
+.skin-on .weather-wrap .weather-more .weather-more_today {
+ border-bottom-color: #717171;
+ border-bottom-color: rgba(255,255,255,0.3);
+}
+.skin-on .weather-wrap .city-select select {
+ background-color: #626262;
+}
+.skin-on .weather-wrap .mod-btn_normal,
+.skin-on .weather-wrap .mod-btn_cancel {
+ background-color: #535353;
+}
+.skin-on .weather-wrap .mod-btn_normal:hover,
+.skin-on .weather-wrap .mod-btn_cancel:hover {
+ background-color: #434343;
+}
+.skin-on .weather-wrap .mod-btn_normal {
+ border-left: 1px solid #717171;
+ border-left-color: rgba(255,255,255,0.3);
+}
+
+.skin-on .userbar-weather .dropdown-trigger,
+.skin-on .userbar-weather .dropdown .dropdown-input,
+.skin-on .userbar-weather .dropdown-list,
+.skin-on .userbar-weather .dropdown-list .dropdown-list-inner {
+ background-color: #626262;
+}
+.skin-on .userbar-weather .dropdown-list li:hover,
+.skin-on .userbar-weather .dropdown-list-hover {
+ background-color: #444444;
+}
+.skin-on .userbar-weather .dropdown .dropdown-arrow {
+
+ background: url(../img/drop-up.png?__sprite) no-repeat;
+}
+.skin-on .userbar-weather .dropdown .dropdown-arrow-up {
+ background: url(../img/drop-down.png?__sprite) no-repeat;
+}
+
+
+/*head fixed*/
+.header-fixed .userbar-wrap {
+ position: fixed;
+ width: 100%;
+ top: 0;
+ right: 0;
+ background-color: #328DE8;
+ background-color: rgba(28, 129, 229, 0.9);
+}
+.header-fixed-st .userbar-wrap,
+.header-fixed-st .userbar {
+ height: 40px;
+}
+.header-test-holder {
+ display: none;
+ height: 50px;
+}
+.header-fixed-st .header-test-holder {
+ display: block;
+}
+.header-fixed .newerguide-tip {
+ display: none !important;
+}
+.header-fixed-st .skinbox-more-hide {
+ position: static !important;
+}
+
+
+.header-fixed-up .userbar-logoSibling {
+ display: none;
+}
+
+.header-fixed .skinbox-more-mask,
+.header-fixed .skinbox-more-wrap {
+ display: none !important;
+}
+/*页头吸顶高度为50px时的搜索框*/
+/*普通搜索框*/
+ .header-fixed-up .sk-wrap,
+ .header-fixed-up .box-search_tab,
+ .header-fixed-up .box-search_hsrch {
+ display: none;
+ display: none !important;
+}
+.header-fixed-up .box-search_wrap {
+ position: fixed;
+ top: 4px;
+ z-index: 499;
+ margin-right: 128px;
+}
+.header-fixed-up .sg_tri .sg_btn .sg_new_num,
+.header-fixed-up .sg_v_tri .sg_v_btn .sg_v_new_num {
+ top: -7px;
+}
+.header-fixed-up .box-search_inner {
+ height: auto;
+}
+.header-fixed-up #searchGroupForm {
+ /*overflow: hidden;*/
+}
+.header-fixed-up .btn-search {
+ border-width: 0;
+ width: auto;
+}
+.header-fixed-up .btn-search_c {
+ position: absolute;
+ left: 3px;
+ top: 7px;
+ z-index: 14;
+ text-indent: -1000px;
+ white-space: nowrap;
+ overflow: hidden;
+ height: 23px;
+ width: 22px;
+ border: 2px solid #2186EA;
+ background: url(../img/i-search.png?__sprite) no-repeat;
+ background-color: #2186EA;
+ border-radius: 2px;
+}
+.header-fixed-up .btn-search_c:hover {
+ background-color: #1C81E5;
+ border-color: #1C81E5;
+}
+.header-fixed-up .box-search_form {
+ padding-right: 0;
+}
+.header-fixed-up .box-search_form .input {
+ padding-left: 28px;
+ background-color: white;
+}
+.header-fixed-up .box-search_form .input input {
+ margin-right: 34px;
+}
+.header-fixed-up .box-search_logo_wrap {
+ position: absolute;
+ right: 7px;
+ top: 17px;
+ height: auto;
+ width: auto;
+}
+.header-fixed-up .box-search_logo img {
+ width: 16px;
+ height: 16px;
+ margin-top: 8px;
+ margin-right: 6px;
+}
+.header-fixed-up .box-search .box-search_logo dt,
+.header-fixed-up .box-search .box-search_logo dd {
+ padding: 0;
+}
+.header-fixed-up .box-search_logo a {
+ /*border-right: 1px solid #B1B1B1;*/
+ height: 33px;
+}
+.header-fixed-up .box-search_logo dt {
+ background-color: #F2F2F2;
+}
+.header-fixed-up .box-search_logos_show dt {
+ background-image: none;
+ width: 37px;
+}
+.header-fixed-up .box-search .sug-search,
+.header-fixed-up .box-search .baidu_sug,
+.header-fixed-up .box-search .baidu_video_sug {
+ width: 571px;
+ right: 37px;
+}
+.header-fixed-up .box-search_logo dt a {
+ background: url(../img/i-arrow.png) no-repeat 4px 13px;
+}
+.header-fixed-up .box-search_logos_show dt a {
+ background: url(../img/i-arrow-open.png) no-repeat 4px 13px;
+}
+.header-fixed-up .box-search_logos_show {
+ height: 0;
+ overflow: visible;
+ border: 0;
+}
+.header-fixed-up .box-search_logos_show dd {
+ background-color: #fff;
+ text-align: right;
+ margin-right: -1px;
+}
+.header-fixed-up .box-search_logos_show .box-search_logo_hover {
+ background-color: #f5f7f7;
+}
+.header-fixed-up .box-search_logo .box-search_logo_first {
+ border-top: 1px solid #C0C0C0;
+}
+.header-fixed-up .box-search_logo .box-search_logo_last {
+ border-bottom: 1px solid #C0C0C0;
+}
+.header-fixed-up .box-search_logo dd a {
+ white-space: nowrap;
+ color: #8C8B8B;
+ border-left: 1px solid #C0C0C0;
+ border-right: 1px solid #C0C0C0;
+}
+.header-fixed-up .box-search_logo dd a:hover {
+ color: #5D5D5D;
+}
+.box-search-logo-item-tips {
+ display: none;
+}
+.header-fixed-up .box-search-logo-item-tips {
+ display: inline;
+ vertical-align: -5px;
+ margin-right: 6px;
+}
+.header-fixed-up .btn-search_ico {
+ display: none;
+ display: none !important;
+}
+.header-fixed-up #kbd {
+ position: fixed !important;
+ top: 50px !important;
+ bottom: 0px !important;
+}
+.header-fixed-up .baidu_sug,
+.header-fixed-up .baidu_video_sug {
+ margin-right: 0;
+}
+
+
+.header-fixed-up .box-search_logo_disabled dt a {
+ background: 0 0;
+}
+.header-fixed-up .box-search_logo_disabled dt {
+ width: 37px;
+}
+.header-fixed-up .box-search_logo_disabled dt a {
+ padding-left: 6px;
+}
+.header-fixed-up .box-search .box-search_logo_disabled dt {
+ background: none;
+ background-color: #F0F0F0;
+}
+
+
+/*w960*/
+.w960 .header-fixed-up .box-search .sug-search,
+.w960 .header-fixed-up .box-search .baidu_sug,
+.w960 .header-fixed-up .box-search .baidu_video_sug {
+ width: 492px;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/rtl/rtl.ps.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/rtl/rtl.ps.css
new file mode 100755
index 000000000..68de949bb
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/rtl/rtl.ps.css
@@ -0,0 +1,15 @@
+/*for PS*/
+.header-fixed-up .radios {
+ display: none;
+ display: none !important;
+}
+body.header-fixed-up .box-search_logo dt {
+ padding-left: 15px;
+ height: 33px;
+ cursor: pointer;
+ background: #F2F2F2 url(../img/i-arrow.png) no-repeat 4px 13px;
+}
+body.header-fixed-up .box-search_logos_show dt {
+ width: 22px;
+ background-image: url(../img/i-arrow-open.png);
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/simple-nav/img/i-download-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/simple-nav/img/i-download-hover.png
new file mode 100755
index 000000000..782979aeb
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/simple-nav/img/i-download-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/simple-nav/img/i-download.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/simple-nav/img/i-download.png
new file mode 100755
index 000000000..3ff26c520
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/simple-nav/img/i-download.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/simple-nav/img/simple-logo-grey.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/simple-nav/img/simple-logo-grey.png
new file mode 100755
index 000000000..659521279
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/simple-nav/img/simple-logo-grey.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/simple-nav/img/simple-logo.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/simple-nav/img/simple-logo.png
new file mode 100755
index 000000000..739825e8d
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/simple-nav/img/simple-logo.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/simple-nav/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/simple-nav/ltr/ltr.css
new file mode 100755
index 000000000..540128766
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/simple-nav/ltr/ltr.css
@@ -0,0 +1,3 @@
+.mod-simple-nav{
+ display: none;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/simple-nav/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/simple-nav/ltr/ltr.more.css
new file mode 100755
index 000000000..cb32946e4
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/simple-nav/ltr/ltr.more.css
@@ -0,0 +1,153 @@
+.mod-simple-nav{
+ display: block;
+ background: #fbfbfb;
+ border-bottom: 1px solid #dfdfdf;
+ text-align: center;
+ height: 30px;
+ /*margin-bottom: 10px;*/
+ position: relative;
+ z-index: 401;
+}
+.mod-simple-nav .nav-item{
+ display: inline-block;
+ height: 30px;
+ line-height: 30px;
+ border: 1px solid #dfdfdf;
+ margin-left: -1px;
+ border-top-width: 0;
+ vertical-align: top;
+ position: relative;
+}
+.mod-simple-nav .nav-light:hover .ic-light{
+ background: url(../img/simple-logo.png?__sprite) no-repeat 5px 5px;
+}
+.mod-simple-nav .cur{
+ background-color: #fff;
+ /*border-bottom-color: #fff;*/
+ cursor: default;
+}
+.mod-simple-nav .nav-item-con{
+ padding: 0 5px;
+ display: block;
+ cursor: pointer;
+}
+.mod-simple-nav .ic-light{
+ background: url(../img/simple-logo-grey.png?__sprite) no-repeat 5px 5px;
+ width: 16px;
+ height: 31px;
+}
+.mod-simple-nav .nav-wrap .nav-color{
+ color: #0f7eea;
+}
+.mod-simple-nav .nav-wrap .nav-item:hover .nav-tips{
+ display: block;
+}
+/*.mod-simple-nav .nav-wrap .nav-item:hover .nav-color{
+ color: #1b81e5;
+}*/
+.mod-simple-nav .nav-tips {
+ display: none;
+ position: absolute;
+ top: 30px;
+ left: 50%;
+}
+.mod-simple-nav .logo-notice{
+ display: none;
+ position: absolute;
+ left: 50%;
+}
+.mod-simple-nav .nav-tips .inner{
+ width: 100px;
+ padding: 5px 0;
+}
+.mod-simple-nav .inner{
+ position: relative;
+ left: -50%;
+ border: 1px solid #bfbfbf;
+ color: #666;
+ background-color: #fff;
+ width: 230px;
+ line-height:20px;
+ border-radius: 2px;
+ cursor: pointer;
+}
+.mod-simple-nav .notice-close{
+ position: absolute;
+ display: block;
+ top: 5px;
+ right: 5px;
+ width: 7px;
+ height: 7px;
+}
+.mod-simple-nav .arrow-border{
+ width: 0;
+ height: 0;
+ font-size: 0;
+ border-color: transparent transparent #bfbfbf;
+ border-style: dashed dashed solid;
+ border-width: 8px;
+ position: absolute;
+ left: 50%;
+ margin-left: -8px;
+ top: -17px;
+}
+.mod-simple-nav .cur-arrow-border{
+ width: 0;
+ height: 0;
+ font-size: 0;
+ border-color: transparent transparent #1b81e5;
+ border-style: dashed dashed solid;
+ border-width: 8px;
+ position: absolute;
+ left: 50%;
+ margin-left: -8px;
+ top: 15px;
+}
+.mod-simple-nav .arrow{
+ width: 0;
+ height: 0;
+ font-size: 0;
+ border-color: transparent transparent #fff;
+ border-style: dashed dashed solid;
+ border-width: 8px;
+ position: absolute;
+ left: 50%;
+ margin-left: -8px;
+ top: -15px;
+}
+.mod-simple-nav .notice-link{
+ padding: 10px;
+ display: block;
+}
+.mod-simple-nav .down-wrap{
+ width: 1120px;
+ position: relative;
+ margin: 0 auto;
+ margin-top: -27px;
+}
+.w960 .mod-simple-nav .down-wrap{
+ width: 960px;
+}
+.mod-simple-nav .down-btn{
+ display: block;
+ position: absolute;
+ border: 1px solid #0f7ee9;
+ line-height: 20px;
+ color: #0f7ee9;
+ left: 0;
+ padding: 0 5px;
+}
+.mod-simple-nav .i-download{
+ background: url(../img/i-download.png?__sprite) no-repeat;
+ width: 9px;
+ height: 10px;
+ padding-right: 5px;
+ display: inline-block;
+}
+.mod-simple-nav .down-btn:hover{
+ background-color: #0f7ee9;
+ color: #fff;
+}
+.mod-simple-nav .down-btn:hover .i-download{
+ background: url(../img/i-download-hover.png?__sprite) no-repeat;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/simple-nav/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/simple-nav/rtl/rtl.css
new file mode 100755
index 000000000..e69de29bb
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/simple-nav/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/simple-nav/rtl/rtl.more.css
new file mode 100755
index 000000000..e69de29bb
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/simple-nav/simple-nav-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/simple-nav/simple-nav-async.js
new file mode 100755
index 000000000..930e5ccd8
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/simple-nav/simple-nav-async.js
@@ -0,0 +1,123 @@
+var $ = require('common:widget/ui/jquery/jquery.js');
+
+var nav = function(){
+ var navOption = {
+ $wrap: $('.mod-simple-nav'),
+ logoNotice: conf.logoNotice
+ };
+ $.extend(this, navOption);
+ this.init();
+};
+nav.prototype = {
+ init: function(){
+ this._bindEvents();
+ this._initNotice();
+ },
+ _bindEvents: function(){
+ var self = this;
+ var $wrap = self.$wrap;
+ var cookieRedirect = conf.cookieRedirect;
+
+ $wrap.on('click', '.nav-href', function() {
+ var _this = $(this);
+ var cookieName = "";
+ for(var key in cookieRedirect){
+ cookieName = key;
+ }
+ if (self._cookie(cookieName)) {
+ self._cookie(cookieName,'',{expires: 400});
+ }
+ if(self._cookie('newUser') == '0'){
+ self._cookie('newUser','1',{expires: 400});
+ }
+
+ window.location.reload();
+ UT.send({
+ type: "others",
+ modId: "index-nav",
+ sort: _this.data('ut')
+ });
+
+ });
+ },
+ _initNotice: function(){
+ var self = this;
+ var $wrap = self.$wrap;
+ var logoNotice = self.logoNotice;
+ if (logoNotice.text) {
+ var key = "simpleBackTips";
+ if (self._cookie(key) !== 'off') {
+ var tpl = [
+ '',
+ '
',
+ '
',
+ '
',
+ '
',
+ '' + logoNotice.text + ' ',
+ ' ',
+ '
',
+ '
',
+ '
'
+ ].join('');
+ var $navItem = $wrap.find('.nav-item');
+ $navItem.eq(~~logoNotice.index).append(tpl);
+
+ var $logoNotice = $wrap.find('.logo-notice');
+ var $logoUl = $wrap.find('ul');
+ $logoNotice.show();
+ $logoUl.removeClass('nav-wrap');
+
+ $wrap.on('click', '.notice-link', function() {
+ self._cookie(key, 'off',{expires: 400});
+ $logoUl.addClass('nav-wrap');
+ $logoNotice.hide();
+ });
+ $wrap.on('mousedown', '.notice-close', function(e) {
+ e.stopPropagation();
+ UT.send({
+ type: "others",
+ modId: "simple-nav",
+ sort: 'close'
+ });
+ self._cookie(key, 'off',{expires: 400});
+ $logoNotice.hide();
+ $logoUl.addClass('nav-wrap');
+
+ });
+ }
+ }
+ },
+ _cookie: function(key, value, options) {
+
+ // key and value given, set cookie...
+ if (arguments.length > 1 && (value === null || typeof value !== "object")) {
+ //options = jQuery.extend({}, options);
+
+ if (value === null) {
+ options.expires = -1;
+ }
+ if (typeof options.expires === 'number') {
+ var days = options.expires,
+ t = options.expires = new Date();
+ t.setDate(t.getDate() + days);
+ }
+ return (document.cookie = [
+ encodeURIComponent(key), '=',
+ options.raw ? String(value) : encodeURIComponent(String(value)),
+ options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
+ options.path ? '; path=' + options.path : '',
+ options.domain ? '; domain=' + options.domain : '',
+ options.secure ? '; secure' : ''
+ ].join(''));
+ }
+ // key and possibly options given, get cookie...
+ options = value || {};
+ var result, decode = options.raw ? function(s) {
+ return s;
+ } : decodeURIComponent;
+ return (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? decode(result[1]) : null;
+ }
+
+};
+
+module.exports = new nav();
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/simple-nav/simple-nav.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/simple-nav/simple-nav.tpl
new file mode 100755
index 000000000..a156766ca
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/simple-nav/simple-nav.tpl
@@ -0,0 +1,46 @@
+<%style%>
+ <%if $head.dir=='ltr'%>
+ @import url('/widget/header-flat/simple-nav/ltr/ltr.css?__inline');
+ <%else%>
+ @import url('/widget/header-flat/simple-nav/rtl/rtl.css?__inline');
+ <%/if%>
+<%/style%>
+<%* 声明对ltr/rtl的css依赖 *%>
+<%require name="common:widget/header-flat/simple-nav/`$head.dir`/`$head.dir`.more.css"%>
+<%strip%>
+
+
+ <%foreach $body.simpleNav.navData as $navItem%>
+
+ <%if $navItem.icon%>
+
+ <%else%>
+ <%$navItem.text%>
+
+ <%/if%>
+
+
+ <%/foreach%>
+
+ <%if $body.simpleNav.downloadInfo.downloadUrl%>
+
+ <%/if%>
+
+<%/strip%>
+
+<%script%>
+ conf.cookieRedirect = <%json_encode($head.cookieRedirect)%>;
+ conf.logoNotice = <%json_encode($body.simpleNav.logoNotice)%>;
+ require.async(["common:widget/header-flat/simple-nav/simple-nav-async.js"]);
+<%/script%>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/site-switch/img/i-settings-btn-s.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/site-switch/img/i-settings-btn-s.png
new file mode 100755
index 000000000..4e536052e
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/site-switch/img/i-settings-btn-s.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/site-switch/img/i-settings-btn.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/site-switch/img/i-settings-btn.png
new file mode 100755
index 000000000..2672c0cb3
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/site-switch/img/i-settings-btn.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/site-switch/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/site-switch/ltr/ltr.css
new file mode 100755
index 000000000..cc229b27e
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/site-switch/ltr/ltr.css
@@ -0,0 +1,6 @@
+/*.settings {
+ visibility: hidden;
+}
+.settings-dropdown {
+ display: none;
+}*/
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/site-switch/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/site-switch/ltr/ltr.more.css
new file mode 100755
index 000000000..22f48a734
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/site-switch/ltr/ltr.more.css
@@ -0,0 +1,95 @@
+/*form inline css*/
+.settings {
+ visibility: hidden;
+}
+.settings-dropdown {
+ display: none;
+}
+
+.settings {
+ visibility: visible !important;
+ float: right;
+ position: relative;
+}
+.settings-dropdown {
+ position: absolute;
+ right: 0;
+ top: 50px;
+ width: 120px;
+ text-align: right;
+ background-color: #0868C9;
+ background-color: rgba(0, 99, 199, 0.97);
+ padding-top: 8px;
+ padding-bottom: 5px;
+}
+.settings:hover .settings-dropdown {
+ display: block;
+}
+.settings:hover .settings-btn {
+ background-color: #0063c7;
+}
+.settings-btn {
+ display: block;
+ height: 34px;
+ padding-top: 16px;
+ text-align: center;
+ padding-left: 12px;
+ padding-right: 12px;
+}
+.settings-btn .btn-holder {
+ display: block;
+ width: 18px;
+ height: 18px;
+ background: url(../img/i-settings-btn.png?__sprite) no-repeat;
+}
+.settings-site a {
+ color: #FFFFFF;
+ display: block;
+ padding-right: 20px;
+ height: 31px;
+ line-height: 31px;
+}
+.settings-site a:hover {
+ background-color: #075DB5;
+ background-color: rgba(0,0,0, 0.1);
+}
+.settings-site a.cur {
+ cursor: default;
+ position: relative;
+ overflow: hidden;
+}
+.settings-site .cur:after {
+ content: "\2022";
+ position: absolute;
+ right: 5px;
+ top: -1px;
+ line-height: 34px;
+ height: 34px;
+ font-size: 34px;
+ color: #ffffff;
+ font-family: arial;
+}
+.settings-site a.cur:hover {
+ background-color: transparent;
+}
+
+/*has skin*/
+.skin-on .settings:hover .settings-btn,
+.skin-on .settings-dropdown {
+ background-color: #333333;
+ background-color: rgba(0, 0, 0, 0.8);
+}
+.skin-on .settings-site a:hover {
+ background-color: #0A0A0A;
+ background-color: rgba(0,0,0,0.6);
+}
+
+
+/*head fixed*/
+.header-fixed-st .userbar-tool .settings-dropdown {
+ top: 40px;
+}
+.header-fixed-st .settings .settings-btn {
+ height: 29px;
+ padding-top: 11px;
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/site-switch/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/site-switch/rtl/rtl.css
new file mode 100755
index 000000000..cc229b27e
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/site-switch/rtl/rtl.css
@@ -0,0 +1,6 @@
+/*.settings {
+ visibility: hidden;
+}
+.settings-dropdown {
+ display: none;
+}*/
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/site-switch/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/site-switch/rtl/rtl.more.css
new file mode 100755
index 000000000..bee920da1
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/site-switch/rtl/rtl.more.css
@@ -0,0 +1,95 @@
+/*from inline css*/
+.settings {
+ visibility: hidden;
+}
+.settings-dropdown {
+ display: none;
+}
+
+
+.settings {
+ visibility: visible !important;
+ float: left;
+ position: relative;
+}
+.settings-dropdown {
+ position: absolute;
+ left: 0;
+ top: 50px;
+ width: 120px;
+ text-align: left;
+ background-color: #0868C9;
+ background-color: rgba(0, 99, 199, 0.97);
+ padding-top: 8px;
+ padding-bottom: 5px;
+}
+.settings:hover .settings-dropdown {
+ display: block;
+}
+.settings:hover .settings-btn {
+ background-color: #0063c7;
+}
+.settings-btn {
+ display: block;
+ height: 34px;
+ padding-top: 16px;
+ text-align: center;
+ padding-left: 12px;
+ padding-right: 12px;
+}
+.settings-btn .btn-holder {
+ display: block;
+ width: 18px;
+ height: 18px;
+ background: url(../img/i-settings-btn.png?__sprite) no-repeat;
+}
+.settings-site a {
+ color: #FFFFFF;
+ display: block;
+ padding-left: 20px;
+ height: 31px;
+ line-height: 31px;
+}
+.settings-site a:hover {
+ background-color: #075DB5;
+ background-color: rgba(0,0,0, 0.1);
+}
+.settings-site a.cur {
+ cursor: default;
+ position: relative;
+ overflow: hidden;
+}
+.settings-site .cur:after {
+ content: "\2022";
+ position: absolute;
+ left: 5px;
+ top: 0px;
+ line-height: 34px;
+ height: 34px;
+ font-size: 34px;
+ color: #ffffff;
+ font-family: arial;
+}
+.settings-site a.cur:hover {
+ background-color: transparent;
+}
+
+/*has skin*/
+.skin-on .settings:hover .settings-btn,
+.skin-on .settings-dropdown {
+ background-color: #333333;
+ background-color: rgba(0, 0, 0, 0.8);
+}
+.skin-on .settings-site a:hover {
+ background-color: #0A0A0A;
+ background-color: rgba(0,0,0,0.6);
+}
+
+/*head fixed*/
+.header-fixed-st .userbar-tool .settings-dropdown {
+ top: 40px;
+}
+.header-fixed-st .settings .settings-btn {
+ height: 29px;
+ padding-top: 11px;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/site-switch/site-switch-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/site-switch/site-switch-async.js
new file mode 100755
index 000000000..47a1246ae
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/site-switch/site-switch-async.js
@@ -0,0 +1,30 @@
+/*
+* Setting btn including site switching and theme features
+* @ by FK
+* @require modified by Cgy
+*/
+var $ = require("common:widget/ui/jquery/jquery.js");
+
+var siteList = $("#siteList"),
+ curCountry = $("li.site_" + conf.country + " a", siteList);
+
+curCountry.addClass("cur");
+
+$("a", siteList).on("click", function(e) {
+ if (e.target !== curCountry[0]) {
+ var la = $(this).attr("data-la");
+ // Set cookie for the Accept-language judging
+ la !== "" && $.cookie("LA", $(this).attr("data-la"), {
+ expires: 2000,
+ domain: "hao123.com"
+ });
+ } else {
+ e.preventDefault();
+ }
+ UT.send({
+ position: "siteSwitch",
+ sort: $(this).attr("href"),
+ type: "click",
+ modId: "country"
+ });
+});
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/site-switch/site-switch.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/site-switch/site-switch.tpl
new file mode 100755
index 000000000..97255de74
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/site-switch/site-switch.tpl
@@ -0,0 +1,22 @@
+<%style%>
+<%if $head.dir=='ltr'%>
+@import url('/widget/header-flat/site-switch/ltr/ltr.css?__inline');
+<%else%>
+@import url('/widget/header-flat/site-switch/rtl/rtl.css?__inline');
+<%/if%>
+<%/style%>
+
+<%* 声明对ltr/rtl的css依赖 *%>
+<%if $head.dir=='ltr'%>
+ <%require name="common:widget/header-flat/site-switch/ltr/ltr.more.css"%>
+<%else%>
+ <%require name="common:widget/header-flat/site-switch/rtl/rtl.more.css"%>
+<%/if%>
+
+
+<%script%>
+require.async(["common:widget/ui/jquery/jquery.js"], function($) {
+ $(".settings").html(' ');
+ require.async("common:widget/header-flat/site-switch/site-switch-async.js");
+});
+<%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/img/addfav-s.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/img/addfav-s.png
new file mode 100755
index 000000000..d02145afb
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/img/addfav-s.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/img/addfav.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/img/addfav.png
new file mode 100755
index 000000000..a6598c9be
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/img/addfav.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/img/down-s.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/img/down-s.png
new file mode 100755
index 000000000..f8ca8be1d
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/img/down-s.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/img/down.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/img/down.png
new file mode 100755
index 000000000..8b6d2a482
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/img/down.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/img/setHome-s.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/img/setHome-s.png
new file mode 100755
index 000000000..22cf5cfb6
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/img/setHome-s.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/img/setHome.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/img/setHome.png
new file mode 100755
index 000000000..060ce1b43
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/img/setHome.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/ltr/ltr.css
new file mode 100755
index 000000000..fc8d34d08
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/ltr/ltr.css
@@ -0,0 +1,3 @@
+/*.userbar-btn {
+ visibility: hidden;
+}*/
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/ltr/ltr.more.css
new file mode 100755
index 000000000..7c74b5398
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/ltr/ltr.more.css
@@ -0,0 +1,89 @@
+.userbar-btn {
+ float: right;
+ position: relative;
+ visibility: visible !important;
+}
+.userbar-btn .btn-item {
+ float: left;
+ position: relative;
+}
+.userbar-btn .btn-item:hover {
+ background-color: #0A69C9;
+ background-color: rgba(0,99,199,0.96);
+}
+.userbar-btn .btn-item-anchor {
+ display: block;
+ width: 42px;
+ height: 50px;
+ white-space: nowrap;
+ text-align: center;
+ overflow: hidden;
+}
+.userbar-btn .btn-item i {
+ margin-left: auto;
+ margin-right: auto;
+ display: block;
+}
+.userbar-btn .btn-item-tips {
+ position: absolute;
+ left: 50%;
+ margin-left: -81px;
+ display: none;
+ background-color: #0A69C9;
+ background-color: rgba(0, 99, 199, 0.96);
+}
+.userbar-btn .btn-item:hover .btn-item-tips {
+ display: block;
+}
+
+.userbar-btn .btn-item-tips p,.userbar-btn #shortCutBot a {
+ height: 51px;
+ width: 163px;
+ display: block;
+ white-space: nowrap;
+ overflow: hidden;
+ text-align: center;
+ line-height: 51px;
+ cursor: pointer;
+ font-size: 12px;
+ color: #ffffff;
+}
+.userbar-btn .btn-addfav {
+ width: 21px;
+ height: 20px;
+ margin-top: 15px;
+ background: url(../img/addfav.png?__sprite) no-repeat;
+}
+.userbar-btn .btn-down {
+ width: 17px;
+ height: 17px;
+ margin-top: 17px;
+ background: url(../img/down.png?__sprite) no-repeat;
+}
+.userbar-btn .btn-sethome {
+ width: 19px;
+ height: 18px;
+ margin-top: 16px;
+ background: url(../img/setHome.png?__sprite) no-repeat;
+}
+
+/*has skin*/
+.skin-on .userbar-btn .btn-item:hover,
+.skin-on .userbar-btn .btn-item-tips {
+ background-color: #333333;
+ background-color: rgba(0, 0, 0, 0.8);
+}
+
+/*head fixed*/
+.header-fixed-st .userbar-btn .btn-item-anchor {
+ height: 40px;
+}
+.header-fixed-st .userbar-btn .btn-down {
+ margin-top: 12px;
+}
+.header-fixed-st .userbar-btn .btn-addfav {
+ margin-top: 10px;
+}
+.header-fixed-st .userbar-btn .btn-sethome {
+ margin-top: 11px;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/rtl/rtl.css
new file mode 100755
index 000000000..0c4dfd138
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/rtl/rtl.css
@@ -0,0 +1,3 @@
+/*.userbar-btn {
+ visibility: hidden;
+}*/
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/rtl/rtl.more.css
new file mode 100755
index 000000000..e8faefdf3
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/rtl/rtl.more.css
@@ -0,0 +1,89 @@
+.userbar-btn {
+ float: left;
+ position: relative;
+ visibility: visible !important;
+}
+.userbar-btn .btn-item {
+ float: right;
+ position: relative;
+}
+.userbar-btn .btn-item:hover {
+ background-color: #0A69C9;
+ background-color: rgba(0,99,199,0.96);
+}
+.userbar-btn .btn-item-anchor {
+ display: block;
+ width: 42px;
+ height: 50px;
+ white-space: nowrap;
+ text-align: center;
+ overflow: hidden;
+}
+.userbar-btn .btn-item i {
+ margin-left: auto;
+ margin-right: auto;
+ display: block;
+}
+.userbar-btn .btn-item-tips {
+ position: absolute;
+ right: 50%;
+ margin-right: -81px;
+ display: none;
+ background-color: #0A69C9;
+ background-color: rgba(0, 99, 199, 0.96);
+}
+.userbar-btn .btn-item:hover .btn-item-tips {
+ display: block;
+}
+
+.userbar-btn .btn-item-tips p,.userbar-btn #shortCutBot a {
+ height: 51px;
+ width: 163px;
+ display: block;
+ white-space: nowrap;
+ overflow: hidden;
+ text-align: center;
+ line-height: 51px;
+ cursor: pointer;
+ font-size: 12px;
+ color: #ffffff;
+}
+.userbar-btn .btn-addfav {
+ width: 21px;
+ height: 20px;
+ margin-top: 15px;
+ background: url(../img/addfav.png?__sprite) no-repeat;
+}
+.userbar-btn .btn-down {
+ width: 17px;
+ height: 17px;
+ margin-top: 17px;
+ background: url(../img/down.png?__sprite) no-repeat;
+}
+.userbar-btn .btn-sethome {
+ width: 19px;
+ height: 18px;
+ margin-top: 16px;
+ background: url(../img/setHome.png?__sprite) no-repeat;
+}
+
+/*has skin*/
+.skin-on .userbar-btn .btn-item:hover,
+.skin-on .userbar-btn .btn-item-tips {
+ background-color: #333333;
+ background-color: rgba(0, 0, 0, 0.8);
+}
+
+/*head fixed*/
+.header-fixed-st .userbar-btn .btn-item-anchor {
+ height: 40px;
+}
+.header-fixed-st .userbar-btn .btn-down {
+ margin-top: 12px;
+}
+.header-fixed-st .userbar-btn .btn-addfav {
+ margin-top: 10px;
+}
+.header-fixed-st .userbar-btn .btn-sethome {
+ margin-top: 11px;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/userbar-btn-header-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/userbar-btn-header-async.js
new file mode 100755
index 000000000..d62cd2496
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/userbar-btn-header-async.js
@@ -0,0 +1,92 @@
+/*
+* User Bar Buttons
+* html改为JS动态拼接
+*/
+
+var $ = require("common:widget/ui/jquery/jquery.js");
+var UT = require("common:widget/ui/ut/ut.js");
+var helper = require("common:widget/ui/helper/helper.js");
+require("common:widget/ui/jquery/widget/jquery.sethome/jquery.sethome.js");
+require("common:widget/ui/jquery/widget/jquery.addfav/jquery.addfav.js");
+
+var _conf = conf.userbarBtnHd;
+
+
+_conf.browser.reverse();
+
+var _browser = _conf.browser,
+ _addfav = _conf.addfav,
+ _download = _conf.download,
+ _sethome = _conf.sethome,
+ _browserData = _conf.browserData,
+ _itemTpl = '',
+ _itemMsg = {
+ addfav: {
+ 'display': (_browserData == 'addfav' ? ' style="display: none;"' : ''),
+ 'url': _addfav.url,
+ 'id': 'addFav',
+ 'retrn': ' onclick="return false;"',
+ 'content': _addfav.content || ' ',
+ 'botId': 'addFavBot',
+ 'botContent': _addfav.title
+ },
+ download: {
+ 'display': (_browserData == 'download' ? ' style="display: none;"' : ''),
+ 'url': _download.url,
+ 'id': 'shortCut',
+ 'retrn': '',
+ 'content': _download.content || ' ',
+ 'botId': 'shortCutBot',
+ 'botContent': '' +_download.title +' '
+ },
+ sethome: {
+ 'display': (_browserData == 'sethome' ? ' style="display: none;"' : ''),
+ 'url': _sethome.url,
+ 'id': 'setHome',
+ 'retrn': ' onclick="return false;"',
+ 'content': _sethome.content || ' ',
+ 'botId': 'setHomeBot',
+ 'botContent': _sethome.title
+ }
+ },
+ _tplGroup = '',
+ curObj = null,
+ wrap = $("#userbarBtnHd");
+
+for (var m = 0, n = _browser.length; m < n; m++) {
+ curObj = _browser[m];
+ _tplGroup += helper.replaceTpl(_itemTpl, _itemMsg[curObj]);
+}
+wrap.html(_tplGroup);
+
+//userbar buttons
+var userbarBtn = function() {
+ wrap.on("click", ".btn-item-anchor, .btn-item-tips p", function(e) {
+ var curTarget = $(this),
+ curAttr = curTarget.attr("id").replace(/Bot/, "");
+
+ if (/addFav/i.test(curAttr)) {
+ curTarget.addfav(_addfav.error, window.location.href);
+ } else if (/setHome/i.test(curAttr)) {
+ curTarget.sethome();
+ }
+ if (curTarget.get(0).tagName === "A") {
+ UT.send({
+ position: "sethp-btn",
+ sort: curAttr,
+ type: "click",
+ modId: "sethp-btn"
+ });
+ } else {
+ UT.send({
+ position: "sethp-btn",
+ ac: "b",
+ sort: curAttr,
+ type: "click",
+ modId: "sethp-btn"
+ });
+ }
+
+ });
+};
+module.exports = userbarBtn;
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/userbar-btn-header.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/userbar-btn-header.tpl
new file mode 100755
index 000000000..6079b12b3
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/userbar-btn-header/userbar-btn-header.tpl
@@ -0,0 +1,58 @@
+<%style%>
+<%if $head.dir=='ltr'%>
+ @import url('/widget/header-flat/userbar-btn-header/ltr/ltr.css?__inline');
+<%else%>
+ @import url('/widget/header-flat/userbar-btn-header/rtl/rtl.css?__inline');
+<%/if%>
+<%/style%>
+
+<%* 声明对ltr/rtl的css依赖 *%>
+<%if $head.dir=='ltr'%>
+ <%require name="common:widget/header-flat/userbar-btn-header/ltr/ltr.more.css"%>
+<%else%>
+ <%require name="common:widget/header-flat/userbar-btn-header/rtl/rtl.more.css"%>
+<%/if%>
+
+ <%if strpos($smarty.server["HTTP_USER_AGENT"], "MSIE")%>
+ <%assign var="browser" value=$body.userbarBtn.ie%>
+ <%if $body.headerTest.userbarBtnIsHidden == "1"%>
+ <%assign var="browserData" value=$body.headerTest.userbarBtn.ie%>
+ <%/if%>
+ <%elseif strpos($smarty.server["HTTP_USER_AGENT"], "Firefox")%>
+ <%assign var="browser" value=$body.userbarBtn.firefox%>
+ <%if $body.headerTest.userbarBtnIsHidden == "1"%>
+ <%assign var="browserData" value=$body.headerTest.userbarBtn.firefox%>
+ <%/if%>
+ <%else%>
+ <%assign var="browser" value=$body.userbarBtn.chrome%>
+ <%if $body.headerTest.userbarBtnIsHidden == "1"%>
+ <%assign var="browserData" value=$body.headerTest.userbarBtn.chrome%>
+ <%/if%>
+ <%/if%>
+
+
+ <%script%>
+ conf.userbarBtnHd = {
+ browser: <%json_encode($browser)%>,
+ browserData: '<%$browserData|default:""%>',
+ addfav: {
+ 'content': '<%$body.addFav.content%>',
+ 'title': '<%$body.addFav.title%>',
+ 'url': '<%$body.addFav.url%>',
+ 'error': '<%$body.addFav.error%>'
+ },
+ download: {
+ 'content': '<%$body.download.content%>',
+ 'title': '<%$body.download.title%>',
+ 'url': '<%$body.download.url%>'
+ },
+ sethome: {
+ 'content': '<%$body.setHome.content%>',
+ 'title': '<%$body.setHome.title%>',
+ 'url': '<%$body.setHome.url%>'
+ }
+ };
+ require.async(["common:widget/header-flat/userbar-btn-header/userbar-btn-header-async.js"],function(init){
+ init();
+ });
+ <%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/ae/ae.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/ae/ae.tpl
new file mode 100755
index 000000000..156e8ebd1
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/ae/ae.tpl
@@ -0,0 +1,6 @@
+<%script%>
+require.async("common:widget/ui/weather/weather_flat.js", function (Gl) {
+ Gl.weather.init(__uri('./weather-city.json'));
+});
+<%/script%>
+<%require name="common:widget/ui/weather/`$country`/`$country`_flat.js" async="true" %>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/ae/weather-city.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/ae/weather-city.json
new file mode 100755
index 000000000..347e3dd1d
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/ae/weather-city.json
@@ -0,0 +1,43 @@
+{
+ "9-127164_1_AL": "Cairo",
+ "6-207321_1_AL": "Alexandria",
+ "12-127047_1_AL": "El-Giza",
+ "4-130201_1_AL": "Luxor",
+ "6-127335_1_AL": "Zagazig",
+ "5-127358_1_AL": "Aswan",
+ "15-126919_1_AL": "El Fayoum",
+ "126996": "Ismailia",
+ "7-127484_1_AL": "Port Said",
+ "5-127330_1_AL": "Suez",
+ "3-127049_1_AL": "Shibin el-Kom",
+ "3-126883_1_AL": "Hurghada",
+ "129332": "Mersa Matruh",
+ "4-297030_1_AL": "Riyadh",
+ "3-299429_1_AL": "Jeddah",
+ "3-299427_1_AL": "Mecca",
+ "5-296807_1_AL": "Medina",
+ "4-321626_1_AL": "Abu Dhabi",
+ "323091": "Dubai",
+ "8-1280745_1_AL": "Fujairah",
+ "2-245072_1_AL": "Rabat",
+ "4-6368_1_AL": "Tangier",
+ "2-243353_1_AL": "Casablanca",
+ "3-244231_1_AL": "Marrakech",
+ "1135733": "Tunis",
+ "320522": "Sfax",
+ "317198": "Bizerte",
+ "1888491": "Algiers",
+ "2115": "Annaba",
+ "3-227342_1_AL": "Beirut",
+ "3-230555_1_AL": "Tripoli",
+ "3-314446_1_AL": "Damascus",
+ "3-313468_1_AL": "Aleppo",
+ "1-313556_1_AL": "Hims",
+ "13-222056_1_AL": "Kuwait City",
+ "4-271669_1_AL": "Doha",
+ "6-29687_1_AL": "Al Manama",
+ "3-258638_1_AL": "Muscat",
+ "4-258843_1_AL": "Khassab",
+ "2-221790_1_AL": "Amman",
+ "14-221898_1_AL": "Al Aqabah"
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/ar/ar.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/ar/ar.tpl
new file mode 100755
index 000000000..156e8ebd1
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/ar/ar.tpl
@@ -0,0 +1,6 @@
+<%script%>
+require.async("common:widget/ui/weather/weather_flat.js", function (Gl) {
+ Gl.weather.init(__uri('./weather-city.json'));
+});
+<%/script%>
+<%require name="common:widget/ui/weather/`$country`/`$country`_flat.js" async="true" %>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/ar/weather-city.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/ar/weather-city.json
new file mode 100755
index 000000000..e11cbbe84
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/ar/weather-city.json
@@ -0,0 +1,43 @@
+{
+ "9-127164_1_AL": "\u0627\u0644\u0642\u0627\u0647\u0631\u0629",
+ "6-207321_1_AL": "\u0627\u0644\u0627\u0633\u0643\u0646\u062f\u0631\u064a\u0629",
+ "12-127047_1_AL": "\u0627\u0644\u062c\u064a\u0632\u0629",
+ "4-130201_1_AL": "\u0627\u0644\u0623\u0642\u0635\u0631",
+ "6-127335_1_AL": "\u0627\u0644\u0632\u0642\u0627\u0632\u064a\u0642",
+ "5-127358_1_AL": "\u0623\u0633\u0648\u0627\u0646",
+ "15-126919_1_AL": "\u0627\u0644\u0641\u064a\u0648\u0645",
+ "126996": "\u0627\u0644\u0627\u0633\u0645\u0627\u0639\u064a\u0644\u064a\u0629",
+ "7-127484_1_AL": "\u0628\u0648\u0631 \u0633\u0639\u064a\u062f",
+ "5-127330_1_AL": "\u0627\u0644\u0633\u0648\u064a\u0633",
+ "3-127049_1_AL": "\u0634\u0628\u064a\u0646 \u0627\u0644\u0643\u0648\u0645",
+ "3-126883_1_AL": "\u0627\u0644\u063a\u0631\u062f\u0642\u0629",
+ "129332": "\u0645\u0631\u0633\u0649 \u0645\u0637\u0631\u0648\u062D",
+ "4-297030_1_AL": "\u0627\u0644\u0631\u064a\u0627\u0636",
+ "3-299429_1_AL": "\u062c\u062f\u0629",
+ "3-299427_1_AL": "\u0645\u0643\u0629 \u0627\u0644\u0645\u0643\u0631\u0645\u0629",
+ "5-296807_1_AL": "\u0627\u0644\u0645\u062f\u064a\u0646\u0629 \u0627\u0644\u0645\u0646\u0648\u0631\u0629",
+ "4-321626_1_AL": "\u0623\u0628\u0648 \u0638\u0628\u064a",
+ "323091": "\u062f\u0628\u0649",
+ "8-1280745_1_AL": "\u0627\u0644\u0641\u062c\u064a\u0631\u0629",
+ "2-245072_1_AL": "\u0627\u0644\u0631\u0628\u0627\u0637",
+ "4-6368_1_AL": "\u0637\u0646\u062c\u0629",
+ "2-243353_1_AL": "\u0627\u0644\u062f\u0627\u0631 \u0627\u0644\u0628\u064a\u0636\u0627\u0621",
+ "3-244231_1_AL": "\u0645\u0631\u0627\u0643\u0634",
+ "1135733": "\u062a\u0648\u0646\u0633",
+ "320522": "\u0635\u0641\u0627\u0642\u0633",
+ "317198": "\u0628\u0646\u0632\u0631\u062a",
+ "1888491": "\u0627\u0644\u062c\u0632\u0627\u0626\u0631",
+ "2115": "\u0639\u0646\u0627\u0628\u0629",
+ "3-227342_1_AL": "\u0628\u064a\u0631\u0648\u062a",
+ "3-230555_1_AL": "\u0637\u0631\u0627\u0628\u0644\u0633",
+ "3-314446_1_AL": "\u062f\u0645\u0634\u0642",
+ "3-313468_1_AL": "\u062d\u0644\u0628",
+ "3-313556_1_AL": "\u062d\u0645\u0635",
+ "13-222056_1_AL": "\u0627\u0644\u0643\u0648\u064a\u062a",
+ "4-271669_1_AL": "\u0627\u0644\u062f\u0648\u062d\u0629",
+ "6-29687_1_AL": "\u0627\u0644\u0645\u0646\u0627\u0645\u0629",
+ "3-258638_1_AL": "\u0645\u0633\u0642\u0637",
+ "4-258843_1_AL": "\u062e\u0635\u0628",
+ "2-221790_1_AL": "\u0639\u0645\u0627\u0646",
+ "14-221898_1_AL": "\u0627\u0644\u0639\u0642\u0628\u0629"
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/br/br.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/br/br.tpl
new file mode 100755
index 000000000..156e8ebd1
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/br/br.tpl
@@ -0,0 +1,6 @@
+<%script%>
+require.async("common:widget/ui/weather/weather_flat.js", function (Gl) {
+ Gl.weather.init(__uri('./weather-city.json'));
+});
+<%/script%>
+<%require name="common:widget/ui/weather/`$country`/`$country`_flat.js" async="true" %>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/br/weather-city.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/br/weather-city.json
new file mode 100755
index 000000000..58244fcee
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/br/weather-city.json
@@ -0,0 +1,29 @@
+{
+ "45881": "S\u00e3o Paulo - SP",
+ "45449": "Rio de Janeiro - RJ",
+ "36757": "Aracaju - SE",
+ "44857": "Bel\u00e9m - PA",
+ "44403": "Belo Horizonte - MG",
+ "35950": "Boa Vista - RR",
+ "43348": "Bras\u00edlia - DF",
+ "33738": "Campo Grande - MS",
+ "44281": "Cuiab\u00e1 - MT",
+ "44944": "Curitiba - PR",
+ "35952": "Florian\u00f3polis - SC",
+ "43346": "Fortaleza - CE",
+ "43599": "Goi\u00e2nia - GO",
+ "34631": "Jo\u00e3o Pessoa - PB",
+ "31913": "Macei\u00f3 - AL",
+ "64": "Macap\u00e1 - AP",
+ "42471": "Manaus - AM",
+ "35658": "Natal - RN",
+ "36879": "Palmas - TO",
+ "45561": "Porto Alegre - RS",
+ "35941": "Porto Velho - RO",
+ "45090": "Recife - PE",
+ "31909": "Rio Branco - AC",
+ "43080": "Salvador - BA",
+ "44127": "S\u00e3o Lu\u00eds - MA",
+ "45253": "Teresina - PI",
+ "32929": "Vit\u00f3ria - ES"
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/en/en.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/en/en.tpl
new file mode 100755
index 000000000..156e8ebd1
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/en/en.tpl
@@ -0,0 +1,6 @@
+<%script%>
+require.async("common:widget/ui/weather/weather_flat.js", function (Gl) {
+ Gl.weather.init(__uri('./weather-city.json'));
+});
+<%/script%>
+<%require name="common:widget/ui/weather/`$country`/`$country`_flat.js" async="true" %>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/en/weather-city.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/en/weather-city.json
new file mode 100755
index 000000000..81c341ef2
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/en/weather-city.json
@@ -0,0 +1 @@
+{"zmw:00000.1.58968":"\u81fa\u5317","zmw:00000.1.46751":"\u81fa\u4e2d\u5e02","zmw:00000.1.59358":"\u81fa\u5357","zmw:00000.1.46740":"\u9ad8\u96c4","zmw:00000.1.46745":"\u5ca1\u5c71","zmw:00000.2.46694":"\u57fa\u9686","zmw:00000.1.46756":"\u65b0\u7af9\u7e23","zmw:00000.1.46746":"\u5609\u7fa9","zmw:00000.1.58965":"\u6843\u5712\u7e23","zmw:00000.1.46750":"\u5c4f\u6771\u7e23","zmw:00000.1.59559":"\u6052\u6625\u93ae","zmw:00000.1.59162":"\u5b9c\u862d\u5e02","zmw:00000.1.46706":"\u8607\u6fb3\u93ae","zmw:00000.3.59362":"\u82b1\u84ee\u7e23","zmw:00000.1.59562":"\u81fa\u6771\u5e02","zmw:00000.1.46754":"\u5927\u6b66\u9109"}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/id/id.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/id/id.tpl
new file mode 100755
index 000000000..156e8ebd1
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/id/id.tpl
@@ -0,0 +1,6 @@
+<%script%>
+require.async("common:widget/ui/weather/weather_flat.js", function (Gl) {
+ Gl.weather.init(__uri('./weather-city.json'));
+});
+<%/script%>
+<%require name="common:widget/ui/weather/`$country`/`$country`_flat.js" async="true" %>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/id/weather-city.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/id/weather-city.json
new file mode 100755
index 000000000..874da9f6d
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/id/weather-city.json
@@ -0,0 +1,24 @@
+{
+ "208971": "Jakarta",
+ "205110": "Banda Aceh",
+ "210188": "Bandar Lampung",
+ "208977": "Bandung",
+ "209036": "Banjarmasin",
+ "1127709": "Batam",
+ "202574": "Bekasi",
+ "202507": "Bogor",
+ "202196": "Denpasar",
+ "202649": "Depok",
+ "211242": "Makassar",
+ "208996": "Malang",
+ "211298": "Medan",
+ "206120": "Padang",
+ "211288": "Palembang",
+ "205619": "Pekanbaru",
+ "203749": "Samarinda",
+ "208981": "Semarang",
+ "203449": "Surabaya",
+ "202242": "Tangerang",
+ "202512": "Tasikmalaya",
+ "211671": "Yogyakarta"
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/img/del_ative.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/img/del_ative.png
new file mode 100755
index 000000000..12bb63a4f
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/img/del_ative.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/img/del_gray.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/img/del_gray.png
new file mode 100755
index 000000000..efb7884bf
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/img/del_gray.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/img/drop-down.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/img/drop-down.png
new file mode 100755
index 000000000..4394dd9f7
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/img/drop-down.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/img/drop-up.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/img/drop-up.png
new file mode 100755
index 000000000..53e314967
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/img/drop-up.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/img/i-weather-hum.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/img/i-weather-hum.png
new file mode 100755
index 000000000..70c549e17
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/img/i-weather-hum.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/img/i-weather-more-hum.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/img/i-weather-more-hum.png
new file mode 100755
index 000000000..a745bb196
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/img/i-weather-more-hum.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/img/light.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/img/light.png
new file mode 100755
index 000000000..f8e4516b9
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/img/light.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/jp/jp.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/jp/jp.tpl
new file mode 100755
index 000000000..156e8ebd1
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/jp/jp.tpl
@@ -0,0 +1,6 @@
+<%script%>
+require.async("common:widget/ui/weather/weather_flat.js", function (Gl) {
+ Gl.weather.init(__uri('./weather-city.json'));
+});
+<%/script%>
+<%require name="common:widget/ui/weather/`$country`/`$country`_flat.js" async="true" %>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/jp/weather-city.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/jp/weather-city.json
new file mode 100755
index 000000000..7a07256fe
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/jp/weather-city.json
@@ -0,0 +1,146 @@
+{
+ "4-223985_1_AL": "\u672d\u5e4c",
+ "8-217875_1_AL": "\u91e7\u8def",
+ "2-217787_1_AL": "\u7a1a\u5185",
+ "6-223986_1_AL": "\u65ed\u5ddd",
+ "5-217907_1_AL": "\u7559\u840c",
+ "4-217942_1_AL": "\u7db2\u8d70",
+ "10-217792_1_AL": "\u5317\u898b",
+ "5-218128_1_AL": "\u7d0b\u5225",
+ "4-217892_1_AL": "\u6839\u5ba4",
+ "5-217794_1_AL": "\u5e2f\u5e83",
+ "6-217784_1_AL": "\u5ca9\u898b\u6ca2",
+ "1-217876_1_AL": "\u5036\u77e5\u5b89",
+ "4-217793_1_AL": "\u5ba4\u862d",
+ "1-2334234_1_AL": "\u6d66\u6cb3",
+ "6-223987_1_AL": "\u51fd\u9928",
+ "217843": "\u6c5f\u5dee",
+ "4-224683_1_AL": "\u4ed9\u53f0",
+ "4-222341_1_AL": "\u9752\u68ee",
+ "6-216904_1_AL": "\u3080\u3064",
+ "8-216886_1_AL": "\u516b\u6238",
+ "4-224170_1_AL": "\u76db\u5ca1",
+ "4-218332_1_AL": "\u5bae\u53e4",
+ "4-218342_1_AL": "\u5927\u8239\u6e21",
+ "4-221897_1_AL": "\u79cb\u7530",
+ "5-216836_1_AL": "\u6a2a\u624b",
+ "4-221567_1_AL": "\u5c71\u5f62",
+ "4-221569_1_AL": "\u7c73\u6ca2",
+ "4-221570_1_AL": "\u9152\u7530",
+ "6-221591_1_AL": "\u65b0\u5e84",
+ "4-223551_1_AL": "\u798f\u5cf6",
+ "217436": "\u5c0f\u540d\u6d5c",
+ "224683": "\u4ed9\u53f0",
+ "218964": "\u77f3\u5dfb",
+ "217415": "\u82e5\u677e",
+ "218990": "\u767d\u77f3",
+ "2-226396_1_AL": "\u6771\u4eac",
+ "4-224374_1_AL": "\u6a2a\u6d5c",
+ "4-724_1_AL": "\u5c0f\u7530\u539f",
+ "221048": "\u5927\u5cf6",
+ "1510182": "\u516b\u4e08\u5cf6",
+ "1652504": "\u7236\u5cf6",
+ "4-220908_1_AL": "\u718a\u8c37",
+ "1-220889_1_AL": "\u79e9\u7236",
+ "4-223069_1_AL": "\u5343\u8449",
+ "6-309_1_AL": "\u929a\u5b50",
+ "6-216952_1_AL": "\u9928\u5c71",
+ "4-218223_1_AL": "\u6c34\u6238",
+ "4-226389_1_AL": "\u5b87\u90fd\u5bae",
+ "221137": "\u5927\u7530\u539f",
+ "1-223622_1_AL": "\u524d\u6a4b",
+ "1-221693_1_AL": "\u7532\u5e9c",
+ "4-224701_1_AL": "\u9577\u91ce",
+ "8-219098_1_AL": "\u677e\u672c",
+ "4-219097_1_AL": "\u98ef\u7530",
+ "2012157": "\u3055\u3044\u305f\u307e",
+ "218236": "\u571f\u6d66",
+ "1-2334040_1_AL": "\u6cb3\u53e3\u6e56",
+ "2423804": "\u307f\u306a\u304b\u307f",
+ "4-224807_1_AL": "\u65b0\u6f5f",
+ "4-224165_1_AL": "\u91d1\u6ca2",
+ "4-219302_1_AL": "\u9577\u5ca1",
+ "4-219303_1_AL": "\u9ad8\u7530",
+ "4-226415_1_AL": "\u5bcc\u5c71",
+ "221279": "\u4f0f\u6728",
+ "1-218305_1_AL": "\u8f2a\u5cf6",
+ "4-223540_1_AL": "\u798f\u4e95",
+ "5-217288_1_AL": "\u6566\u8cc0",
+ "2014153": "\u76f8\u5ddd",
+ "4-221855_1_AL": "\u540d\u53e4\u5c4b",
+ "1-221859_1_AL": "\u8c4a\u6a4b",
+ "1-223600_1_AL": "\u5c90\u961c",
+ "4-217488_1_AL": "\u9ad8\u5c71",
+ "1-226089_1_AL": "\u9759\u5ca1",
+ "1523": "\u7db2\u4ee3",
+ "221060": "\u4e09\u5cf6",
+ "5-226090_1_AL": "\u6d5c\u677e",
+ "218908": "\u6d25",
+ "2-944_1_AL": "\u5c3e\u9df2",
+ "10-225007_1_AL": "\u5927\u962a",
+ "4-224023_1_AL": "\u795e\u6238",
+ "218187": "\u8c4a\u5ca1",
+ "224436": "\u4eac\u90fd",
+ "4-218698_1_AL": "\u821e\u9db4",
+ "5-220939_1_AL": "\u5927\u6d25",
+ "1-220944_1_AL": "\u5f66\u6839",
+ "4-224769_1_AL": "\u5948\u826f",
+ "4-226509_1_AL": "\u548c\u6b4c\u5c71",
+ "219281": "\u98a8\u5c4b",
+ "1505444": "\u6f6e\u5cac",
+ "4-223955_1_AL": "\u5e83\u5cf6",
+ "4-221238_1_AL": "\u9ce5\u53d6",
+ "4-221241_1_AL": "\u7c73\u5b50",
+ "4-220975_1_AL": "\u677e\u6c5f",
+ "4-220976_1_AL": "\u6d5c\u7530",
+ "2333845": "\u897f\u90f7",
+ "4-224935_1_AL": "\u5ca1\u5c71",
+ "1-219446_1_AL": "\u6d25\u5c71",
+ "1-217744_1_AL": "\u5e84\u539f",
+ "1-226560_1_AL": "\u4e0b\u95a2",
+ "221623": "\u5c71\u53e3",
+ "4-221659_1_AL": "\u67f3\u4e95",
+ "4-221624_1_AL": "\u8429",
+ "1-224395_1_AL": "\u9ad8\u77e5",
+ "4-224352_1_AL": "\u9ad8\u677e",
+ "4-223539_1_AL": "\u677e\u5c71",
+ "217238": "\u65b0\u5c45\u6d5c",
+ "1-217236_1_AL": "\u5b87\u548c\u5cf6",
+ "4-226392_1_AL": "\u5fb3\u5cf6",
+ "218601": "\u5ba4\u6238",
+ "218617": "\u6e05\u6c34",
+ "1-221183_1_AL": "\u65e5\u548c\u4f50",
+ "4-223544_1_AL": "\u798f\u5ca1",
+ "1-224369_1_AL": "\u9e7f\u5150\u5cf6",
+ "223545": "\u516b\u5e61",
+ "4-217320_1_AL": "\u98ef\u585a",
+ "4-217333_1_AL": "\u4e45\u7559\u7c73",
+ "4-219768_1_AL": "\u4f50\u8cc0",
+ "1-219769_1_AL": "\u4f0a\u4e07\u91cc",
+ "4-224706_1_AL": "\u9577\u5d0e",
+ "1-219187_1_AL": "\u4f50\u4e16\u4fdd",
+ "2333734": "\u53b3\u539f",
+ "10-219200_1_AL": "\u798f\u6c5f",
+ "4-224428_1_AL": "\u718a\u672c",
+ "1-218666_1_AL": "\u725b\u6df1",
+ "1-218650_1_AL": "\u4eba\u5409",
+ "5-224930_1_AL": "\u5927\u5206",
+ "5-219398_1_AL": "\u4e2d\u6d25",
+ "4-219394_1_AL": "\u65e5\u7530",
+ "5-219395_1_AL": "\u4f50\u4f2f",
+ "4-224686_1_AL": "\u5bae\u5d0e",
+ "1-219035_1_AL": "\u5ef6\u5ca1",
+ "2-219034_1_AL": "\u90fd\u57ce",
+ "2333684": "\u540d\u702c",
+ "1-218434_1_AL": "\u9e7f\u5c4b",
+ "2-3492_1_POI_AL": "\u7a2e\u5b50\u5cf6",
+ "2333690": "\u9ad8\u5343\u7a42",
+ "218649": "\u963f\u8607\u4e59\u59eb",
+ "1-224944_1_AL": "\u90a3\u8987",
+ "1-2012155_1_AL": "\u4e45\u7c73\u5cf6",
+ "5-219499_1_AL": "\u540d\u8b77",
+ "1779977": "\u5357\u5927\u6771\u5cf6",
+ "2333670": "\u5bae\u53e4\u5cf6",
+ "219525": "\u77f3\u57a3\u5cf6",
+ "219564": "\u4e0e\u90a3\u56fd\u5cf6"
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/ltr/ltr-c.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/ltr/ltr-c.css
new file mode 100755
index 000000000..833e87dfc
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/ltr/ltr-c.css
@@ -0,0 +1,3 @@
+/*.userbar-weather{
+ display: none;
+}*/
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/ltr/ltr.more.css
new file mode 100755
index 000000000..a6a77afae
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/ltr/ltr.more.css
@@ -0,0 +1,419 @@
+/* weather */
+/* @require common:widget/ui/prompt/prompt.css */
+
+#weatherView img {
+ width: 32px;
+}
+.userbar-weather {
+ font-size: 12px;
+ position: relative;
+ display: block !important;
+ height: 45px;
+ margin-right: 20px;
+ padding-top: 5px;
+ white-space: nowrap;
+ color: #fff;
+ *z-index: 9;
+}
+.userbar-weather .fl {
+ overflow: hidden;
+ width: 228px;
+ height: 50px;
+ margin-left: 10px;
+}
+.userbar-weather_console {
+ display: none;
+}
+.userbar-weather ul {
+ margin-top: 5px;
+}
+.userbar-weather_console,
+.userbar-weather img,
+.userbar-weather .weather-info {
+ float: left;
+}
+.userbar-weather li {
+ display: block;
+ float: left;
+ margin-right: 45px;
+ _margin-right: 35px;
+}
+.userbar-weather li.weather_last {
+ margin-right: 0;
+}
+.userbar-weather img {
+ margin-right: 10px;
+}
+.userbar-weather span {
+ font-weight: bold;
+}
+.userbar-weather p {
+ margin: 2px 0;
+}
+.weather_last {
+ visibility: hidden;
+}
+.text {
+ visibility: hidden;
+}
+.dot_img {
+ left: 10px;
+ display: inline-block;
+ width: 9px;
+ height: 16px;
+ margin-right: 5px;
+ margin-bottom: -5px;
+ margin-left: 20px;
+ background: url(../img/i-weather-hum.png?__sprite) no-repeat;
+}
+
+/* --------more--------- */
+/* weather */
+/* @require common:widget/ui/prompt/prompt.css */
+.userbar-weather_console {
+ display: inline-block;
+ height: 38px;
+ margin-right: 20px;
+ _margin-right: 11px;
+ _width: 200px;
+}
+.userbar-weather_console a {
+ color: #fff;
+}
+.userbar-weather_city {
+ line-height: 15px;
+ position: relative;
+ z-index: 11;
+ padding-right: 7px;
+ text-align: right;
+}
+.userbar-weather_city-cur {
+ position: absolute;
+ left: -84px;
+ height: 15px;
+ white-space: nowrap;
+}
+.userbar-weather_city-cur a {
+ padding-right: 10px;
+}
+.userbar-weather_city-click a {
+ background-position: right -442px;
+}
+.city-select {
+ z-index: 11;
+ top: 16px;
+ right: -8px;
+ text-align: left;
+}
+.city-select .box-prompt-inner {
+ overflow: visible;
+ *width: 100%;
+ _width: auto;
+}
+.city-select p {
+ font-size: 12px;
+ margin: 0;
+}
+.city-select label {
+ display: block;
+ margin-bottom: 5px;
+}
+.city-select select {
+ width: 160px;
+ margin-bottom: 7px;
+ border: 1px solid #d7d7d9;
+}
+.city-select .btn-bar {
+ width: 160px;
+ text-align: center;
+}
+.weather-days {
+ line-height: 25px;
+ position: relative;
+ display: block;
+ height: 25px;
+ margin-top: 5px;
+ padding: 0 7px;
+ border: 1px solid #009e69;
+ border-bottom: 0 none;
+ -webkit-border-radius: 2px;
+ -moz-border-radius: 2px;
+ border-radius: 2px;
+ -o-border-radius: 2px;
+ _float: right;
+}
+.weather-days_click {
+ border: 1px solid #00ad73;
+ border-bottom: 0 none;
+}
+.weather-days p {
+ line-height: 25px;
+ display: block;
+ margin: 0;
+}
+.weather-days_click p {
+ background-position: 50% -35px;
+}
+.weather-days:hover {
+ -webkit-border-top-left-radius: 2px;
+ border-top-left-radius: 2px;
+ -webkit-border-top-right-radius: 2px;
+ border-top-right-radius: 2px;
+ background: #009e69;
+ -moz-border-top-left-radius: 2px;
+ -o-border-top-left-radius: 2px;
+ -moz-border-top-right-radius: 2px;
+ -o-border-top-right-radius: 2px;
+}
+.weather-more_show .weather-more {
+ display: block;
+}
+.weather-more li {
+ font-size: 14px;
+ padding: 20px 0;
+ text-align: center;
+ color: #fff;
+}
+.weather-more li a {
+ display: block;
+ width: 100%;
+ height: 159px;
+ color: #fff;
+}
+.weather-more li a:hover {
+ background-color: #075db5;
+ background-color: rgba(0, 0, 0, .1);
+}
+.weather-more li img {
+ padding: 10px 0;
+}
+.weather-more span {
+ padding: 0 5px;
+}
+.weather-more_odd {
+ background: #117a57;
+ -webkit-box-shadow: 0 0 4px rgba(0, 0, 0, .1) inset;
+ -moz-box-shadow: 0 0 4px rgba(0, 0, 0, .1) inset;
+ box-shadow: 0 0 4px rgba(0, 0, 0, .1) inset;
+ -o-box-shadow: 0 0 4px rgba(0, 0, 0, .1) inset;
+}
+.weather-more_today p {
+ font-weight: bold;
+}
+.weather_last {
+ width: 40px;
+}
+.humidity {
+ left: 5px;
+}
+.dot_img_head {
+ left: 10px;
+ display: inline-block;
+ width: 9px;
+ height: 16px;
+ margin-bottom: -5px;
+ margin-left: 10px;
+ background: url(../img/i-weather-more-hum.png?__sprite) no-repeat;
+}
+.userbar-weather_tip {
+ font-size: 12px;
+ position: absolute;
+ z-index: 10;
+ top: 49px;
+ right: -28px;
+ width: 190px;
+ padding: 2px 32px 2px 12px;
+ color: #454545;
+ border: 1px solid #ffa97e;
+ -webkit-border-radius: 2px;
+ -moz-border-radius: 2px;
+ border-radius: 2px;
+ background-color: #fff8f4;
+ -o-border-radius: 2px;
+}
+.userbar-weather_tip .arrow,
+.userbar-weather_tip .arrow_bg {
+ position: absolute;
+ width: 0;
+ height: 0;
+ border: 8px dashed transparent;
+}
+.userbar-weather_tip .arrow {
+ top: -18px;
+ left: 19px;
+ border-width: 9px;
+ border-bottom-style: solid;
+ border-bottom-color: #ffb793;
+}
+.userbar-weather_tip .arrow_bg {
+ margin: -7px -8px 0 -8px;
+ border-bottom-style: solid;
+ border-bottom-color: #fcfefd;
+ _margin-top: -22px;
+}
+.userbar-weather_tip .tips-close {
+ position: absolute;
+ top: 5px;
+ right: 5px;
+ display: block;
+ width: 12px;
+ height: 12px;
+ cursor: pointer;
+ background: url(../img/del_gray.png?__sprite) no-repeat;
+}
+.userbar-weather_tip .tips-close_hover {
+ background: url(../img/del_ative.png?__sprite) no-repeat;
+}
+.userbar-weather_tip p {
+ line-height: 1.5;
+ white-space: normal;
+ text-indent: 16px;
+}
+.userbar-weather_tip .tips-light {
+ position: absolute;
+ top: 4px;
+ left: 12px;
+ display: inline-block;
+ width: 12px;
+ height: 16px;
+ background: url(../img/light.png?__sprite) no-repeat;
+}
+.userbar-weather .dropdown-list li {
+ line-height: 40px;
+ display: list-item;
+ float: none;
+ height: 40px;
+ margin-right: 0;
+ text-indent: 20px;
+ _margin-right: 0;
+}
+.userbar-weather .dropdown-list li:hover,
+.userbar-weather .dropdown-list-hover {
+ background-color: #1974ce;
+}
+.userbar-weather .dropdown-trigger {
+ font-size: 18px;
+ height: 40px;
+ color: #fff;
+ border-width: 0;
+ background-color: #1c81e5;
+}
+.userbar-weather .dropdown .dropdown-input {
+ font-size: 18px;
+ font-weight: normal;
+ line-height: 40px;
+ width: 280px !important;
+ height: 40px;
+ padding-right: 40px;
+ padding-left: 20px;
+ background-color: #1c81e5;
+}
+.userbar-weather .dropdown .dropdown-arrow {
+ top: 0;
+ right: 0;
+ width: 40px;
+ height: 40px;
+ border-width: 0;
+ background: url(../img/drop-up.png?__sprite) no-repeat;
+}
+.userbar-weather .dropdown .dropdown-arrow i {
+ display: none;
+}
+.userbar-weather .dropdown .dropdown-arrow-up {
+ background: url(../img/drop-down.png?__sprite) no-repeat;
+}
+.userbar-weather .dropdown-list {
+ font-size: 18px;
+ font-weight: normal;
+ border-width: 0;
+ background-color: #1c81e5;
+}
+.userbar-weather .dropdown-list .dropdown-list-inner {
+ margin-top: 0;
+ background-color: #1c81e5;
+ -webkit-backface-visibility: hidden;
+}
+#weatherView li#carRestrict {
+ margin-left: 7px;
+}
+#weatherView li span.car-restrict-num {
+ font-size: 17px;
+ line-height: 28px;
+ display: inline-block;
+ width: 23px;
+ height: 28px;
+ margin: 3px 0 0 3px;
+ text-align: center;
+ vertical-align: top;
+ color: #ffda5a;
+ background: #006cd9;
+}
+#weatherView li span.car-restrict-name {
+ font-size: 12px;
+ font-weight: 500;
+ line-height: 16px;
+ display: inline-block;
+ overflow: hidden;
+ width: 95px;
+ margin: 1px 0 0 3px;
+ text-align: center;
+ word-break: break-all;
+ color: #fff;
+}
+#weatherView li span.car-restrict-and {
+ font-weight: 500;
+ line-height: 32px;
+ display: inline-block;
+ height: 32px;
+ margin: 0 5px;
+ vertical-align: top;
+}
+.w960 #weatherView li#carRestrict {
+ display: none;
+}
+
+/* head fixed */
+.header-fixed .userbar-weather_tip {
+ display: none !important;
+}
+.header-fixed #carRestrict {
+ display: none !important;
+}
+.header-fixed-st #weatherView li img {
+ width: 32px;
+ height: 28px;
+ margin-top: -8px;
+}
+.header-fixed-st .weather-info .text {
+ display: inline;
+ margin-right: 4px;
+}
+.header-fixed-st .weather-wrap .userbar-weather {
+ height: 40px;
+}
+.header-fixed-st .userbar-weather div.fl {
+ height: 30px;
+ padding: 8px 40px 2px 16px;
+}
+.header-fixed-st .weather-info {
+ overflow: hidden;
+ margin-top: 2px;
+}
+.header-fixed-st .weather-wrap .weather-tip_def {
+ top: 15px;
+}
+.header-fixed-st div.userbar-weather_console {
+ top: 68px;
+}
+.header-fixed-st .weather-wrap .weather-more_wrap {
+ top: 40px;
+}
+.animate-opacity{
+ -webkit-transition: opacity linear .6s;
+ -moz-transition: opacity linear .6s;
+ -ms-transition: opacity linear .6s;
+ -o-transition: opacity linear .6s;
+ transition: opacity linear .6s;
+ opacity: 1;
+ filter: alpha(opacity=100);
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/ltr/ltr.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/ltr/ltr.tpl
new file mode 100755
index 000000000..da5eb3ca2
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/ltr/ltr.tpl
@@ -0,0 +1,6 @@
+<%require name="common:widget/header-flat/weather/ltr/ltr.more.css"%>
+<%style%>
+ @import url('/widget/header-flat/weather/ltr/ltr-c.css?__inline');
+<%/style%>
+
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/ma/ma.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/ma/ma.tpl
new file mode 100755
index 000000000..156e8ebd1
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/ma/ma.tpl
@@ -0,0 +1,6 @@
+<%script%>
+require.async("common:widget/ui/weather/weather_flat.js", function (Gl) {
+ Gl.weather.init(__uri('./weather-city.json'));
+});
+<%/script%>
+<%require name="common:widget/ui/weather/`$country`/`$country`_flat.js" async="true" %>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/ma/weather-city.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/ma/weather-city.json
new file mode 100755
index 000000000..b021da656
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/ma/weather-city.json
@@ -0,0 +1,43 @@
+{
+ "9-127164_1_AL": "\u0627\u0644\u0642\u0627\u0647\u0631\u0629",
+ "6-207321_1_AL": "\u0627\u0644\u0627\u0633\u0643\u0646\u062f\u0631\u064a\u0629",
+ "12-127047_1_AL": "\u0627\u0644\u062c\u064a\u0632\u0629",
+ "4-130201_1_AL": "\u0627\u0644\u0623\u0642\u0635\u0631",
+ "6-127335_1_AL": "\u0627\u0644\u0632\u0642\u0627\u0632\u064a\u0642",
+ "5-127358_1_AL": "\u0623\u0633\u0648\u0627\u0646",
+ "15-126919_1_AL": "\u0627\u0644\u0641\u064a\u0648\u0645",
+ "126996": "\u0627\u0644\u0627\u0633\u0645\u0627\u0639\u064a\u0644\u064a\u0629",
+ "7-127484_1_AL": "\u0628\u0648\u0631 \u0633\u0639\u064a\u062f",
+ "5-127330_1_AL": "\u0627\u0644\u0633\u0648\u064a\u0633",
+ "3-127049_1_AL": "\u0634\u0628\u064a\u0646 \u0627\u0644\u0643\u0648\u0645",
+ "3-126883_1_AL": "\u0627\u0644\u063a\u0631\u062f\u0642\u0629",
+ "129332": "\u0645\u0631\u0633\u064a \u0627\u0644\u0645\u0637\u0631\u0648\u062d",
+ "4-297030_1_AL": "\u0627\u0644\u0631\u064a\u0627\u0636",
+ "3-299429_1_AL": "\u062c\u062f\u0629",
+ "3-299427_1_AL": "\u0645\u0643\u0629 \u0627\u0644\u0645\u0643\u0631\u0645\u0629",
+ "5-296807_1_AL": "\u0627\u0644\u0645\u062f\u064a\u0646\u0629 \u0627\u0644\u0645\u0646\u0648\u0631\u0629",
+ "4-321626_1_AL": "\u0623\u0628\u0648 \u0638\u0628\u064a",
+ "323091": "\u062f\u0628\u0649",
+ "8-1280745_1_AL": "\u0627\u0644\u0641\u062c\u064a\u0631\u0629",
+ "2-245072_1_AL": "\u0627\u0644\u0631\u0628\u0627\u0637",
+ "4-6368_1_AL": "\u0637\u0646\u062c\u0629",
+ "2-243353_1_AL": "\u0627\u0644\u062f\u0627\u0631 \u0627\u0644\u0628\u064a\u0636\u0627\u0621",
+ "3-244231_1_AL": "\u0645\u0631\u0627\u0643\u0634",
+ "1135733": "\u062a\u0648\u0646\u0633",
+ "320522": "\u0635\u0641\u0627\u0642\u0633",
+ "317198": "\u0628\u0646\u0632\u0631\u062a",
+ "1888491": "\u0627\u0644\u062c\u0632\u0627\u0626\u0631",
+ "2115": "\u0639\u0646\u0627\u0628\u0629",
+ "3-227342_1_AL": "\u0628\u064a\u0631\u0648\u062a",
+ "3-230555_1_AL": "\u0637\u0631\u0627\u0628\u0644\u0633",
+ "3-314446_1_AL": "\u062f\u0645\u0634\u0642",
+ "3-313468_1_AL": "\u062d\u0644\u0628",
+ "3-313556_1_AL": "\u062d\u0645\u0635",
+ "13-222056_1_AL": "\u0627\u0644\u0643\u0648\u064a\u062a",
+ "4-271669_1_AL": "\u0627\u0644\u062f\u0648\u062d\u0629",
+ "6-29687_1_AL": "\u0627\u0644\u0645\u0646\u0627\u0645\u0629",
+ "3-258638_1_AL": "\u0645\u0633\u0642\u0637",
+ "4-258843_1_AL": "\u062e\u0635\u0628",
+ "2-221790_1_AL": "\u0639\u0645\u0627\u0646",
+ "14-221898_1_AL": "\u0627\u0644\u0639\u0642\u0628\u0629"
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/rtl/rtl-c.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/rtl/rtl-c.css
new file mode 100755
index 000000000..833e87dfc
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/rtl/rtl-c.css
@@ -0,0 +1,3 @@
+/*.userbar-weather{
+ display: none;
+}*/
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/rtl/rtl.more.css
new file mode 100755
index 000000000..f1cbe6bd4
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/rtl/rtl.more.css
@@ -0,0 +1,440 @@
+/* weather */
+/* @require common:widget/ui/prompt/prompt.css */
+#weatherView img {
+ width: 32px;
+}
+.userbar-weather {
+ font-size: 12px;
+ position: relative;
+ display: block !important;
+ zoom: 1;
+ width: 240px;
+ height: 45px;
+ padding-top: 5px;
+ color: #fff;
+ *width: 260px;
+ _width: auto;
+}
+.userbar-weather_console {
+ display: none;
+}
+.userbar-weather ul {
+ margin-top: 5px;
+ *width: 222px;
+}
+.userbar-weather img,
+.userbar-weather .weather-info {
+ float: right;
+}
+.userbar-weather li {
+ display: block;
+ float: right;
+ margin-left: 20px;
+ *width: 100px;
+ *margin-left: 10px;
+}
+.userbar-weather li.weather_last {
+ margin-left: 0;
+}
+.userbar-weather img {
+ margin-left: 26px;
+}
+.userbar-weather span {
+ font-weight: bold;
+}
+.userbar-weather p {
+ margin: 2px 0;
+ direction: rtl;
+}
+.weather_last {
+ visibility: hidden;
+}
+.text {
+ visibility: hidden;
+}
+.dot_img {
+ position: relative;
+ left: 10px;
+ display: inline-block;
+ width: 9px;
+ height: 16px;
+ margin-right: 20px;
+ margin-bottom: -5px;
+ margin-left: -5px;
+ background: url(../img/i-weather-hum.png?__sprite) no-repeat;
+}
+
+/* ----------more------------- */
+/* weather */
+/* @require common:widget/ui/prompt/prompt.css */
+
+.userbar-weather {
+ width: 390px;
+ *width: 410px;
+}
+.userbar-weather_console {
+ display: block;
+ float: right;
+ height: 38px;
+ margin-left: 20px;
+ *margin-left: 10px;
+ *float: left;
+ _float: right;
+}
+.userbar-weather_console a {
+ color: #fff;
+}
+.weather-info {
+ position: relative;
+ right: -12px;
+ width: 110px;
+ direction: ltr;
+}
+.userbar-weather_city {
+ line-height: 15px;
+ position: relative;
+ z-index: 11;
+ padding-right: 7px;
+ text-align: left;
+}
+.userbar-weather_city-cur {
+ position: absolute;
+ right: -78px;
+ height: 15px;
+ white-space: nowrap;
+}
+.userbar-weather_city-cur a {
+ zoom: 1;
+ padding-left: 10px;
+}
+.userbar-weather_city-click a {
+ background-position: right -442px;
+}
+.city-select {
+ z-index: 11;
+ top: 16px;
+ left: -8px;
+ text-align: right;
+ _width: 180px;
+}
+.city-select .box-prompt-inner {
+ overflow: visible;
+ *width: 100%;
+ _width: auto;
+ *position: relative;
+}
+.city-select p {
+ font-size: 12px;
+ zoom: 1;
+ margin: 0;
+}
+.city-select label {
+ display: block;
+ margin-bottom: 5px;
+}
+.city-select select {
+ width: 160px;
+ margin-bottom: 7px;
+ border: 1px solid #d7d7d9;
+}
+.city-select .btn-bar {
+ width: 160px;
+ text-align: center;
+ *position: relative;
+}
+.weather-days {
+ line-height: 25px;
+ position: relative;
+ display: block;
+ height: 25px;
+ margin-top: 5px;
+ padding: 0 7px;
+ border: 1px solid #009e69;
+ border-bottom: 0 none;
+ -webkit-border-radius: 2px;
+ -moz-border-radius: 2px;
+ border-radius: 2px;
+ -o-border-radius: 2px;
+ _float: left;
+}
+.weather-days_click {
+ border: 1px solid #00ad73;
+ border-bottom: 0 none;
+}
+.weather-days p {
+ line-height: 25px;
+ display: block;
+ margin: 0;
+}
+.weather-days_click p {
+ background-position: 50% -35px;
+}
+.weather-days:hover {
+ -webkit-border-top-left-radius: 2px;
+ border-top-left-radius: 2px;
+ -webkit-border-top-right-radius: 2px;
+ border-top-right-radius: 2px;
+ background: #009e69;
+ -moz-border-top-left-radius: 2px;
+ -o-border-top-left-radius: 2px;
+ -moz-border-top-right-radius: 2px;
+ -o-border-top-right-radius: 2px;
+}
+.weather-more_show .weather-more {
+ display: block;
+}
+.weather-more li {
+ font-size: 14px;
+ padding: 20px 0;
+ text-align: center;
+ color: #fff;
+ direction: ltr;
+}
+.weather-more li a {
+ display: block;
+ width: 100%;
+ height: 159px;
+ color: #fff;
+}
+.weather-more li a:hover {
+ background-color: #075db5;
+ background-color: rgba(0, 0, 0, .1);
+}
+.weather-more li img {
+ padding: 10px 0;
+}
+.weather-more span {
+ padding: 0 5px;
+}
+.weather-more_odd {
+ background: #117a57;
+ -webkit-box-shadow: 0 0 4px rgba(0, 0, 0, .1) inset;
+ -moz-box-shadow: 0 0 4px rgba(0, 0, 0, .1) inset;
+ box-shadow: 0 0 4px rgba(0, 0, 0, .1) inset;
+ -o-box-shadow: 0 0 4px rgba(0, 0, 0, .1) inset;
+}
+.weather-more_today p {
+ font-weight: bold;
+}
+.weather_last {
+ width: 40px;
+}
+.humidity {
+ float: left;
+ margin-left: 40px;
+}
+.dot_img {
+ margin-right: 0;
+ margin-left: 10px;
+}
+.dot_img_head {
+ position: relative;
+ left: 5px;
+ display: inline-block;
+ width: 9px;
+ height: 16px;
+ margin-bottom: -5px;
+ margin-left: -10px;
+ background: url(../img/i-weather-more-hum.png?__sprite) no-repeat;
+ *left: 10px;
+ *float: right;
+ *margin-right: 20px;
+}
+.temperature_p {
+ float: right;
+}
+.temperature_hum {
+ position: relative;
+ left: -33px;
+}
+.temperature_big {
+ float: right;
+ margin-right: 20px;
+}
+.userbar-weather {
+ position: relative;
+ z-index: 99;
+}
+#weatherView .weather-info {
+ *position: absolute;
+ *right: 240px;
+}
+.weather-more_today .dot_img_head {
+ position: relative;
+}
+.userbar-weather_tip {
+ font-size: 12px;
+ position: absolute;
+ z-index: 10;
+ top: 49px;
+ right: 224px;
+ width: 190px;
+ padding: 2px 12px 2px 32px;
+ color: #454545;
+ border: 1px solid #ffa97e;
+ -webkit-border-radius: 2px;
+ -moz-border-radius: 2px;
+ border-radius: 2px;
+ background-color: #fff8f4;
+ -o-border-radius: 2px;
+}
+.userbar-weather_tip .arrow,
+.userbar-weather_tip .arrow_bg {
+ position: absolute;
+ width: 0;
+ height: 0;
+ border: 8px dashed transparent;
+}
+.userbar-weather_tip .arrow {
+ top: -18px;
+ right: 19px;
+ border-width: 9px;
+ border-bottom-style: solid;
+ border-bottom-color: #ffb793;
+}
+.userbar-weather_tip .arrow_bg {
+ margin: -7px -8px 0 -8px;
+ border-bottom-style: solid;
+ border-bottom-color: #fcfefd;
+ _margin-top: -22px;
+}
+.userbar-weather_tip .tips-close {
+ position: absolute;
+ top: 5px;
+ left: 5px;
+ display: block;
+ width: 12px;
+ height: 12px;
+ cursor: pointer;
+ background: url(../img/del_gray.png?__sprite) no-repeat;
+}
+.userbar-weather_tip .tips-close_hover {
+ background: url(../img/del_ative.png?__sprite) no-repeat;
+}
+.userbar-weather_tip p {
+ line-height: 1.5;
+ white-space: normal;
+ text-indent: 16px;
+ background-position: right top;
+}
+.userbar-weather_tip .tips-light {
+ position: absolute;
+ top: 4px;
+ right: 12px;
+ display: inline-block;
+ width: 12px;
+ height: 16px;
+ background: url(../img/light.png?__sprite) no-repeat;
+}
+.userbar-weather .dropdown-list li {
+ line-height: 40px;
+ display: list-item;
+ float: none;
+ height: 40px;
+ margin-left: 0;
+ text-indent: 20px;
+ *width: auto;
+ *margin-left: 0;
+}
+.userbar-weather .dropdown-list li:hover,
+.userbar-weather .dropdown-list-hover {
+ background-color: #1974ce;
+}
+.userbar-weather .dropdown-trigger {
+ font-size: 18px;
+ height: 40px;
+ color: #fff;
+ border-width: 0;
+ background-color: #1c81e5;
+}
+.userbar-weather .dropdown .dropdown-input {
+ font-size: 18px;
+ font-weight: normal;
+ line-height: 40px;
+ width: 280px !important;
+ height: 40px;
+ padding-right: 20px;
+ padding-left: 40px;
+ background-color: #1c81e5;
+}
+.userbar-weather .dropdown .dropdown-arrow {
+ top: 0;
+ left: 0;
+ width: 40px;
+ height: 40px;
+ border-width: 0;
+ background: url(../img/drop-up.png?__sprite) no-repeat;
+}
+.userbar-weather .dropdown .dropdown-arrow i {
+ display: none;
+}
+.userbar-weather .dropdown .dropdown-arrow-up {
+ background: url(../img/drop-down.png?__sprite) no-repeat;
+}
+.userbar-weather .dropdown-list {
+ font-size: 18px;
+ font-weight: normal;
+ border-width: 0;
+ background-color: #1c81e5;
+}
+.userbar-weather .dropdown-list .dropdown-list-inner {
+ margin-top: 0;
+ background-color: #1c81e5;
+ -webkit-backface-visibility: hidden;
+}
+
+/* head fixed */
+.header-fixed .userbar-weather_tip {
+ display: none !important;
+}
+.header-fixed #carRestrict {
+ display: none !important;
+}
+.header-fixed-st #weatherView li img {
+ width: 32px;
+ height: 28px;
+ margin-top: -2px;
+}
+.header-fixed-st .weather-info .text {
+ display: inline;
+ float: right;
+ margin-top: 2px;
+ margin-left: 4px;
+}
+.header-fixed-st .weather-wrap .userbar-weather {
+ height: 40px;
+}
+.header-fixed-st .userbar-weather ul.fl {
+ height: 30px;
+ padding: 8px 16px 2px 32px;
+}
+.header-fixed-st .weather-info {
+ overflow: hidden;
+ margin-top: 2px;
+}
+.header-fixed-st .weather-wrap .weather-tip_def {
+ top: 15px;
+}
+.header-fixed-st div.userbar-weather_console {
+ top: 68px;
+}
+.header-fixed-st .weather-wrap .weather-more_wrap {
+ top: 40px;
+}
+.header-fixed-st .temperature_p {
+ float: left;
+ margin-top: 4px;
+}
+.header-fixed-st .userbar-weather img {
+ margin-top: 4px;
+ margin-left: 16px;
+}
+.animate-opacity{
+ -webkit-transition: opacity linear .6s;
+ -moz-transition: opacity linear .6s;
+ -ms-transition: opacity linear .6s;
+ -o-transition: opacity linear .6s;
+ transition: opacity linear .6s;
+ opacity: 1;
+ filter: alpha(opacity=100);
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/rtl/rtl.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/rtl/rtl.tpl
new file mode 100755
index 000000000..1c313c908
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/rtl/rtl.tpl
@@ -0,0 +1,6 @@
+<%require name="common:widget/header-flat/weather/rtl/rtl.more.css"%>
+<%style%>
+ @import url('/widget/header-flat/weather/rtl/rtl-c.css?__inline');
+<%/style%>
+
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/sa/sa.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/sa/sa.tpl
new file mode 100755
index 000000000..156e8ebd1
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/sa/sa.tpl
@@ -0,0 +1,6 @@
+<%script%>
+require.async("common:widget/ui/weather/weather_flat.js", function (Gl) {
+ Gl.weather.init(__uri('./weather-city.json'));
+});
+<%/script%>
+<%require name="common:widget/ui/weather/`$country`/`$country`_flat.js" async="true" %>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/sa/weather-city.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/sa/weather-city.json
new file mode 100755
index 000000000..e11cbbe84
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/sa/weather-city.json
@@ -0,0 +1,43 @@
+{
+ "9-127164_1_AL": "\u0627\u0644\u0642\u0627\u0647\u0631\u0629",
+ "6-207321_1_AL": "\u0627\u0644\u0627\u0633\u0643\u0646\u062f\u0631\u064a\u0629",
+ "12-127047_1_AL": "\u0627\u0644\u062c\u064a\u0632\u0629",
+ "4-130201_1_AL": "\u0627\u0644\u0623\u0642\u0635\u0631",
+ "6-127335_1_AL": "\u0627\u0644\u0632\u0642\u0627\u0632\u064a\u0642",
+ "5-127358_1_AL": "\u0623\u0633\u0648\u0627\u0646",
+ "15-126919_1_AL": "\u0627\u0644\u0641\u064a\u0648\u0645",
+ "126996": "\u0627\u0644\u0627\u0633\u0645\u0627\u0639\u064a\u0644\u064a\u0629",
+ "7-127484_1_AL": "\u0628\u0648\u0631 \u0633\u0639\u064a\u062f",
+ "5-127330_1_AL": "\u0627\u0644\u0633\u0648\u064a\u0633",
+ "3-127049_1_AL": "\u0634\u0628\u064a\u0646 \u0627\u0644\u0643\u0648\u0645",
+ "3-126883_1_AL": "\u0627\u0644\u063a\u0631\u062f\u0642\u0629",
+ "129332": "\u0645\u0631\u0633\u0649 \u0645\u0637\u0631\u0648\u062D",
+ "4-297030_1_AL": "\u0627\u0644\u0631\u064a\u0627\u0636",
+ "3-299429_1_AL": "\u062c\u062f\u0629",
+ "3-299427_1_AL": "\u0645\u0643\u0629 \u0627\u0644\u0645\u0643\u0631\u0645\u0629",
+ "5-296807_1_AL": "\u0627\u0644\u0645\u062f\u064a\u0646\u0629 \u0627\u0644\u0645\u0646\u0648\u0631\u0629",
+ "4-321626_1_AL": "\u0623\u0628\u0648 \u0638\u0628\u064a",
+ "323091": "\u062f\u0628\u0649",
+ "8-1280745_1_AL": "\u0627\u0644\u0641\u062c\u064a\u0631\u0629",
+ "2-245072_1_AL": "\u0627\u0644\u0631\u0628\u0627\u0637",
+ "4-6368_1_AL": "\u0637\u0646\u062c\u0629",
+ "2-243353_1_AL": "\u0627\u0644\u062f\u0627\u0631 \u0627\u0644\u0628\u064a\u0636\u0627\u0621",
+ "3-244231_1_AL": "\u0645\u0631\u0627\u0643\u0634",
+ "1135733": "\u062a\u0648\u0646\u0633",
+ "320522": "\u0635\u0641\u0627\u0642\u0633",
+ "317198": "\u0628\u0646\u0632\u0631\u062a",
+ "1888491": "\u0627\u0644\u062c\u0632\u0627\u0626\u0631",
+ "2115": "\u0639\u0646\u0627\u0628\u0629",
+ "3-227342_1_AL": "\u0628\u064a\u0631\u0648\u062a",
+ "3-230555_1_AL": "\u0637\u0631\u0627\u0628\u0644\u0633",
+ "3-314446_1_AL": "\u062f\u0645\u0634\u0642",
+ "3-313468_1_AL": "\u062d\u0644\u0628",
+ "3-313556_1_AL": "\u062d\u0645\u0635",
+ "13-222056_1_AL": "\u0627\u0644\u0643\u0648\u064a\u062a",
+ "4-271669_1_AL": "\u0627\u0644\u062f\u0648\u062d\u0629",
+ "6-29687_1_AL": "\u0627\u0644\u0645\u0646\u0627\u0645\u0629",
+ "3-258638_1_AL": "\u0645\u0633\u0642\u0637",
+ "4-258843_1_AL": "\u062e\u0635\u0628",
+ "2-221790_1_AL": "\u0639\u0645\u0627\u0646",
+ "14-221898_1_AL": "\u0627\u0644\u0639\u0642\u0628\u0629"
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/th/th.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/th/th.tpl
new file mode 100755
index 000000000..156e8ebd1
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/th/th.tpl
@@ -0,0 +1,6 @@
+<%script%>
+require.async("common:widget/ui/weather/weather_flat.js", function (Gl) {
+ Gl.weather.init(__uri('./weather-city.json'));
+});
+<%/script%>
+<%require name="common:widget/ui/weather/`$country`/`$country`_flat.js" async="true" %>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/th/weather-city.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/th/weather-city.json
new file mode 100755
index 000000000..c65a7a699
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/th/weather-city.json
@@ -0,0 +1,46 @@
+{
+ "4-318849_1_AL": "\u0e01\u0e23\u0e38\u0e07\u0e40\u0e17\u0e1e\u0e2f",
+ "4-318418_1_AL": "\u0e01\u0e33\u0e41\u0e1e\u0e07\u0e40\u0e1e\u0e0a\u0e23",
+ "1-319052_1_AL": "\u0e25\u0e1e\u0e1a\u0e38\u0e23\u0e35",
+ "4-319602_1_AL": "\u0e19\u0e04\u0e23\u0e1b\u0e10\u0e21",
+ "2-320033_1_AL": "\u0e1e\u0e34\u0e29\u0e13\u0e38\u0e42\u0e25\u0e01",
+ "4-320049_1_AL": "\u0e1e\u0e23\u0e30\u0e19\u0e04\u0e23\u0e28\u0e23\u0e35\u0e2d\u0e22\u0e38\u0e18\u0e22\u0e32",
+ "4-320620_1_AL": "\u0e2a\u0e21\u0e38\u0e17\u0e23\u0e1b\u0e23\u0e32\u0e01\u0e32\u0e23",
+ "4-320626_1_AL": "\u0e2a\u0e21\u0e38\u0e17\u0e23\u0e2a\u0e32\u0e04\u0e23",
+ "1-320984_1_AL": "\u0e2a\u0e38\u0e1e\u0e23\u0e23\u0e13\u0e1a\u0e38\u0e23\u0e35",
+ "4-320984_1_AL": "\u0e40\u0e0a\u0e35\u0e22\u0e07\u0e43\u0e2b\u0e21\u0e48",
+ "2-318882_1_AL": "\u0e25\u0e33\u0e1b\u0e32\u0e07",
+ "2-318901_1_AL": "\u0e25\u0e33\u0e1e\u0e39\u0e19",
+ "319106": "\u0e41\u0e21\u0e48\u0e2e\u0e48\u0e2d\u0e07\u0e2a\u0e2d\u0e19",
+ "3-319108_1_AL": "\u0e41\u0e21\u0e48\u0e2e\u0e48\u0e2d\u0e07\u0e2a\u0e2d\u0e19(\u0e41\u0e21\u0e48\u0e2a\u0e30\u0e40\u0e23\u0e35\u0e22\u0e07)",
+ "2-319733_1_AL": "\u0e19\u0e48\u0e32\u0e19",
+ "2-319956_1_AL": "\u0e1e\u0e30\u0e40\u0e22\u0e32",
+ "2-317465_1_AL": "\u0e0a\u0e31\u0e22\u0e20\u0e39\u0e21\u0e34",
+ "4-318585_1_AL": "\u0e02\u0e2d\u0e19\u0e41\u0e01\u0e48\u0e19",
+ "3-318607_1_AL": "\u0e02\u0e2d\u0e19\u0e41\u0e01\u0e48\u0e19(\u0e0a\u0e38\u0e21\u0e41\u0e1e)",
+ "2-319038_1_AL": "\u0e40\u0e25\u0e22",
+ "4-319122_1_AL": "\u0e21\u0e2b\u0e32\u0e2a\u0e32\u0e23\u0e04\u0e32\u0e21",
+ "2-319494_1_AL": "\u0e21\u0e38\u0e01\u0e14\u0e32\u0e2b\u0e32\u0e23",
+ "4-319629_1_AL": "\u0e19\u0e04\u0e23\u0e23\u0e32\u0e0a\u0e2a\u0e35\u0e21\u0e32",
+ "5-319817_1_AL": "\u0e2b\u0e19\u0e2d\u0e07\u0e04\u0e32\u0e22",
+ "4-320359_1_AL": "\u0e23\u0e49\u0e2d\u0e22\u0e40\u0e2d\u0e47\u0e14",
+ "4-321409_1_AL": "\u0e2d\u0e38\u0e1a\u0e25\u0e23\u0e32\u0e0a\u0e18\u0e32\u0e19\u0e35",
+ "7-321441_1_AL": "\u0e2d\u0e38\u0e14\u0e23\u0e18\u0e32\u0e19\u0e35",
+ "1-317584_1_AL": "\u0e1e\u0e31\u0e17\u0e22\u0e32",
+ "2-317490_1_AL": "\u0e08\u0e31\u0e19\u0e17\u0e1a\u0e38\u0e23\u0e35",
+ "1-317582_1_AL": "\u0e0a\u0e25\u0e1a\u0e38\u0e23\u0e35",
+ "1-320137_1_AL": "\u0e1b\u0e23\u0e32\u0e08\u0e35\u0e19\u0e1a\u0e38\u0e23\u0e35",
+ "2-320337_1_AL": "\u0e23\u0e30\u0e22\u0e2d\u0e07",
+ "4-319691_1_AL": "\u0e19\u0e04\u0e23\u0e28\u0e23\u0e35\u0e18\u0e23\u0e23\u0e21\u0e23\u0e32\u0e0a",
+ "2-319761_1_AL": "\u0e19\u0e23\u0e32\u0e18\u0e34\u0e27\u0e32\u0e2a",
+ "2-320075_1_AL": "\u0e20\u0e39\u0e40\u0e01\u0e47\u0e15",
+ "2-320938_1_AL": "\u0e2a\u0e07\u0e02\u0e25\u0e32",
+ "3-320939_1_AL": "\u0e2a\u0e07\u0e02\u0e25\u0e32(\u0e2b\u0e32\u0e14\u0e43\u0e2b\u0e0d\u0e48)",
+ "4-320998_1_AL": "\u0e2a\u0e38\u0e23\u0e32\u0e29\u0e0e\u0e23\u0e4c\u0e18\u0e32\u0e19\u0e35",
+ "4-5470_1_AL": "\u0e2a\u0e38\u0e23\u0e32\u0e29\u0e0e\u0e23\u0e4c\u0e18\u0e32\u0e19\u0e35(\u0e40\u0e01\u0e32\u0e30\u0e2a\u0e21\u0e38\u0e22)",
+ "3-320151_1_AL": "\u0e1b\u0e23\u0e30\u0e08\u0e27\u0e1a\u0e04\u0e35\u0e23\u0e35\u0e02\u0e31\u0e19\u0e18\u0e4c(\u0e2b\u0e31\u0e27\u0e2b\u0e34\u0e19)",
+ "2-318443_1_AL": "\u0e01\u0e32\u0e0d\u0e08\u0e19\u0e1a\u0e38\u0e23\u0e35",
+ "318455": "\u0e01\u0e32\u0e0d\u0e08\u0e19\u0e1a\u0e23\u0e35(\u0e17\u0e2d\u0e07\u0e1c\u0e32\u0e20\u0e39\u0e21\u0e34)",
+ "2-320001_1_AL": "\u0e40\u0e1e\u0e0a\u0e23\u0e1a\u0e38\u0e23\u0e35",
+ "4-320150_1_AL": "\u0e1b\u0e23\u0e30\u0e08\u0e27\u0e1a\u0e04\u0e35\u0e23\u0e35\u0e02\u0e31\u0e19\u0e18\u0e4c"
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/tw/tw.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/tw/tw.tpl
new file mode 100755
index 000000000..156e8ebd1
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/tw/tw.tpl
@@ -0,0 +1,6 @@
+<%script%>
+require.async("common:widget/ui/weather/weather_flat.js", function (Gl) {
+ Gl.weather.init(__uri('./weather-city.json'));
+});
+<%/script%>
+<%require name="common:widget/ui/weather/`$country`/`$country`_flat.js" async="true" %>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/tw/weather-city.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/tw/weather-city.json
new file mode 100755
index 000000000..1a38eb1c2
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/tw/weather-city.json
@@ -0,0 +1,18 @@
+{
+ "1-315078_1_AL": "\u81fa\u5317",
+ "12-315040_1_AL": "\u81fa\u4e2d",
+ "3-314999_1_AL": "\u81fa\u5357",
+ "1-313812_1_AL": "\u9ad8\u96c4",
+ "1-313793_1_AL": "\u5ca1\u5c71",
+ "4-312605_1_AL": "\u57fa\u9686",
+ "7-313567_1_AL": "\u65b0\u7af9",
+ "6-312591_1_AL": "\u5609\u7fa9",
+ "3-315125_1_AL": "\u6843\u5712",
+ "3-314385_1_AL": "\u5c4f\u6771",
+ "3-314391_1_AL": "\u6052\u6625",
+ "4-316306_1_AL": "\u5b9c\u862d",
+ "2-316307_1_AL": "\u8607\u6fb3\u93ae",
+ "2-313570_1_AL": "\u82b1\u84ee",
+ "3-315079_1_AL": "\u81fa\u6771"
+
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/vn/vn.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/vn/vn.tpl
new file mode 100755
index 000000000..156e8ebd1
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/vn/vn.tpl
@@ -0,0 +1,6 @@
+<%script%>
+require.async("common:widget/ui/weather/weather_flat.js", function (Gl) {
+ Gl.weather.init(__uri('./weather-city.json'));
+});
+<%/script%>
+<%require name="common:widget/ui/weather/`$country`/`$country`_flat.js" async="true" %>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/vn/weather-city.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/vn/weather-city.json
new file mode 100755
index 000000000..990ab2f4c
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/vn/weather-city.json
@@ -0,0 +1,25 @@
+{
+ "2-353412_1_AL": "H\u00e0 N\u1ed9i",
+ "3-353511_1_AL": "H\u1ea3i Ph\u00f2ng",
+ "1-352107_1_AL": "B\u1eafc C\u1ea1n",
+ "1-352511_1_AL": "Cao B\u1eb1ng",
+ "2-353983_1_AL": "H\u00f2a B\u00ecnh",
+ "1-354293_1_AL": "L\u1ea1ng S\u01a1n",
+ "1-354305_1_AL": "L\u00e0o Cai",
+ "1-355085_1_AL": "Nam \u0110\u1ecbnh",
+ "1-356182_1_AL": "Th\u00e1i Nguy\u00ean",
+ "1-356356_1_AL": "Vi\u1ec7t Tr\u00ec",
+ "2-356425_1_AL": "Y\u00ean B\u00e1i",
+ "2-352954_1_AL": "\u0110\u00e0 N\u1eb5ng",
+ "1-355711_1_AL": "H\u1ed9i An",
+
+ "354222": "Nha Trang",
+ "1-356184_1_AL": "Thanh H\u00f3a",
+ "355417": "Vinh",
+
+ "1-352499_1_AL": "C\u00e0 Mau",
+ "2-352508_1_AL": "C\u1ea7n Th\u01a1",
+ "3-354237_1_AL": "Ph\u00fa Qu\u1ed1c",
+ "3-352089_1_AL": "V\u0169ng T\u00e0u",
+ "1-356354_1_AL": "V\u0129nh Long"
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/weather.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/weather.tpl
new file mode 100755
index 000000000..f9618d956
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header-flat/weather/weather.tpl
@@ -0,0 +1,48 @@
+
+<%widget name="common:widget/header-flat/weather/`$head.dir`/`$head.dir`.tpl"%>
+<%script%>
+ //conf.weather
+ conf.weather = {
+ prefixUrl: "<%$body.weather.prefixUrl%>",
+ country: "<%$country%>",
+ defaultCity: "<%$body.weather.accuDefaultCity%>",
+ smallIconPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/weather/weather_icon_small",
+ bigIconPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/weather/weather_icon_big",
+ isHeaderTest: "<%$body.headerTest.widget%>",
+ testSmallIcon: "<%$body.headerTest.weather.smallIconPath%>",
+ testBigIcon: "<%$body.headerTest.weather.bigIconPath%>",
+ testDefaultIcon: "<%$body.headerTest.weather.defaultIcon%>",
+ testWidth: "<%$body.headerTest.weather.width%>",
+ dateFormat: "<%$body.weather.dateFormat%>",
+ connector: "<%$body.weather.connector%>",
+ humidity: "<%$body.weather.humidity%>",
+ remindSwitch: "<%$body.weather.remindSwitch%>",
+ userFrom: "<%$body.weather.userFrom%>",
+ testUserFrom:"<%$body.headerTest.weather.testUserFrom%>",
+ dataLength: 5,
+ dataRef: function(data) {
+ return data;
+ },
+ tips: {
+ "click": '<%$body.weather.clickText%>',
+ "loading": '<%$body.weather.loadingText%>',
+ "loadError": '<%$body.weather.loadError%>',
+ "nojs": '<%$body.weather.noJS%>',
+ "nocookie": '<%$body.weather.noCookie%>'
+ },
+ dataGroup: {
+ "noScript": '<%$body.weather.noScript%>',
+ "selectCity": '<%$body.weather.selectCity%>',
+ "area": '<%$body.weather.area%>',
+ "city": '<%$body.weather.city%>',
+ "okBtn": '<%$body.weather.okBtn%>',
+ "cancelBtn": '<%$body.weather.cancelBtn%>',
+ "moreDays": '<%$body.weather.moreDays%>'
+ },
+ infoFromText: "<%$body.weather.infoFromText%>",
+ tempHtoL:"<%$body.weather.tempHtoL%>",
+ tempConcat:"<%$body.weather.tempConcat%>",
+ tempUnit:"<%$body.weather.tempUnit%>"
+ };
+<%/script%>
+<%widget name="common:widget/header-flat/weather/`$sysInfo.country`/`$sysInfo.country`.tpl" country=$sysInfo.country%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account-test/account-test-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account-test/account-test-async.js
new file mode 100755
index 000000000..68054cfd6
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account-test/account-test-async.js
@@ -0,0 +1,300 @@
+String.prototype.replaceTpl = function (o){
+ return this.replace(/#\{([^}]*)\}/gm,function(v,k){return v=o[k]||""})
+};
+
+var $ = require("common:widget/ui/jquery/jquery.js"),
+ helper = require("common:widget/ui/helper/helper.js"),
+ UT = require("common:widget/ui/ut/ut.js");
+
+/**
+ * loginCtroller代表初始化。在index.html页面333行。
+ */
+! function(WIN, conf) {
+ var wrap = $("#accountWrap"),
+ dropDwon = $(".account-dropdown_wrap"),
+ login = $(".account_login-tip"),
+ logout = $(".account_logout-tip"),
+ elName = logout.find(".account_logout_name"),
+ elMail = logout.find(".account_logout_email"),
+ elImg = logout.find("img"),
+ elLogout = logout.find(".account_logout_btn"),
+ mask = wrap.find(".account_trig"),
+ dir = conf.dir,
+ headImgUrl = conf.commonLogin.defauUrl;
+
+ var conf = conf.commonLogin,
+ self = WIN.loginCtroller = {
+ /**
+ * verify user login status
+ * 2 ==> unlogin | 1 ==> already login
+ * vertify:2 ==>代表“没有登录”的状态,vertify:1 ==>代表“登录”的状态
+ * uid ==> 用户唯一标识
+ * loginUrl ==> 配置的参数,代表向服务器端发送的请求,参数,这里有一些参数需要转换编码,目前还没有弄懂参数的编码转换的含义
+ */
+ verify : 2,
+ uid : 0,
+ loginUrl: conf.hao123LoginUrl.replaceTpl({
+ idc: conf.idcMap[conf.countryCode],
+ country: conf.countryCode,
+ level: conf.level
+ }),
+
+ // type : 1.代表登录状态,并且请求的数据data存在的情况
+ // type :2.代表默认状态,没有登录成功
+ // 最后的self.verify代表渲染页面之后将登录状态修改为当前值,type :1为已经登录,2:为未登录
+ render: function(type, data) {
+ var img = new Image(),
+ imgUrl = "";
+
+ if (type == 1 && data) {
+
+ login.hide();
+ elName.html(data.uname);
+ //调整email的换行显示策略
+ var emailContent = data.email;
+ var emailArray = emailContent.split("@");
+ if (emailContent.length > 17 && emailContent.indexOf("@") < 15) {
+ emailContent = emailArray[0] + " @" + emailArray[1];
+ }
+ elMail.html(emailContent);
+
+ self.uid = data.uid;
+ self.bindid = data.bindid;
+ imgUrl = helper.replaceTpl(headImgUrl, {
+ id: data.bindid
+ });
+ img.src = imgUrl;
+ setTimeout( function() {
+ elImg.attr("src", imgUrl);
+ if($("#headPic").length > 0) {
+ $("#headPic").attr("src", imgUrl);
+ } else {
+ mask.removeClass("account_title").html(" ");
+ }
+ wrap.addClass("account-login_suc");
+ }, 500);
+
+ } else {
+ if (/(png|gif|jpg|jpeg)/i.test(conf.defauImg)) {
+ mask.removeClass("account_title").html(" ");
+ } else {
+ mask.addClass("account_title").html(conf.defauImg);
+ }
+ wrap.removeClass("account-login_suc");
+ elLogout.attr("href", helper.replaceTpl(conf.logoutUrl, {
+ idc: encodeURIComponent(conf.idcMap[conf.countryCode]),
+ "gotourl": encodeURIComponent(document.location.href)
+ }));
+ }
+
+ // update status when user login.
+ self.verify = type;
+ },
+ /**
+ * 检查登录的状态
+ * Check user's status about wheather they have been login.
+ * @param url ==> target url;
+ * success ==> excute something when finish
+ * error ==> when login failure
+ * (1)obj为传入的对象值
+ * (2)ajax发送请求,cache:false;
+ * (3)url:请求地址,转码后的地址
+ * (4)success:成功之后要处理的事情
+ * (5)error:失败后的信息提示
+ */
+ checkStatus: function(obj) {
+ obj = obj || {};
+ $.ajax({
+ cache: false,
+ url: helper.replaceTpl(conf.checkLoginUrl, {
+ countryCode: encodeURIComponent(conf.countryCode)
+ }),
+ success: function(data) {
+ data = eval("(" + data + ")");
+ if(data && data.status == 1 && obj.success) {
+ // record facebook id
+ data.bindid && $.cookie("__FBID", data.bindid, {
+ expires: 10*365,
+ path: '/'
+ });
+ obj.success(data);
+ }
+ else obj.error && obj.error();
+ },
+ error: function() {
+ obj.error && obj.error();
+ }
+ });
+ },
+
+ /*
+
+ loginCtroller.fire(url,width,height);
+ login layout fold ==> loginCtroller.fire.call(jQuery("#fBook")[0]);
+ params:
+
+ url, width, height
+ */
+ fire: function(url, width, height) {
+ if (self.verify == 1) {
+
+ return self.verify;
+ }
+
+ // UT.send({
+ // "type" : "click",
+ // "position" : "login",
+ // "sort" : "login",
+ // "modId" : "account"
+ // });
+ document.domain = "hao123.com";
+
+ var w = width || conf.iWidth,
+ h = height || conf.iHeight;
+
+ WIN.open(url || self.loginUrl, "newwindow", "height=" + h + ",innerHeight=" + h + ",width=" + w + ",innerWidth=" + w + ",top=" + (WIN.screen.availHeight - 30 - h) / 2 + ",left=" + (WIN.screen.availWidth - 30 - w) / 2 + ",toolbar=no,menubar=no,scrollbars=auto,resizeable=no,location=no,status=no");
+ },
+ /**
+ * 为联合登录执行的操作
+ * @param {[array]} data [需要处理的联合登录url列表]
+ * 登录成功后,从数据中得到需要处理的联合登录url的列表,遍历列表,对每个url填入联合登录所需的参数(参数如下,值从cookie中取),然后请求url,触发后端在其域下种下相应cookie
+ * (1)type: [facebook | twitter | google | yahoo]
+ * (2)uss: urlencode之后的第三方的access_token
+ * (3)bduss: 百度的token
+ * (4)level: 权限级别,业务自己的level,顶部为1,侧边栏为2
+ * (5)thid: 用户在第三方的唯一id,非必填
+ */
+ unitedLogin: function(data){
+ var suffix = "?type=#{type}&uss=#{uss}&bduss=#{bduss}&level=#{level}&thid=#{thid}",
+ imgList = [];
+ $.each(data.loginurl, function(i,v){
+ imgList[i] = new Image();
+ imgList[i].src = helper.replaceTpl(v+suffix, {
+ type: $.cookie("LOGINTYPE") || "",
+ uss: $.cookie("USS") || "",
+ bduss: $.cookie("BDUSS") || "",
+ level: $.cookie("LEVEL") || "",
+ thid: $.cookie("THIRDID") || ""
+ });
+ });
+ },
+ /**
+ * 初始化执行的操作
+ * @param {[type]} data [description]
+ * @return {[type]} [description]
+ * (1)hao123LoginCallback:回调函数:不错在data或者未登录的状态时要执行的事情==>弹窗
+ * 如果成功,执行“统计”请求;并且渲染页面
+ * (2)绑定点击事件:在整个按钮点击的情况下,首先,判断登录状态(“1”为登录,“2”为未登录)
+ * 登录状态下:给最外层div添加样式“mod-login--unfold”(这个样式在login_mod.css文件里), 做的操作就是将div展开,并且将里面的(图片,姓名,邮箱,lougout按钮)样式切换到大图状态。
+ * (3)第二种情况 ==>未登录。首先,发送统计请求,再执行window.open方法,打开登录页面的窗口-> 登录
+ * (4)给body绑定事件:移除大图下面所有效果,切换为小图状态。
+ * (5)给logout标签绑定“统计”事件。
+ * (6)最后一步调用“checkStatus”方法,如果成功的话,渲染页面
+ */
+ init: function(data) {
+
+ //self.render(1,data);
+ // 1. reg global callback
+ WIN.hao123LoginCallback = function(data) {
+ if (!data || data.status != 1) {
+ return alert(conf.txtErrorMsg);
+ }
+ // record facebook id
+ data.bindid && $.cookie("__FBID", data.bindid, {
+ expires: 10*365,
+ path: '/'
+ });
+
+ UT.send({
+ "type" : "access",
+ "position" : "login"
+ });
+ self.render(data.status, data);
+ Gl.history && Gl.history.get(); //Get the sites list again for history widget
+ Gl.notepad && Gl.notepad.initNotes(); // intialize notepad while available
+ Gl.hotsiteFB && Gl.hotsiteFB.start();
+ Gl.loginPopup && Gl.loginPopup.remove(); //close login popup
+ $(WIN).trigger("dailySign.login"); // daily sign
+
+ // united login for tieba .etc
+ data.loginurl && self.unitedLogin(data);
+
+ };
+
+ var isInsert = false;
+
+ // 2. bind button event
+ login.on("click", function() {
+ if(self.verify != 1) {
+ UT.send({
+ "type" : "click",
+ "ac" : "b",
+ "position" : "login",
+ "sort" : "login",
+ "modId" : "account"
+ });
+ }
+ self.fire.call(this);
+ });
+
+ mask.on("click", function() {
+ if(wrap.hasClass("account-login_suc")) {
+
+ } else {
+ if(self.verify != 1) {
+ UT.send({
+ "type" : "click",
+ "ac" : "b",
+ "position" : "login",
+ "sort" : "login",
+ "modId" : "account"
+ });
+ }
+ self.fire.call(this);
+ }
+ });
+ wrap.hover(function() {
+ if(wrap.hasClass("account-login_suc")) {
+ login.hide();
+ logout.show();
+ } else {
+ login.css(dir == 'ltr' ? 'right' : 'left', (parseInt(mask.outerWidth() / 2 - 19, 10)) + 'px');
+ login.show();
+ logout.hide();
+ }
+ dropDwon.show();
+ mask.addClass("module-mask");
+ UT.send({
+ modId: "msgbox",
+ type: "others",
+ sort: "hover",
+ position: "accounticon"
+ });
+ }, function() {
+ dropDwon.hide();
+ mask.removeClass("module-mask");
+ });
+
+
+ elLogout.on("click", function() {
+ UT.send({
+ "type" : "click",
+ "position": "login",
+ "sort" : "logout",
+ "modId" : "account"
+ });
+ });
+ // 3. check status
+ self.checkStatus({
+ success: function(data) {
+ self.render(1, data);
+ },
+ error: function() {
+ // alert("error")
+ }
+ });
+ // 4. init render
+ self.render(2);
+ }
+ };
+}(window, conf);
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account-test/account-test.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account-test/account-test.tpl
new file mode 100755
index 000000000..17679b6db
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account-test/account-test.tpl
@@ -0,0 +1,104 @@
+<%style%>
+<%if $head.dir=='ltr'%>
+@import url('/widget/header/account-test/ltr-s/ltr.css?__inline');
+<%else%>
+@import url('/widget/header/account-test/rtl-s/rtl.css?__inline');
+<%/if%>
+<%/style%>
+
+<%* 声明对ltr/rtl的css依赖 *%>
+<%if $head.dir=='ltr'%>
+<%require name="common:widget/header/account-test/ltr-s/ltr.more.css"%>
+<%else%>
+<%require name="common:widget/header/account-test/rtl-s/rtl.more.css"%>
+<%/if%>
+
+
+
+
+
+
+ <%widget name="common:widget/header/message/message.tpl"%>
+
+
+
<%$body.commonLogin.txtDefaultBtn%>
+
+
+
+
+
+
+
+
+
+<%script%>
+window.conf || (window.conf = {});
+ <%*
+ /**
+ * Facebook页面登录退出的配置信息(可供PM使用)
+ * conf.commonLogin:入口。
+ * 信息:(1)iWidth,iHeight:弹出窗口宽高。
+ * (2)userip: 登录时的参数信息(可配)。
+ * (3)jumpUrl:登录时的参数信息(可配)。
+ * (4)loginUrl:登录时的参数信息(可配)。
+ * (5)checkLoginUrl:Ajax请求地址。
+ * (6)logoutUrl:退出时请求的URL地址,刷新页面。
+ * (7)domainName:各国机房服务器地址(优先选择的地址)。
+ * (8)txtDefaultBtn:默认按钮文字信息(可配)。
+ * (9)txtErrorMsg:错误状态提示信息(可配)。
+ * (10)level:权限级别(可配)。
+ */
+ *%>
+
+ conf.commonLogin = {
+ iWidth : <%$body.commonLogin.iWidth%>,
+ iHeight : <%$body.commonLogin.iHeight%>,
+ countryCode: conf.country,
+
+ <%if !empty($sysInfo.userip)%>
+ userip: "<%$sysInfo.userip%>",
+ <%else%>
+ userip: "sdfdslgksdlgk",
+ <%/if%>
+
+ loginCallbackName: "<%$body.commonLogin.loginCallbackName%>",
+
+ jumpUrl : "<%$body.commonLogin.jumpUrl%>",
+ hao123LoginUrl: "<%$body.commonLogin.hao123LoginUrl%>",
+ checkLoginUrl : "<%$body.commonLogin.checkLoginUrl%>",
+ logoutUrl : "<%$body.commonLogin.logoutUrl%>",
+ domainName : <%json_encode($body.commonLogin.domainName)%>,
+ txtErrorMsg : "<%$body.commonLogin.txtErrorMsg%>",
+ idcMap : <%json_encode($body.commonLogin.idcMap)%>,
+ level : "<%$body.commonLogin.level%>",
+ message : "<%$body.commonLogin.message%>",
+ infoMsg : "<%$body.commonLogin.infoMessage%>",
+ defauImg : "<%$body.headerTest.accountDefaultImg%>",
+ defauUrl : "<%$body.headerTest.accountUrl%>"
+ };
+
+require.async(["common:widget/ui/jquery/jquery.js", "common:widget/header/account-test/account-test-async.js"], function ($) {
+ // init
+ $(function() {
+ if(window.loginCtroller) {
+ loginCtroller.init();
+ loginCtroller.isInited = true; // mark if init
+ }
+ });
+});
+
+var accountTip = conf.commonLogin.defauImg;
+require.async("common:widget/ui/jquery/jquery.js", function ($) {
+ if(/(png|gif|jpg|jpeg)/i.test(accountTip)) {
+ $(".account_trig").removeClass("account_title").html(" ");
+ } else {
+ $(".account_trig").addClass("account_title").html(accountTip);
+ }
+});
+<%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account-test/img/bg-account.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account-test/img/bg-account.png
new file mode 100755
index 000000000..5876a043b
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account-test/img/bg-account.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account-test/img/bg-init.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account-test/img/bg-init.png
new file mode 100755
index 000000000..aecd627e5
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account-test/img/bg-init.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account-test/img/btn-facebook-bg.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account-test/img/btn-facebook-bg.png
new file mode 100755
index 000000000..37aa30806
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account-test/img/btn-facebook-bg.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account-test/img/btn-facebook-logo.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account-test/img/btn-facebook-logo.png
new file mode 100755
index 000000000..18ba2e79e
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account-test/img/btn-facebook-logo.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account-test/img/login.gif b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account-test/img/login.gif
new file mode 100755
index 000000000..9e26c6716
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account-test/img/login.gif differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account-test/ltr-s/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account-test/ltr-s/ltr.css
new file mode 100755
index 000000000..32a86f35f
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account-test/ltr-s/ltr.css
@@ -0,0 +1,3 @@
+.account_wrap {
+ visibility: hidden;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account-test/ltr-s/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account-test/ltr-s/ltr.more.css
new file mode 100755
index 000000000..d4c813a83
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account-test/ltr-s/ltr.more.css
@@ -0,0 +1,158 @@
+/*消息盒子的寄生于account,修改样式时麻烦留意一下*/
+.account_wrap {
+ float: right;
+ position: relative;
+ max-width: 170px;
+}
+.account_trig {
+ padding: 0 10px;
+ height: 50px;
+ width: 30px;
+ overflow: hidden;
+ cursor: pointer;
+ text-align: center;
+ vertical-align: middle;
+ position: relative;
+ display: table-cell;
+ *display: block;
+}
+.account_title{
+ width: auto;
+ max-width: 150px;
+ line-height: 50px;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ display: block;
+ color: rgba(255,255,255, 0.5);
+}
+.account_login-tip {
+ background: url("../img/btn-facebook-bg.png?__sprite") repeat-x;
+ border: 1px solid #456BB6;
+ -webkit-border-radius: 2px;
+ -moz-border-radius: 2px;
+ border-radius: 2px;
+ cursor: pointer;
+}
+.login-tip_con {
+ padding-left: 17px;
+ color: #ffffff;
+ text-align: center;
+ height: 29px;
+ line-height: 29px;
+ background: url("../img/btn-facebook-logo.png?__sprite") no-repeat;
+}
+.account-loginfo_wrap {
+ width: 220px;
+ word-wrap: break-word;
+ overflow: hidden;
+ padding: 20px 30px;
+ position: relative;
+ right: 0;
+ top: 0;
+ background-color: #D6F8EF;
+}
+.account-loginfo_wrap img {
+ width: 90px;
+ height: 90px;
+ margin-right: 16px;
+ margin-top: 4px;
+ float: left;
+ border-radius: 45px;
+ -webkit-border-radius: 45px;
+ -moz-border-radius: 45px;
+ -o-border-radius: 45px;
+ -ms-border-radius: 45px;
+ border: 2px solid #00AF74;
+}
+.account_logout_content {
+ float: left;
+ padding: 10px 0;
+ width: 106px;
+}
+.account_logout_name {
+ color: #000000;
+ line-height: 16px;
+ font-size: 13px;
+ margin-bottom: 4px;
+ word-wrap: break-word;
+ overflow: hidden;
+}
+.account_logout_email {
+ color: #848D8A;
+ line-height: 16px;
+ font-size: 12px;
+ margin-bottom: 8px;
+ word-wrap: break-word;
+ overflow: hidden;
+}
+.account_logout_btn {
+ white-space: nowrap;
+ display: inline-block;
+ width: 94px;
+ height: 28px;
+ text-align: center;
+ line-height: 28px;
+ background-color: #00AF74;
+ color: #FFFFFF;
+ font-size: 13px;
+ overflow: hidden;
+ border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -moz-border-radius: 2px;
+ -o-border-radius: 2px;
+ -ms-border-radius: 2px;
+}
+.account-login_suc .account_trig img {
+ width: 26px;
+ height: 26px;
+ cursor: default;
+ border-radius: 13px;
+ -webkit-border-radius: 13px;
+ -moz-border-radius: 13px;
+ -o-border-radius: 13px;
+ -ms-border-radius: 13px;
+ box-shadow: -2px 0 3px #ffffff,0 -2px 3px #ffffff,0 2px 3px #ffffff,2px 0 3px #ffffff;
+ -webkit-box-shadow: -2px 0 3px #ffffff,0 -2px 3px #ffffff,0 2px 3px #ffffff,2px 0 3px #ffffff;
+ -moz-box-shadow: -2px 0 3px #ffffff,0 -2px 3px #ffffff,0 2px 3px #ffffff,2px 0 3px #ffffff;
+ -o-box-shadow: -2px 0 3px #ffffff,0 -2px 3px #ffffff,0 2px 3px #ffffff,2px 0 3px #ffffff;
+ -ms-box-shadow: -2px 0 3px #ffffff,0 -2px 3px #ffffff,0 2px 3px #ffffff,2px 0 3px #ffffff;
+}
+.account-dropdown_wrap{
+ position: absolute;
+ right: 0; top: 50px;
+ display: none;border: 1px solid #BEE2D6;
+ box-shadow: 2px 2px 2px #DEDEDE,-2px 0 2px #DEDEDE;
+ border-top: 0;
+}
+.account_arrow {
+ top: -12px;
+ right: 18px;
+ z-index: 2;
+ position: absolute;
+ height: 0;
+ width: 0;
+ border: 6px dashed transparent;
+ border-bottom: 6px solid #F0FFFC;
+}
+
+.header-fixed .account-dropdown_wrap{top: 30px;}
+.header-fixed-up .account-dropdown_wrap{top: 40px;}
+
+/*
+.body-theme_2 .account-dropdown_wrap{border-color: #d4e0eb;}
+.body-theme_2 .account-loginfo_wrap {border-color: #d4e0eb;background-color: #D3E5F6;}
+.body-theme_2 .account-loginfo_wrap img {border-color: #1187F6;}
+.body-theme_2 .account_logout_btn {background-color: #1187F6;}
+.body-theme_2 .account_arrow {border-bottom-color: #d4e0eb;}
+
+.body-theme_3 .account-dropdown_wrap{border-color: #ecdfe1;}
+.body-theme_3 .account-loginfo_wrap {border-color: #ecdfe1;background-color: #FCE7EA;}
+.body-theme_3 .account-loginfo_wrap img {border-color: #FC91A3;}
+.body-theme_3 .account_logout_btn {background-color: #FC91A3;}
+.body-theme_3 .account_arrow {border-bottom-color: #ecdfe1;}
+*/
+
+body .account_wrap {
+ visibility: visible;
+ visibility: visible !important;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account-test/rtl-s/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account-test/rtl-s/rtl.css
new file mode 100755
index 000000000..32a86f35f
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account-test/rtl-s/rtl.css
@@ -0,0 +1,3 @@
+.account_wrap {
+ visibility: hidden;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account-test/rtl-s/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account-test/rtl-s/rtl.more.css
new file mode 100755
index 000000000..c1f8ad2de
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account-test/rtl-s/rtl.more.css
@@ -0,0 +1,142 @@
+.account_wrap {
+ float: left;
+ position: relative;
+ max-width: 170px;
+}
+.account_trig {
+ padding: 0 10px;
+ height: 50px;
+ width: 30px;
+ overflow: hidden;
+ cursor: pointer;
+ text-align: center;
+ vertical-align: middle;
+ position: relative;
+ display: table-cell;
+ *display: block;
+}
+.account_title {
+ width: auto;
+ max-width: 150px;
+ line-height: 50px;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ display: block;
+ color: rgba(255,255,255, 0.5);
+}
+.account_login-tip {
+ background: url("../img/btn-facebook-bg.png?__sprite") repeat-x;
+ border: 1px solid #456BB6;
+ -webkit-border-radius: 2px;
+ -moz-border-radius: 2px;
+ border-radius: 2px;
+ cursor: pointer;
+}
+.login-tip_con {
+ padding-right: 0px;
+ text-align: center;
+ height: 29px;
+ color: #ffffff;
+ line-height: 29px;
+ background: url("../img/btn-facebook-logo.png?__sprite") no-repeat;
+}
+.account-loginfo_wrap {
+ width: 220px;
+ word-wrap: break-word;
+ overflow: hidden;
+ padding: 20px 30px;
+ position: relative;
+ left: 0;
+ top: 0;
+ background-color: #D6F8EF;
+}
+.account-loginfo_wrap img {
+ width: 90px;
+ height: 90px;
+ margin-left: 16px;
+ margin-top: 4px;
+ float: right;
+ border-radius: 45px;
+ -webkit-border-radius: 45px;
+ -moz-border-radius: 45px;
+ -o-border-radius: 45px;
+ -ms-border-radius: 45px;
+ border: 2px solid #00AF74;
+}
+.account_logout_content {
+ float: right;
+ padding: 10px 0;
+ width: 106px;
+}
+.account_logout_name {
+ color: #000000;
+ line-height: 16px;
+ font-size: 13px;
+ margin-bottom: 4px;
+ word-wrap: break-word;
+ overflow: hidden;
+}
+.account_logout_email {
+ color: #848D8A;
+ line-height: 16px;
+ font-size: 12px;
+ margin-bottom: 8px;
+ word-wrap: break-word;
+ overflow: hidden;
+}
+.account_logout_btn {
+ white-space: nowrap;
+ display: inline-block;
+ width: 94px;
+ height: 28px;
+ text-align: center;
+ line-height: 28px;
+ background-color: #00AF74;
+ color: #FFFFFF;
+ font-size: 13px;
+ overflow: hidden;
+ border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -moz-border-radius: 2px;
+ -o-border-radius: 2px;
+ -ms-border-radius: 2px;
+}
+.account-login_suc .account_trig img {
+ width: 26px;
+ height: 26px;
+ cursor: default;
+ border-radius: 13px;
+ -webkit-border-radius: 13px;
+ -moz-border-radius: 13px;
+ -o-border-radius: 13px;
+ -ms-border-radius: 13px;
+ box-shadow: -2px 0 3px #ffffff,0 -2px 3px #ffffff,0 2px 3px #ffffff,2px 0 3px #ffffff;
+ -webkit-box-shadow: -2px 0 3px #ffffff,0 -2px 3px #ffffff,0 2px 3px #ffffff,2px 0 3px #ffffff;
+ -moz-box-shadow: -2px 0 3px #ffffff,0 -2px 3px #ffffff,0 2px 3px #ffffff,2px 0 3px #ffffff;
+ -o-box-shadow: -2px 0 3px #ffffff,0 -2px 3px #ffffff,0 2px 3px #ffffff,2px 0 3px #ffffff;
+ -ms-box-shadow: -2px 0 3px #ffffff,0 -2px 3px #ffffff,0 2px 3px #ffffff,2px 0 3px #ffffff;
+}
+
+.account-dropdown_wrap{ position: absolute; left: 0; top: 50px; display: none;border: 1px solid #BEE2D6;box-shadow: 2px 2px 2px #DEDEDE,-2px 0 2px #DEDEDE;border-top: 0;}
+.account_arrow { top: -12px;left: 18px; z-index: 2;position: absolute;height: 0;width: 0;border: 6px dashed transparent; border-bottom:6px solid #F0FFFC;}
+
+.header-fixed .account-dropdown_wrap{top: 30px;}
+.header-fixed-up .account-dropdown_wrap{top: 40px;}
+/*
+.body-theme_2 .account-dropdown_wrap{border-color: #d4e0eb;}
+.body-theme_2 .account-loginfo_wrap {border-color: #d4e0eb;background-color: #D3E5F6;}
+.body-theme_2 .account-loginfo_wrap img {border-color: #1187F6;}
+.body-theme_2 .account_logout_btn {background-color: #1187F6;}
+.body-theme_2 .account_arrow {border-bottom-color: #d4e0eb;}
+
+.body-theme_3 .account-dropdown_wrap{border-color: #ecdfe1;}
+.body-theme_3 .account-loginfo_wrap {border-color: #ecdfe1;background-color: #FCE7EA;}
+.body-theme_3 .account-loginfo_wrap img {border-color: #FC91A3;}
+.body-theme_3 .account_logout_btn {background-color: #FC91A3;}
+.body-theme_3 .account_arrow {border-bottom-color: #ecdfe1;}
+*/
+
+body .account_wrap {
+ visibility: visible;
+ visibility: visible !important;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account/account-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account/account-async.js
new file mode 100755
index 000000000..f42394d1d
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account/account-async.js
@@ -0,0 +1,235 @@
+String.prototype.replaceTpl = function (o){
+ return this.replace(/#\{([^}]*)\}/gm,function(v,k){return v=o[k]||""})
+};
+
+var $ = require("common:widget/ui/jquery/jquery.js"),
+ helper = require("common:widget/ui/helper/helper.js"),
+ UT = require("common:widget/ui/ut/ut.js");
+
+/**
+ * loginCtroller代表初始化。在index.html页面333行。
+ */
+!function(WIN, conf) {
+ var conf = conf.commonLogin,
+ self = WIN.loginCtroller = {
+ /**
+ * verify user login status
+ * 2 ==> unlogin | 1 ==> already login
+ * vertify:2 ==>代表“没有登录”的状态,vertify:1 ==>代表“登录”的状态
+ * uid ==> 用户唯一标识
+ * bgUrl ==> 代表图片地址
+ * loginUrl ==> 配置的参数,代表向服务器端发送的请求,参数,这里有一些参数需要转换编码,目前还没有弄懂参数的编码转换的含义
+ * contentTpl :插入的数据
+ */
+ verify: 2,
+ uid: 0,
+ bgUrl: "",
+ loginUrl: conf.hao123LoginUrl.replaceTpl({
+ idc: conf.idcMap[conf.countryCode],
+ country: conf.countryCode,
+ level: conf.level
+ }),
+ /**
+ * [ description]
+ * @return {[type]} [description]
+ */
+
+ // type : 1.代表登录状态,并且请求的数据data存在的情况
+ // type :2. login 代表默认状态,没有登录成功
+ // 最后的self.verify代表渲染页面之后将登录状态修改为当前值,type :1为已经登录,2:为未登录
+ render: function(type, data) {
+ var parent = $("#fBook"),
+ elName = parent.find(".mod-login_name"),
+ elMail = parent.find(".mod-login_email"),
+ elImg = parent.find(".mod-login_img"),
+ elLogout = parent.find(".mod-login_logout a");
+
+ if(type == 1 && data) {
+ elName.html(data.uname);
+ elMail.html(data.email);
+ self.bgUrl = elImg.attr("src");
+ elImg.attr("src",data.pic);
+ // update status when user login.
+
+ parent.addClass("mod-login--on");
+ // update uid
+ self.uid = data.uid;
+ }else{
+ self.bgUrl && elImg.attr("src", self.bgUrl);
+ elName.html(conf.txtDefaultBtn);
+ elLogout.attr("href", conf.logoutUrl.replaceTpl({
+ idc: encodeURIComponent(conf.idcMap[conf.countryCode]),
+ "gotourl": encodeURIComponent(document.location.href)}));
+ }
+
+ // update status when user login.
+ self.verify = type;
+ },
+ /**
+ * 检查登录的状态
+ * Check user's status about wheather they have been login.
+ * @param url ==> target url;
+ * success ==> excute something when finish
+ * error ==> when login failure
+ * (1)obj为传入的对象值
+ * (2)ajax发送请求,cache:false;
+ * (3)url:请求地址,转码后的地址
+ * (4)success:成功之后要处理的事情
+ * (5)error:失败后的信息提示
+ */
+ checkStatus: function(obj) {
+ obj = obj || {};
+ $.ajax({
+ cache: false,
+ url: conf.checkLoginUrl.replaceTpl({
+ countryCode: encodeURIComponent(conf.countryCode)
+ }),
+ success: function(data) {
+ data = eval( "(" + data + ")" );
+ if(data && data.status == 1 && obj.success) {
+ // record facebook id
+ data.bindid && $.cookie("__FBID", data.bindid, {
+ expires: 10*365,
+ path: '/'
+ });
+ obj.success(data);
+ }
+ else obj.error && obj.error();
+ },
+ error: function() {
+ obj.error && obj.error();
+ }
+ });
+ },
+
+ /*
+
+ loginCtroller.fire(url,width,height);
+
+ login layout fold ==> loginCtroller.fire.call(jQuery("#fBook")[0]);
+
+ params:
+
+ url, width, height
+ */
+ fire: function(url, width, height) {
+ if(self.verify == 1) {
+ this === $("#fBook")[0] && $("#fBook").addClass("mod-login--unfold");
+ return self.verify;
+ }
+
+ // var timer = new Date();
+ //UT && UT.send({"type": "click","position": "login","sort": "login","modId":"account"});
+ document.domain = "hao123.com";
+
+ var w = width || conf.iWidth,
+ h = height || conf.iHeight;
+
+ WIN.open(url || self.loginUrl, "newwindow", "height="+ h +",innerHeight="+ h +",width="+ w +",innerWidth="+ w +",top="+(WIN.screen.availHeight-30- h )/2+",left="+(WIN.screen.availWidth-30- w )/2+",toolbar=no,menubar=no,scrollbars=auto,resizeable=no,location=no,status=no");
+ },
+ /**
+ * 为联合登录执行的操作
+ * @param {[array]} data [需要处理的联合登录url列表]
+ * 登录成功后,从数据中得到需要处理的联合登录url的列表,遍历列表,对每个url填入联合登录所需的参数(参数如下,值从cookie中取),然后请求url,触发后端在其域下种下相应cookie
+ * (1)type: [facebook | twitter | google | yahoo]
+ * (2)uss: urlencode之后的第三方的access_token
+ * (3)bduss: 百度的token
+ * (4)level: 权限级别,业务自己的level,顶部为1,侧边栏为2
+ * (5)thid: 用户在第三方的唯一id,非必填
+ */
+ unitedLogin: function(data){
+ var suffix = "?type=#{type}&uss=#{uss}&bduss=#{bduss}&level=#{level}&thid=#{thid}",
+ imgList = [];
+ $.each(data.loginurl, function(i,v){
+ imgList[i] = new Image();
+ imgList[i].src = helper.replaceTpl(v+suffix, {
+ type: $.cookie("LOGINTYPE") || "",
+ uss: $.cookie("USS") || "",
+ bduss: $.cookie("BDUSS") || "",
+ level: $.cookie("LEVEL") || "",
+ thid: $.cookie("THIRDID") || ""
+ });
+ });
+ },
+ /**
+ /**
+ * 初始化执行的操作
+ * @param {[type]} data [description]
+ * @return {[type]} [description]
+ * (1)hao123LoginCallback:回调函数:不错在data或者未登录的状态时要执行的事情==>弹窗
+ * 如果成功,执行“统计”请求;并且渲染页面
+ * (2)绑定点击事件:在整个按钮点击的情况下,首先,判断登录状态(“1”为登录,“2”为未登录)
+ * 登录状态下:给最外层div添加样式“mod-login--unfold”(这个样式在login_mod.css文件里), 做的操作就是将div展开,并且将里面的(图片,姓名,邮箱,lougout按钮)样式切换到大图状态。
+ * (3)第二种情况 ==>未登录。首先,发送统计请求,再执行window.open方法,打开登录页面的窗口-> 登录
+ * (4)给body绑定事件:移除大图下面所有效果,切换为小图状态。
+ * (5)给logout标签绑定“统计”事件。
+ * (6)最后一步调用“checkStatus”方法,如果成功的话,渲染页面
+ */
+ init: function(data) {
+
+ //self.render(1,data);
+ // 1. reg global callback
+ WIN.hao123LoginCallback = function(data) {
+ //console.log(data);
+ if(!data || data.status != 1) {
+ //$(".layoutBg").hide(); 优化代码
+ //$(".login_div").hide();
+ return alert(conf.txtErrorMsg);
+ }
+ // record facebook id
+ data.bindid && $.cookie("__FBID", data.bindid, {
+ expires: 10*365,
+ path: '/'
+ });
+
+ UT && UT.send({"type": "access", "position": "login"});
+ self.render(data.status, data);
+ //$(".layoutBg").hide(); 优化代码
+ //$(".login_div").hide();
+ Gl.history && Gl.history.get(); //Get the sites list again for history widget
+ Gl.notepad && Gl.notepad.initNotes(); // intialize notepad while available
+ Gl.hotsiteFB && Gl.hotsiteFB.start();
+ Gl.loginPopup && Gl.loginPopup.remove(); //close login popup
+
+ // united login for tieba .etc
+ data.loginurl && self.unitedLogin(data);
+ }
+
+ var isInsert = false;
+ // 2. bind button event
+ $("#fBook").on("click", function() {
+ if(self.verify != 1) {
+ UT && UT.send({
+ "type": "click",
+ "ac": "b",
+ "position": "login",
+ "sort": "login",
+ "modId": "account"
+ });
+ }
+ self.fire.call(this);
+ });
+
+ $("body").on("click",function(e){
+ if(!/mod-login/.test(e.target.className)){
+ $("#fBook").removeClass("mod-login--unfold");
+ }
+ });
+
+ $(".mod-login_logout a").on("click", function() {
+ UT && UT.send({"type": "click","position":"login","sort":"logout","modId":"account"});
+ });
+ // 3. check status
+ self.checkStatus({
+ success: function(data) {
+ self.render(1, data);
+ },
+ error: function() {
+ // alert("error")
+ }
+ });
+ // 4. init render
+ self.render(2);
+ }
+ }
+}(window, conf);
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account/account.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account/account.tpl
new file mode 100755
index 000000000..e7d348356
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account/account.tpl
@@ -0,0 +1,90 @@
+<%style%>
+<%if $head.dir=='ltr'%>
+@import url('/widget/header/account/ltr/ltr.css?__inline');
+<%else%>
+@import url('/widget/header/account/rtl/rtl.css?__inline');
+<%/if%>
+<%/style%>
+
+<%* 声明对ltr/rtl的css依赖 *%>
+<%if $head.dir=='ltr'%> <%require name="common:widget/header/account/ltr/ltr.more.css"%> <%else%> <%require name="common:widget/header/account/rtl/rtl.more.css"%> <%/if%>
+ style="visibility:hidden"<%/if%> log-mod="account">
+
+
+
+
+
<%$body.commonLogin.txtDefaultBtn%>
+
+
+
+
+<%script%>
+window.conf || (window.conf = {});
+ <%*
+ /**
+ * common login configuration
+ * @type {Object}
+ * @author Thomas_曹奋泽
+ * @update 2013-05-23 0:31
+ * Facebook页面登录退出的配置信息(可供PM使用)
+ * conf.commonLogin:入口。
+ * 信息:(1)iWidth,iHeight:弹出窗口宽高。
+ * (2)userip: 登录时的参数信息(可配)。
+ * (3)jumpUrl:登录时的参数信息(可配)。
+ * (4)loginUrl:登录时的参数信息(可配)。
+ * (5)checkLoginUrl:Ajax请求地址。
+ * (6)logoutUrl:退出时请求的URL地址,刷新页面。
+ * (7)domainName:各国机房服务器地址(优先选择的地址)。
+ * (8)txtDefaultBtn:默认按钮文字信息(可配)。
+ * (9)txtErrorMsg:错误状态提示信息(可配)。
+ * (10)level:权限级别(可配)。
+ */
+ *%>
+
+ conf.commonLogin = {
+ iWidth:<%$body.commonLogin.iWidth%>,
+ iHeight:<%$body.commonLogin.iHeight%>,
+ countryCode:conf.country,
+
+ <%if !empty($sysInfo.userip)%>
+ userip: "<%$sysInfo.userip%>",
+ <%else%>
+ userip: "sdfdslgksdlgk",
+ <%/if%>
+
+ loginCallbackName: "<%$body.commonLogin.loginCallbackName%>",
+
+ jumpUrl: "<%$body.commonLogin.jumpUrl%>",
+ hao123LoginUrl: "<%$body.commonLogin.hao123LoginUrl%>",
+ checkLoginUrl:"<%$body.commonLogin.checkLoginUrl%>",
+ logoutUrl:"<%$body.commonLogin.logoutUrl%>",
+ domainName: <%json_encode($body.commonLogin.domainName)%>,
+ txtDefaultBtn: "<%$body.commonLogin.txtDefaultBtn%>",
+ txtErrorMsg: "<%$body.commonLogin.txtErrorMsg%>",
+ idcMap: <%json_encode($body.commonLogin.idcMap)%>,
+ level: "<%$body.commonLogin.level%>",
+ message:"<%$body.commonLogin.message%>",
+ infoMsg:"<%$body.commonLogin.infoMessage%>"
+ };
+
+ require.async("common:widget/ui/jquery/jquery.js", function($) {
+ $(window).one("e_go.account", function () {
+ require.async("common:widget/header/account/account-async.js", function () {
+ // init
+ $(function() {
+ $("#fBook")[0] && $("#fBook").css("visibility") !== 'hidden' && window.loginCtroller && loginCtroller.init();
+ });
+ });
+ });
+
+ $(function () {
+ $(window).trigger("e_go.account");
+ });
+
+ $("#fBook").one("mouseenter", function () {
+ $(window).trigger("e_go.account");
+ });
+ });
+<%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account/img/bg-account.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account/img/bg-account.png
new file mode 100755
index 000000000..5876a043b
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account/img/bg-account.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account/img/login.gif b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account/img/login.gif
new file mode 100755
index 000000000..9e26c6716
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account/img/login.gif differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account/ltr/ltr.css
new file mode 100755
index 000000000..eb2911c6f
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account/ltr/ltr.css
@@ -0,0 +1 @@
+.mod-login{ display: none;}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account/ltr/ltr.more.css
new file mode 100755
index 000000000..39698c8e0
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account/ltr/ltr.more.css
@@ -0,0 +1,252 @@
+/**
+ * “默认”状态小图整体div的显示
+ */
+.mod-login{
+ height: 16px;
+ width: 170px;
+ background: url("../img/bg-account.png?__sprite") repeat-x;
+ margin-top: 2px;
+ margin-left: 2px;
+ float: right;
+ overflow: hidden;
+ position: absolute;
+ right:22px;
+ -webkit-border-radius: 2px;
+ -moz-border-radius: 2px;
+ border-radius: 2px;
+ cursor: pointer;
+ margin-bottom: 2px;
+ z-index: 3;
+ display: block !important;
+}
+/**
+ * ”默认状态小图的显示
+ */
+.mod-login_avatar{
+ width: 16px;
+ height: 12px;
+ margin-top: 2px;
+ float: left;
+ overflow: hidden;
+ border-right: 1px solid #a0b8d2;
+ position:relative;
+ overflow:hidden;
+}
+/**
+ * “默认”状态小图“body”区域的显示
+ */
+.mod-login_body{
+ background: #e0e7ee;
+ overflow: hidden;
+}
+/**
+ * “默认”状态小图“头像”的显示
+ */
+.mod-login_img{
+ width: auto;
+ height: auto;
+ float: left;
+ position:relative;
+ top:-132px;
+ left:2px;
+ margin-left: 2px;
+}
+/**
+ * “默认”状态小图“姓名”的显示
+ */
+.mod-login_name{
+ color:#456bb6;
+ text-align:center;
+ word-wrap: break-word;
+ margin-bottom: 4px;
+ height:10px;
+ font-size:12px;
+ margin-top: 1px;
+}
+/*------------more:------------*/
+
+/**
+ * “默认”状态大图“邮箱”的显示(默认为影藏)
+ */
+.mod-login_email{
+ margin-left: 10px;
+ color:#353535;
+ word-wrap:break-word;
+ height:30px;
+ font-size: 12px;
+}
+/**
+ * “默认”状态小图“退出按钮”的显示(默认为影藏)
+ */
+.mod-login_logout{
+ width: 60px;
+ height: 20px;
+ background: #bdd8ef;
+ text-align: center;
+ line-height: 20px;
+ right:5px;
+ border: 1px solid #a0b8d2;
+ position: absolute;
+ bottom: 5px;
+ display: none;
+ overflow: hidden;
+ padding: 0 3px;
+}
+.mod-login_logout a {
+ color: #3b5998;
+}
+/**
+ * 登录状态时整个div的显示
+ */
+.mod-login--on{
+ background: #e0e7ee;
+ border: 1px solid #009e69;
+}
+/**
+ * 登录状态时小图的显示
+ */
+.mod-login--on .mod-login_img{
+ width: 12px;
+ height: 12px;
+ position: static;
+ margin-left: 2px;
+}
+/**
+ * 登录状态时“展开”显示大图后真个div的显示
+ */
+body .mod-login--unfold{
+ height: 92px;
+ cursor: default;
+ background-image: none;
+}
+/**
+ * 登录状态“展开”显示大图后“头像”的显示
+ */
+.mod-login--unfold .mod-login_avatar{
+ width:40px;
+ height:40px;
+ margin-left:5px;
+ margin-top: 7px;
+ background-image: none;
+}
+/**
+ * 登录状态“展开”显示大图后“姓名”的显示
+ */
+.mod-login--unfold .mod-login_name{
+ margin-top: 10px;
+ margin-left: 10px;
+ text-align: left;
+ height: 15px;
+ overflow: hidden;
+ font-weight: bold;
+}
+/**
+ * 登录状态“展开”显示大图后“退出按钮”的显示
+ */
+.mod-login--unfold .mod-login_logout{
+ display: block;
+}
+/**
+ * 登录状态“展开”显示大图后“头像”的显示
+ */
+.mod-login--unfold .mod-login_img{
+ width: 40px;
+ height: 40px;
+}
+
+.layoutBg {
+ width: 100%;
+ height: 4250px;
+ display:none;
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 8888;
+ background: url(http://mat1.gtimg.com/www/images/qq2012/alphabg.png);
+}
+.login_div {
+ position: fixed;
+ /*width: 446px; */
+ height: 416px;
+ padding: 0px;
+ top: 50%;
+ left:50%;
+ margin: -164px 0px 0px -245px;
+ z-index: 9999;
+ visibility: hidden;
+ overflow:hidden;
+}
+.fake_pageheader{
+ background: #6d84b4;
+ color: #fff;
+ height:33px;
+ position:relative;
+ z-index:9999;
+}
+.homelink{
+ background: url(https://fbstatic-a.akamaihd.net/rsrc.php/v2/yd/r/Cou7n-nqK52.gif) no-repeat 10px 50%;
+ color: #fff;
+ margin: 0;
+ padding: 8px 10px 8px 30px;
+ font-size: 14px;
+ font-weight: bold;
+}
+.closeBtn {
+ float:right;
+ margin-right: 10px;
+ margin-top: 10px;
+ cursor:pointer;
+ font-weight: bold;
+}
+.cancelBtn{
+ width: 43px;
+ height: 22px;
+ font-weight: bold;
+ font-size: 14px;
+ border: 1px solid #ccc;
+ position: absolute;
+ top: 277px;
+ right: 5px;
+ cursor: pointer;
+}
+.fake_booklet{
+ position:relative;
+ z-index:99999
+}
+.fake_booklet_lv2{
+ height:277px;
+ background:white;
+}
+.fake_booklet_lv2_msg{
+ position:absolute;
+ width:440px;
+}
+.p_msg {
+ margin-top:50px;
+ text-align:center;
+ font-size: 14px;
+}
+.msg_img {
+ margin-left:45px;
+ margin-top:20px;
+}
+.fake_booklet_lv2_info{
+ width:410px;
+ /*height:50px;*/
+ border:1px solid #cccccc;
+ color:#909090;
+ background:#f2f2f2;
+ overflow:hidden;
+ margin: 20px auto;
+ margin-left:45px;
+}
+.info_msg {
+ position: relative;
+ margin: 10px;
+ display: inline-block;
+ line-height: 1.3;
+}
+.login_frame {
+ position:relative;
+ top:-33px;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account/rtl/rtl.css
new file mode 100755
index 000000000..eb2911c6f
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account/rtl/rtl.css
@@ -0,0 +1 @@
+.mod-login{ display: none;}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account/rtl/rtl.more.css
new file mode 100755
index 000000000..2899e4a5f
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/account/rtl/rtl.more.css
@@ -0,0 +1,260 @@
+/**
+ * “默认”状态小图整体div的显示
+ */
+.mod-login{
+ height: 16px;
+ background: url("../img/bg-account.png?__sprite") repeat-x;
+ margin-top: 2px;
+ overflow: hidden;
+ position: absolute;
+ -webkit-border-radius: 2px;
+ -moz-border-radius: 2px;
+ border-radius: 2px;
+ cursor: pointer;
+ margin-bottom: 2px;
+ margin-left:0;
+ margin-right: 2px;
+ float: right;
+ right: auto;
+ left: 22px;
+ width:169px;
+ display: block !important;
+ z-index: 3;
+}
+/**
+ * ”默认状态小图的显示
+ */
+.mod-login_avatar{
+ width: 16px;
+ height: 12px;
+ margin-top: 2px;
+ overflow: hidden;
+ overflow:hidden;
+ float: right;
+ border-left: 1px solid #a0b8d2;
+}
+/**
+ * “默认”状态小图“body”区域的显示
+ */
+.mod-login_body{
+ background: #e0e7ee;
+ overflow: hidden;
+}
+/**
+ * “默认”状态小图“头像”的显示
+ */
+.mod-login_img{
+ width: auto;
+ height: auto;
+ position:relative;
+ top:-132px;
+ left:2px;
+ float: right;
+ margin-right: -6px;
+}
+/**
+ * “默认”状态小图“姓名”的显示
+ */
+.mod-login_name{
+ color:#456bb6;
+ text-align:center;
+ word-wrap: break-word;
+ margin-bottom: 4px;
+ height:10px;
+ font-size:12px;
+}
+
+/*---------more:-----------*/
+
+/**
+ * “默认”状态大图“邮箱”的显示(默认为影藏)
+ */
+.mod-login_email{
+ margin-left: 5px;
+ color:#353535;
+ word-wrap:break-word;
+ height:30px;
+ font-size: 12px;
+}
+/**
+ * “默认”状态小图“退出按钮”的显示(默认为影藏)
+ */
+.mod-login_logout{
+ width: 60px;
+ height: 20px;
+ background: #bdd8ef;
+ text-align: center;
+ line-height: 20px;
+
+ border: 1px solid #a0b8d2;
+ position: absolute;
+ bottom: 5px;
+ display: none;
+ overflow: hidden;
+ padding: 0 3px;
+
+ left: 5px;
+}
+.mod-login_logout a {
+ color: #3b5998;
+}
+/**
+ * 登录状态时整个div的显示
+ */
+.mod-login--on{
+ background: #e0e7ee;
+ border: 1px solid #009e69;
+}
+/**
+ * 登录状态时小图的显示
+ */
+.mod-login--on .mod-login_img{
+ width: 12px;
+ height: 12px;
+ position: static;
+ margin-left: 2px;
+}
+/**
+ * 登录状态时“展开”显示大图后真个div的显示
+ */
+body .mod-login--unfold{
+ height: 92px;
+ cursor: default;
+ background-image: none;
+}
+/**
+ * 登录状态“展开”显示大图后“头像”的显示
+ */
+.mod-login--unfold .mod-login_avatar{
+ width:40px;
+ height:40px;
+ margin-top: 7px;
+ background-image: none;
+ margin-right:5px;
+}
+/**
+ * 登录状态“展开”显示大图后“姓名”的显示
+ */
+.mod-login--unfold .mod-login_name{
+ margin-top: 10px;
+ height: 15px;
+ overflow: hidden;
+ font-weight: bold;
+ margin-right: 10px;
+ text-align: right;
+}
+/**
+ * 登录状态“展开”显示大图后“退出按钮”的显示
+ */
+.mod-login--unfold .mod-login_logout{
+ display: block;
+}
+/**
+ * 登录状态“展开”显示大图后“头像”的显示
+ */
+.mod-login--unfold .mod-login_img{
+ width: 40px;
+ height: 40px;
+}
+.mod-login--on .mod-login_img{
+ margin-right: 2px;
+ margin-left: 0;
+}
+.layoutBg {
+ width: 100%;
+ height: 4250px;
+ display:none;
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 8888;
+ background: url(http://mat1.gtimg.com/www/images/qq2012/alphabg.png);
+}
+.login_div {
+ position: fixed;
+ /*width: 446px; */
+ height: 416px;
+ padding: 0px;
+ top: 50%;
+ left:50%;
+ margin: -164px 0px 0px -245px;
+ z-index: 9999;
+ visibility: hidden;
+ overflow:hidden;
+}
+.fake_pageheader{
+ background: #6d84b4;
+ color: #fff;
+ height:33px;
+ position:relative;
+ z-index:9999;
+}
+.homelink{
+ background: url(https://fbstatic-a.akamaihd.net/rsrc.php/v2/yd/r/Cou7n-nqK52.gif) no-repeat 10px 50%;
+ color: #fff;
+ margin: 0;
+ padding: 8px 10px 8px 30px;
+ font-size: 14px;
+ font-weight: bold;
+}
+.closeBtn {
+ float:right;
+ margin-right: 10px;
+ margin-top: 10px;
+ cursor:pointer;
+ font-weight: 33bold;
+}
+.cancelBtn{
+ width: 43px;
+ height: 22px;
+ font-weight: bold;
+ font-size: 14px;
+ border: 1px solid #ccc;
+ position: absolute;
+ top: 277px;
+ right: 5px;
+ cursor: pointer;
+}
+.fake_booklet{
+ position:relative;
+ z-index:99999
+}
+.fake_booklet_lv2{
+ height:277px;
+ background:white;
+}
+.fake_booklet_lv2_msg{
+ position:absolute;
+ width:440px;
+}
+.p_msg {
+ margin-top:50px;
+ text-align:center;
+ font-size: 14px;
+ margin-right:45px;
+}
+.msg_img {
+ position: relative;
+ left: -60px;
+ margin-top:20px;
+}
+.fake_booklet_lv2_info{
+ width:410px;
+ border:1px solid #cccccc;
+ color:#909090;
+ background:#f2f2f2;
+ overflow:hidden;
+ margin: 20px auto;
+ margin-right: 45px;
+}
+.info_msg {
+ position: relative;
+ margin: 10px;
+ display: inline-block;
+ line-height: 1.3;
+}
+.login_frame {
+ position:relative;
+ top:-33px;
+ float:left;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/add-fav-bar-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/add-fav-bar-async.js
new file mode 100755
index 000000000..353319a3c
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/add-fav-bar-async.js
@@ -0,0 +1,120 @@
+// Sethome & AddFav functional top bar
+var $ = require("common:widget/ui/jquery/jquery.js");
+var UT = require("common:widget/ui/ut/ut.js");
+require("common:widget/ui/jquery/widget/jquery.sethome/jquery.sethome.js");
+require("common:widget/ui/jquery/widget/jquery.addfav/jquery.addfav.js");
+
+window.Gl || (window.Gl = {});
+
+Gl.addFavBar = function (pageType) {
+ if (!conf.addFavBar) return;
+
+ var ua = navigator.userAgent,
+ _conf = conf.addFavBar,
+ container = $('#addFavBar'),
+
+ browser = /MSIE/.test(ua) ? "ie" : /Firefox/.test(ua) ?
+ "firefox" : /Chrome/.test(ua) ?
+ "chrome" : "other",
+
+ type = browser === "ie" ? _conf.ieType : browser === "firefox" ?
+ _conf.ffType : browser === "chrome" ?
+ _conf.chType : _conf.otherType,
+
+ init = function () {
+
+ //当PM将showbarTime从非0改为0时,重置cookie。需要排除为空的情况
+ if(parseInt(_conf.showbarTime) === 0){
+ $.cookie("Gh_b", 0);
+ }
+
+ // 原有cookie清空,原来的值不再使用,可能出现以前cookie失效,时间短,忽略
+ $.cookie("hidebar", null);
+
+ //cookie中存的都是字符串,!("0") == false,所以需要转换为数字
+ !parseInt($.cookie("Gh_b")) && type && setBar();
+ },
+
+ // Set the bar's behavior in different browser for current page
+ setBar = function () {
+ if (_conf.hideBar) return;
+
+ if( type === "addFav" ){
+ if( browser === "ie" ){
+ creatElement("addFav", _conf.addFav);
+ }else{
+ creatElement("addFav", _conf.addFavNoSupport);
+ $("#addFavBtn").hide();
+ }
+ }else{
+ creatElement(type || "download", _conf[type] || _conf.download);
+ }
+ },
+
+ // Create DOM element
+ creatElement = function (type, config) {
+ var inner = '';
+ container.append(inner);
+ // $("body").prepend(container);
+ bindEvent(type);
+ /MSIE 6.0/.test(ua) && container.show();
+ container.slideDown(_conf.slideSpeed);
+ },
+
+ // Bind event
+ bindEvent = function (type) {
+ var setHomeBtn = $("#setHomeBtn"),
+ addFavBtn = $("#addFavBtn"),
+ downloadBtn = $("#downloadBtn"),
+ close = $("#addFavClose");
+ setHomeBtn.on("click", function (e) {
+ e.preventDefault();
+ $(this).sethome();
+ hideBar();
+ });
+ addFavBtn.on("click", function (e) {
+ e.preventDefault();
+ $().addfav(conf.userbarBtn.addFavText);
+ hideBar();
+ });
+ downloadBtn.on("click", function (e) {
+ e.preventDefault();
+ window.open(_conf.download.url, "_blank");
+ hideBar();
+ });
+ close.on("click", function (e) {
+ e.preventDefault();
+ hideBar();
+ $("#kbd").length && $("#kbd").animate({top:"130px"},_conf.slideSpeed);
+ });
+ type === "addFav" && $(document).on("keydown", function (e) {
+ if(/Macintosh/.test(ua)) {
+ (e.metaKey && e.keyCode === 68) && hideBar();
+ } else {
+ (e.ctrlKey && e.keyCode === 68) && hideBar();
+ }
+ });
+
+ container.on("click", "a", function() {
+ UT.send({
+ position: conf.pageType,
+ sort: $(this).attr("data-val"),
+ type: "click",
+ modId: "sethp-bar"
+ });
+ });
+ },
+
+ // Hide the bar and set cookie
+ hideBar = function () {
+ var time = _conf.showbarTime === "0" ? 0 : _conf.showbarTime ? parseInt(_conf.showbarTime) : 1;
+
+ /MSIE 6.0/.test(ua) && container.hide();
+ container.slideUp(_conf.slideSpeed);
+ $.cookie("Gh_b", 1, {expires: time});
+ };
+
+ $(document).ready(function () {
+ init();
+ });
+};
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/add-fav-bar.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/add-fav-bar.tpl
new file mode 100755
index 000000000..0623b62b1
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/add-fav-bar.tpl
@@ -0,0 +1,65 @@
+<%style%>
+<%if $head.dir=='ltr'%>
+@import url('/widget/header/add-fav-bar/ltr/ltr.css?__inline');
+<%else%>
+@import url('/widget/header/add-fav-bar/rtl/rtl.css?__inline');
+<%/if%>
+<%/style%>
+
+<%* 声明对ltr/rtl的css依赖 *%>
+<%if $head.dir=='ltr'%> <%require name="common:widget/header/add-fav-bar/ltr/ltr.more.css"%> <%else%> <%require name="common:widget/header/add-fav-bar/rtl/rtl.more.css"%> <%/if%>
+
+
+
+<%script%>
+ // Configuration for addFavBar
+ <%if isset($body.addFavBar)%>
+ conf.addFavBar = {
+ setHome: {
+ title: "<%$body.addFavBar.setHome.title%>",
+ text: "<%$body.addFavBar.setHome.text%>",
+ button: "<%$body.addFavBar.setHome.button%>"
+ },
+ addFav: {
+ title: "<%$body.addFavBar.addFav.title%>",
+ text: "<%$body.addFavBar.addFav.text%>",
+ button: "<%$body.addFavBar.addFav.button%>"
+ },
+ addFavNoSupport: {
+ title: "<%$body.addFavBar.addFavNoSupport.title%>",
+ text: "<%$body.addFavBar.addFavNoSupport.text%>",
+ button: "<%$body.addFavBar.addFavNoSupport.button%>"
+ },
+ download: {
+ title: "<%$body.addFavBar.download.title%>",
+ text: "<%$body.addFavBar.download.text%>",
+ button: "<%$body.addFavBar.download.button%>",
+ url: "<%$body.addFavBar.download.url%>"
+ },
+ hideBar: "<%$body.addFavBar.hideBar%>",
+ ieType:"<%$body.addFavBar.ie%>",
+ ffType:"<%$body.addFavBar.firefox%>",
+ chType:"<%$body.addFavBar.chrome%>",
+ otherType:"<%$body.addFavBar.others%>",
+ showbarTime:"<%$body.addFavBar.showbarTime%>",
+ slideSpeed: 1000
+ };
+ <%/if%>
+ require.async("common:widget/ui/jquery/jquery.js", function($) {
+ $(window).one("e_go.addfavbar", function () {
+ require.async("common:widget/header/add-fav-bar/add-fav-bar-async.js", function () {
+ Gl.addFavBar(conf.pageType);
+ });
+ });
+
+ $(function () {
+ $(window).trigger("e_go.addfavbar");
+ });
+
+ $("#addFavBar").one("mouseenter", function () {
+ $(window).trigger("e_go.addfavbar");
+ });
+ });
+<%/script%>
+
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/img/i-bar-addfav.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/img/i-bar-addfav.png
new file mode 100755
index 000000000..d6e335636
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/img/i-bar-addfav.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/img/i-bar-bg.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/img/i-bar-bg.png
new file mode 100755
index 000000000..f1a4c395c
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/img/i-bar-bg.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/img/i-bar-btn-bg-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/img/i-bar-btn-bg-hover.png
new file mode 100755
index 000000000..ff89680f0
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/img/i-bar-btn-bg-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/img/i-bar-btn-bg.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/img/i-bar-btn-bg.png
new file mode 100755
index 000000000..58a644ec6
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/img/i-bar-btn-bg.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/img/i-bar-down.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/img/i-bar-down.png
new file mode 100755
index 000000000..d6e1be77d
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/img/i-bar-down.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/img/i-bar-sethome.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/img/i-bar-sethome.png
new file mode 100755
index 000000000..09379b8e8
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/img/i-bar-sethome.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/img/i-close-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/img/i-close-hover.png
new file mode 100755
index 000000000..9510ffa88
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/img/i-close-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/img/i-close.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/img/i-close.png
new file mode 100755
index 000000000..ae9fea26f
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/img/i-close.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/ltr/ltr.css
new file mode 100755
index 000000000..20987d606
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/ltr/ltr.css
@@ -0,0 +1,7 @@
+/* set home & add fav top bar */
+.bar-addfav,.bar-addfav_inner {
+ display: none;
+}
+#ieSetHomePage {
+ display: none;
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/ltr/ltr.more.css
new file mode 100755
index 000000000..c84104ded
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/ltr/ltr.more.css
@@ -0,0 +1,71 @@
+/* set home & add fav top bar */
+
+.bar-addfav_inner{display: block;}
+.bar-addfav {
+ font-size: 14px;
+ height: 37px;
+ border-bottom: 1px solid #00894b;
+ background: url(../img/i-bar-bg.png?__sprite) repeat-x;
+ overflow: hidden;
+}
+.bar-addfav-inner {
+ height: 37px;
+ min-height: 37px;
+}
+.bar-addfav_title, .bar-addfav_text {
+ float: left;
+ line-height: 37px;
+ color: #009455;
+ padding-right: 5px;
+ font-weight: bold;
+}
+.bar-addfav_icon {
+ float: left;
+ display: inline-block;
+ overflow: hidden;
+ height: 13px;
+ width: 14px;
+ margin: 11px 5px 0 0;
+
+}
+.icon-setHome {
+ background: url(../img/i-bar-sethome.png?__sprite) no-repeat;
+}
+.icon-addFav {
+ background: url(../img/i-bar-addfav.png?__sprite) no-repeat;
+}
+.icon-download {
+ background: url(../img/i-bar-down.png?__sprite) no-repeat;
+}
+.bar-addfav_btn {
+ display: inline-block;
+ float: left;
+ color: #fff;
+ height: 19px;
+ line-height: 19px;
+ padding: 0 14px;
+ background: url(../img/i-bar-btn-bg.png?__sprite) repeat-x;
+ border: 1px solid #01a66f;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -o-border-radius: 2px;
+ border-radius: 2px;
+ margin: 8px 0 0 25px;
+ outline: none;
+}
+.bar-addfav_btn:hover {
+ background: url(../img/i-bar-btn-bg-hover.png?__sprite) repeat-x;
+ border: 1px solid #01925a;
+}
+.bar-addfav_close {
+ display: inline-block;
+ float: right;
+ overflow: hidden;
+ width: 10px;
+ height: 9px;
+ margin-top: 14px;
+ background: url(../img/i-close.png?__sprite) no-repeat;
+}
+.bar-addfav_close:hover {
+ background: url(../img/i-close-hover.png?__sprite) no-repeat;
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/rtl/rtl.css
new file mode 100755
index 000000000..20987d606
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/rtl/rtl.css
@@ -0,0 +1,7 @@
+/* set home & add fav top bar */
+.bar-addfav,.bar-addfav_inner {
+ display: none;
+}
+#ieSetHomePage {
+ display: none;
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/rtl/rtl.more.css
new file mode 100755
index 000000000..f0889c71f
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/add-fav-bar/rtl/rtl.more.css
@@ -0,0 +1,72 @@
+/* set home & add fav top bar */
+
+.bar-addfav_inner{display: block;}
+.bar-addfav {
+ font-size: 14px;
+ height: 37px;
+ border-bottom: 1px solid #00894b;
+ background: url(../img/i-bar-bg.png?__sprite) repeat-x;
+ overflow: hidden;
+}
+.bar-addfav-inner {
+ height: 37px;
+ min-height: 37px;
+}
+.bar-addfav_title, .bar-addfav_text {
+ float: right;
+ line-height: 37px;
+ color: #009455;
+ padding-left: 5px;
+}
+.bar-addfav_title {
+ font-weight: bold;
+}
+.bar-addfav_icon {
+ float: right;
+ display: inline-block;
+ overflow: hidden;
+ height: 13px;
+ width: 14px;
+ margin: 11px 0 0 5px;
+}
+.icon-setHome {
+ background: url(../img/i-bar-sethome.png?__sprite) no-repeat;
+}
+.icon-addFav {
+ background: url(../img/i-bar-addfav.png?__sprite) no-repeat;
+}
+.icon-download {
+ background: url(../img/i-bar-down.png?__sprite) no-repeat;
+}
+.bar-addfav_btn {
+ display: inline-block;
+ float: right;
+ color: #fff;
+ height: 19px;
+ line-height: 19px;
+ padding: 0 14px;
+ background: url(../img/i-bar-btn-bg.png?__sprite) repeat-x;
+ border: 1px solid #01a66f;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -o-border-radius: 2px;
+ border-radius: 2px;
+ margin: 8px 25px 0 0;
+ outline: none;
+}
+.bar-addfav_btn:hover {
+ background: url(../img/i-bar-btn-bg-hover.png?__sprite) repeat-x;
+ border: 1px solid #01925a;
+}
+.bar-addfav_close {
+ display: inline-block;
+ float: left;
+ overflow: hidden;
+ width: 10px;
+ height: 9px;
+ margin-top: 14px;
+ background: url(../img/i-close.png?__sprite) no-repeat;
+}
+.bar-addfav_close:hover {
+ background: url(../img/i-close-hover.png?__sprite) no-repeat;
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/app-list/app-list-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/app-list/app-list-async.js
new file mode 100755
index 000000000..c149cea3b
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/app-list/app-list-async.js
@@ -0,0 +1,46 @@
+var $ = require("common:widget/ui/jquery/jquery.js"),
+ helper = require("common:widget/ui/helper/helper.js"),
+ UT = require("common:widget/ui/ut/ut.js");
+
+var wrap = $("#appContent"),
+ appHd = $("#appHead"),
+ content = wrap.find(".app-group_content"),
+ CON = conf.appTest,
+ num = parseInt(CON.limitNum, 10), //每行显示app数目
+ len = CON.list.length, //cms中配置的app数目
+ TPL = '#{title} ',
+ appData = "",
+ listWidth = (CON.margin * 2 + Math.max(parseInt(CON.wordWidth, 10), parseInt(CON.iconWidth, 10))) * num + 4; //用于每几个显示一行
+
+$.each(CON.list, function(index, value) {
+ if (index % num === 0) {
+ appData += "";
+ }
+ appData += helper.replaceTpl(TPL, value);
+ if (((index + 1) % num === 0) || (index + 1 === num)) {
+ appData += "
";
+ }
+});
+
+content.html(appData);
+
+wrap.parent().hover(function() {
+ appHd.addClass("module-mask");
+ wrap.show();
+}, function() {
+ appHd.removeClass("module-mask");
+ wrap.hide();
+});
+
+content.on("click", "a", function(e) {
+ UT.send({
+ "type": "click",
+ "position": "clickApp",
+ "sort": $(this).attr("href"),
+ "value": $(this).children('span').html(),
+ "modId": "app-list"
+ });
+});
+if (CON.isMouseTriggered) {
+ wrap.parent().trigger('mouseenter');
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/app-list/app-list.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/app-list/app-list.tpl
new file mode 100755
index 000000000..9e7569092
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/app-list/app-list.tpl
@@ -0,0 +1,51 @@
+<%style%>
+<%if $head.dir=='ltr'%>
+@import url('/widget/header/app-list/ltr-s/ltr.css?__inline');
+<%else%>
+@import url('/widget/header/app-list/rtl-s/rtl.css?__inline');
+<%/if%>
+<%/style%>
+
+<%* 声明对ltr/rtl的css依赖 *%>
+<%if $head.dir=='ltr'%>
+<%require name="common:widget/header/app-list/ltr-s/ltr.more.css"%>
+<%else%>
+<%require name="common:widget/header/app-list/rtl-s/rtl.more.css"%>
+<%/if%>
+
+<%script%>
+conf.appTest = <%json_encode($body.headerTest.app)%>;
+
+require.async("common:widget/ui/jquery/jquery.js", function ($) {
+
+ var $win = $(window);
+
+ if(/(png|gif|jpg|jpeg)/i.test(conf.appTest.title)) {
+ $("#appHead").html(" ");
+ } else {
+ $("#appHead").addClass("app-head_word").html(conf.appTest.title);
+ }
+
+ // 鼠标滑过按钮或者onload之后加载JS文件,只加载一次
+ $win.one("headerTest.app", function() {
+ require.async("common:widget/header/app-list/app-list-async.js");
+ }).load(function() {
+ $win.trigger("headerTest.app");
+ });
+
+ $("#appHead").one("mouseenter", function() {
+ $win.trigger("headerTest.app");
+ // 防止用户在未load之前hover相关区域不能触发脚本里面的事件
+ conf.appTest.isMouseTriggered = true;
+ });
+});
+
+<%/script%>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/app-list/ltr-s/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/app-list/ltr-s/ltr.css
new file mode 100755
index 000000000..c8b8b6240
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/app-list/ltr-s/ltr.css
@@ -0,0 +1,8 @@
+.app-wrapper {
+ float: right;
+ position: relative;
+ visibility: hidden;
+}
+.app-group {
+ display: none;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/app-list/ltr-s/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/app-list/ltr-s/ltr.more.css
new file mode 100755
index 000000000..34aebd81d
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/app-list/ltr-s/ltr.more.css
@@ -0,0 +1,120 @@
+.app-wrapper {
+ visibility: visible !important;
+ max-width: 170px;
+}
+.app-head {
+ height: 50px;
+ max-width: 150px;
+ text-align: center;
+ padding: 0 10px;
+ display: table-cell;
+ vertical-align: middle;
+ overflow: hidden;
+ *display: block;
+ cursor: default !important;
+}
+.header-fixed .app-head {
+ height: 30px;
+}
+.header-fixed .app-head img {
+ width: 14px;
+ height: 14px;
+}
+.app-head_word {
+ line-height: 50px;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ display: block;
+ color: rgba(255,255,255, 0.5);
+}
+.header-fixed .app-head_word {
+ line-height: 30px;
+}
+.app-group {
+ position: absolute;
+ right: 0;
+ top: 50px;
+ box-shadow: 2px 2px 2px #DEDEDE, -2px 0 2px #DEDEDE;
+ background-color: #ebfcf7;
+ border: 1px solid #bee2d6;
+}
+.app-group_content {
+ padding: 16px 12px;
+}
+.app-item {
+ float: left;
+ margin: 8px 6px 4px;
+ _margin-left: 3px;
+ text-align: center;
+}
+.app-item img {
+ margin: 0 auto;
+}
+.app-item span {
+ display: block;
+ text-align: center;
+ font-size: 14px;
+ height: 26px;
+ line-height: 26px;
+ color: #454545;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+.app-arrow, .app-arrow_bg {
+ position: absolute;
+ height: 0;
+ width: 0;
+ border: 6px dashed transparent;
+}
+.app-arrow {
+ border-bottom-color: #bee2d6;
+ border-bottom-style: solid;
+ top: -12px;
+ right: 10px;
+}
+.app-arrow_bg {
+ border-bottom-color: #EBFCF7;
+ border-bottom-style: solid;
+ margin: -6px 0 0 -7px;
+}
+.app-group_list {
+ overflow: hidden;
+ margin-left: 4px;
+}
+.header-fixed .app-group {
+ top: 30px;
+}
+
+/*header-fixed-up*/
+.header-fixed-up .app-head {
+ height: 40px;
+}
+.header-fixed-up .app-head_word {
+ line-height: 40px;
+}
+.header-fixed-up .app-group {
+ top: 40px;
+}
+/*
+.body-theme_2 .app-group {
+ border: 1px solid #d4e0eb;
+ background-color: #eef3f8;
+}
+.body-theme_2 .app-arrow {
+ border-bottom-color: #d4e0eb;
+}
+.body-theme_2 .app-arrow_bg {
+ border-bottom-color: #eef3f8;
+}
+.body-theme_3 .app-group {
+ border: 1px solid #ecdfe1;
+ background-color: #fcf6f7;
+}
+.body-theme_3 .app-arrow {
+ border-bottom-color: #ecdfe1;
+}
+.body-theme_3 .app-arrow_bg {
+ border-bottom-color: #fcf6f7;
+}
+*/
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/app-list/rtl-s/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/app-list/rtl-s/rtl.css
new file mode 100755
index 000000000..5e9ed09cc
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/app-list/rtl-s/rtl.css
@@ -0,0 +1,8 @@
+.app-wrapper {
+ float: left;
+ position: relative;
+ visibility: hidden;
+}
+.app-group {
+ display: none;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/app-list/rtl-s/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/app-list/rtl-s/rtl.more.css
new file mode 100755
index 000000000..43c40dd4d
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/app-list/rtl-s/rtl.more.css
@@ -0,0 +1,120 @@
+.app-wrapper {
+ visibility: visible !important;
+ max-width: 170px;
+}
+.app-head {
+ height: 50px;
+ max-width: 150px;
+ text-align: center;
+ padding: 0 10px;
+ display: table-cell;
+ vertical-align: middle;
+ overflow: hidden;
+ *display: block;
+ cursor: default !important;
+}
+.header-fixed .app-head {
+ height: 30px;
+}
+.header-fixed .app-head img {
+ width: 14px;
+ height: 14px;
+}
+.app-head_word {
+ line-height: 50px;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ display: block;
+ color: rgba(255,255,255, 0.5);
+}
+.header-fixed .app-head_word {
+ line-height: 30px;
+}
+.app-group {
+ position: absolute;
+ left: 0;
+ top: 50px;
+ box-shadow: 2px 2px 2px #DEDEDE, -2px 0 2px #DEDEDE;
+ background-color: #ebfcf7;
+ border: 1px solid #bee2d6;
+}
+.app-group_content {
+ padding: 16px 12px;
+}
+.app-item {
+ float: right;
+ margin: 8px 6px 4px;
+ _margin-right: 3px;
+ text-align: center;
+}
+.app-item img {
+ margin: 0 auto;
+}
+.app-item span {
+ display: block;
+ text-align: center;
+ font-size: 14px;
+ height: 26px;
+ line-height: 26px;
+ color: #454545;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+.app-arrow, .app-arrow_bg {
+ position: absolute;
+ height: 0;
+ width: 0;
+ border: 6px dashed transparent;
+}
+.app-arrow {
+ border-bottom-color: #bee2d6;
+ border-bottom-style: solid;
+ top: -12px;
+ left: 10px;
+}
+.app-arrow_bg {
+ border-bottom-color: #EBFCF7;
+ border-bottom-style: solid;
+ margin: -6px -7px 0 0 ;
+}
+.app-group_list {
+ overflow: hidden;
+ margin-right: 4px;
+}
+.header-fixed .app-group {
+ top: 30px;
+}
+
+/*header-fixed-up*/
+.header-fixed-up .app-head {
+ height: 40px;
+}
+.header-fixed-up .app-head_word {
+ line-height: 40px;
+}
+.header-fixed-up .app-group {
+ top: 40px;
+}
+/*
+.body-theme_2 .app-group {
+ border: 1px solid #d4e0eb;
+ background-color: #eef3f8;
+}
+.body-theme_2 .app-arrow {
+ border-bottom-color: #d4e0eb;
+}
+.body-theme_2 .app-arrow_bg {
+ border-bottom-color: #eef3f8;
+}
+.body-theme_3 .app-group {
+ border: 1px solid #ecdfe1;
+ background-color: #fcf6f7;
+}
+.body-theme_3 .app-arrow {
+ border-bottom-color: #ecdfe1;
+}
+.body-theme_3 .app-arrow_bg {
+ border-bottom-color: #fcf6f7;
+}
+*/
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/banner/banner.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/banner/banner.tpl
new file mode 100755
index 000000000..6d077a040
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/banner/banner.tpl
@@ -0,0 +1,16 @@
+
+
+<%* 声明对ltr/rtl的css依赖 *%>
+<%if $head.dir=='ltr'%> <%require name="common:widget/header/banner/ltr/ltr.more.css"%> <%else%> <%require name="common:widget/header/banner/rtl/rtl.more.css"%> <%/if%>
+
+
+
+ <%if isset($body.banner.url)%>
+
+
+
+ <%else%>
+
+ <%/if%>
+
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/banner/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/banner/ltr/ltr.css
new file mode 100755
index 000000000..98eaa13f9
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/banner/ltr/ltr.css
@@ -0,0 +1,3 @@
+.userbar-banner {
+ margin-right: 30px;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/banner/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/banner/ltr/ltr.more.css
new file mode 100755
index 000000000..e69de29bb
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/banner/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/banner/rtl/rtl.css
new file mode 100755
index 000000000..3f2013054
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/banner/rtl/rtl.css
@@ -0,0 +1,3 @@
+.userbar-banner {
+ margin-left: 30px;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/banner/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/banner/rtl/rtl.more.css
new file mode 100755
index 000000000..e69de29bb
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/calendar-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/calendar-async.js
new file mode 100755
index 000000000..46d17af1a
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/calendar-async.js
@@ -0,0 +1,203 @@
+var $ = require("common:widget/ui/jquery/jquery.js"),
+ __date = require("common:widget/ui/date/date.js"),
+ time = require("common:widget/ui/time/time.js"),
+ UT = require("common:widget/ui/ut/ut.js");
+require("common:widget/ui/date-new/date.js");
+
+var calenPath = { // plugin path
+ 'isl': 'isl',
+ 'buddhist': 'buddhist',
+ 'rokuyou': 'rokuyou',
+ 'lunar': 'lunar'
+ },
+ parseToArr = function(obj, fix) {
+ fix = fix || "value";
+ var i = 0,
+ j = obj.length,
+ arr = [];
+ for(; i < j; i++) {
+ arr.push(obj[i][fix] || obj[i]);
+ }
+ return arr;
+ },
+ _conf = conf.calendar || {},
+ seCalen = _conf.secondCalendar, // 副日历名称
+ dateMsg = _conf.dateMsg || {},
+ holiday = {},
+ events = {},
+ festival = {},
+ normal = {},
+ lyl = parseToArr(_conf.rokuyou || []),
+ organizeToHash = function(data, kind) {
+ if(!data) {return {};}
+ var newData = {},
+ tmpObj = {};
+ for (var i = 0, j = data.length; i < j; i++) {
+ tmpObj = data[i];
+ if(!tmpObj) continue;
+ newData["d" + tmpObj.date] = {
+ kind: tmpObj.kind || kind,
+ title: tmpObj.title,
+ url: tmpObj.url
+ }
+ }
+ return newData;
+ };
+
+holiday = organizeToHash(dateMsg["holiday"], "holiday"); // format data for easy handle
+events = organizeToHash(dateMsg["events"], "event"); // format data for easy handle
+festival = organizeToHash(dateMsg["festival"], "festival"); // format data for easy handle
+normal = organizeToHash(dateMsg["normal"]); // format data for easy handle
+
+var calenTpl = '',
+ toDate = function(y, M, d) {
+ /*var date = new Date();
+ date.setFullYear(y);
+ date.setDate(d);
+ date.setMonth(M - 1);*/
+ return new Date(y, M - 1, d);
+ },
+ formatDate = function(y, M, d) {
+ return ('d' + y + '-' + M + '-' + d);
+ },
+ getItemData = function(y, M, d) {
+ var str = formatDate(y, M, d),
+ obj = {},
+ ymd = {};
+
+ obj = normal[str] || events[str] || holiday[str] || festival[str] || null;
+ if(obj) {
+ if(obj.kind) {
+ ymd.className = 'class=mod-calendar-' + obj.kind;
+ }
+ if(obj.title) {
+ ymd.info = obj.title;
+ }
+ if(obj.url) {
+ ymd.url = obj.url;
+ }
+ ymd.noLink = "";
+ if(obj.url == "" || obj.url == "#") {
+ ymd.noLink = "no-link";
+ }
+ }
+ return ymd;
+ },
+ calenFuncMap = {
+ 'isl': function(y, M, d) {
+ var date = Date.toIsl(toDate(y, M, d)),
+ islM = parseToArr(_conf.islMonth || []);
+ if(islM && date.id == "1") {
+ return islM[date.im - 1] || "";
+ }
+ return date.id || "";
+ },
+ 'rokuyou': function(y, M, d) {
+ var date = toDate(y, M, d);
+ return lyl[Date.toLyl(date).jl] || "";
+ },
+ 'lunar': function(y, M, d) {
+ var lunarObj = __date.toLunar(y, M, d),
+ str = lunarObj.cd || "";
+ if (_conf.lunarNumber === "1") {
+ return str + (str == "1" ? ("/" + lunarObj.cm) : "");
+ } else {
+ return str == "1" ? lunarObj.CM : (lunarObj.CD || "");
+ }
+ },
+ 'buddhist': function(y, M, d) {
+ return "";
+ }
+ },
+ callback = function($glo, moreBtn, url, _co, week, countDown) {
+ var params = {
+ footer: moreBtn ? ('' + moreBtn + ' ') : '',
+ onFilterDays: function(data) {
+ data.noLink = "no-link";
+ if(seCalen && calenFuncMap[seCalen]) {
+ data.info = calenFuncMap[seCalen](data.y, data.M, data.d);
+ }
+ $.extend(data, getItemData(data.y, data.M, data.d));
+ return data;
+ },
+ onSwitch: function(data, $y, $m) {
+ $("#calYearList").find("li").filter(function() {
+ return $(this).attr("value") == data.y;
+ }).trigger("mousedown.dropdownlist");
+ $("#calMonthList").find("li").filter(function() {
+ return $(this).attr("value") == data.M;
+ }).trigger("mousedown.dropdownlist");
+ },
+ countDown: countDown ? countDown : ""
+ };
+ if(_co.useAbbrMonth === '1' && _co.abbrMonth) {
+ var abbrM = parseToArr(_co.abbrMonth);
+ params.fixMonth = function(i) {
+ return abbrM[i - 1] || "";
+ };
+ }
+ if(seCalen === "buddhist") {
+ params.fixYear = function(i) {
+ return i + (parseInt(_co.fixYear, 10) || 543);
+ };
+ }
+ if (_co.yearFrom) {
+ params.minDate = _co.yearFrom;
+ }
+ if (_co.yearTo) {
+ params.maxDate = _co.yearTo;
+ }
+ if (_co.isAbbrWeek === "1") {
+ params.isAbbrWeek = true;
+ } else {
+ params.isAbbrWeek = false;
+ }
+ if (_co.beginDay) {
+ params.beginDay = parseInt(_co.beginDay, 10);
+ }
+ if (week && week.length) {
+ params.weeks = parseToArr(week);
+ }
+ params.switchLoop = true;
+ $('.mod-calendar', $glo).calendar(params);
+ require.async("common:widget/ui/dropdownlist/dropdownlist.js", function(dropdown) {
+ new dropdown({
+ selector: "calYear",
+ defIndex: $("#calYear").get(0).selectedIndex,
+ supportSubmit: 1
+ });
+ new dropdown({
+ selector: "calMonth",
+ defIndex: $("#calMonth").get(0).selectedIndex,
+ supportSubmit: 1
+ });
+ });
+ };
+// require的文件必须为字符串吗?变量拼接的获取不到!
+var init = function($glo, moreBtn, url, _co, week, countDown) {
+ $('.calendar-wrapper', $glo).html(calenTpl);
+ if (seCalen && calenPath[seCalen]) {
+ if (calenPath[seCalen] === "rokuyou") {
+ require.async(["common:widget/ui/calendar/calendar.js", "common:widget/ui/date-new/plugin/rokuyou.js"], function() {
+ callback($glo, moreBtn, url, _co, week, countDown);
+ });
+ } else if (calenPath[seCalen] === "isl") {
+ require.async(["common:widget/ui/calendar/calendar.js", "common:widget/ui/date-new/plugin/isl.js"], function() {
+ callback($glo, moreBtn, url, _co, week, countDown);
+ });
+ } else if (calenPath[seCalen] === "buddhist") {
+ require.async(["common:widget/ui/calendar/calendar.js", "common:widget/ui/date-new/plugin/buddhist.js"], function() {
+ callback($glo, moreBtn, url, _co, week, countDown);
+ });
+ } else if (calenPath[seCalen] === "lunar") {
+ require.async(["common:widget/ui/calendar/calendar.js", "common:widget/ui/date-new/plugin/lunar.js"], function() {
+ callback($glo, moreBtn, url, _co, week, countDown);
+ });
+ }
+ } else {
+ require.async(["common:widget/ui/calendar/calendar.js"], function() {
+ callback($glo, moreBtn, url, _co, week, countDown);
+ });
+ }
+};
+module.exports = init;
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/clock-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/clock-async.js
new file mode 100755
index 000000000..a4f173854
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/clock-async.js
@@ -0,0 +1,247 @@
+/*
+* CLOCK
+*/
+window.Gl || (window.Gl = {});
+
+var $ = require("common:widget/ui/jquery/jquery.js"),
+ __date = require("common:widget/ui/date/date.js"),
+ time = require("common:widget/ui/time/time.js"),
+ UT = require("common:widget/ui/ut/ut.js");
+require("common:widget/ui/date-new/date.js");
+//clock
+//time & date & calendar
+Gl.clock = function(el) {
+ var _conf = conf.clock,
+ //
+ $wraper = $(".userbar-date-wrapper"),
+ $glo = $("#" + el),
+ $el = $glo,
+ $down = {}, // countdown time change wrapper
+ url = _conf.url || "",
+ title = _conf.title || "",
+ tpl = _conf.tpl || '#{y}/ #{m}/ #{d}',
+ moreTpl = '
', // when has calendar
+ rate = _conf.rate || 500,
+ ssCache = 0, //seconds cache
+ tim, // for calendar timetamp
+ format = function() {
+ var date = time.getForm();
+
+ if (date.ss === ssCache) return "";
+ ssCache = date.ss; //update seconds
+ return tpl.replaceTpl(date);
+ },
+ toNum = function(n) {
+ return parseInt(n, 10);
+ },
+ formatCount = function() { // get diff between now date and conf date
+ var diffRe = {},
+ nowDate = new Date();
+ if (tDate.getTime() > nowDate.getTime()) {
+ diffRe = nowDate.diff(tDate);
+ diffRe.d = diffRe.d > 9 ? diffRe.d : isNewMo + diffRe.d;
+ diffRe.h = diffRe.h > 9 ? diffRe.h : '0' + diffRe.h;
+ diffRe.m = diffRe.m > 9 ? diffRe.m : '0' + diffRe.m;
+ return timeTpl.replaceTpl(diffRe);
+ } else {
+ return "";
+ }
+ };
+
+ // open calendar
+ if (_conf.headerTest && _conf.openCal === "1") {
+ $glo.addClass('userbar-date-cal');
+ $glo.html(moreTpl);
+
+ $(document.body).on("click", function(e) {
+ var $e = $(e.target);
+ if (!$e.closest('.userbar-date-cal').length) {
+ $glo.removeClass('date-open');
+ }
+ });
+ $(".calendar-wrapper", $glo).on("click", "a", function(e) {
+ var $that = $(this),
+ href = $that.attr("href");
+ if(href == "" || href == "#") {
+ e.preventDefault();
+ e.stopPropagation();
+ } else {
+ UT.send({
+ position: "clickable",
+ sort: href,
+ type: "click",
+ modId: "date"
+ });
+ }
+ }).on("mousedown", "a", function(e) {
+ var $that = $(this),
+ href = $that.attr("href");
+ if(href == "" || href == "#") {
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ });
+
+ // create Calendar
+ $glo.one("o.onceload", function() {
+ require.async("common:widget/header/clock/calendar-async.js", function(init) {
+ var wk = $.extend(true, [], conf.date.lunar && conf.date.lunar.wk);
+ init($glo, _conf.moreBtn, url, _co, _co.weeks || wk, _con.time);
+ });
+ });
+ // add UT
+ $glo.on("click", function(e) {
+ var $e = $(e.target);
+ if (!$e.closest('.calendar-wrapper').length) {
+ $glo.toggleClass('date-open');
+ UT.send({
+ ac: "b",
+ position: "control",
+ sort: $glo.hasClass('date-open') ? "open" : "close",
+ type: "click",
+ modId: "date"
+ });
+ e.preventDefault();
+ }
+ }).one("mouseenter", function() {
+ $glo.trigger('o.onceload');
+ }).on("click", ".mod-calendar_next", function(e) {
+ UT.send({
+ ac: "b",
+ position: "control",
+ sort: "next",
+ type: "click",
+ modId: "date"
+ });
+ }).on("click", ".mod-calendar_prev", function(e) {
+ UT.send({
+ ac: "b",
+ position: "control",
+ sort: "prev",
+ type: "click",
+ modId: "date"
+ });
+ }).on("click", ".dropdown", function(e) {
+ UT.send({
+ ac: "b",
+ position: "control",
+ sort: "select",
+ type: "click",
+ modId: "date"
+ });
+ }).on("mouseover", function(e) {
+ var $e = $(e.target);
+ if (!$e.closest('.calendar-wrapper').length) {
+ $glo.addClass('calendar-open');
+ } else {
+ $glo.removeClass('calendar-open');
+ }
+ }).on("mouseout", function(e) {
+ $glo.removeClass('calendar-open');
+ });
+ $(window).load(function() {
+ $glo.trigger('o.onceload');
+ });
+ $el = $glo.find(".date-wrapper");
+
+ if( _worldcupConf.isHidden === "0" ){
+ var html = worldCupTpl.replaceTpl( _worldcupConf );
+ $wraper.addClass( "userbar-data-worldcup" );
+ $el.after( html );
+ $el.hide();
+ // _worldcupConf.width && $glo.css( "width", _worldcupConf.width + "px" );
+ }else if (_con && _con.isHidden === "0" && _con.time) { // countdown
+ timeFor = _con.time.split("_");
+ yMd = timeFor[0].split("-");
+ hms = timeFor[1].split(":");
+
+ tDate = new Date(toNum(yMd[0]), toNum(yMd[1]) - 1, toNum(yMd[2]), toNum(hms[0]), toNum(hms[1]), toNum(hms[2]));
+ /*tDate.setFullYear(parseInt(yMd[0], 10));
+ tDate.setDate(parseInt(yMd[2], 10));
+ tDate.setMonth(parseInt(yMd[1], 10) - 1);
+
+ tDate.setHours(parseInt(hms[0], 10));
+ tDate.setMinutes(parseInt(hms[1], 10));
+ tDate.setSeconds(parseInt(hms[2], 10));*/
+
+ res = formatCount();
+ if(res) {
+ if(_con.newMod === "1") {
+ $wraper.addClass('userbar-date-new_mod userbar-date-new_mod1');
+ _con.newModImg && $wraper.css("background-image", "url(" + _con.newModImg + ")");
+ _con.newModWidth && $wraper.css("width", _con.newModWidth + "px");
+ } else if(_con.newMod === "2") {
+ $wraper.addClass('userbar-date-new_mod userbar-date-new_mod2');
+ _con.newModImg && $wraper.css("background-image", "url(" + _con.newModImg + ")");
+ _con.newModWidth && $wraper.css("width", _con.newModWidth + "px");
+ }
+ $el.after(countTpl.replaceTpl(_con));
+ $glo.addClass('down-show');
+ $down = $glo.find(".down-time");
+ $down.html(res);
+ $el.hide();
+ }
+ var downTimer = setInterval(function() {
+ res = formatCount();
+ if(res) {
+ $down.html(res);
+ $el.hide();
+ } else {
+ $wraper.removeClass('userbar-date-new_mod userbar-date-new_mod1 userbar-date-new_mod2');
+ $wraper.css({
+ "background-image": "none",
+ "width": "auto"
+ });
+ $glo.find(".down-wrapper").remove();
+ $glo.removeClass('down-show');
+ $el.show();
+ clearInterval(downTimer);
+ }
+ }, _con.rate || 20000);
+ }
+ } else {
+ $glo.on("click", "a", function(e) { // old UT log
+ UT.send({
+ position: "click",
+ sort: "click",
+ type: "click",
+ modId: "date"
+ });
+ });
+ if (!!url) {
+ tpl = '' + tpl + ' ';
+ }
+ }
+ //display local time when initialize
+ $el.html(format(new Date));
+
+ timer = setInterval(function() {
+ var html = format();
+
+ //render the time
+ if(html) $el.html(html);
+ }, rate);
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/clock-conf/clock-conf.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/clock-conf/clock-conf.tpl
new file mode 100755
index 000000000..678ab7c02
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/clock-conf/clock-conf.tpl
@@ -0,0 +1,21 @@
+<%script%>
+//conf.date
+ String.prototype.parseToArray=function(e,t){var n=this.split(t||"|");return e?function(t,r){for(;t--;)n[t]=parseInt(n[t],e);return n}(n.length):n};
+
+ conf.date={day:{0:"<%$body.date.today%>",1:"<%$body.date.tomorrow%>"},days:[31,28,31,30,31,30,31,31,30,31,30,31],lunar:{tpl:"#{y}-#{m}-#{d} #{W} \u519c\u5386 #{CM}#{CD} #{gy}(#{sx}) #{gm} #{gd} #{so} #{cf} #{gf}",leap:"ezc|esg|wog|gr9|15k0|16xc|1yl0|h40|ukw|gya|esg|wqe|wk0|15jk|2k45|zsw|16e8|yaq|tkg|1t2v|ei8|wj4|zp1|l00|lkw|2ces|8kg|tio|gdu|ei8|k12|1600|1aa8|lud|hxs|8kg|257n|t0g|2i8n|13rk|1600|2ld2|ztc|h40|2bas|7gw|t00|15ma|xg0|ztj|lgg|ztc|1v11|fc0|wr4|1sab|gcw|xig|1a34|l28|yhy|xu8|ew0|xr8|wog|g9s|1bvn|16xc|i1j|h40|tsg|fdh|es0|wk0|161g|15jk|1654|zsw|zvk|284m|tkg|ek0|xh0|wj4|z96|l00|lkw|yme|xuo|tio|et1|ei8|jw0|n1f|1aa8|l7c|gxs|xuo|tsl|t0g|13s0|16xg|1600|174g|n6a|h40|xx3|7gw|t00|141h|xg0|zog|10v8|y8g|gyh|exs|wq8|1unq|gc0|xf4|nys|l28|y8g|i1e|ew0|wyu|wkg|15k0|1aat|1640|hwg|nfn|tsg|ezb|es0|wk0|2jsm|15jk|163k|17ph|zvk|h5c|gxe|ek0|won|wj4|xn4|2dsl|lk0|yao".parseToArray(36),jqmap:"0|gd4|wrn|1d98|1tuh|2akm|2rfn|38g9|3plp|46vz|4o9k|55px|5n73|64o5|6m37|73fd|7kna|81qe|8io7|8zgq|9g4b|9wnk|ad3g|ath2|".parseToArray(36),jqnames:"\u5c0f\u5bd2|\u5927\u5bd2|\u7acb\u6625|\u96e8\u6c34|\u60ca\u86f0|\u6625\u5206|\u6e05\u660e|\u8c37\u96e8|\u7acb\u590f|\u5c0f\u6ee1|\u8292\u79cd|\u590f\u81f3|\u5c0f\u6691|\u5927\u6691|\u7acb\u79cb|\u5904\u6691|\u767d\u9732|\u79cb\u5206|\u5bd2\u9732|\u971c\u964d|\u7acb\u51ac|\u5c0f\u96ea|\u5927\u96ea|\u51ac\u81f3".parseToArray(),c1:"|\u4e00|\u4e8c|\u4e09|\u56db|\u4e94|\u516d|\u4e03|\u516b|\u4e5d|\u5341".parseToArray(),c2:"\u521d|\u5341|\u5eff|\u5345|".parseToArray(),wk:"<%$body.date.Sunday%>|<%$body.date.Monday%>|<%$body.date.Tuesday%>|<%$body.date.Wednesday%>|<%$body.date.Thursday%>|<%$body.date.Friday%>|<%$body.date.Saturday%>".parseToArray(),tg:"\u7532|\u4e59|\u4e19|\u4e01|\u620a|\u5df1|\u5e9a|\u8f9b|\u58ec|\u7678".parseToArray(),dz:"\u5b50|\u4e11|\u5bc5|\u536f|\u8fb0|\u5df3|\u5348|\u672a|\u7533|\u9149|\u620c|\u4ea5".parseToArray(),sx:"\u9f20|\u725b|\u864e|\u5154|\u9f99|\u86c7|\u9a6c|\u7f8a|\u7334|\u9e21|\u72d7|\u732a".parseToArray(),fixMonth:["2001-5-23~2001-6-20","2004-3-21~2004-4-18","2006-8-24~2006-9-21","2009-6-23~2009-7-21", "2012-5-21~2012-6-18","2014-10-24~2014-11-21","2017-7-23~2017-8-21", "2020-5-23~2020-6-29","2023-3-22~2023-4-19","2025-7-25~2025-8-22"],fixDate:["2002-1-1~2002-1-12=0|-1|0", "2002-1-14~2002-2-11=0|-1|1", "2002-1-13=0|0|-29", "2005-1-1~2005-1-9=0|-1|0", "2005-1-11~2005-2-8=0|-1|1", "2005-1-10=0|0|-29", "2007-1-1~2007-1-18=0|-1|1", "2007-1-20~2007-2-17=0|-1|1", "2007-1-19=0|0|-29", "2010-1-1~2010-1-14=0|-1|1", "2010-1-16~2010-2-13=0|-1|1", "2010-1-15=0|0|-29", "2013-1-1~2013-1-11=0|-1|1", "2013-1-12~2013-2-9=0|-1|0", "2015-1-1~2015-1-19=0|-1|0", "2015-1-21~2015-2-18=0|-1|1", "2015-1-20=0|0|-29", "2018-1-1~2018-1-16=0|-1|0", "2018-1-17~2018-2-15=0|-1|0", "2021-1-1~2021-1-12=0|-1|0", "2021-1-14~2021-2-11=0|-1|1", "2021-1-13=0|0|-29", "2024-1-1~2024-1-10=0|-1|0", "2024-1-12~2024-2-9=0|-1|1", "2024-1-11=0|0|-29"]},isl:{tpl:"#{IW} - #{d} \u0645\u0646 #{M} #{y} - #{id} #{IM} #{iy}",weekNames:["\u0627\u0644\u0623\u062d\u062f","\u0627\u0644\u0627\u062b\u0646\u064a\u0646","\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621","\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621","\u0627\u0644\u062e\u0645\u064a\u0633","\u0627\u0644\u062c\u0645\u0639\u0629","\u0627\u0644\u0633\u0628\u062a"],gMonthNames:["<%$body.date.Jan%>","<%$body.date.Feb%>","<%$body.date.Mar%>","<%$body.date.Apr%>","<%$body.date.May%>","<%$body.date.Jun%>","<%$body.date.Jul%>","<%$body.date.Aug%>","<%$body.date.Sep%>","<%$body.date.Oct%>","<%$body.date.Nov%>","<%$body.date.Dec%>"],monthNames:["\u0627\u0644\u0645\u062d\u0631\u0645","\u0635\u0641\u0631","\u0631\u0628\u064a\u0639 \u0627\u0644\u0623\u0648\u0644","\u0631\u0628\u064a\u0639 \u0627\u0644\u062b\u0627\u0646\u064a","\u062c\u0645\u0627\u062f\u064a \u0627\u0644\u0623\u0648\u0644\u0649","\u062c\u0645\u0627\u062f\u064a \u0627\u0644\u0622\u062e\u0631\u0629","\u0631\u062c\u0628","\u0634\u0639\u0628\u0627\u0646","\u0631\u0645\u0636\u0627\u0646","\u0634\u0648\u0627\u0644","\u0630\u0648 \u0627\u0644\u0642\u0639\u062f\u0629","\u0630\u0648 \u0627\u0644\u062d\u062c\u0629"],fixDate:[]}};
+
+ //clock configuration
+ conf.clock = {
+ imgUrl: "/static/web/common/img/gut.gif",
+ url: '<%$body.date.url%>',
+ title: '<%$body.date.title%>',
+ tpl: '<%$body.date.tpl%>',
+ islDateFix: '<%if isset($body.date.islDateFix)%><%$body.date.islDateFix%><%/if%>' || 0,
+ rate: 1000,
+ openCal: '<%$body.date.openCalendar%>',
+ moreBtn: '<%$body.date.moreBtn%>',
+ headerTest: '<%$body.headerTest.widget%>',
+ countdown: <%json_encode($body.date.countdown)%>,
+ headerWorldcup : <%json_encode( $body.date.headerWorldcup )%>
+ };
+<%/script%>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/clock.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/clock.tpl
new file mode 100755
index 000000000..99549fbb1
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/clock.tpl
@@ -0,0 +1,35 @@
+<%style%>
+<%if $head.dir=='ltr'%>
+@import url('/widget/header/clock/ltr/ltr.css?__inline');
+<%else%>
+@import url('/widget/header/clock/rtl/rtl.css?__inline');
+<%/if%>
+<%/style%>
+
+<%* 声明对ltr/rtl的css依赖 *%>
+<%if $head.dir=='ltr'%>
+<%require name="common:widget/header/clock/ltr/ltr.more.css"%>
+<%else%>
+<%require name="common:widget/header/clock/rtl/rtl.more.css"%>
+<%/if%>
+
+<%if !empty($body.headerTest.widget)%><%/if%>
+
style="font-size:<%$body.date.fontSize%>"<%/if%>>
+<%if !empty($body.headerTest.widget)%>
<%/if%>
+
+<%widget name="common:widget/header/clock/clock-conf/clock-conf.tpl"%>
+<%script%>
+ conf.calendar = <%json_encode($body.date.calendar)%> || {};
+
+ require.async("common:widget/ui/jquery/jquery.js", function($) {
+ $(window).one("e_go.clock", function () {
+ require.async("common:widget/header/clock/clock-async.js", function () {
+ Gl.clock("dateBox");
+ });
+ });
+
+ $(function () {
+ $(window).trigger("e_go.clock");
+ });
+ });
+<%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/img/bell.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/img/bell.png
new file mode 100755
index 000000000..b0b8dd72e
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/img/bell.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/img/next.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/img/next.png
new file mode 100755
index 000000000..49a455d8f
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/img/next.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/img/next_hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/img/next_hover.png
new file mode 100755
index 000000000..494faef52
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/img/next_hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/img/next_hover_rtl.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/img/next_hover_rtl.png
new file mode 100755
index 000000000..494faef52
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/img/next_hover_rtl.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/img/next_rtl.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/img/next_rtl.png
new file mode 100755
index 000000000..49a455d8f
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/img/next_rtl.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/img/prev.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/img/prev.png
new file mode 100755
index 000000000..444fcc2dd
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/img/prev.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/img/prev_hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/img/prev_hover.png
new file mode 100755
index 000000000..cf9128047
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/img/prev_hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/img/prev_hover_rtl.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/img/prev_hover_rtl.png
new file mode 100755
index 000000000..cf9128047
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/img/prev_hover_rtl.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/img/prev_rtl.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/img/prev_rtl.png
new file mode 100755
index 000000000..444fcc2dd
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/img/prev_rtl.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/img/worldcup-vs.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/img/worldcup-vs.png
new file mode 100755
index 000000000..a47943b08
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/img/worldcup-vs.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/ltr/ltr.css
new file mode 100755
index 000000000..30b42ceed
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/ltr/ltr.css
@@ -0,0 +1 @@
+.userbar-date{ display: none;}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/ltr/ltr.more.css
new file mode 100755
index 000000000..2f9ece0b9
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/ltr/ltr.more.css
@@ -0,0 +1,199 @@
+/*.userbar-date {
+ float: right;
+ margin: 5px 6px 5px 0;
+ text-align: right;
+ font-size: 11px;
+ height: 14px;
+ width: auto;
+}*/
+.userbar-date{
+ position: absolute;
+ left: 535px;
+ margin-top: 8px;
+ white-space: nowrap;
+ z-index: 100;
+ display: block !important;
+}
+.userbar-date a {
+ color: #fff;
+}
+.userbar-date span {
+ color: #b8e1cf;
+ font-size: 9px;
+ padding: 0 2px;
+}
+
+/*for countdown*/
+.userbar-date .down-wrapper {
+ height: 30px;
+ overflow: hidden;
+}
+.userbar-date .down-wrapper span {
+ color: #ffffff;
+ font-size: 12px;
+ padding: 0;
+}
+.down-wrapper .down-time {
+ float: right;
+ overflow: hidden;
+ height: 30px;
+/* width: 72px;*/
+}
+.userbar-date .down-wrapper .down-day {
+ font-size: 30px;
+ line-height: 30px;
+ float: left;
+ margin-right: 4px;
+ color: #fff000;
+}
+.down-wrapper .down-dhm {
+ float: right;
+}
+.userbar-date .down-wrapper .down-d {
+ color: #9BD5C1;
+ color: rgba(255,255,255,0.6);
+}
+.down-wrapper .down-tip {
+ float: left;
+ position: absolute;
+ left: 18px;
+}
+.userbar-date .mod-calendar_ft a {
+ display: inline;
+}
+.userbar-date .mod-calendar a {
+ color: #39BE8D;
+}
+.userbar-date .mod-calendar_weeks {
+ color: #000000;
+}
+.userbar-date .mod-calendar_next, .userbar-date .mod-calendar_prev {
+ width: 27px;
+ height: 27px;
+ padding: 0;
+ text-indent: -1000px;
+ overflow: hidden;
+ white-space: nowrap;
+ cursor: pointer;
+}
+.userbar-date .mod-calendar_next {
+ background: url(../img/next.png?__sprite) no-repeat;
+}
+.userbar-date .mod-calendar_next:hover {
+ background: url(../img/next_hover.png?__sprite) no-repeat;
+}
+.userbar-date .mod-calendar_prev {
+ background: url(../img/prev.png?__sprite) no-repeat;
+}
+.userbar-date .mod-calendar_prev:hover {
+ background: url(../img/prev_hover.png?__sprite) no-repeat;
+}
+.userbar-date .mod-calendar_year {
+ width: 56px;
+}
+.userbar-date .mod-calendar_month {
+ width: 40px;
+}
+.userbar-date .dropdown,.calendar-wrapper span {
+ font-size: 12px;
+ color: #000000;
+ padding: 0;
+}
+.userbar-date .mod-calendar_hd {
+ padding-bottom: 2px;
+}
+#calYearDropDown {
+ margin-right: 5px;
+}
+/*.userbar-date .mod-calendar-holder dd {
+ display: none;
+}*/
+.userbar-date .mod-calendar-countdown dl {
+ background: url(../img/bell.png) no-repeat center 4px;
+ background-color: #FCA438;
+ color: #fff;
+}
+.userbar-date .mod-calendar-countdown dt{
+ text-indent: -1000px;
+ overflow: hidden;
+ white-space: nowrap;
+}
+.userbar-date .mod-calendar-football dl {
+ background: #68b821;
+ color: #fff;
+}
+.userbar-date .mod-calendar-football dt {
+ color: #fff;
+}
+.down-show {
+ background-color: #049565;
+}
+.userbar-date .no-link {
+ cursor: default;
+}
+.header-fixed .down-show {
+ background-color: transparent;
+}
+.header-fixed .calendar-open {
+ background-color: #06B67B;
+}
+.userbar-date .ui-bubble-t .ui-bubble_in, .userbar-date .ui-bubble-t .ui-bubble_out {
+ left: 64px;
+}
+/*.userbar-date li.mod-calendar-today {
+ border-bottom: 3px solid;
+}*/
+.userbar-date .mod-calendar_days a:hover dl {
+ left: -2px;
+ right: auto;
+}
+/*.userbar-date .mod-calendar-today a:hover dl {
+ left: -1px;
+}*/
+.date-wrapper {
+ max-height: 30px;
+}
+.userbar-date .mod-calendar_days li:nth-of-type(7n+7) a:hover dl {
+ left: auto;
+ right: -2px;
+}
+
+/**世界杯赛事**/
+.userbar-data-worldcup .userbar-date-cal{
+ padding: 0
+}
+.userbar-data-worldcup .worldcup{
+ margin: 8px 16px 0 14px;
+ height: 42px;
+ overflow: hidden;
+}
+.userbar-data-worldcup .match-info{
+ float: left;
+ margin-right: 8px;
+ color: #ffef00;
+ width: 50px;
+}
+.userbar-data-worldcup .match-info .des{
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow:hidden;
+}
+.userbar-data-worldcup .match-info .time{
+ font-size: 21px;
+}
+.userbar-data-worldcup .team-vs{
+ float: left;
+}
+.userbar-data-worldcup .team-vs .team-vs-icon{
+ display: inline-block;
+ width: 38px;
+ height: 33px;
+ background: url(../img/worldcup-vs.png?__sprite);
+ vertical-align: middle;
+}
+.header-fixed .userbar-data-worldcup .worldcup{
+ display: none;
+}
+.header-fixed .userbar-data-worldcup .userbar-date-cal{
+ padding: 0 16px;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/rtl/rtl.css
new file mode 100755
index 000000000..30b42ceed
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/rtl/rtl.css
@@ -0,0 +1 @@
+.userbar-date{ display: none;}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/rtl/rtl.more.css
new file mode 100755
index 000000000..27394f078
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/clock/rtl/rtl.more.css
@@ -0,0 +1,204 @@
+/*.userbar-date {
+ float: left;
+ margin: 5px 0 5px 6px;
+ text-align: left;
+ font-size: 11px;
+ height: 14px;
+}*/
+.userbar-date {
+ position: absolute;
+ right: 540px;
+ *right: 550px;
+ margin-top: 5px;
+ white-space: nowrap;
+ z-index: 100;
+ display: block !important;
+}
+.userbar-date a {
+ color: #fff;
+}
+.userbar-date span {
+ color: #b8e1cf;
+ font-size: 9px;
+ padding: 0 2px;
+}
+
+/*for countdown*/
+.userbar-date .down-wrapper {
+ height: 30px;
+ overflow: hidden;
+}
+.userbar-date .down-wrapper span {
+ color: #ffffff;
+ font-size: 12px;
+ padding: 0;
+}
+.down-wrapper .down-time {
+ float: left;
+ overflow: hidden;
+ height: 32px;
+/* width: 72px;*/
+}
+.userbar-date .down-wrapper .down-day {
+ font-size: 30px;
+ line-height: 30px;
+ float: right;
+ margin-left: 4px;
+ color: #fff000;
+}
+.down-wrapper .down-dhm {
+ float: left;
+}
+.userbar-date .down-wrapper .down-d {
+ color: #9BD5C1;
+ color: rgba(255,255,255,0.6);
+}
+.down-wrapper .down-tip {
+ float: right;
+ position: absolute;
+ right: 18px;
+}
+
+.userbar-date .mod-calendar_ft a {
+ display: inline;
+}
+.userbar-date .mod-calendar a {
+ color: #39BE8D;
+}
+.userbar-date .mod-calendar_weeks {
+ color: #000000;
+}
+.userbar-date .mod-calendar_next, .userbar-date .mod-calendar_prev {
+ width: 27px;
+ height: 27px;
+ padding: 0;
+ text-indent: -1000px;
+ overflow: hidden;
+ white-space: nowrap;
+ cursor: pointer;
+}
+.userbar-date .mod-calendar_next {
+ background: url(../img/prev_rtl.png?__sprite) no-repeat;
+}
+.userbar-date .mod-calendar_next:hover {
+ background: url(../img/prev_hover_rtl.png?__sprite) no-repeat;
+}
+.userbar-date .mod-calendar_prev {
+ background: url(../img/next_rtl.png?__sprite) no-repeat;
+}
+.userbar-date .mod-calendar_prev:hover {
+ background: url(../img/next_hover_rtl.png?__sprite) no-repeat;
+}
+.userbar-date .mod-calendar_prev{ float: right; margin-right: 40px;margin-left: 0;}
+.userbar-date .mod-calendar_next{ float: left; margin-left: 40px;margin-right: 0;}
+.userbar-date .mod-calendar_grid li {float:right;}
+.userbar-date .mod-calendar_ft {text-align: left;}
+.userbar-date .mod-calendar_year {
+ width: 56px;
+}
+.userbar-date .mod-calendar_month {
+ width: 40px;
+}
+.userbar-date .dropdown,.calendar-wrapper span {
+ font-size: 12px;
+ color: #000000;
+ padding: 0;
+}
+.userbar-date .mod-calendar_hd {
+ padding-bottom: 2px;
+}
+#calYearDropDown {
+ margin-left: 5px;
+}
+/*.userbar-date .mod-calendar-holder dd {
+ display: none;
+}*/
+.userbar-date .mod-calendar-countdown dl {
+ background: url(../img/bell.png) no-repeat center 4px;
+ background-color: #FCA438;
+ color: #fff;
+}
+.userbar-date .mod-calendar-countdown dt{
+ text-indent: -1000px;
+ overflow: hidden;
+ white-space: nowrap;
+}
+.userbar-date .mod-calendar-football dl {
+ background: #68b821;
+ color: #fff;
+}
+.userbar-date .mod-calendar-football dt {
+ color: #fff;
+}
+.down-show {
+ background-color: #049565;
+}
+.userbar-date .no-link {
+ cursor: default;
+}
+.header-fixed .down-show {
+ background-color: transparent;
+}
+.header-fixed .calendar-open {
+ background-color: #06B67B;
+}
+.userbar-date .ui-bubble-t .ui-bubble_in, .userbar-date .ui-bubble-t .ui-bubble_out {
+ right: 64px;
+}
+/*.userbar-date li.mod-calendar-today {
+ border-bottom: 3px solid;
+}*/
+.userbar-date .mod-calendar_days a:hover dl {
+ right: -2px;
+ left: auto;
+}
+/*.userbar-date .mod-calendar-today a:hover dl {
+ right: 1px;
+}*/
+.date-wrapper {
+ max-height: 30px;
+}
+.userbar-date .mod-calendar_days li:nth-of-type(7n+7) a:hover dl {
+ left: -2px;
+ right: auto;
+}
+
+/**世界杯赛事**/
+.userbar-data-worldcup .userbar-date-cal{
+ padding: 0
+}
+.userbar-data-worldcup .worldcup{
+ margin: 8px 14px 0 16px;
+ height: 42px;
+ overflow: hidden;
+}
+.userbar-data-worldcup .match-info{
+ float: right;
+ margin-left: 8px;
+ color: #ffef00;
+ width: 50px;
+}
+.userbar-data-worldcup .match-info .des{
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow:hidden;
+}
+.userbar-data-worldcup .match-info .time{
+ font-size: 21px;
+}
+.userbar-data-worldcup .team-vs{
+ float: right;
+}
+.userbar-data-worldcup .team-vs .team-vs-icon{
+ display: inline-block;
+ width: 38px;
+ height: 33px;
+ background: url(../img/worldcup-vs.png?__sprite);
+ vertical-align: middle;
+}
+.header-fixed .userbar-data-worldcup .worldcup{
+ display: none;
+}
+.header-fixed .userbar-data-worldcup .userbar-date-cal{
+ padding: 0 16px;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com.tpl
new file mode 100755
index 000000000..8b008ed15
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com.tpl
@@ -0,0 +1,102 @@
+<%style%>
+<%if $head.dir=='ltr'%>
+@import url('/widget/header/ltr/ltr.css?__inline');
+@import url('/widget/header/header-com/ltr-s/ltr.css?__inline');
+<%if $body.headerTest.actPage == '1'%>
+@import url('/widget/header/header-com/ltr-s/ltr.lv2.css?__inline');
+<%/if%>
+<%else%>
+@import url('/widget/header/rtl/rtl.css?__inline');
+@import url('/widget/header/header-com/rtl-s/rtl.css?__inline');
+<%if $body.headerTest.actPage == '1'%>
+@import url('/widget/header/header-com/rtl-s/rtl.lv2.css?__inline');
+<%/if%>
+<%/if%>
+<%/style%>
+
+<%* 声明对ltr/rtl的css依赖 *%>
+<%if $head.dir=='ltr'%>
+<%require name="common:widget/header/header-com/ltr-s/ltr.more.css"%>
+<%if $body.headerTest.actPage == '1'%>
+ <%require name="common:widget/header/header-com/ltr-s/ltr.lv2.more.css"%>
+<%/if%>
+<%else%>
+<%if $body.headerTest.actPage == '1'%>
+ <%require name="common:widget/header/header-com/rtl-s/rtl.lv2.more.css"%>
+<%/if%>
+<%require name="common:widget/header/header-com/rtl-s/rtl.more.css"%>
+<%/if%>
+
+<%if $body.headerTest.ceilingMore == '1' && $body.searchBox.widget =='search-box-4ps'%>
+ <%if $head.dir=='ltr'%>
+ <%require name="common:widget/header/header-com/ltr-s/ltr.ps.css"%>
+ <%else%>
+ <%require name="common:widget/header/header-com/rtl-s/rtl.ps.css"%>
+ <%/if%>
+<%/if%>
+
+
+<%if !empty($body.headerTest.ceilingLogo)%>
+
+<%/if%>
+
+<%widget name="common:widget/header/add-fav-bar/add-fav-bar.tpl"%>
+
+
+ <%widget name="common:widget/header/logo/logo.tpl"%>
+
+ <%if !empty($body.headerTest.logoSibling)%>
+
|
+ <%foreach explode("|", $body.headerTest.logoSibling) as $item%>
+ <%if $item == "weather"%>
+
+
+ <%widget name="common:widget/header/`$item`/`$item`.tpl"%>
+
+
+
+ <%else%>
+ <%widget name="common:widget/header/`$item`/`$item`.tpl"%>
+ <%/if%>
+
|
+ <%/foreach%>
+ <%/if%>
+
+
+ <%if !empty($body.headerTest.showContent)%>
+ <%foreach array_reverse(explode("|", $body.headerTest.showContent)) as $module%>
+ <%widget name="common:widget/header/`$module`/`$module`.tpl"%>
+ |
+ <%/foreach%>
+ <%/if%>
+
+ <%if !empty($body.newerguide.isShow)%>
+ <%widget name="common:widget/header/newerguide/newerguide.tpl"%>
+ <%/if%>
+
+ <%if !empty($body.tearPage.isShow)%>
+ <%widget name="common:widget/header/tear-page/tear-page.tpl"%>
+ <%/if%>
+
+
+<%script%>
+ conf.headerTest = {
+ dateWidth : "<%$body.headerTest.dateWidth%>",
+ weatherWidth : "<%$body.headerTest.weather.width%>",
+ isCeiling: "<%$body.headerTest.isCeiling%>",
+ ceilingMore: "<%$body.headerTest.ceilingMore%>",
+ settingTip: "<%$body.headerTest.settingTip%>",
+ ceilingLogo: "<%$body.headerTest.ceilingLogo%>"
+ };
+ require.async("common:widget/header/header-com/header-com-async.js");
+<%/script%>
+
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/header-com-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/header-com-async.js
new file mode 100755
index 000000000..fd709ecb6
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/header-com-async.js
@@ -0,0 +1,156 @@
+var $ = require("common:widget/ui/jquery/jquery.js");
+var UT = require("common:widget/ui/ut/ut.js");
+
+var CON = conf.headerTest,
+ direct = (conf.dir == "ltr" ? "left" : "right"),
+ headerTop = $("#top"),
+ parentHead = headerTop.parent(),
+ favBar = $("#addFavBar"),
+ isScrolled = false,
+ fixedClass = "header-fixed" + (CON.ceilingMore === "1" ? " header-fixed-up" : ""),
+ initHeight = headerTop.outerHeight(),
+ //placeHoldr = "",
+ docBody = $(document.body),
+ curHeight = 0;
+
+$(".userbar-logoSibling", headerTop).find(".userbar_split").first().css("float", direct);
+$(".userbar-tool", headerTop).find(".userbar_split").last().remove(); // 移除多余的分隔条
+
+$(".box-search").eq(0).parent().css("position", "relative");//用于设首等定位
+$("#userbarBtn").css("display", "block");
+
+
+if (/(png|gif|jpg|jpeg)/i.test(CON.settingTip)) {
+ $("#settingBtn").html(" ");
+} else {
+ $("#settingBtn").addClass("settings-btn_word").html(CON.settingTip);
+}
+
+
+$(function() {
+ var setBtn = $("#settingBtn"),
+ setDrop = $("#settingDropdown"),
+ $window = $(window),
+ weather = $("#weather");
+
+ if (CON.dateWidth !== "") {
+ $("#dateBox").width(CON.dateWidth);
+ }
+ if(CON.weatherWidth !== "") {
+ weather.children(".fl").width(CON.weatherWidth);
+ }
+
+ setBtn.wrap('
');
+ setDrop.prepend('');
+ //if (parentHead.is("body")) {
+ //$(placeHoldr).insertAfter(headerTop);
+ //}
+
+ headerTop.find(".settings").hover(function() {
+ setBtn.parent().addClass("module-mask");
+ setDrop.show();
+ }, function() {
+ setBtn.parent().removeClass("module-mask");
+ setDrop.hide();
+ });
+
+ setTimeout(function() {
+ headerTop.find(".userbar_split").css("visibility", "visible");
+ setBtn.off("click.old");
+ setBtn.on('click', function(e) {
+ e.preventDefault();
+ });
+ }, 1500);
+ /*
+ $("#themeSelect").on("click", "li", function(e) {
+ var themeId = $(this).attr("data-theme");
+ if (Gl.weather && Gl.weather.refreshIcon) {
+ setTimeout(function() {
+ Gl.weather.refreshIcon(themeId);
+ }, 20);
+ }
+ });*/
+ $("#siteList").on("mousedown", "a", function(e) {
+ UT.send({
+ position: "siteSwitch",
+ sort: $(this).attr("href"),
+ type: "click",
+ modId: "country"
+ });
+ });
+ /*$("#userbarBtn").on("click", "a", function(e) {
+ UT.send({
+ position: "sethp-btn",
+ sort: $(this).attr("id").replace(/02/, ""),
+ type: "click",
+ modId: "sethp-btn"
+ });
+ });*/
+ weather.on("click", function(e) {
+ var $tar = $(e.target);
+ if ($tar.closest("a").length > 0) {
+ UT.send({
+ position: "click",
+ sort: "click",
+ type: "click",
+ modId: "weather"
+ });
+ } else if ($tar.closest("#weatherView").length > 0) {
+ UT.send({
+ position: "click",
+ ac: "b",
+ sort: "click",
+ type: "click",
+ modId: "weather"
+ });
+ }
+ });
+/* $("#dateBox").on("click", "a", function(e) {
+ UT.send({
+ position: "click",
+ sort: "click",
+ type: "click",
+ modId: "date"
+ });
+ });*/
+ $(".settings, .account_wrap, .app-wrapper, .skinbox-wrap").on("mouseenter", function() {
+ $(this).prev(".userbar_split").css("visibility", "hidden");
+ $(this).next(".userbar_split").css("visibility", "hidden");
+ }).on("mouseleave", function() {
+ $(this).prev(".userbar_split").css("visibility", "visible");
+ $(this).next(".userbar_split").css("visibility", "visible");
+ });
+ //吸顶
+ if (CON.isCeiling === "1") {
+ $window.on("scroll", function() {
+ isScrolled = true;
+ });
+
+ window.setTimeout(function() {
+ if (isScrolled) {
+ isScrolled = false;
+ curHeight = initHeight + ((favBar.css("display") === "none") ? 0 : favBar.outerHeight());
+ if ($(document).scrollTop() > curHeight) {
+ if (!docBody.hasClass(fixedClass)) {
+ //parentHead.is("body") || parentHead.height(curHeight);
+ headerTop.css("position", "fixed");
+ docBody.addClass(fixedClass);
+ if(CON.ceilingMore === "1") {
+ $window.trigger("headerFixed.transTo");
+ }
+ }
+ } else {
+ if (docBody.hasClass(fixedClass)) {
+ //parentHead.is("body") || parentHead.height("auto");
+ headerTop.css("position", "relative");
+ docBody.removeClass(fixedClass);
+ if(CON.ceilingMore === "1") {
+ $window.trigger("headerFixed.restore");
+ }
+ }
+ }
+ }
+ window.setTimeout(arguments.callee, 250);
+ }, 250);
+ }
+});
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/addfav-1.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/addfav-1.png
new file mode 100755
index 000000000..2f4d93283
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/addfav-1.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/addfav-2.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/addfav-2.png
new file mode 100755
index 000000000..bc271055f
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/addfav-2.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/addfav-3.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/addfav-3.png
new file mode 100755
index 000000000..fd1a215ff
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/addfav-3.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/arrow1-rtl.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/arrow1-rtl.png
new file mode 100755
index 000000000..36e8342ae
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/arrow1-rtl.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/arrow1.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/arrow1.png
new file mode 100755
index 000000000..a47042dd0
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/arrow1.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/arrow2-rtl.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/arrow2-rtl.png
new file mode 100755
index 000000000..72b1c55bf
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/arrow2-rtl.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/arrow2.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/arrow2.png
new file mode 100755
index 000000000..dde31d817
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/arrow2.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/btn-rtl.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/btn-rtl.png
new file mode 100755
index 000000000..7dca042aa
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/btn-rtl.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/btn.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/btn.png
new file mode 100755
index 000000000..53eb3293d
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/btn.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/calendar.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/calendar.png
new file mode 100755
index 000000000..60e6e6ed2
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/calendar.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/del.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/del.png
new file mode 100755
index 000000000..38ad75dc7
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/del.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/down-1.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/down-1.png
new file mode 100755
index 000000000..f28d5cba0
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/down-1.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/down-2.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/down-2.png
new file mode 100755
index 000000000..10d735816
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/down-2.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/down-3.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/down-3.png
new file mode 100755
index 000000000..5e33862d8
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/down-3.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/drop.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/drop.png
new file mode 100755
index 000000000..76bd362ba
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/drop.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/i-arrow-open.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/i-arrow-open.png
new file mode 100755
index 000000000..09ba2e66e
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/i-arrow-open.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/i-arrow.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/i-arrow.png
new file mode 100755
index 000000000..0174be2bc
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/i-arrow.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/i-search.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/i-search.png
new file mode 100755
index 000000000..e99be9b12
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/i-search.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/icon-delete-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/icon-delete-hover.png
new file mode 100755
index 000000000..2dadce85c
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/icon-delete-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/icon-delete.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/icon-delete.png
new file mode 100755
index 000000000..72ad45601
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/icon-delete.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/icon-logotips-rtl.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/icon-logotips-rtl.png
new file mode 100755
index 000000000..f9deeece5
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/icon-logotips-rtl.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/icon-logotips.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/icon-logotips.png
new file mode 100755
index 000000000..a8ac5b151
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/icon-logotips.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/icon-msg-notice-over-rtl.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/icon-msg-notice-over-rtl.png
new file mode 100755
index 000000000..6b2423429
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/icon-msg-notice-over-rtl.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/icon-msg-notice-over.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/icon-msg-notice-over.png
new file mode 100755
index 000000000..6352a62a5
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/icon-msg-notice-over.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/icon-msg-notice-rtl.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/icon-msg-notice-rtl.png
new file mode 100755
index 000000000..51a5e55b9
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/icon-msg-notice-rtl.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/icon-msg-notice.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/icon-msg-notice.png
new file mode 100755
index 000000000..30fa678e5
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/icon-msg-notice.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/light_new.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/light_new.png
new file mode 100755
index 000000000..6f1f579e2
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/light_new.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/logo_test.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/logo_test.png
new file mode 100755
index 000000000..07cc3d762
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/logo_test.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/save-city_click.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/save-city_click.png
new file mode 100755
index 000000000..40524a1b6
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/save-city_click.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/save-city_click_2.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/save-city_click_2.png
new file mode 100755
index 000000000..eb0b2a9fd
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/save-city_click_2.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/save-city_click_3.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/save-city_click_3.png
new file mode 100755
index 000000000..af316655f
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/save-city_click_3.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/save-city_hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/save-city_hover.png
new file mode 100755
index 000000000..271b24012
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/save-city_hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/save-city_hover_2.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/save-city_hover_2.png
new file mode 100755
index 000000000..aec8488fa
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/save-city_hover_2.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/save-city_hover_3.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/save-city_hover_3.png
new file mode 100755
index 000000000..42adefc69
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/save-city_hover_3.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/save-city_normal.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/save-city_normal.png
new file mode 100755
index 000000000..151898cb4
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/save-city_normal.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/save-city_normal_2.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/save-city_normal_2.png
new file mode 100755
index 000000000..374fb4fec
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/save-city_normal_2.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/save-city_normal_3.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/save-city_normal_3.png
new file mode 100755
index 000000000..500904744
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/save-city_normal_3.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/select-city_tip.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/select-city_tip.png
new file mode 100755
index 000000000..66fc478ba
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/select-city_tip.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/sethome-1.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/sethome-1.png
new file mode 100755
index 000000000..cccf85962
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/sethome-1.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/sethome-2.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/sethome-2.png
new file mode 100755
index 000000000..8a89d89b1
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/sethome-2.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/sethome-3.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/sethome-3.png
new file mode 100755
index 000000000..a28dad801
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/sethome-3.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/setting.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/setting.png
new file mode 100755
index 000000000..762c88ec3
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/setting.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/weather-tip_down.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/weather-tip_down.png
new file mode 100755
index 000000000..f5d1bb95a
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/weather-tip_down.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/weather-tip_down_rtl.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/weather-tip_down_rtl.png
new file mode 100755
index 000000000..e6b5afbc4
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/weather-tip_down_rtl.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/weather-tip_up.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/weather-tip_up.png
new file mode 100755
index 000000000..7bd7cdbc5
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/weather-tip_up.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/weather-tip_up_rtl.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/weather-tip_up_rtl.png
new file mode 100755
index 000000000..e32954234
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/img/weather-tip_up_rtl.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/ltr-s/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/ltr-s/ltr.css
new file mode 100755
index 000000000..7a73d4a46
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/ltr-s/ltr.css
@@ -0,0 +1,127 @@
+body div.userbar-wrap {
+ border: none;
+ zoom: 1;
+ z-index: 100;
+}
+.header-fixed .userbar-wrap {
+ position: fixed;
+ width: 100%;
+ top: 0;
+ left: 0;
+}
+div.userbar-tool {
+ margin-top: 0;
+ width: auto;
+}
+.settings {
+ max-width: 170px;
+}
+.settings .settings-btn {
+ position: relative;
+ height: 50px;
+ width: auto;
+ max-width: 150px;
+ padding: 0 10px;
+ border: none;
+ vertical-align: middle;
+ display: table-cell;
+ *display: block;
+ background: none;
+ overflow: hidden;
+ cursor: default;
+ color: #fff;
+}
+.settings .settings-btn_word {
+ line-height: 50px;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ display: block;
+ color: rgba(255,255,255, 0.5);
+}
+div.setting-btn-wrap {
+ height: 50px;
+ overflow: hidden;
+}
+.userbar_split {
+ float: right;
+ width: 1px;
+ height: 100%;
+ font-size: 14px;
+ line-height: 50px;
+ overflow: hidden;
+ opacity: 0.3;
+ filter:alpha(opacity=30);
+ visibility: hidden;
+}
+.userbar-logoSibling .userbar_split {
+ float: left;
+ background-color: #fff;
+ opacity: 0.2;
+ filter:alpha(opacity=20);
+}
+div.settings-dropdown {
+ width: 118px;
+}
+.userbar-btns {
+ visibility: hidden;
+ position: absolute;
+ right: 0;
+ top: 26px;
+}
+/*.box-search .box-search_form .input input {
+ width: 480px;
+}
+.box-search .box-search_form .input {
+ margin-left: 9px;
+}*/
+.userbar-logo {
+ /*margin-right: 150px;*/
+ max-width: 280px;
+}
+.userbar-date-wrapper {
+ float: left;
+ position: relative;
+ z-index: 100;
+ background-repeat: no-repeat;
+}
+div.userbar-date {
+ position: relative;
+ left: auto;
+ float: left;
+ /*margin-left: 20px;
+ margin-right: 20px;*/
+ margin-top: 0;
+ /*overflow: hidden;*/
+ width: 130px;
+ padding: 11px 18px 9px;
+ /*padding-top: 9px;
+ padding-bottom: 9px;*/
+}
+.userbar-date br {
+ display: block !important;
+}
+.userbar-date .calendar_bg {
+ display: inline !important;
+ float: left;
+ width: 30px;
+ height: 30px;
+ font-size: 14px;
+ font-weight: 700;
+ line-height: 36px;
+ padding: 0;
+ margin-right: 8px;
+ text-align: center;
+ color: #fff;
+ background: url(../img/calendar.png?__sprite) no-repeat;
+}
+.weather-wrap {
+ position: relative;
+ float: left;
+}
+.header-fixed_mask {
+ display: none;
+}
+div.userbar-weather {
+ float: left;
+}
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/ltr-s/ltr.lv2.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/ltr-s/ltr.lv2.css
new file mode 100755
index 000000000..b7be5bb0b
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/ltr-s/ltr.lv2.css
@@ -0,0 +1,11 @@
+/*for lv2*/
+body .userbar-wrap {
+ background-image: none !important;
+ background: #595959 !important;
+ background: rgba(0,0,0,0.6) !important;
+}
+body .module-mask {
+ background: rgba(0,0,0,0.2);
+ filter:progid:DXImageTransform.Microsoft.gradient(enabled='true', startColorstr='#33000000', endColorstr='#33000000');
+ -ms-filter:"progid:DXImageTransform.Microsoft.gradient(enabled='true',startColorstr='#33000000', endColorstr='#33000000')";
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/ltr-s/ltr.lv2.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/ltr-s/ltr.lv2.more.css
new file mode 100755
index 000000000..c1095b063
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/ltr-s/ltr.lv2.more.css
@@ -0,0 +1,117 @@
+body .userbar-weather .fl:hover {
+ background: #474747;
+ background: rgba(0,0,0,0.2);
+}
+body.header-fixed .account-dropdown_wrap {
+ /*top: 30px;*/
+}
+body .account-dropdown_wrap {
+ /*top: 50px;*/
+ box-shadow: none;
+ /*border-color: #4C474A;
+ border-color: rgba(0,0,0,0.7);*/
+ border-width: 0;
+}
+body .wrap-message-content,body .account-loginfo_wrap {
+ background: #595959;
+ background: rgba(0,0,0,0.6);
+ border: 1px solid #4C474A;
+ border-color: rgba(0,0,0,0.7);
+ border-top-width: 0;
+}
+body .account-message_wrap,body .wrap-message-content {
+ margin-top: 6px;
+ border-bottom-width: 0;
+}
+body .message-no-item span {
+ color: #fff;
+}
+body .wrap-message-content li {
+ border-bottom-color: #3B383B;
+ border-bottom-color: rgba(0,0,0,0.4);
+}
+body .wrap-message-content li:hover {
+ background: #474747;
+ background: rgba(0,0,0,0.2);
+}
+body .account_arrow {
+ border-bottom-color: #595959;
+ border-bottom-color: rgba(0,0,0,0.6);
+ top: -6px;
+}
+body .login-tip_con {
+ height: 28px;
+ line-height: 28px;
+}
+body .account_login-tip {
+ border-left: 0;
+}
+body .wrap-message-content .message-target {
+ color: #C2C2C2;
+}
+body .message-target:hover span {
+ color:#ffffff;
+}
+body .message-over-item .message-target {
+ color: #8c8c8c;
+}
+body .ico-message-delete {
+ background: url("../img/icon-delete.png?__sprite") no-repeat left top;
+}
+body .ico-message-delete:hover{
+ background: url("../img/icon-delete-hover.png?__sprite") no-repeat left top;
+}
+body .ico-message-type1,body .ico-message-type2 {
+ background: url("../img/icon-msg-notice.png?__sprite") no-repeat left top;
+}
+body .message-over-item .ico-message-type1,body .message-over-item .ico-message-type2{
+ background: url("../img/icon-msg-notice-over.png?__sprite") no-repeat left top;
+}
+body .account_logout_name {
+ color: #ffffff;
+}
+body .account_logout_email {
+ color: #8c8c8c;
+}
+body .account-loginfo_wrap img {
+ border-color: #EFFCF9;
+ border-color: rgba(255,255,255, 0.6);
+}
+
+/*logo*/
+body .userbar-logo_tip {
+ background: #595959;
+ background: rgba(0,0,0,.6);
+ border: 1px solid #4C474A;
+ border-color: rgba(0,0,0,.7);
+ border-top-width: 0;
+ top: 56px;
+}
+body .userbar-logo_tip .arrow_bg {
+ display: none;
+}
+body .userbar-logo_tip .arrow {
+ border-width: 6px;
+ top: -12px;
+ border-bottom-color: #595959;
+ border-bottom-color: rgba(0,0,0,0.6);
+}
+body .userbar-logo_tip a {
+ color: #FAFCFA;
+}
+body .userbar-logo_tip a:hover {
+ /*color: #ffffff;*/
+ text-decoration: underline;
+}
+body .userbar-logo_tip .tip-close {
+ background: url("../img/icon-delete.png?__sprite") no-repeat left top;
+}
+body .userbar-logo_tip .tip-close:hover{
+ background: url("../img/icon-delete-hover.png?__sprite") no-repeat left top;
+}
+body .userbar-logo_tip .tipLinkArrow {
+ background: url("../img/icon-logotips.png?__sprite") no-repeat left top;
+}
+body .userbar-logo_tip {
+ color: #E2E2E2;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/ltr-s/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/ltr-s/ltr.more.css
new file mode 100755
index 000000000..3d7820970
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/ltr-s/ltr.more.css
@@ -0,0 +1,990 @@
+/*============userbar=============*/
+ body .userbar-tool {
+ /*width: 220px;
+ margin-top: 4px;
+ position: relative;*/
+ position: absolute;
+ right: 0;
+ overflow: visible;
+ z-index: 101;
+ display: block;
+}
+.userbar-wrap {
+ background-image:-moz-linear-gradient(50% 0% -90deg, rgb(0, 176, 117) 0%, rgb(0, 171, 114) 100%);
+ background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0, rgb(0, 176, 117)), color-stop(1, rgb(0, 171, 114)));
+ background-image:-webkit-linear-gradient(-90deg, rgb(0, 176, 117) 0%, rgb(0, 171, 114) 100%);
+ background-image:-o-linear-gradient(-90deg, rgb(0, 176, 117) 0%, rgb(0, 171, 114) 100%);
+ background-image:-ms-linear-gradient(-90deg, rgb(0, 176, 117) 0%, rgb(0, 171, 114) 100%);
+ background-image:linear-gradient(-90deg, rgb(0, 176, 117) 0%, rgb(0, 171, 114) 100%);
+ /*-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff00b075,endColorstr=#ff00ab72,GradientType=0)";
+ filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff00b075,endColorstr=#ff00ab72,GradientType=0);*/
+}
+.userbar a:hover {
+ text-decoration: none;
+}
+.weather-wrap .weather-more_wrap {
+ background: #0c815a;
+ overflow: visible;
+ height: 0;
+ border-top: 0 none;
+ zoom: 1;
+}
+.weather-more_show {
+ height: auto;
+ border-top: 1px solid #0a6f4e;
+}
+.weather-more_line {
+ -moz-box-shadow: 0 0 4px rgba(0, 0, 0, 0.1) inset;
+ -webkit-box-shadow: 0 0 4px rgba(0, 0, 0, 0.1) inset;
+ -o-box-shadow: 0 0 4px rgba(0, 0, 0, 0.1) inset;
+ box-shadow: 0 0 4px rgba(0, 0, 0, 0.1) inset;
+ border-bottom: 1px solid #0a6f4e;
+}
+.weather-more {
+ display: none;
+}
+div.settings-dropdown {
+ top: 50px;
+ overflow: visible;
+ box-shadow: 2px 2px 2px #DEDEDE, -2px 0px 2px #DEDEDE;
+}
+ul.settings-site {
+ padding: 5px 3px;
+}
+ul.settings-site a {
+ height: 22px;
+ line-height: 22px;
+ width: 72px;
+ padding: 0 20px;
+}
+ul.settings-site a:hover {
+ background-color: #00b075;
+ color: #fff;
+}
+.settings-site a.cur:hover {
+ color: #00ac72;
+}
+/*
+.select_theme {
+ background-color: #D2F3EA;
+}
+ul.select_theme {
+ padding-left: 25px;
+ padding-top: 10px;
+ padding-bottom: 10px;
+}*/
+ .settings-arrow, .settings-arrow_bg {
+ position: absolute;
+ height: 0;
+ width: 0;
+ border: 6px dashed transparent;
+}
+.settings-arrow {
+ border-bottom-color: #bee2d6;
+ border-bottom-style: solid;
+ top: -12px;
+ right: 10px;
+}
+.settings-arrow_bg {
+ border-bottom-color: #EBFCF7;
+ border-bottom-style: solid;
+ margin: -6px 0 0 -7px;
+}
+.module-mask {
+ background:rgba(255, 255, 255, 0.1);
+ filter:progid:DXImageTransform.Microsoft.gradient(enabled='true', startColorstr='#19FFFFFF', endColorstr='#19FFFFFF');
+ -ms-filter:"progid:DXImageTransform.Microsoft.gradient(enabled='true',startColorstr='#19FFFFFF', endColorstr='#19FFFFFF')";
+ cursor: pointer;
+}
+/*
+.body-theme_2 .settings-arrow {
+ border-bottom-color: #d4e0eb;
+}
+.body-theme_2 .settings-arrow_bg {
+ border-bottom-color: #eef3f8;
+}
+.body-theme_2 .select_theme {
+ background-color: #CDE2F7;
+}
+.body-theme_2 .settings-site a:hover {
+ background-color: #1188f7;
+ color: #fff;
+}
+.body-theme_2 .settings-site a.cur {
+ color: #1188f7;
+}
+.body-theme_2 .settings-site a.cur:hover {
+ color: #1188f7;
+ background-color: transparent;
+}
+.body-theme_3 .settings-arrow {
+ border-bottom-color: #ecdfe1;
+}
+.body-theme_3 .settings-arrow_bg {
+ border-bottom-color: #fcf6f7;
+}
+.body-theme_3 .select_theme {
+ background-color: #FCE8EA;
+}
+.body-theme_3 .settings-site a:hover {
+ background-color: #ff617b;
+ color: #fff;
+}
+.body-theme_3 .settings-site a.cur {
+ color: #ff617b;
+}
+.body-theme_3 .settings-site a.cur:hover {
+ color: #ff617b;
+ background-color: transparent;
+}*/
+
+/*weather*/
+ .weather_last, .weather-info .dot_img, .weather-info .temperature_hum, .userbar-weather li.weather_last {
+ display: none;
+}
+.weather-info .text {
+ visibility: visible;
+ font-size: 12px;
+}
+.weather-info .temperature_p {
+ font-size: 12px;
+}
+.userbar-weather div.fl {
+ height: 45px;
+ padding-top: 5px;
+ margin-left: 0;
+ width: auto;
+ padding-left: 18px;
+ padding-right: 18px;
+ cursor: pointer;
+}
+.userbar-weather .fl:hover {
+ background-color: #06B67B;
+}
+.weather-wrap .userbar-weather {
+ margin-right: 0;
+ height: 50px;
+ padding-top: 0;
+}
+.userbar-weather .fl li {
+ margin-right: 0;
+}
+div.userbar-weather_console {
+ position: absolute;
+ left: 100px;
+ top: 74px;
+ height: auto;
+ display: none;
+}
+div.userbar-weather_console a {
+ color: #000000;
+ font-size: 14px;
+ font-weight: 700;
+}
+#weatherView li img {
+ width: auto;
+}
+.userbar-weather .weather-info span {
+ font-weight: 500;
+}
+.userbar-weather_console .weather-days {
+ display: none;
+}
+.weather-wrap .weather-more_wrap {
+ position: absolute;
+ left: -1px;
+ top: 50px;
+ height: auto;
+ display: none;
+ border: 1px solid #BEE2D6;
+ box-shadow: 2px 2px 2px #DEDEDE, -2px 0 2px #DEDEDE;
+}
+.weather-wrap .weather-more {
+ display: block;
+ width: 325px;
+ overflow: hidden;
+ background: #F0FFFC;
+}
+.weather-wrap .weather-more li {
+ padding: 16px 0;
+ height: 98px;
+ overflow: hidden;
+ color: #899E99;
+ width: 162px;
+ margin-top: 1px;
+ background: #D6F8EF;
+ float: left;
+}
+.weather-wrap .weather-more .temperature_big, .weather-wrap .weather-more .humidity {
+ color: #000000;
+}
+.weather-wrap .weather-more li img {
+ padding: 14px 0;
+}
+body .weather-more_odd {
+ margin-left: 1px;
+ _margin-left: 0;
+ -moz-box-shadow: none;
+ -webkit-box-shadow: none;
+ -o-box-shadow: none;
+ box-shadow: none;
+}
+.weather-wrap .weather-more .weather-more_today {
+ float: none;
+ text-align: left;
+ width: auto;
+ height: auto;
+ padding: 10px 20px;
+ background: transparent;
+ overflow: hidden;
+ position: relative;
+}
+.weather-more_today .temperature_big {
+ font-size: 18px;
+ padding-left: 50px;
+}
+.weather-wrap .dot_img_head {
+ margin-bottom: -4px;
+ background: url(../img/drop.png?__sprite) no-repeat;
+}
+.weather-more_wrap .weather-more_line {
+ border: none;
+}
+.weather-more .humidity {
+ font-size: 12px;
+ padding: 0 4px;
+}
+.weather-more_today p {
+ margin-top: 10px;
+ margin-bottom: 10px;
+ color: #000000;
+}
+.weather-more_today p:first-child {
+ padding-left: 130px !important;
+ color: #899E99 !important;
+}
+.weather-wrap .weather-more .weather-more_today img {
+ position: absolute;
+ top: 50px;
+ left: 16px;
+ padding: 0;
+}
+.weather-more_today .weather-more_tip-remind {
+ padding-left: 50px;
+ color: #899E99;
+ font-weight: 500;
+}
+body div.userbar-weather_city-cur a {
+ background: url(../img/select-city_tip.png) no-repeat right top;
+ padding-right: 24px;
+ display: inline-block;
+ min-height: 14px;
+}
+.weather-wrap_arrow, .weather-wrap_arrow-bg {
+ position: absolute;
+ height: 0;
+ width: 0;
+ border: 6px solid transparent;
+}
+.weather-wrap_arrow {
+ border-bottom-color: #bee2d6;
+ bottom: -1px;
+ left: 64px;
+ display: none;
+ z-index: 2;
+}
+.weather-wrap_arrow-bg {
+ border-bottom-color: #EBFCF7;
+ margin: -6px 0 0 -7px;
+}
+div.userbar-weather_tip {
+ right: 0;
+ left: 15px;
+ top: 44px;
+ width: 200px;
+ background-color: #FEFEFE;
+ border-color: #BEE2D6;
+ border-top-color: #00AB72;
+ background-image: -moz-linear-gradient(top, #FFFFFF, #FAFDFC);
+ background-image: -webkit-linear-gradient(top, #FFFFFF, #FAFDFC);
+ background-image: -ms-linear-gradient(top, #FFFFFF, #FAFDFC);
+ background-image: -o-linear-gradient(top, #FFFFFF, #FAFDFC);
+ background-image: linear-gradient(top, #FFFFFF, #FAFDFC);
+ border-radius: 4px;
+ padding: 2px 14px 2px 26px;
+ height: 26px;
+}
+div.userbar-weather_tip .arrow {
+ border-bottom-color: #9BDBC3;
+ border-width: 7px;
+ top: -14px;
+ left: 22px;
+}
+div.userbar-weather_tip .arrow_bg {
+ border-bottom-color: #FFFFFF;
+ margin: -5px -8px 0 -6px;
+ border-width: 6px;
+}
+.city-select .box-prompt-inner, .weather-wrap div.city-select {
+ border: none;
+}
+.weather-wrap div.city-select {
+ right: 0;
+ left: -101px;
+ top: -24px;
+ width: 285px;
+ border: 1px solid #BEE2D6;
+ box-shadow: 2px 2px 2px #DEDEDE, -2px 0 2px #DEDEDE;
+ border-top-width: 0;
+ background: #F0FFFC;
+ padding: 40px 20px 80px;
+ overflow: hidden;
+ color: #676566;
+ font-size: 14px;
+}
+.city-select .weather_cur-city {
+ font-size: 20px;
+ font-weight: 600;
+ height: 20px;
+ margin-bottom: 30px;
+}
+.city-select .weather_close-btn {
+ position: absolute;
+ top: 16px;
+ right: 20px;
+ font-size: 18px;
+ color: #B3E0D1;
+}
+.weather-wrap .city-select select {
+ width: 260px;
+ height: 26px;
+ line-height: 26px;
+ color: #000000;
+ font-size: 14px;
+ padding-left: 4px;
+}
+.weather-wrap .city-select label {
+ font-size: 14px;
+ margin-top: 10px;
+ margin-bottom: 8px;
+}
+.weather-wrap .city-select .btn-bar {
+ width: auto;
+ margin-top: 30px;
+ text-align: left;
+}
+.weather-wrap .mod-btn_normal, .weather-wrap .mod-btn_cancel {
+ width: 110px;
+ float: none;
+ display: inline-block;
+ border-radius: 2px;
+ -ms-border-radius: 2px;
+ -o-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -moz-border-radius: 2px;
+ height: 26px;
+ line-height: 26px;
+}
+.weather-wrap .mod-btn_normal {
+ margin-right: 34px;
+ background: url(../img/save-city_normal.png?__sprite) no-repeat;
+}
+.weather-wrap .mod-btn_normal:hover {
+ background: url(../img/save-city_hover.png?__sprite) no-repeat;
+}
+.weather-wrap .mod-btn_normal:active {
+ background: url(../img/save-city_click.png?__sprite) no-repeat;
+}
+.weather-wrap .mod-btn_normal .ui-button-text {
+ color: #ffffff;
+}
+.weather-wrap .mod-btn_cancel .ui-button-text {
+ color: #666666;
+}
+.weather-wrap .weather-tip_def {
+ width: 9px;
+ height: 9px;
+ background: url(../img/arrow2.png?__sprite) no-repeat;
+ position: absolute;
+ right: 2px;
+ bottom: 3px;
+ pointer-events: none;
+ cursor: pointer;
+}
+.weather-wrap .weather-tip_up {
+ background: url(../img/arrow1.png?__sprite) no-repeat;
+ bottom: 0;
+ top: 2px;
+}
+/*
+.body-theme_2 .userbar-weather .fl:hover {
+ background-color: #2D90ED;
+}
+.body-theme_2 .weather-wrap .weather-more {
+ background: #EEF3F8;
+}
+.body-theme_2 .weather-wrap .weather-more li {
+ background: #D3E5F6;
+}
+.body-theme_2 .weather-more li.weather-more_today {
+ background: transparent;
+}
+.body-theme_2 .weather-wrap div.city-select {
+ background: #EEF3F8;
+ border-color: #B9CFE4;
+}
+.body-theme_2 .weather-wrap_arrow-bg {
+ border-bottom-color: #EEF3F8;
+}
+.body-theme_2 .weather-wrap_arrow {
+ border-bottom-color:#B9CFE4;
+}
+.body-theme_2 .weather-wrap .mod-btn_normal {
+ background: url(../img/save-city_normal_2.png?__sprite) no-repeat;
+}
+.body-theme_2 .weather-wrap .mod-btn_normal:hover {
+ background: url(../img/save-city_hover_2.png?__sprite) no-repeat;
+}
+.body-theme_2 .weather-wrap .mod-btn_normal:active {
+ background: url(../img/save-city_click_2.png?__sprite) no-repeat;
+}
+.body-theme_2 .city-select .weather_close-btn {
+ color: #81B6E7;
+}
+.body-theme_2 .weather-wrap .weather-more_wrap {
+ border-color: #B9CFE4;
+}
+.body-theme_3 .userbar-weather .fl:hover {
+ background-color: #FCA1B1;
+}
+.body-theme_3 .weather-wrap .weather-more {
+ background: #FCF6F7;
+}
+.body-theme_3 .weather-wrap .weather-more li {
+ background: #FCE7EA;
+}
+.body-theme_3 .weather-more li.weather-more_today {
+ background: transparent;
+}
+.body-theme_3 .weather-wrap div.city-select {
+ background: #FCF6F7;
+ border-color: #DDC8CB;
+}
+.body-theme_3 .weather-wrap_arrow-bg {
+ border-bottom-color: #FCF6F7;
+}
+.body-theme_3 .weather-wrap_arrow {
+ border-bottom-color: #DDC8CB;
+}
+.body-theme_3 .weather-wrap .mod-btn_normal {
+ background: url(../img/save-city_normal_3.png?__sprite) no-repeat;
+}
+.body-theme_3 .weather-wrap .mod-btn_normal:hover {
+ background: url(../img/save-city_hover_3.png?__sprite) no-repeat;
+}
+.body-theme_3 .weather-wrap .mod-btn_normal:active {
+ background: url(../img/save-city_click_3.png?__sprite) no-repeat;
+}
+.body-theme_3 .city-select .weather_close-btn {
+ color: #F9BBC5;
+}
+.body-theme_3 .weather-wrap .weather-more_wrap {
+ border-color: #DDC8CB;
+}*/
+
+/*吸顶*/
+ .header-fixed .userbar-wrap {
+ position: fixed;
+ width: 100%;
+ top: 0;
+ left: 0;
+ background-image: none;
+ background: rgba(0, 173, 115, 0.8);
+}
+/*
+.body-theme_2.header-fixed .userbar-wrap {
+ background: rgba(16, 130, 236, 0.8);
+}
+.body-theme_3.header-fixed .userbar-wrap {
+ background: rgba(249, 143, 160, 0.8);
+}*/
+ .header-fixed .userbar-wrap, .header-fixed .userbar, .header-fixed #indexLogo, .header-fixed .userbar-logo {
+ height: 30px;
+}
+.header-fixed #indexLogo {
+ float: left;
+ width: 94px;
+ background: url(../img/logo_test.png) no-repeat left center;
+}
+.header-fixed #indexLogo img {
+ display: none !important;
+}
+.header-fixed .userbar-logo {
+ /*margin-right: 186px;*/
+}
+.header-fixed .userbar-logo_slogan, .header-fixed .userbar-date .calendar_bg, .header-fixed .userbar-date br {
+ display: none !important;
+}
+.header-fixed .userbar-logo_tip, .header-fixed .tear-page, .header-fixed .userbar-weather_tip {
+ display: none !important;
+}
+.header-fixed #weatherView li img {
+ width: 20px;
+ height: 18px;
+}
+.header-fixed .userbar-date {
+ /*padding-top: 0;
+ padding-bottom: 0;
+ margin-left: 12px;
+ margin-right: 12px;*/
+ padding: 0 16px;
+ line-height: 30px;
+ width: auto !important;
+}
+.header-fixed .weather-info .text {
+ display: inline;
+ margin-right: 4px;
+}
+.header-fixed .weather-wrap .userbar-weather, .header-fixed .account_trig, .header-fixed .setting-btn-wrap {
+ height: 30px;
+}
+.header-fixed .account_trig img {
+ width: 14px;
+ height: 14px;
+}
+.header-fixed .userbar-weather div.fl {
+ height: 25px;
+ padding: 2px 16px 3px;
+}
+.header-fixed .weather-info {
+ margin-top: 2px;
+ overflow: hidden;
+}
+.header-fixed div.userbar-weather_console {
+ top: 54px;
+}
+.header-fixed .weather-wrap .weather-more_wrap, .header-fixed .account_logout, .header-fixed div.settings-dropdown {
+ top: 30px;
+}
+.header-fixed .account_title, .header-fixed .userbar_split {
+ line-height: 30px;
+}
+.header-fixed .account_login {
+ top: 20px;
+}
+.header-fixed .settings .settings-btn {
+ height: 30px;
+}
+.header-fixed .settings-btn img {
+ width: 14px;
+ height: 14px;
+}
+.header-fixed .settings .settings-btn_word {
+ line-height: 30px;
+}
+.header-fixed .account-login_suc .account_trig img {
+ width: 20px;
+ height: 20px;
+ border-radius: 10px;
+ -webkit-border-radius: 10px;
+ -moz-border-radius: 10px;
+ -o-border-radius: 10px;
+ -ms-border-radius: 10px;
+}
+.header-fixed .newerguide-tip {
+ _display: none;
+ display: none !important;
+}
+.userbar-weather_city-cur {
+ white-space: nowrap;
+ position: absolute;
+ left: -84px;
+}
+.userbar-tool .userbar_split {
+ width: 2px;
+ color: #ffffff;
+ overflow: visible;
+}
+.header-test-holder {
+ display: none;
+ height: 50px;
+}
+.header-fixed .header-test-holder {
+ display: block;
+}
+
+
+/*页头吸顶高度为40px*/
+ .header-fixed-up .userbar-logoSibling {
+ display: none;
+ display: none !important;
+}
+.header-fixed-up .userbar-wrap, .header-fixed-up .userbar, .header-fixed-up #indexLogo, .header-fixed-up .userbar-logo {
+ height: 40px;
+}
+.header-fixed-up .account_trig, .header-fixed-up .setting-btn-wrap {
+ height: 40px;
+}
+.header-fixed-up .account_logout, .header-fixed-up div.settings-dropdown {
+ top: 40px;
+}
+.header-fixed-up .account_title, .header-fixed-up .userbar_split {
+ line-height: 40px;
+}
+.header-fixed-up .account_login {
+ top: 30px;
+}
+.header-fixed-up .settings .settings-btn {
+ height: 40px;
+}
+.header-fixed-up .settings .settings-btn_word {
+ line-height: 40px;
+}
+
+/*页头吸顶高度为40px时的搜索框*/
+/*普通搜索框*/
+ .header-fixed-up .userbar-btns, .header-fixed-up .box-search_tab, .header-fixed-up .box-search_hsrch {
+ display: none;
+ display: none !important;
+}
+.header-fixed-up .box-search_wrap {
+ position: fixed;
+ top: 3px;
+ z-index: 499;
+ margin-left: 110px;
+}
+.header-fixed-up .sg_tri .sg_btn .sg_new_num,
+.header-fixed-up .sg_v_tri .sg_v_btn .sg_v_new_num {
+ top: -7px;
+}
+.header-fixed-up .box-search_inner {
+ height: auto;
+}
+.header-fixed-up #searchGroupForm {
+ /*overflow: hidden;*/
+}
+.header-fixed-up .btn-search {
+ border-width: 0;
+ width: auto;
+}
+.header-fixed-up .btn-search_c {
+ position: absolute;
+ right: 16px;
+ top: 6px;
+ z-index: 14;
+ text-indent: -1000px;
+ white-space: nowrap;
+ overflow: hidden;
+ height: 23px;
+ width: 23px;
+ background: url(../img/i-search.png?__sprite) no-repeat;
+ background-color: #00AC72;
+ border-radius: 2px;
+ -ms-border-radius: 2px;
+}
+.header-fixed-up .btn-search_c:hover {
+ background-color: #089868;
+}
+.header-fixed-up .box-search_form {
+ padding-left: 0;
+}
+.header-fixed-up .box-search_form .input {
+ padding-right: 28px;
+ background-color: white;
+}
+.header-fixed-up .box-search_form .input input {
+ /*text-indent: 50px;*/
+ margin-left: 50px;
+}
+.header-fixed-up .box-search_logo_wrap {
+ position: absolute;
+ left: 10px;
+ top: 20px;
+ height: auto;
+ width: auto;
+}
+.header-fixed-up .box-search_logo img {
+ width: 16px;
+ height: 16px;
+ margin: 6px 6px 5px 8px;
+}
+.header-fixed-up .box-search_logo dt, .header-fixed-up .box-search_logo dd {
+ padding: 0;
+}
+.header-fixed-up .box-search_logo a {
+ /*border-right: 1px solid #B1B1B1;*/
+ height: 27px;
+}
+.header-fixed-up .box-search_logo dt {
+ background-color: #F0F0F0;
+ background-image: -moz-linear-gradient(top, #FEFEFE, #E3E2E2);
+ background-image: -webkit-linear-gradient(top, #FEFEFE, #E3E2E2);
+ background-image: -ms-linear-gradient(top, #FEFEFE, #E3E2E2);
+ background-image: -o-linear-gradient(top, #FEFEFE, #E3E2E2);
+ background-image: linear-gradient(top, #FEFEFE, #E3E2E2);
+}
+.header-fixed-up .box-search_logos_show dt {
+ background-image: none;
+ width: 49px;
+}
+
+.header-fixed-up .box-search_form .box-search_focus {
+ border-color: #12845D;
+}
+.header-fixed-up .sug-search, .header-fixed-up .baidu_sug, .header-fixed-up .baidu_video_sug {
+ width: 519px;
+ left: 48px;
+}
+.header-fixed-up .box-search_logo dt a {
+ background: url(../img/i-arrow.png) no-repeat 30px 13px;
+ border-right: 1px solid #B1B1B1;
+}
+.header-fixed-up .box-search_logos_show dt a {
+ background: url(../img/i-arrow-open.png) no-repeat 30px 13px;
+}
+.header-fixed-up .box-search_logos_show {
+ height: 0;
+ overflow: visible;
+}
+.header-fixed-up .box-search_logos_show dd {
+ background-color: #fff;
+ text-align: left;
+ margin-left: -1px;
+}
+.header-fixed-up .box-search_logos_show .box-search_logo_hover {
+ background-color: #f5f7f7;
+}
+.header-fixed-up .box-search_logo .box-search_logo_first {
+ border-top: 1px solid #C0C0C0;
+}
+.header-fixed-up .box-search_logo .box-search_logo_last {
+ border-bottom: 1px solid #C0C0C0;
+}
+.header-fixed-up .box-search_logo dd a {
+ white-space: nowrap;
+ /*line-height: 27px;*/
+ color: #8C8B8B;
+ border-left: 1px solid #C0C0C0;
+ border-right: 1px solid #C0C0C0;
+}
+.header-fixed-up .box-search_logo dd a:hover {
+ color: #5D5D5D;
+}
+.box-search-logo-item-tips {
+ display: none;
+}
+.header-fixed-up .box-search-logo-item-tips {
+ display: inline;
+ vertical-align: middle;
+}
+.header-fixed-up .btn-search_ico {
+ display: none;
+ display: none !important;
+}
+.header-fixed-up .baidu_sug,
+.header-fixed-up .baidu_video_sug {
+ margin-left: 0;
+}
+
+
+.header-fixed-up .box-search_logo_disabled dt a {
+ background: 0 0;
+}
+.header-fixed-up .box-search_logo_disabled dt {
+ width: 49px;
+}
+.header-fixed-up .box-search_logo_disabled dt a {
+ padding-right: 1px;
+}
+.header-fixed-up .box-search .box-search_logo_disabled dt {
+ background: none;
+ background-color: #F0F0F0;
+ background-image: -moz-linear-gradient(top,#FEFEFE,#E3E2E2);
+ background-image: -webkit-linear-gradient(top,#FEFEFE,#E3E2E2);
+ background-image: -ms-linear-gradient(top,#FEFEFE,#E3E2E2);
+ background-image: -o-linear-gradient(top,#FEFEFE,#E3E2E2);
+ background-image: linear-gradient(top,#FEFEFE,#E3E2E2);
+}
+
+
+/***倒计时&&日历增强***/
+body .userbar-date a {
+ display: block;
+ /*text-align: center;*/
+}
+.userbar-date-cal {
+ cursor: pointer;
+}
+body .calendar-open {
+ background-color: #06B67B;
+}
+.userbar-date-cal .date-tip {
+ width: 9px;
+ height: 9px;
+ background: url(../img/arrow2.png?__sprite) no-repeat;
+ position: absolute;
+ right: 2px;
+ bottom: 3px;
+ pointer-events: none;
+ cursor: pointer;
+}
+.date-open .date-tip {
+ background: url(../img/arrow1.png?__sprite) no-repeat;
+ bottom: 0;
+ top: 2px;
+}
+.userbar-date-cal .calendar-wrapper {
+ position: absolute;
+ top: 50px;
+ left: -1px;
+ background-color: #F0FFFB;
+ /*width: 376px;
+ height: 384px;*/
+ /*border: 1px solid #BEE2D6;*/
+ box-shadow: 2px 2px 2px #DEDEDE, -2px 0 2px #DEDEDE;
+ border-top-width: 0;
+ cursor: default;
+ display: none;
+}
+.date-open .calendar-wrapper {
+ display: block;
+}
+.header-fixed .userbar-date-cal .calendar-wrapper {
+ top: 30px;
+}
+.header-fixed-up .userbar-date-cal .calendar-wrapper {
+ top: 40px;
+}
+.userbar-date-cal .ui-arrow-t {
+ left: 52px;
+ border-bottom-color: #F0FFFB;
+}
+.userbar-date-cal .cal-btn {
+ display: inline-block;
+ max-width: 94%;
+ height: 34px;
+ line-height: 34px;
+ color: #07b67b;
+ font-size: 12px;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ position: absolute;
+ bottom: 0;
+ right: 12px;
+}
+.header-fixed .down-wrapper {
+ display: none !important;
+}
+.header-fixed .date-wrapper {
+ display: block !important;
+}
+
+/*极端天气提醒*/
+.weather-wrap .userbar-weather_tip .tips-close {
+ width: 6px;
+ height: 6px;
+ background: url(../img/del.png?__sprite) no-repeat;
+ top: 6px;
+ right: 6px;
+}
+.weather-wrap .userbar-weather_tip .tips-light {
+ width: 15px;
+ height: 17px;
+ background: url(../img/light_new.png?__sprite) no-repeat;
+ left: 6px;
+ top: 6px;
+}
+.weather-wrap .userbar-weather_tip p {
+ overflow: hidden;
+ text-indent: 0;
+ white-space: normal;
+ line-height: normal;
+ margin: 0;
+ margin-top: -2px;
+ height: 30px;
+}
+.weather-wrap .userbar-weather_tip .weather-remind-outer {
+ display: table;
+ height: 30px;
+ font-weight: normal;
+}
+.weather-wrap .userbar-weather_tip .weather-remind-inner {
+ display: table-cell;
+ vertical-align: middle;
+ word-break: break-word;
+ font-weight: normal;
+}
+
+/*倒计时增强*/
+.userbar-date-new_mod {
+ box-shadow: rgba(0,0,0,0.1) 0px 0px 0px 1px inset;
+ -webkit-box-shadow: rgba(0,0,0,0.1) 0px 0px 0px 1px inset;
+ -o-box-shadow: rgba(0,0,0,0.1) 0px 0px 0px 1px inset;
+ -moz-box-shadow: rgba(0,0,0,0.1) 0px 0px 0px 1px inset;
+ -ms-box-shadow: rgba(0,0,0,0.1) 0px 0px 0px 1px inset;
+}
+.userbar-date-new_mod .userbar-date {
+ background: none !important;
+ width: auto !important;
+ float: none !important;
+}
+.userbar-date-new_mod .date-tip {
+ display: none !important;
+}
+.userbar-date-new_mod .calendar-open {
+ background-color: rgba(255,255,255, 0.2) !important;
+}
+/*@media \0screen {
+ .userbar-date-new_mod .calendar-open {
+ filter:progid:DXImageTransform.Microsoft.gradient(enabled='true',startColorstr='#33FFFFFF', endColorstr='#33FFFFFF');
+ }
+}*/
+.userbar-date-new_mod .down-tip {
+ visibility: hidden;
+}
+.userbar-date-new_mod .down-dhm .down-hm,
+.userbar-date-new_mod .down-dhm br {
+ display: none !important;
+}
+.userbar-date-new_mod .userbar-date .down-wrapper .down-day,
+.userbar-date-new_mod .userbar-date .down-wrapper .down-dhm {
+ float: none;
+ display: block;
+}
+.userbar-date-new_mod .userbar-date .down-wrapper .down-day {
+ margin-top: -3px;
+ color: #ff0006;
+ width: 36px;
+ float: right;
+ margin-right: 0;
+ overflow: hidden;
+}
+.userbar-date-new_mod .userbar-date .down-wrapper .down-d {
+ color: #FFFFFF;
+ display: block;
+ font-size: 10px;
+ -webkit-transform: scale(0.8);
+ margin-top: 24px;
+ margin-right: -4px;
+}
+.userbar-date-new_mod .userbar-date .down-wrapper,
+.userbar-date-new_mod .down-wrapper .down-time {
+ overflow: visible;
+}
+
+.userbar-date-new_mod2 .down-wrapper .down-time {
+ float: left;
+}
+.header-fixed .userbar-date-new_mod {
+ background: none !important;
+ width: auto !important;
+ box-shadow: 0;
+ -webkit-box-shadow: none;
+ -o-box-shadow: none;
+ -moz-box-shadow: none;
+ -ms-box-shadow: none;
+}
+.header-fixed .calendar-open {
+ background-color: #06B67B !important;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/ltr-s/ltr.ps.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/ltr-s/ltr.ps.css
new file mode 100755
index 000000000..40567419e
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/ltr-s/ltr.ps.css
@@ -0,0 +1,16 @@
+/*for PS*/
+.header-fixed-up .radios {
+ display: none;
+ display: none !important;
+}
+body.header-fixed-up .box-search_logo dt {
+ padding-right: 18px;
+ background-color: #F0F0F0;
+ background: url(../img/btn.png) no-repeat left top;
+ border-right: 1px solid #B1B1B1;
+ cursor: pointer;
+}
+body.header-fixed-up .box-search_logos_show dt {
+ width: 30px;
+ background: url(../img/i-arrow-open.png) no-repeat 31px 12px;
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/rtl-s/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/rtl-s/rtl.css
new file mode 100755
index 000000000..555e59e86
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/rtl-s/rtl.css
@@ -0,0 +1,126 @@
+body div.userbar-wrap {
+ border: none;
+ z-index: 100;
+ zoom: 1;
+}
+.header-fixed .userbar-wrap {
+ position: fixed;
+ width: 100%;
+ top: 0;
+ right: 0;
+}
+div.userbar-tool {
+ margin-top: 0;
+ width: auto;
+}
+.settings {
+ max-width: 170px;
+}
+.settings .settings-btn {
+ position: relative;
+ height: 50px;
+ width: auto;
+ max-width: 150px;
+ padding: 0 10px;
+ border: none;
+ vertical-align: middle;
+ display: table-cell;
+ *display: block;
+ background: none;
+ overflow: hidden;
+ cursor: default;
+ color: #fff;
+}
+.settings .settings-btn_word {
+ line-height: 50px;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ display: block;
+ color: rgba(255,255,255, 0.5);
+}
+div.setting-btn-wrap {
+ height: 50px;
+ overflow: hidden;
+}
+.userbar_split {
+ float: left;
+ width: 3px;
+ height: 100%;
+ font-size: 16px;
+ line-height: 50px;
+ overflow: hidden;
+ opacity: 0.3;
+ filter:alpha(opacity=30);
+ visibility: hidden;
+}
+.userbar-logoSibling .userbar_split {
+ float: right;
+ width: 1px;
+ background-color: #fff;
+ opacity: 0.2;
+ filter:alpha(opacity=20);
+}
+div.settings-dropdown {
+ width: 118px;
+}
+.userbar-btns {
+ visibility: hidden;
+ position: absolute;
+ left: 0;
+ top: 24px;
+}
+/*.box-search .box-search_form .input input {
+ width: 450px;
+}
+.box-search .box-search_form .input {
+ margin-right: 9px;
+}*/
+.userbar-logo {
+ /*margin-left: 200px;*/
+ max-width: 345px;
+}
+.userbar-date-wrapper {
+ float: right;
+ position: relative;
+ z-index: 100;
+ background-repeat: no-repeat;
+}
+div.userbar-date {
+ position: relative;
+ right: auto;
+ float: right;
+ /*margin-left: 20px;
+ margin-right: 20px;*/
+ margin-top: 0;
+ /*overflow: hidden;*/
+ width: 130px;
+ padding: 11px 18px 9px;
+ /*padding-top: 9px;
+ padding-bottom: 9px;*/
+}
+.userbar-date br {
+ display: block !important;
+}
+.userbar-date .calendar_bg {
+ display: inline !important;
+ float: right;
+ width: 30px;
+ height: 30px;
+ font-size: 14px;
+ font-weight: 700;
+ line-height: 36px;
+ padding: 0;
+ margin-left: 8px;
+ text-align: center;
+ color: #fff;
+ background: url(../img/calendar.png?__sprite) no-repeat;
+}
+.weather-wrap {
+ position: relative;
+ float: right;
+}
+body .userbar-weather {
+ width: auto;
+ float: right;
+}
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/rtl-s/rtl.lv2.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/rtl-s/rtl.lv2.css
new file mode 100755
index 000000000..b7be5bb0b
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/rtl-s/rtl.lv2.css
@@ -0,0 +1,11 @@
+/*for lv2*/
+body .userbar-wrap {
+ background-image: none !important;
+ background: #595959 !important;
+ background: rgba(0,0,0,0.6) !important;
+}
+body .module-mask {
+ background: rgba(0,0,0,0.2);
+ filter:progid:DXImageTransform.Microsoft.gradient(enabled='true', startColorstr='#33000000', endColorstr='#33000000');
+ -ms-filter:"progid:DXImageTransform.Microsoft.gradient(enabled='true',startColorstr='#33000000', endColorstr='#33000000')";
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/rtl-s/rtl.lv2.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/rtl-s/rtl.lv2.more.css
new file mode 100755
index 000000000..47baf2bc3
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/rtl-s/rtl.lv2.more.css
@@ -0,0 +1,119 @@
+body .userbar-weather ul.fl:hover {
+ background: #474747;
+ background: rgba(0,0,0,0.2);
+}
+
+body.header-fixed .account-dropdown_wrap {
+ /*top: 30px;*/
+}
+body .account-dropdown_wrap {
+ /*top: 50px;*/
+ box-shadow: none;
+ /*border-color: #4C474A;
+ border-color: rgba(0,0,0,0.7);*/
+ border-width: 0;
+}
+body .wrap-message-content,body .account-loginfo_wrap {
+ background: #595959;
+ background: rgba(0,0,0,0.6);
+ border: 1px solid #4C474A;
+ border-color: rgba(0,0,0,0.7);
+ border-top-width: 0;
+}
+body .account-message_wrap,body .wrap-message-content {
+ margin-top: 6px;
+ border-bottom-width: 0;
+}
+body .message-no-item span {
+ color: #fff;
+}
+body .wrap-message-content li {
+ border-bottom-color: #3B383B;
+ border-bottom-color: rgba(0,0,0,0.4);
+}
+body .wrap-message-content li:hover {
+ background: #474747;
+ background: rgba(0,0,0,0.2);
+}
+body .account_arrow {
+ border-bottom-color: #595959;
+ border-bottom-color: rgba(0,0,0,0.6);
+ top: -6px;
+}
+body .login-tip_con {
+ height: 28px;
+ line-height: 28px;
+}
+body .account_login-tip {
+ border-right: 0;
+}
+body .wrap-message-content .message-target {
+ color: #C2C2C2;
+}
+body .message-target:hover span {
+ color:#ffffff;
+}
+body .message-over-item .message-target {
+ color: #8c8c8c;
+}
+body .ico-message-delete {
+ background: url("../img/icon-delete.png?__sprite") no-repeat left top;
+}
+body .ico-message-delete:hover{
+ background: url("../img/icon-delete-hover.png?__sprite") no-repeat left top;
+}
+body .ico-message-type1,body .ico-message-type2 {
+ background: url("../img/icon-msg-notice-rtl.png?__sprite") no-repeat left top;
+}
+body .message-over-item .ico-message-type1,body .message-over-item .ico-message-type2{
+ background: url("../img/icon-msg-notice-over-rtl.png?__sprite") no-repeat left top;
+}
+body .account_logout_name {
+ color: #ffffff;
+}
+body .account_logout_email {
+ color: #8c8c8c;
+}
+body .account-loginfo_wrap img {
+ border-color: #EFFCF9;
+ border-color: rgba(255,255,255, 0.6);
+}
+
+/*logo*/
+body .userbar-logo_tip {
+ background: #595959;
+ background: rgba(0,0,0,.6);
+ border: 1px solid #4C474A;
+ border-color: rgba(0,0,0,.7);
+ border-top-width: 0;
+ top: 56px;
+}
+body .userbar-logo_tip .arrow_bg {
+ display: none;
+}
+body .userbar-logo_tip .arrow {
+ border-width: 6px;
+ top: -12px;
+ border-bottom-color: #595959;
+ border-bottom-color: rgba(0,0,0,0.6);
+}
+body .userbar-logo_tip a {
+ color: #FAFCFA;
+}
+body .userbar-logo_tip a:hover {
+ /*color: #ffffff;*/
+ text-decoration: underline;
+}
+body .userbar-logo_tip .tip-close {
+ background: url("../img/icon-delete.png?__sprite") no-repeat left top;
+}
+body .userbar-logo_tip .tip-close:hover{
+ background: url("../img/icon-delete-hover.png?__sprite") no-repeat left top;
+}
+body .userbar-logo_tip .tipLinkArrow {
+ background: url("../img/icon-logotips-rtl.png?__sprite") no-repeat left top;
+ height: 10px;
+}
+body .userbar-logo_tip {
+ color: #E2E2E2;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/rtl-s/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/rtl-s/rtl.more.css
new file mode 100755
index 000000000..a985edb2e
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/rtl-s/rtl.more.css
@@ -0,0 +1,1030 @@
+/*============userbar=============*/
+body .userbar-tool {
+ /*width: 240px;
+ margin-top: 4px;
+ position: relative;*/
+ position: absolute;
+ left: 0;
+ overflow: visible;
+ z-index: 101;
+ display: block;
+}
+.userbar-wrap {
+ background-image:-moz-linear-gradient(50% 0% -90deg,rgb(0,176,117) 0%,rgb(0,171,114) 100%);
+ background-image:-webkit-gradient(linear,50% 0%,50% 100%,color-stop(0, rgb(0,176,117)),color-stop(1, rgb(0,171,114)));
+ background-image:-webkit-linear-gradient(-90deg,rgb(0,176,117) 0%,rgb(0,171,114) 100%);
+ background-image:-o-linear-gradient(-90deg,rgb(0,176,117) 0%,rgb(0,171,114) 100%);
+ background-image:-ms-linear-gradient(-90deg,rgb(0,176,117) 0%,rgb(0,171,114) 100%);
+ background-image:linear-gradient(-90deg,rgb(0,176,117) 0%,rgb(0,171,114) 100%);
+ /*-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff00b075,endColorstr=#ff00ab72,GradientType=0)";
+ filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff00b075,endColorstr=#ff00ab72,GradientType=0);*/
+}
+.userbar a:hover {
+ text-decoration: none;
+}
+.weather-wrap .weather-more_wrap {
+ background: #0c815a;
+ overflow: visible;
+ height: 0;
+ border-top: 0 none;
+ zoom: 1;
+}
+.weather-more_show {
+ height: auto;
+ border-top: 1px solid #0a6f4e;
+}
+.weather-more_line {
+ -moz-box-shadow: 0 0 4px rgba(0,0,0,0.1) inset;
+ -webkit-box-shadow: 0 0 4px rgba(0,0,0,0.1) inset;
+ -o-box-shadow: 0 0 4px rgba(0,0,0,0.1) inset;
+ box-shadow: 0 0 4px rgba(0,0,0,0.1) inset;
+ border-bottom: 1px solid #0a6f4e;
+
+}
+
+
+
+
+div.settings-dropdown {
+ top: 50px;
+ overflow: visible;
+ box-shadow: 2px 2px 2px #DEDEDE, -2px 0px 2px #DEDEDE;
+}
+ul.settings-site {
+ padding: 5px 3px;
+}
+ul.settings-site a {
+ height: 22px;
+ line-height: 22px;
+ width: 72px;
+ padding: 0 20px;
+}
+ul.settings-site a:hover {
+ background-color: #00b075;
+ color: #fff;
+}
+.settings-site a.cur:hover {
+ color: #00ac72;
+}
+/*
+.select_theme {
+ background-color: #D2F3EA;
+}
+ul.select_theme {
+ padding-right: 25px;
+ padding-top: 10px;
+ padding-bottom: 10px;
+}*/
+.settings-arrow, .settings-arrow_bg {
+ position: absolute;
+ height: 0;
+ width: 0;
+ border: 6px dashed transparent;
+}
+.settings-arrow {
+ border-bottom-color: #bee2d6;
+ border-bottom-style: solid;
+ top: -12px;
+ left: 10px;
+}
+.settings-arrow_bg {
+ border-bottom-color: #EBFCF7;
+ border-bottom-style: solid;
+ margin: -6px -7px 0 0;
+}
+.module-mask {
+ background:rgba(255, 255, 255, 0.1);
+ filter:progid:DXImageTransform.Microsoft.gradient(enabled='true', startColorstr='#19FFFFFF', endColorstr='#19FFFFFF');
+ -ms-filter:"progid:DXImageTransform.Microsoft.gradient(enabled='true',startColorstr='#19FFFFFF', endColorstr='#19FFFFFF')";
+ cursor: pointer;
+}
+/*
+.body-theme_2 .settings-arrow {
+ border-bottom-color: #d4e0eb;
+}
+.body-theme_2 .settings-arrow_bg {
+ border-bottom-color: #eef3f8;
+}
+.body-theme_2 .select_theme {
+ background-color: #CDE2F7;
+}
+.body-theme_2 .settings-site a:hover {
+ background-color: #1188f7;
+ color: #fff;
+}
+.body-theme_2 .settings-site a.cur {
+ color: #1188f7;
+}
+.body-theme_2 .settings-site a.cur:hover {
+ color: #1188f7;
+ background-color: transparent;
+}
+.body-theme_3 .settings-arrow {
+ border-bottom-color: #ecdfe1;
+}
+.body-theme_3 .settings-arrow_bg {
+ border-bottom-color: #fcf6f7;
+}
+.body-theme_3 .select_theme {
+ background-color: #FCE8EA;
+}
+.body-theme_3 .settings-site a:hover {
+ background-color: #ff617b;
+ color: #fff;
+}
+.body-theme_3 .settings-site a.cur {
+ color: #ff617b;
+}
+.body-theme_3 .settings-site a.cur:hover {
+ color: #ff617b;
+ background-color: transparent;
+}*/
+
+/*weather*/
+ .weather_last, .weather-info .dot_img, .weather-info .temperature_hum, .userbar-weather li.weather_last {
+ display: none;
+}
+body .weather-info {
+ width: auto;
+}
+.weather-info .text {
+ visibility: visible;
+ font-size: 12px;
+}
+.weather-info .temperature_p {
+ font-size: 12px;
+}
+.userbar-weather ul.fl {
+ height: 45px;
+ padding-top: 5px;
+ margin-right: 0;
+ margin-top: 0;
+ width: auto;
+ padding-right: 18px;
+ padding-left: 18px;
+ cursor: pointer;
+}
+.userbar-weather ul.fl:hover {
+ background-color: #06B67B;
+}
+.weather-wrap .userbar-weather {
+ margin-left: 0;
+ height: 50px;
+ padding-top: 0;
+ z-index: 1;
+}
+.userbar-weather .fl li {
+ margin-left: 0;
+}
+div.userbar-weather_console {
+ position: absolute;
+ right: 100px;
+ top: 74px;
+ height: auto;
+ display: none;
+}
+div.userbar-weather_console a {
+ color: #000000;
+ font-size: 14px;
+ font-weight: 700;
+}
+#weatherView li img {
+ width: auto;
+}
+.userbar-weather .weather-info span {
+ font-weight: 500;
+}
+.userbar-weather_console .weather-days {
+ display: none;
+}
+.weather-wrap .weather-more_wrap {
+ position: absolute;
+ right: -1px;
+ top: 50px;
+ height: auto;
+ display: none;
+ border: 1px solid #BEE2D6;
+ box-shadow: 2px 2px 2px #DEDEDE, -2px 0 2px #DEDEDE;
+}
+.weather-wrap .weather-more {
+ display: block;
+ width: 325px;
+ overflow: hidden;
+ background: #F0FFFC;
+}
+.weather-wrap .weather-more li {
+ padding: 16px 0;
+ height: 98px;
+ overflow: hidden;
+ color: #899E99;
+ width: 162px;
+ margin-top: 1px;
+ background: #D6F8EF;
+ float: right;
+}
+.weather-wrap .weather-more .temperature_big, .weather-wrap .weather-more .humidity {
+ color: #000000;
+}
+.weather-wrap .weather-more li img {
+ padding: 14px 0;
+}
+body .weather-more_odd {
+ margin-right: 1px;
+ _margin-right: 0;
+ -moz-box-shadow: none;
+ -webkit-box-shadow: none;
+ -o-box-shadow: none;
+ box-shadow: none;
+}
+.weather-wrap .weather-more .weather-more_today {
+ float: none;
+ text-align: right;
+ width: auto;
+ height: auto;
+ padding: 10px 20px 26px;
+ background: transparent;
+ overflow: hidden;
+ position: relative;
+}
+.weather-more_today .temperature_big {
+ font-size: 18px;
+ padding-right: 30px;
+}
+.weather-more_today .dot_img_head {
+ margin-right: 14px;
+ margin-top: 6px;
+}
+.weather-wrap .dot_img_head {
+ margin-bottom: -4px;
+ background: url(../img/drop.png?__sprite) no-repeat;
+}
+.weather-more_wrap .weather-more_line {
+ border: none;
+}
+.weather-more .humidity {
+ font-size: 13px;
+ padding: 0;
+ margin-left: 26px;
+}
+.weather-more_today .humidity {
+ margin-left: 92px;
+ margin-top: 5px;
+}
+.weather-more_today p {
+ margin-top: 10px;
+ margin-bottom: 10px;
+ color: #000000;
+}
+.weather-more_today p:first-child {
+ padding-right: 140px !important;
+ color: #899E99 !important;
+}
+.weather-wrap .weather-more .weather-more_today img {
+ position: absolute;
+ top: 50px;
+ right: 16px;
+ padding: 0;
+}
+.weather-more_today .weather-more_tip-remind {
+ padding-right: 0;
+ color: #899E99;
+ font-weight: 500;
+ white-space: nowrap;
+ position: absolute;
+ bottom: 20px;
+ right: 72px;
+}
+body div.userbar-weather_city-cur a {
+ background: url(../img/select-city_tip.png) no-repeat left top;
+ padding-left: 24px;
+ display: inline-block;
+ min-height: 14px;
+}
+.weather-wrap_arrow, .weather-wrap_arrow-bg {
+ position: absolute;
+ height: 0;
+ width: 0;
+ border: 6px solid transparent;
+}
+.weather-wrap_arrow {
+ border-bottom-color: #bee2d6;
+ bottom: -1px;
+ right: 64px;
+ display: none;
+ z-index: 2;
+}
+.weather-wrap_arrow-bg {
+ border-bottom-color: #EBFCF7;
+ margin: -6px -7px 0 0;
+}
+div.userbar-weather_tip {
+ left: 0;
+ right: 15px;
+ top: 44px;
+ width: 200px;
+ background-color: #FEFEFE;
+ border-color: #BEE2D6;
+ border-top-color: #00AB72;
+ background-image: -moz-linear-gradient(top, #FFFFFF, #FAFDFC);
+ background-image: -webkit-linear-gradient(top, #FFFFFF, #FAFDFC);
+ background-image: -ms-linear-gradient(top, #FFFFFF, #FAFDFC);
+ background-image: -o-linear-gradient(top, #FFFFFF, #FAFDFC);
+ background-image: linear-gradient(top, #FFFFFF, #FAFDFC);
+ border-radius: 4px;
+ padding: 2px 26px 2px 14px;
+ height: 26px;
+}
+div.userbar-weather_tip .arrow {
+ border-bottom-color: #9BDBC3;
+ border-width: 7px;
+ top: -14px;
+ right: 22px;
+}
+div.userbar-weather_tip .arrow_bg {
+ border-bottom-color: #FFFFFF;
+ margin: -5px -6px 0 -8px;
+ border-width: 6px;
+}
+.city-select .box-prompt-inner, .weather-wrap div.city-select {
+ border: none;
+}
+.weather-wrap div.city-select {
+ left: 0;
+ right: -101px;
+ top: -24px;
+ width: 285px;
+ border: 1px solid #BEE2D6;
+ box-shadow: 2px 2px 2px #DEDEDE, -2px 0 2px #DEDEDE;
+ border-top-width: 0;
+ background: #F0FFFC;
+ padding: 38px 20px 80px;
+ overflow: hidden;
+ color: #676566;
+ font-size: 14px;
+}
+.city-select .weather_cur-city {
+ font-size: 20px;
+ font-weight: 600;
+ height: 20px;
+ margin-bottom: 30px;
+}
+.city-select .weather_close-btn {
+ position: absolute;
+ top: 16px;
+ left: 20px;
+ font-size: 18px;
+ color: #B3E0D1;
+}
+.weather-wrap .city-select select {
+ width: 260px;
+ height: 26px;
+ line-height: 26px;
+ color: #000000;
+ font-size: 14px;
+ padding-right: 4px;
+}
+.weather-wrap .city-select label {
+ font-size: 14px;
+ margin-top: 10px;
+ margin-bottom: 8px;
+}
+.weather-wrap .city-select .btn-bar {
+ width: auto;
+ margin-top: 30px;
+ text-align: right;
+}
+.weather-wrap .mod-btn_normal, .weather-wrap .mod-btn_cancel {
+ width: 110px;
+ float: none;
+ display: inline-block;
+ border-radius: 2px;
+ -ms-border-radius: 2px;
+ -o-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -moz-border-radius: 2px;
+ height: 26px;
+ line-height: 26px;
+}
+.weather-wrap .mod-btn_normal {
+ margin-left: 34px;
+ background: url(../img/save-city_normal.png?__sprite) no-repeat;
+}
+.weather-wrap .mod-btn_normal:hover {
+ background: url(../img/save-city_hover.png?__sprite) no-repeat;
+}
+.weather-wrap .mod-btn_normal:active {
+ background: url(../img/save-city_click.png?__sprite) no-repeat;
+}
+.weather-wrap .mod-btn_normal .ui-button-text {
+ color: #ffffff;
+}
+.weather-wrap .mod-btn_cancel .ui-button-text {
+ color: #666666;
+}
+.weather-wrap .weather-tip_def {
+ width: 9px;
+ height: 9px;
+ background: url(../img/arrow2-rtl.png?__sprite) no-repeat;
+ position: absolute;
+ left: 2px;
+ bottom: 3px;
+ pointer-events: none;
+ cursor: pointer;
+ z-index: 1;
+}
+.weather-wrap .weather-tip_up {
+ background: url(../img/arrow1-rtl.png?__sprite) no-repeat;
+ bottom: 0;
+ top: 2px;
+}
+
+/*.body-theme_2 .userbar-weather ul.fl:hover {
+ background-color: #2D90ED;
+}
+.body-theme_2 .weather-wrap .weather-more {
+ background: #EEF3F8;
+}
+.body-theme_2 .weather-wrap .weather-more li {
+ background: #D3E5F6;
+}
+.body-theme_2 .weather-more li.weather-more_today {
+ background: transparent;
+}
+.body-theme_2 .weather-wrap div.city-select {
+ background: #EEF3F8;
+ border-color: #B9CFE4;
+}
+.body-theme_2 .weather-wrap_arrow-bg {
+ border-bottom-color: #EEF3F8;
+}
+.body-theme_2 .weather-wrap_arrow {
+ border-bottom-color:#B9CFE4;
+}
+.body-theme_2 .weather-wrap .mod-btn_normal {
+ background: url(../img/save-city_normal_2.png?__sprite) no-repeat;
+}
+.body-theme_2 .weather-wrap .mod-btn_normal:hover {
+ background: url(../img/save-city_hover_2.png?__sprite) no-repeat;
+}
+.body-theme_2 .weather-wrap .mod-btn_normal:active {
+ background: url(../img/save-city_click_2.png?__sprite) no-repeat;
+}
+.body-theme_2 .city-select .weather_close-btn {
+ color: #81B6E7;
+}
+.body-theme_2 .weather-wrap .weather-more_wrap {
+ border-color: #B9CFE4;
+}
+.body-theme_3 .userbar-weather ul.fl:hover {
+ background-color: #FCA1B1;
+}
+.body-theme_3 .weather-wrap .weather-more {
+ background: #FCF6F7;
+}
+.body-theme_3 .weather-wrap .weather-more li {
+ background: #FCE7EA;
+}
+.body-theme_3 .weather-more li.weather-more_today {
+ background: transparent;
+}
+.body-theme_3 .weather-wrap div.city-select {
+ background: #FCF6F7;
+ border-color: #DDC8CB;
+}
+.body-theme_3 .weather-wrap_arrow-bg {
+ border-bottom-color: #FCF6F7;
+}
+.body-theme_3 .weather-wrap_arrow {
+ border-bottom-color: #DDC8CB;
+}
+.body-theme_3 .weather-wrap .mod-btn_normal {
+ background: url(../img/save-city_normal_3.png?__sprite) no-repeat;
+}
+.body-theme_3 .weather-wrap .mod-btn_normal:hover {
+ background: url(../img/save-city_hover_3.png?__sprite) no-repeat;
+}
+.body-theme_3 .weather-wrap .mod-btn_normal:active {
+ background: url(../img/save-city_click_3.png?__sprite) no-repeat;
+}
+.body-theme_3 .city-select .weather_close-btn {
+ color: #F9BBC5;
+}
+.body-theme_3 .weather-wrap .weather-more_wrap {
+ border-color: #DDC8CB;
+}*/
+
+/*吸顶*/
+ .header-fixed .userbar-wrap {
+ position: fixed;
+ width: 100%;
+ top: 0;
+ right: 0;
+ background-image: none;
+ background: rgba(0, 173, 115, 0.8);
+}
+/*
+.body-theme_2.header-fixed .userbar-wrap {
+ background: rgba(16, 130, 236, 0.8);
+}
+.body-theme_3.header-fixed .userbar-wrap {
+ background: rgba(249, 143, 160, 0.8);
+}*/
+
+.header-fixed .userbar-wrap, .header-fixed .userbar, .header-fixed #indexLogo, .header-fixed .userbar-logo {
+ height: 30px;
+}
+.header-fixed #indexLogo {
+ float: right;
+ width: 94px;
+ background: url(../img/logo_test.png) no-repeat right center;
+}
+.header-fixed #indexLogo img {
+ display: none !important;
+}
+.header-fixed .userbar-logo {
+ /*margin-left: 251px;*/
+}
+.header-fixed .userbar-logo_slogan, .header-fixed .userbar-date .calendar_bg, .header-fixed .userbar-date br {
+ display: none !important;
+}
+.header-fixed .userbar-logo_tip, .header-fixed .tear-page, .header-fixed .userbar-weather_tip {
+ display: none !important;
+}
+.header-fixed #weatherView li img {
+ width: 20px;
+ height: 18px;
+ margin-top: 2px;
+}
+.header-fixed .userbar-date {
+ /*padding-top: 0;
+ padding-bottom: 0;
+ margin-left: 12px;
+ margin-right: 12px;*/
+ padding: 0 16px;
+ line-height: 30px;
+ width: auto !important;
+}
+.header-fixed .weather-info .text {
+ margin-left: 4px;
+ float: right;
+ display: inline;
+ margin-top: 2px;
+}
+.header-fixed .weather-wrap .userbar-weather, .header-fixed .account_trig, .header-fixed .setting-btn-wrap {
+ height: 30px;
+}
+.header-fixed .account_trig img {
+ width: 14px;
+ height: 14px;
+}
+.header-fixed .userbar-weather ul.fl {
+ height: 25px;
+ padding: 2px 16px 3px;
+}
+.header-fixed .weather-info {
+ margin-top: 2px;
+ overflow: hidden;
+}
+.header-fixed div.userbar-weather_console {
+ top: 54px;
+}
+.header-fixed .weather-wrap .weather-more_wrap, .header-fixed .account_logout, .header-fixed div.settings-dropdown {
+ top: 30px;
+}
+.header-fixed .account_title, .header-fixed .userbar_split {
+ line-height: 30px;
+}
+.header-fixed .account_login {
+ top: 20px;
+}
+.header-fixed .settings .settings-btn {
+ height: 30px;
+}
+.header-fixed .settings-btn img {
+ width: 14px;
+ height: 14px;
+}
+.header-fixed .settings .settings-btn_word {
+ line-height: 30px;
+}
+.header-fixed .account-login_suc .account_trig img {
+ width: 20px;
+ height: 20px;
+ border-radius: 10px;
+ -webkit-border-radius: 10px;
+ -moz-border-radius: 10px;
+ -o-border-radius: 10px;
+ -ms-border-radius: 10px;
+}
+.header-fixed .temperature_p {
+ float: left;
+ margin-top: 4px;
+}
+.header-fixed .userbar-weather img {
+ margin-left: 14px;
+ margin-top: 4px;
+}
+.header-fixed .newerguide-tip {
+ _display: none;
+ display: none !important;
+}
+.userbar-weather_city-cur {
+ white-space: nowrap;
+ position: absolute;
+ right: -78px;
+}
+.userbar-tool .userbar_split {
+ width: 4px\9;
+ color: #ffffff;
+ margin-right: -2px;
+ margin-right: -3px\9;
+}
+
+.header-test-holder {
+ display: none;
+ height: 50px;
+}
+.header-fixed .header-test-holder {
+ display: block;
+}
+
+
+/*页头吸顶高度为40px*/
+.header-fixed-up .userbar-logoSibling {
+ display: none;
+ display: none !important;
+}
+.header-fixed-up .userbar-wrap, .header-fixed-up .userbar, .header-fixed-up #indexLogo, .header-fixed-up .userbar-logo {
+ height: 40px;
+}
+.header-fixed-up .account_trig, .header-fixed-up .setting-btn-wrap {
+ height: 40px;
+}
+.header-fixed-up .account_logout, .header-fixed-up div.settings-dropdown {
+ top: 40px;
+}
+.header-fixed-up .account_title, .header-fixed-up .userbar_split {
+ line-height: 40px;
+}
+.header-fixed-up .account_login {
+ top: 30px;
+}
+.header-fixed-up .settings .settings-btn {
+ height: 40px;
+}
+.header-fixed-up .settings .settings-btn_word {
+ line-height: 40px;
+}
+
+/*页头吸顶高度为40px时的搜索框*/
+/*普通搜索框*/
+ .header-fixed-up .userbar-btns, .header-fixed-up .box-search_tab, .header-fixed-up .box-search_hsrch {
+ display: none;
+ display: none !important;
+}
+.header-fixed-up .box-search_wrap {
+ position: fixed;
+ top: 3px;
+ z-index: 499;
+ margin-right: 110px;
+}
+.header-fixed-up .sg_tri .sg_btn .sg_new_num,
+.header-fixed-up .sg_v_tri .sg_v_btn .sg_v_new_num {
+ top: -7px;
+}
+.header-fixed-up .box-search_inner {
+ height: auto;
+}
+.header-fixed-up #searchGroupForm {
+ /*overflow: hidden;*/
+}
+.header-fixed-up .btn-search {
+ border-width: 0;
+ width: auto;
+}
+.header-fixed-up .btn-search_c {
+ position: absolute;
+ left: 16px;
+ top: 6px;
+ z-index: 14;
+ text-indent: -1000px;
+ white-space: nowrap;
+ overflow: hidden;
+ height: 23px;
+ width: 23px;
+ background: url(../img/i-search.png?__sprite) no-repeat;
+ background-color: #00AC72;
+ border-radius: 2px;
+ -ms-border-radius: 2px;
+}
+.header-fixed-up .btn-search_c:hover {
+ background-color: #089868;
+}
+.header-fixed-up .box-search_form {
+ padding-right: 0;
+}
+.header-fixed-up .box-search_form .input {
+ padding-left: 28px;
+ background-color: white;
+}
+.header-fixed-up .box-search_form .input input {
+ /*text-indent: 50px;*/
+ margin-right: 50px;
+}
+.header-fixed-up .box-search_logo_wrap {
+ position: absolute;
+ right: 10px;
+ top: 20px;
+ height: auto;
+ width: auto;
+}
+.header-fixed-up .box-search_logo img {
+ width: 16px;
+ height: 16px;
+ margin: 6px 8px 5px 6px;
+}
+.header-fixed-up .box-search_logo dt, .header-fixed-up .box-search_logo dd {
+ padding: 0;
+}
+.header-fixed-up .box-search_logo a {
+ /*border-right: 1px solid #B1B1B1;*/
+ height: 27px;
+}
+.header-fixed-up .box-search_logo dt {
+ background-color: #F0F0F0;
+ background-image: -moz-linear-gradient(top, #FEFEFE, #E3E2E2);
+ background-image: -webkit-linear-gradient(top, #FEFEFE, #E3E2E2);
+ background-image: -ms-linear-gradient(top, #FEFEFE, #E3E2E2);
+ background-image: -o-linear-gradient(top, #FEFEFE, #E3E2E2);
+ background-image: linear-gradient(top, #FEFEFE, #E3E2E2);
+}
+.header-fixed-up .box-search_logos_show dt {
+ background-image: none;
+ width: 49px;
+}
+.header-fixed-up .box-search_form .box-search_focus {
+ border-color: #12845D;
+}
+.header-fixed-up .sug-search, .header-fixed-up .baidu_sug, .header-fixed-up .baidu_video_sug {
+ width: 516px;
+ right: 48px;
+}
+.header-fixed-up .box-search_logo dt a {
+ background: url(../img/i-arrow.png) no-repeat 11px 13px;
+ border-left: 1px solid #B1B1B1;
+}
+.header-fixed-up .box-search_logos_show dt a {
+ background: url(../img/i-arrow-open.png) no-repeat 11px 13px;
+}
+.header-fixed-up .box-search_logos_show {
+ height: 0;
+ overflow: visible;
+}
+.header-fixed-up .box-search_logos_show dd {
+ background-color: #fff;
+ text-align: right;
+ margin-right: -1px;
+}
+.header-fixed-up .box-search_logos_show .box-search_logo_hover {
+ background-color: #f5f7f7;
+}
+.header-fixed-up .box-search_logo .box-search_logo_first {
+ border-top: 1px solid #C0C0C0;
+}
+.header-fixed-up .box-search_logo .box-search_logo_last {
+ border-bottom: 1px solid #C0C0C0;
+}
+.header-fixed-up .box-search_logo dd a {
+ white-space: nowrap;
+ /*line-height: 27px;*/
+ color: #8C8B8B;
+ border-left: 1px solid #C0C0C0;
+ border-right: 1px solid #C0C0C0;
+}
+.header-fixed-up .box-search_logo dd a:hover {
+ color: #5D5D5D;
+}
+.box-search-logo-item-tips {
+ display: none;
+}
+.header-fixed-up .box-search-logo-item-tips {
+ display: inline;
+ vertical-align: middle;
+}
+.header-fixed-up .btn-search_ico {
+ display: none;
+ display: none !important;
+}
+.header-fixed-up #kbd {
+ position: fixed !important;
+ top: 38px !important;
+ bottom: 0px !important;
+}
+.header-fixed-up .baidu_sug,
+.header-fixed-up .baidu_video_sug {
+ margin-right: 0;
+}
+
+
+.header-fixed-up .box-search_logo_disabled dt a {
+ background: 0 0;
+}
+.header-fixed-up .box-search_logo_disabled dt {
+ width: 49px;
+}
+.header-fixed-up .box-search_logo_disabled dt a {
+ padding-left: 1px;
+}
+.header-fixed-up .box-search .box-search_logo_disabled dt {
+ background: none;
+ background-color: #F0F0F0;
+ background-image: -moz-linear-gradient(top,#FEFEFE,#E3E2E2);
+ background-image: -webkit-linear-gradient(top,#FEFEFE,#E3E2E2);
+ background-image: -ms-linear-gradient(top,#FEFEFE,#E3E2E2);
+ background-image: -o-linear-gradient(top,#FEFEFE,#E3E2E2);
+ background-image: linear-gradient(top,#FEFEFE,#E3E2E2);
+}
+
+
+
+/***倒计时&&日历增强***/
+body .userbar-date a {
+ display: block;
+ /*text-align: center;*/
+}
+.userbar-date-cal {
+ cursor: pointer;
+}
+body .calendar-open {
+ background-color: #06B67B;
+}
+.userbar-date-cal .date-tip {
+ width: 9px;
+ height: 9px;
+ background: url(../img/arrow2-rtl.png?__sprite) no-repeat;
+ position: absolute;
+ left: 2px;
+ bottom: 3px;
+ pointer-events: none;
+ cursor: pointer;
+}
+.date-open .date-tip {
+ background: url(../img/arrow1-rtl.png?__sprite) no-repeat;
+ bottom: 0;
+ top: 2px;
+}
+.userbar-date-cal .calendar-wrapper {
+ position: absolute;
+ top: 50px;
+ right: -1px;
+ background-color: #F0FFFB;
+ /*width: 376px;
+ height: 384px;*/
+ /*border: 1px solid #BEE2D6;*/
+ box-shadow: 2px 2px 2px #DEDEDE, -2px 0 2px #DEDEDE;
+ border-top-width: 0;
+ cursor: default;
+ display: none;
+}
+.date-open .calendar-wrapper {
+ display: block;
+}
+.header-fixed .userbar-date-cal .calendar-wrapper {
+ top: 30px;
+}
+.header-fixed-up .userbar-date-cal .calendar-wrapper {
+ top: 40px;
+}
+.userbar-date-cal .ui-arrow-t {
+ right: 52px;
+ border-bottom-color: #F0FFFB;
+}
+.userbar-date-cal .cal-btn {
+ display: inline-block;
+ max-width: 94%;
+ height: 34px;
+ line-height: 34px;
+ color: #07b67b;
+ font-size: 12px;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ position: absolute;
+ bottom: 0;
+ left: 12px;
+}
+.header-fixed .down-wrapper {
+ display: none !important;
+}
+.header-fixed .date-wrapper {
+ display: block !important;
+}
+
+/*极端天气提醒*/
+.weather-wrap .userbar-weather_tip .tips-close {
+ width: 6px;
+ height: 6px;
+ background: url(../img/del.png?__sprite) no-repeat;
+ top: 6px;
+ left: 6px;
+}
+.weather-wrap .userbar-weather_tip .tips-light {
+ width: 15px;
+ height: 17px;
+ background: url(../img/light_new.png?__sprite) no-repeat;
+ right: 6px;
+ top: 6px;
+}
+.weather-wrap .userbar-weather_tip p {
+ overflow: hidden;
+ text-indent: 0;
+ white-space: normal;
+ line-height: normal;
+ margin: 0;
+ margin-top: -2px;
+ height: 30px;
+}
+.weather-wrap .userbar-weather_tip .weather-remind-outer {
+ display: table;
+ height: 30px;
+ font-weight: normal;
+}
+.weather-wrap .userbar-weather_tip .weather-remind-inner {
+ display: table-cell;
+ vertical-align: middle;
+ word-break: break-word;
+ font-weight: normal;
+}
+
+/*倒计时增强*/
+.userbar-date-new_mod {
+ box-shadow: rgba(0,0,0,0.1) 0px 0px 0px 1px inset;
+ -webkit-box-shadow: rgba(0,0,0,0.1) 0px 0px 0px 1px inset;
+ -o-box-shadow: rgba(0,0,0,0.1) 0px 0px 0px 1px inset;
+ -moz-box-shadow: rgba(0,0,0,0.1) 0px 0px 0px 1px inset;
+ -ms-box-shadow: rgba(0,0,0,0.1) 0px 0px 0px 1px inset;
+}
+.userbar-date-new_mod .userbar-date {
+ background: none !important;
+ width: auto !important;
+ float: none !important;
+}
+.userbar-date-new_mod .date-tip {
+ display: none !important;
+}
+.userbar-date-new_mod .calendar-open {
+ background-color: rgba(255,255,255, 0.2) !important;
+}
+/*@media \0screen {
+ .userbar-date-new_mod .calendar-open {
+ filter:progid:DXImageTransform.Microsoft.gradient(enabled='true',startColorstr='#33FFFFFF', endColorstr='#33FFFFFF');
+ }
+}*/
+.userbar-date-new_mod .down-tip {
+ visibility: hidden;
+}
+.userbar-date-new_mod .down-dhm .down-hm,
+.userbar-date-new_mod .down-dhm br {
+ display: none !important;
+}
+.userbar-date-new_mod .userbar-date .down-wrapper .down-day,
+.userbar-date-new_mod .userbar-date .down-wrapper .down-dhm {
+ float: none;
+ display: block;
+}
+.userbar-date-new_mod .userbar-date .down-wrapper .down-day {
+ margin-top: -3px;
+ color: #ff0006;
+ width: 36px;
+ float: left;
+ margin-left: 0;
+ overflow: hidden;
+}
+.userbar-date-new_mod .userbar-date .down-wrapper .down-d {
+ color: #FFFFFF;
+ display: block;
+ font-size: 10px;
+ -webkit-transform: scale(0.8);
+ margin-top: 24px;
+ margin-left: -4px;
+}
+.userbar-date-new_mod .userbar-date .down-wrapper,
+.userbar-date-new_mod .down-wrapper .down-time {
+ overflow: visible;
+}
+
+.userbar-date-new_mod2 .down-wrapper .down-time {
+ float: right;
+}
+.header-fixed .userbar-date-new_mod {
+ background: none !important;
+ width: auto !important;
+ box-shadow: 0;
+ -webkit-box-shadow: none;
+ -o-box-shadow: none;
+ -moz-box-shadow: none;
+ -ms-box-shadow: none;
+}
+.header-fixed .calendar-open {
+ background-color: #06B67B !important;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/rtl-s/rtl.ps.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/rtl-s/rtl.ps.css
new file mode 100755
index 000000000..888738bcc
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-com/rtl-s/rtl.ps.css
@@ -0,0 +1,16 @@
+/*for PS*/
+.header-fixed-up .radios {
+ display: none;
+ display: none !important;
+}
+body.header-fixed-up .box-search_logo dt {
+ padding-left: 18px;
+ background-color: #F0F0F0;
+ background: url(../img/btn-rtl.png) no-repeat right top;
+ border-left: 1px solid #B1B1B1;
+ cursor: pointer;
+}
+body.header-fixed-up .box-search_logos_show dt {
+ width: 30px;
+ background: url(../img/i-arrow-open.png) no-repeat 10px 12px;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-main.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-main.tpl
new file mode 100755
index 000000000..28dc09cb8
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header-main.tpl
@@ -0,0 +1,7 @@
+
+<%* 页头的抽样逻辑都需要在这里添加 *%>
+<%if !empty($body.headerTest.widget)%>
+ <%widget name="common:widget/header/`$body.headerTest.widget`.tpl"%>
+<%else%>
+ <%widget name="common:widget/header/header.tpl"%>
+<%/if%>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header.tpl
new file mode 100755
index 000000000..4eda8186b
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/header.tpl
@@ -0,0 +1,40 @@
+<%style%>
+<%if $head.dir=='ltr'%>
+@import url('/widget/header/ltr/ltr.css?__inline');
+<%else%>
+@import url('/widget/header/rtl/rtl.css?__inline');
+<%/if%>
+<%/style%>
+<%widget name="common:widget/header/add-fav-bar/add-fav-bar.tpl"%>
+
+
+ <%widget name="common:widget/header/logo/logo.tpl"%>
+
+ <%widget name="common:widget/header/site-switch/site-switch.tpl"%>
+ <%widget name="common:widget/header/account/account.tpl"%>
+ <%widget name="common:widget/header/userbar-btn/userbar-btn.tpl"%>
+
+ <%if isset($body.banner.src)%>
+ <%widget name="common:widget/header/banner/banner.tpl"%>
+ <%else%>
+ <%widget name="common:widget/header/clock/clock.tpl"%>
+ <%widget name="common:widget/header/weather/weather.tpl"%>
+ <%/if%>
+
+ <%if !empty($body.newerguide.isShow)%>
+ <%widget name="common:widget/header/newerguide/newerguide.tpl"%>
+ <%/if%>
+
+ <%if !empty($body.tearPage.isShow)%>
+ <%widget name="common:widget/header/tear-page/tear-page.tpl"%>
+ <%/if%>
+
+
+
+<%* 声明对ltr/rtl的css依赖 *%>
+<%if $head.dir=='ltr'%> <%require name="common:widget/header/ltr/ltr.more.css"%> <%else%> <%require name="common:widget/header/rtl/rtl.more.css"%> <%/if%>
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/img/logo_new.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/img/logo_new.png
new file mode 100755
index 000000000..9dab6d6cc
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/img/logo_new.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/img/logo_new_rtl.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/img/logo_new_rtl.png
new file mode 100755
index 000000000..67c8cad2f
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/img/logo_new_rtl.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/logo/img/del_ative.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/logo/img/del_ative.png
new file mode 100755
index 000000000..12bb63a4f
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/logo/img/del_ative.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/logo/img/del_gray.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/logo/img/del_gray.png
new file mode 100755
index 000000000..efb7884bf
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/logo/img/del_gray.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/logo/img/del_normal.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/logo/img/del_normal.png
new file mode 100755
index 000000000..a2ab6e855
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/logo/img/del_normal.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/logo/img/i-logotips.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/logo/img/i-logotips.png
new file mode 100755
index 000000000..2007de5da
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/logo/img/i-logotips.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/logo/logo-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/logo/logo-async.js
new file mode 100755
index 000000000..038ae38fa
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/logo/logo-async.js
@@ -0,0 +1,234 @@
+// welcome tip
+
+var $ = require("common:widget/ui/jquery/jquery.js");
+var UT = require("common:widget/ui/ut/ut.js");
+var helper = require("common:widget/ui/helper/helper.js");
+require("common:widget/ui/jquery/widget/jquery.sethome/jquery.sethome.js");
+
+window.Gl || (window.Gl = {});
+
+var confAct = conf.logoActivity || {},
+ curUa = navigator.userAgent.toLowerCase().match(/(msie|firefox|chrome)/),
+ curBrowser = curUa ? curUa[1] : "",
+ actLogo = {},
+ actTips = {};
+
+curBrowser = ((curBrowser === "msie") || (document.documentMode == 11)) ? "ie" : curBrowser;
+actLogo = confAct[curBrowser] ? confAct[curBrowser].logo : null;
+actTips = confAct[curBrowser] ? confAct[curBrowser].logoTips : null;
+
+function isNotEmpty(str) {
+ return ($.trim(str) !== "");
+}
+
+Gl.logo = function (type) {
+ var indexLogo = $("#indexLogo"),
+ indexLogoImg = $("#indexLogoImg"),
+ secLogoImg = $("#secLogoImg"),
+ indexSlogan = $(".userbar-logo_slogan");
+
+ if (type !== "index") {
+ indexLogoImg.hide();
+ secLogoImg.show();
+ } else {
+ if (confAct.isHidden === "0" && actLogo) {
+ var imgSrc = actLogo["src"],
+ logoUrl = actLogo["url"],
+ sloganTxt = actLogo["slogan"],
+ sloganSz = actLogo["sloganSize"],
+ indexTtl = actLogo["indexTitle"];
+ indexLogoImg.attr("src", imgSrc);
+ indexLogo.attr("href", logoUrl);
+ indexSlogan.html(sloganTxt);
+ isNotEmpty(sloganSz) && indexSlogan.css("font-size", sloganSz);
+ indexLogo.attr("title", indexTtl);
+ indexLogoImg.attr("title", indexTtl);
+ indexLogoImg.attr("alt", indexTtl);
+ }
+ }
+
+ indexLogo.on("click", function ( e ) {
+ var logoTip = $("#logoTips").eq(0),
+ noJump = conf.logo.noJump;
+ UT.send({
+ position: "logo",
+ modId: "logo",
+ type: "click"
+ });
+ if(logoTip && isNotEmpty(conf.logo.autoCloseTip)) {
+ logoTip.hide();
+ $.cookie("Gh_l", conf.logoTips.country || "jp");
+ }
+ if( type === "index" && conf.logo.notOpenNew === "true" ){
+ e.preventDefault();
+ return;
+ }
+ else if (type === "index" && ($(this).attr("href") === '/' || $(this).attr("href").match(/^\/\?/)))
+ $(this).sethome();
+ else if (type === "index"){//如果有passQueryParam,则点击链接要带上这个参数
+ var url = $(this).attr("href"),
+ paramKey = conf.logo.passQueryParam.trim();
+ url = helper.appendQueryToUrl(url, paramKey);
+ if( noJump && conf.pageType == "index"){
+ return;
+ }
+ //!noJump && (conf.pageType != "index") &&
+ window.open(url);
+ }
+ else{
+ if( noJump && conf.pageType == "index"){
+ return;
+ }
+ //!noJump && (conf.pageType != "index") &&
+ window.location.href = $(this).attr("href") || "/";
+ }
+ });
+}
+
+Gl.logoTips = function () {
+ if(!(this instanceof Gl.logoTips)) return new Gl.logoTips();
+
+ var that = this;
+ that.tip = $("#logoTips");
+ that.tipLink = $("#tipLink");
+ that.closeBtn = $("#tipClose");
+ that.conf = conf.logoTips;
+
+ that.init();
+ if(conf.pageType === "index") {
+ that.fixActTips(confAct.isHidden, actTips);
+ }
+}
+Gl.logoTips.prototype = {
+ constructor: Gl.logoTips,
+
+ init: function () {
+ var that = this;
+ var myConf;
+ if(confAct.isHidden === "0" && actTips) {
+ myConf = confAct.logoTips;
+ } else {
+ myConf = that.conf;
+ }
+ if (myConf.show) {
+ //点击logotips跳转分类区在二级页不适用
+ if((!conf.pageType || conf.pageType != "index") && /^{[0-9]+}$/.test(that.tipLink.attr("href"))){
+ that.tip.hide();
+ return;
+ }
+ that.bindEvent();
+ if (myConf.alwaysShow) {
+ that.show();
+ } else if (myConf.userOption) {
+ (!$.cookie("Gh_l") || $.cookie("Gh_l") !== that.conf.country) && that.show();
+ } else {
+ $.cookie("oldFriend", null);
+ that.setStore("oldFriend", myConf.version, function() {
+ that.show();
+ });
+ }
+ }
+ },
+ bindEvent: function () {
+ var that = this;
+ that.tipLink.on("click", function (e) {
+ var href = $(this).attr("href");
+ e.preventDefault();
+ if(href && href !== "#"){//如果有passQueryParam,则点击链接要带上这个参数
+ //针对点击logotips可跳转到指定分类区的处理
+ if (/^{[0-9]+}$/.test(href)) {
+ var sortIndex = href.substring(1, href.length-1);
+ var sortSite = $("dl[log-index="+sortIndex+"]", ".box-sort");
+ var sortMarginTop = conf.logoTips.sortMarginTop || 40;
+ var sortDisappearTime = conf.logoTips.sortDisappearTime || 1500;
+ if(sortSite.length>0){
+ var embedHome = $("#embed-iframe-nav .home");
+ if(embedHome.length>0 && !embedHome.hasClass("current")){
+ embedHome.trigger("click");
+ }
+ $(window).scrollTop(sortSite.offset().top - sortMarginTop);
+ var sortSiteHeight = sortSite.height()-2;
+ //按需加载导致获取高度可能有问题,采用一定延时
+ if (sortIndex>4 && sortSiteHeight<50) {
+ setTimeout(function(){
+ sortSiteHeight = sortSite.height()-2;
+ sortSite.height(sortSiteHeight);
+ }, 50);
+ }else{
+ sortSite.height(sortSiteHeight);
+ }
+ sortSite.addClass("selected");
+ setTimeout(function(){
+ sortSite.removeClass("selected");
+ sortSite.height(sortSiteHeight+2);
+ }, sortDisappearTime);
+ }
+ }else{
+ var url = $(this).attr("href"),
+ paramKey = that.conf.passQueryParam.trim();
+ url = helper.appendQueryToUrl(url, paramKey);
+ window.open(url, "_blank");
+ }
+ }
+ if(confAct.isHidden === "0" && actTips) {
+ confAct.logoTips.userOption && $.cookie("Gh_l",that.conf.country);
+ } else {
+ that.conf.userOption && $.cookie("Gh_l",that.conf.country);
+ }
+ that.tip.hide();
+ UT.send({
+ position: "logoTipsLink",
+ modId: "logo",
+ type: "click"
+ });
+ });
+ that.closeBtn.on("mouseenter", function () {
+ $(this).addClass("tip-close_hover");
+ });
+ that.closeBtn.on("mouseleave", function () {
+ $(this).removeClass("tip-close_hover");
+ });
+ that.closeBtn.on("click", function (e) {
+ e.preventDefault();
+ that.tip.hide();
+ UT.send({
+ position: "logoTipsClose",
+ ac:"b",
+ modId: "logo",
+ type: "click"
+ });
+ $.cookie("Gh_l",that.conf.country);
+ });
+ },
+ show: function () {
+ var that = this,
+ timeout = parseInt(that.conf.tipsHideTime, 10);
+ that.tip.show();
+ if (timeout) {
+ setTimeout(function() {
+ that.tip.hide();
+ }, timeout);
+ }
+ return true;
+ },
+ setStore: function (key, value, callback, expires) {
+ var that = this;
+ $.store(key) !== value && callback();
+ $.store(key, value, {expires: expires || 2000});
+ },
+ fixActTips: function(isHidden, data) {
+ var that = this;
+ if(isHidden === "0" && data) {
+ isNotEmpty(data["tipsWidth"]) && that.tip.css("width", data["tipsWidth"]);
+ that.tipLink.attr("href", data["url"]);
+ that.tip.children('p').first().contents().filter(function() {
+ return this.nodeType === 3;
+ }).replaceWith(data["text"]);
+ if (isNotEmpty(data["closeText"])) {
+ that.tipLink.html(data["closeText"] + ' ');
+ } else {
+ that.tipLink.html('');
+ }
+ }
+ }
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/logo/logo.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/logo/logo.tpl
new file mode 100755
index 000000000..66ccb8fe6
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/logo/logo.tpl
@@ -0,0 +1,108 @@
+<%style%>
+<%if $head.dir=='ltr'%>
+@import url('/widget/header/logo/ltr/ltr.css?__inline');
+<%else%>
+@import url('/widget/header/logo/rtl/rtl.css?__inline');
+<%/if%>
+<%/style%>
+
+<%style%>
+<%if !empty($body.headerTest.widget)%>
+.userbar-logo {
+ width: <%if $head.dir=='ltr'%><%$body.headerTest.logoWidth|default:'280'%><%else%><%$body.headerTest.logoWidth|default:'345'%><%/if%>px;
+}
+<%/if%>
+<%/style%>
+
+
+<%* 声明对ltr/rtl的css依赖 *%>
+<%if $head.dir=='ltr'%> <%require name="common:widget/header/logo/ltr/ltr.more.css"%> <%else%> <%require name="common:widget/header/logo/rtl/rtl.more.css"%> <%/if%>
+
+
+<%if $head.dir=="ltr"%>
+<%$defaultLogoPath="/widget/header/img/logo_new.png"%>
+<%else%>
+<%$defaultLogoPath="/widget/header/img/logo_new_rtl.png"%>
+<%/if%>
+
+
+ <%* 如果存在匹配的渠道 *%>
+ <%if $smarty.cookies.tnValue !== '/' %>
+ <%foreach $body.logo.tns as $tnLogo%>
+ <%if !empty($tnLogo.tnNum) && (preg_match($tnLogo.tnNum, $root.urlparam.tn) || strpos($root.urlparam.tn,$tnLogo.tnNum) !== false) %>
+ <%$body.logo.url = $tnLogo.url%>
+ <%$body.logo.src = $tnLogo.src%>
+ <%$body.logo.indexTitle = $tnLogo.indexTitle%>
+ <%$body.logo.secTitle = $tnLogo.secTitle%>
+ <%$body.logo.slogan = $tnLogo.slogan%>
+ <%$body.logo.sloganSize = $tnLogo.sloganSize%>
+ <%/if%>
+ <%/foreach%>
+ <%foreach $body.logoTips.tns as $tnTips%>
+ <%if !empty($tnTips.tnNum) && (preg_match($tnLogo.tnNum, $root.urlparam.tn) || strpos($root.urlparam.tn,$tnTips.tnNum) !== false) %>
+ <%$body.logoTips.url = $tnTips.url%>
+ <%$body.logoTips.text = $tnTips.text%>
+ <%$body.logoTips.closeText = $tnTips.closeText%>
+ <%$body.logoTips.version = $tnTips.version%>
+ <%$body.logoTips.show = $tnTips.show%>
+ <%$body.logoTips.alwaysShow = $tnTips.alwaysShow%>
+ <%$body.logoTips.userOption = $tnTips.userOption%>
+ <%$body.logoTips.tipsWidth = $tnTips.tipsWidth%>
+ <%/if%>
+ <%/foreach%>
+ <%/if%>
+ <%if !empty($body.themeLogo.isShow)%>
+
+ <%if !empty($body.themeLogo.list[0].src)%>
+
+
+ <%else%>
+
+
+ <%/if%>
+
+ <%else%>
+
+
+
+
+ <%/if%>
+
+
style="font-size:<%$body.logo.sloganSize%>"<%/if%>><%$body.logo.slogan%>
+
+
+
+<%script%>
+ //logo
+ conf.logo = {
+ passQueryParam: "<%$body.logo.passQueryParam%>",
+ notOpenNew : "<%$body.logo.notOpenNew%>",
+ autoCloseTip: "<%$body.logo.autoCloseTip%>",
+ noJump: "<%$body.logo.noJump%>"
+ };
+ // logo tips
+ conf.logoTips = {
+ show: "<%$body.logoTips.show%>",
+ alwaysShow: "<%$body.logoTips.alwaysShow%>",
+ version: "<%$body.logoTips.version%>",
+ userOption: "<%$body.logoTips.userOption%>",
+ country: conf.country,
+ passQueryParam: "<%$body.logo.passQueryParam%>",
+ sortDisappearTime: "<%$body.logoTips.sortDisappearTime%>",
+ sortMarinTop: "<%$body.logoTips.sortMarinTop%>",
+ tipsHideTime: "<%$body.logoTips.tipsHideTime%>"
+ };
+
+ // logo activity
+ conf.logoActivity = <%json_encode($body.logoActivity)%>;
+
+ require.async(["common:widget/ui/jquery/jquery.js", "common:widget/header/logo/logo-async.js"], function ($) {
+ Gl.logo(conf.pageType);
+ Gl.logoTips();
+ });
+<%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/logo/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/logo/ltr/ltr.css
new file mode 100755
index 000000000..830a8573e
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/logo/ltr/ltr.css
@@ -0,0 +1,20 @@
+/* Site's logo */
+
+.userbar-logo {
+ height: 50px;
+ position: relative;
+ z-index: 10;
+ font-size: 12px;
+}
+.userbar-logo_slogan {
+ position: absolute;
+ font-size: 13px;
+ left: 44px;
+ top: 30px;
+ white-space: nowrap;
+}
+.userbar-logo_tip {
+ display: none;
+ position: absolute;
+ visibility: hidden;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/logo/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/logo/ltr/ltr.more.css
new file mode 100755
index 000000000..685759db7
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/logo/ltr/ltr.more.css
@@ -0,0 +1,68 @@
+.userbar-logo_tip {
+ position: absolute;
+ top: 49px;
+ left: 0;
+ padding: 5px 13px 5px 7px;
+ width: 230px;
+ max-width: 230px;
+ border: 1px solid #bee2d6;
+ border-bottom-color: #98d7c2;
+ color: #454545;
+ background-color: #fcfefd;
+ background-image:-moz-linear-gradient(50% 0% -90deg,rgb(254,255,255) 0%,rgb(253,254,254) 44%,rgb(251,253,252) 100%);
+ background-image:-webkit-gradient(linear,50% 0%,50% 100%,color-stop(0, rgb(254,255,255)),color-stop(0.44, rgb(253,254,254)),color-stop(1, rgb(251,253,252)));
+ background-image:-webkit-linear-gradient(-90deg,rgb(254,255,255) 0%,rgb(253,254,254) 44%,rgb(251,253,252) 100%);
+ background-image:-o-linear-gradient(-90deg,rgb(254,255,255) 0%,rgb(253,254,254) 44%,rgb(251,253,252) 100%);
+ background-image:-ms-linear-gradient(-90deg,rgb(254,255,255) 0%,rgb(253,254,254) 44%,rgb(251,253,252) 100%);
+ background-image:linear-gradient(-90deg,rgb(254,255,255) 0%,rgb(253,254,254) 44%,rgb(251,253,252) 100%);
+ -moz-border-radius: 10px;
+ -webkit-border-radius: 10px;
+ -o-border-radius: 10px;
+ border-radius: 10px;
+
+ visibility: visible !important;
+}
+.userbar-logo_tip a{
+ color: #00b075;
+}
+.userbar-logo_tip p a:hover{
+ text-decoration: underline;
+}
+.userbar-logo_tip .arrow, .userbar-logo_tip .arrow_bg {
+ position: absolute;
+ height: 0;
+ width: 0;
+ border: 8px dashed transparent;
+}
+.userbar-logo_tip .arrow {
+ border-bottom-color: #bee2d6;
+ border-bottom-style: solid;
+ top: -17px;
+ left: 19px;
+}
+.userbar-logo_tip .arrow_bg {
+ border-bottom-color: #fcfefd;
+ border-bottom-style: solid;
+ margin: -7px 0 0 -8px;
+ _margin-top: -22px;
+}
+.userbar-logo_tip .tip-close {
+ display: block;
+ width: 12px;
+ height: 12px;
+ position: absolute;
+ top: 4px;
+ right: 4px;
+ background: url(../img/i-logotips.png?__sprite) no-repeat;
+ cursor: pointer;
+}
+.userbar-logo_tip .tip-close_hover {
+ background: url(../img/i-logotips.png?__sprite) no-repeat;
+}
+.userbar-logo_tip .tipLinkArrow{
+ position: relative;
+ display: inline-block;
+ width: 12px;
+ height: 12px;
+ background: url(../img/i-logotips.png?__sprite) no-repeat -12px -1px;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/logo/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/logo/rtl/rtl.css
new file mode 100755
index 000000000..9a8292a1a
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/logo/rtl/rtl.css
@@ -0,0 +1,18 @@
+.userbar-logo {
+ height: 50px;
+ position: relative;
+ z-index: 10;
+ font-size: 12px;
+}
+.userbar-logo_slogan {
+ position: absolute;
+ font-size: 13px;
+ right: 150px;
+ top: 30px;
+ white-space: nowrap;
+}
+.userbar-logo_tip {
+ display: none;
+ visibility: hidden;
+ position: absolute;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/logo/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/logo/rtl/rtl.more.css
new file mode 100755
index 000000000..ad12940f4
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/logo/rtl/rtl.more.css
@@ -0,0 +1,68 @@
+.userbar-logo_tip {
+ position: absolute;
+ top: 49px;
+ right: 0;
+ padding: 5px 7px 5px 17px;
+ width: 230px;
+ max-width: 230px;
+ border: 1px solid #bee2d6;
+ border-bottom-color: #98d7c2;
+ color: #454545;
+ background-color: #fcfefd;
+ background-image:-moz-linear-gradient(50% 0% -90deg,rgb(254,255,255) 0%,rgb(253,254,254) 44%,rgb(251,253,252) 100%);
+ background-image:-webkit-gradient(linear,50% 0%,50% 100%,color-stop(0, rgb(254,255,255)),color-stop(0.44, rgb(253,254,254)),color-stop(1, rgb(251,253,252)));
+ background-image:-webkit-linear-gradient(-90deg,rgb(254,255,255) 0%,rgb(253,254,254) 44%,rgb(251,253,252) 100%);
+ background-image:-o-linear-gradient(-90deg,rgb(254,255,255) 0%,rgb(253,254,254) 44%,rgb(251,253,252) 100%);
+ background-image:-ms-linear-gradient(-90deg,rgb(254,255,255) 0%,rgb(253,254,254) 44%,rgb(251,253,252) 100%);
+ background-image:linear-gradient(-90deg,rgb(254,255,255) 0%,rgb(253,254,254) 44%,rgb(251,253,252) 100%);
+ -moz-border-radius: 10px;
+ -webkit-border-radius: 10px;
+ -o-border-radius: 10px;
+ border-radius: 10px;
+
+ visibility: visible !important;
+}
+.userbar-logo_tip a{
+ color: #00b075;
+}
+.userbar-logo_tip p a:hover{
+ text-decoration: underline;
+}
+.userbar-logo_tip .arrow, .userbar-logo_tip .arrow_bg {
+ position: absolute;
+ height: 0;
+ width: 0;
+ border: 8px dashed transparent;
+}
+.userbar-logo_tip .arrow {
+ border-bottom-color: #bee2d6;
+ border-bottom-style: solid;
+ top: -17px;
+ right: 19px;
+}
+.userbar-logo_tip .arrow_bg {
+ border-bottom-color: #fcfefd;
+ border-bottom-style: solid;
+ margin: -7px -8px 0 0;
+ _margin-top: -22px;
+}
+.userbar-logo_tip .tip-close {
+ display: block;
+ width: 12px;
+ height: 12px;
+ position: absolute;
+ top: 4px;
+ left: 4px;
+ background: url(../img/i-logotips.png?__sprite) no-repeat;
+ cursor: pointer;
+}
+.userbar-logo_tip .tip-close_hover {
+ background: url(../img/i-logotips.png?__sprite) no-repeat;
+}
+.userbar-logo_tip .tipLinkArrow{
+ position: relative;
+ display: inline-block;
+ width: 12px;
+ height: 9px;
+ background: url(../img/i-logotips.png?__sprite) no-repeat -3px -12px;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/ltr/ltr.css
new file mode 100755
index 000000000..6a6797bb7
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/ltr/ltr.css
@@ -0,0 +1,58 @@
+/*============userbar=============*/
+
+.userbar-wrap {
+ background: #00ad73;
+ border-bottom: 1px solid #009e69;
+ _border-bottom: 0 none;
+ min-width: 960px;
+ position: relative;
+ height: 50px;
+}
+.userbar {
+ height: 50px;
+ margin: 0 auto;
+ color: #fff;
+ position: relative;
+ z-index: 9;
+}
+.userbar-tool {
+ display: none;
+}
+/*.userbar-tool {
+ width: 220px;
+ margin-top: 4px;
+ position: relative;
+ overflow: visible;
+ z-index: 11;
+}
+
+.userbar a:hover {
+ text-decoration: none;
+}
+.weather-more_wrap {
+ background: #0c815a;
+ overflow: hidden;
+ height: 0;
+ border-top: 0 none;
+ border-bottom: 1px solid #fff;
+ zoom: 1;
+}
+.weather-more_show {
+ height: auto;
+ border-top: 1px solid #0a6f4e;
+}
+.weather-more_line {
+ -moz-box-shadow: 0 0 4px rgba(0,0,0,0.1) inset;
+ -webkit-box-shadow: 0 0 4px rgba(0,0,0,0.1) inset;
+ -o-box-shadow: 0 0 4px rgba(0,0,0,0.1) inset;
+ box-shadow: 0 0 4px rgba(0,0,0,0.1) inset;
+ border-bottom: 1px solid #0a6f4e;
+
+}*/
+.weather-more {
+ display: none;
+}
+
+.weather-more_wrap {
+ border-bottom: 1px solid #fff;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/ltr/ltr.more.css
new file mode 100755
index 000000000..ab8e8e21e
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/ltr/ltr.more.css
@@ -0,0 +1,45 @@
+/*============userbar=============*/
+.userbar-tool {
+ width: 220px;
+ margin-top: 4px;
+ position: relative;
+ overflow: visible;
+ z-index: 11;
+ display: block;
+}
+.userbar-wrap {
+ background-image:-moz-linear-gradient(50% 0% -90deg,rgb(0,176,117) 0%,rgb(0,171,114) 100%);
+ background-image:-webkit-gradient(linear,50% 0%,50% 100%,color-stop(0, rgb(0,176,117)),color-stop(1, rgb(0,171,114)));
+ background-image:-webkit-linear-gradient(-90deg,rgb(0,176,117) 0%,rgb(0,171,114) 100%);
+ background-image:-o-linear-gradient(-90deg,rgb(0,176,117) 0%,rgb(0,171,114) 100%);
+ background-image:-ms-linear-gradient(-90deg,rgb(0,176,117) 0%,rgb(0,171,114) 100%);
+ background-image:linear-gradient(-90deg,rgb(0,176,117) 0%,rgb(0,171,114) 100%);
+ /*-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff00b075,endColorstr=#ff00ab72,GradientType=0)";
+ filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff00b075,endColorstr=#ff00ab72,GradientType=0);*/
+}
+
+.userbar a:hover {
+ text-decoration: none;
+}
+.weather-more_wrap {
+ background: #0c815a;
+ overflow: hidden;
+ height: 0;
+ border-top: 0 none;
+ zoom: 1;
+}
+.weather-more_show {
+ height: auto;
+ border-top: 1px solid #0a6f4e;
+}
+.weather-more_line {
+ -moz-box-shadow: 0 0 4px rgba(0,0,0,0.1) inset;
+ -webkit-box-shadow: 0 0 4px rgba(0,0,0,0.1) inset;
+ -o-box-shadow: 0 0 4px rgba(0,0,0,0.1) inset;
+ box-shadow: 0 0 4px rgba(0,0,0,0.1) inset;
+ border-bottom: 1px solid #0a6f4e;
+
+}
+.weather-more {
+ display: none;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/message/img/icon-delete-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/message/img/icon-delete-hover.png
new file mode 100755
index 000000000..6753dcb38
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/message/img/icon-delete-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/message/img/icon-delete.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/message/img/icon-delete.png
new file mode 100755
index 000000000..1bbe226de
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/message/img/icon-delete.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/message/img/icon-msg-new.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/message/img/icon-msg-new.png
new file mode 100755
index 000000000..c5417dc1d
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/message/img/icon-msg-new.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/message/img/icon-msg-notice-over-rtl.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/message/img/icon-msg-notice-over-rtl.png
new file mode 100755
index 000000000..213bb14c2
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/message/img/icon-msg-notice-over-rtl.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/message/img/icon-msg-notice-over.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/message/img/icon-msg-notice-over.png
new file mode 100755
index 000000000..36afab5cf
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/message/img/icon-msg-notice-over.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/message/img/icon-msg-notice-rtl.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/message/img/icon-msg-notice-rtl.png
new file mode 100755
index 000000000..7ed2d4470
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/message/img/icon-msg-notice-rtl.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/message/img/icon-msg-notice.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/message/img/icon-msg-notice.png
new file mode 100755
index 000000000..1aaa863a6
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/message/img/icon-msg-notice.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/message/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/message/ltr/ltr.more.css
new file mode 100755
index 000000000..3cf32d584
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/message/ltr/ltr.more.css
@@ -0,0 +1,23 @@
+.wrap-message{float: left;position: relative;}
+.wrap-message-content{position: relative; background: #F0FFFB;width: 280px;}
+.wrap-message-content li{border-bottom: 1px solid #BFF1E4;}
+.wrap-message-content li:hover{background-color: #d6f8ef;}
+.wrap-message-content .message-target{float:left;color: #666666;width: 255px;font-size: 12px;min-height: 58px;}
+.message-target:hover span{color:#00ad72;}
+a.message-target:hover span{text-decoration: underline;}
+.message-over-item .message-target{color: #999999;}
+.message-over-item .message-target:hover span{color: #777777;}
+.message-target span{display: block;width: 200px;float: left;margin: 19px 0 10px 10px;}
+.ico-message-delete{float: right;margin-top: 10px;margin-right:10px;display: none;width: 11px;height: 11px;background: url("../img/icon-delete.png?__sprite") no-repeat;}
+.ico-message-delete:hover{cursor: pointer; background: url("../img/icon-delete-hover.png?__sprite") no-repeat;}
+.wrap-message-content li:hover .ico-message-delete{display: block;}
+.ico-message-new{position: absolute;right: 10px;top: 10px;width: 12px;height: 12px;background: url("../img/icon-msg-new.png?__sprite") no-repeat;}
+.ico-message-type{width: 28px;height: 25px;float: left;margin-left: 15px;margin-top: 17px;background: url("../img/icon-msg-notice.png?__sprite") no-repeat;}
+.ico-message-type1, .ico-message-type2{background: url("../img/icon-msg-notice.png?__sprite") no-repeat;}
+.message-over-item .ico-message-type{background-image: url("../img/icon-msg-notice-over.png?__sprite");}
+.message-over-item .ico-message-type1, .message-over-item .ico-message-type2{background-image: url("../img/icon-msg-notice-over.png?__sprite");}
+.message-no-item{line-height: 58px;text-align: center;}
+.message-no-item span{width: 100%;overflow: hidden;color: #aaaaaa;text-overflow:ellipsis;white-space: nowrap;}
+
+/****** 固定页头调整 *****/
+.header-fixed .ico-message-new{top: 4px;}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/message/message-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/message/message-async.js
new file mode 100755
index 000000000..40feefc2c
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/message/message-async.js
@@ -0,0 +1,278 @@
+var $ = require("common:widget/ui/jquery/jquery.js");
+var Helper = require("common:widget/ui/helper/helper.js");
+var Md5 = require('common:widget/ui/md5/md5.js');
+var UT = require("common:widget/ui/ut/ut.js");
+
+/*****************************
+消息盒子
+------------------------------
+MRD地址:http://10.65.211.71:8200/doc/61aa0959-2f0b-4761-8073-41455e74e7ae
+------------------------------
+可传入的参数说明
+ apiUrlPrefix:API请求的前缀
+ apiUrlParam:API请求的参数
+ noMsgContent:无消息时显示的文本
+ maxNumber:消息数的最大值
+ msgLineHeight:每条消息的最大显示高度(溢出省略)
+
+*****************************/
+var Message = function(userOption){
+ var defaultOption = {
+ records: [],
+ deletedIds: [],
+ clickedIds: [],
+ htmlTpl: ''
+ + '<#{tagName} #{attrs} class="message-target" data-sort="msgcontent" data-val="#{id}">'
+ + ' '
+ + '#{description} '
+ + '#{tagName}>'
+ + ' '
+ +' ',
+ apiUrlPrefix: conf.apiUrlPrefix,
+ apiUrlParam: "?app=msgbox&act=contents&num=5&country=" + conf.country,
+ noMsgContent: "There is no message.",
+ maxNumber: 5,
+ msgLineHeight: 30,
+ _callbacks: {}
+ }
+ $.extend(this, defaultOption, userOption);
+};
+
+Message.prototype = {
+
+ constructor: Message,
+
+ //模型绑定事件
+ bind: function(ev, callback){
+ (this._callbacks[ev] || (this._callbacks[ev] = [])).push(callback);
+ },
+
+ //触发模型事件
+ trigger: function(ev){
+ var callbacks;
+ if (!(callbacks = this._callbacks[ev])) {
+ return this;
+ }
+ $.each(callbacks, function(){
+ this();
+ });
+ },
+
+ /*新增消息(暂时无用)
+ addRecord: function(message){
+ if (this.records.length < this.maxNumber) {
+ this.records.push(message);
+ this.trigger("change");
+ }
+ },*/
+
+ //删除消息
+ delRecord: function(delId){
+ var locRecords = this.records;
+ var matchIndex;
+ for(matchIndex=0; matchIndex= 0) {
+ return;
+ }
+ var cookieIds = $.cookie(cookieName);
+ if (cookieIds) {
+ if (ids.length >= this.maxNumber) {
+ var minIndex = 0;
+ for(var i=1; i";
+ }else{
+ var clickedIds = this.clickedIds;
+ for(var i=0; i= 0 ? "message-over-item" : ""
+ }));
+ }
+ }
+ this.contentWrap.find("ul").empty().append(content);
+ // this.linesEllipsis(this.contentWrap.find("li a span"));
+ },
+
+ //多行的溢出省略(工具函数)
+ // linesEllipsis: function(jqDom){
+ // var self = this;
+ // jqDom.each(function(i){
+ // var jqThis = $(this);
+ // while (jqThis.outerHeight() > self.msgLineHeight) {
+ // jqThis.text(jqThis.text().replace(/(\s)*([a-zA-Z0-9]+|\W)(\.\.\.)?$/, "..."));
+ // }
+ // });
+ // },
+
+ //定义一些需要用到的变量
+ defineVar: function(){
+ this.newIcon = $(".ico-message-new");
+ this.messageBox = $(".box-message");
+ this.contentWrap = $(".wrap-message-content");
+ this.lastTimestamp = parseInt($.cookie("msgTimestamp") || 0);
+ },
+
+ //事件绑定
+ bindEvent: function(){
+ var self = this;
+ this.messageBox.one("mouseenter", function(){
+ self.trigger("change");
+ self.newIcon.addClass("hide");
+ $.cookie("msgHoverd", "1", {expires: 30});
+ });
+ this.bind("change", $.proxy(this.updateTpl, this));
+ $(document.body).on("click", function(e){
+ var target = $(e.target),
+ messageTarget = target.closest(".message-target");
+ if(target.hasClass("ico-message-delete")){
+ var id = target.parent().attr("data-id");
+ self.delRecord(id);
+ e.preventDefault();
+ }else if(messageTarget.length>0 && messageTarget.is("a") && !target.closest("li").hasClass("message-over-item")){
+ var id= target.closest("li").attr("data-id");
+ self.addClickedId(id);
+ }
+ });
+ // 对不是a链接的消息,使其hover之后就变灰
+ this.messageBox.on("mouseenter", ".account-dropdown_wrap li", function(e){
+ // 保证已经初始化了DOM
+ // self.trigger("change");
+ var target = $(e.target),
+ messageTarget = target.closest("li");
+ if(messageTarget.find(".message-target").is("span") && !target.closest("li").hasClass("message-over-item")){
+ var id= target.closest("li").attr("data-id");
+ // 将hover统一当作click,统一效果(可能不是很符合语义,升级带来的问题)
+ self.addClickedId(id);
+ self.trigger( "change" );
+ }
+ });
+ },
+
+ //是否有新消息的判断
+ judgeFresh: function(timestamp){
+ var hoverdCookie = $.cookie("msgHoverd");
+ var timeCookie = this.lastTimestamp;
+ if (timestamp > timeCookie || (timestamp == timeCookie && !hoverdCookie)) {
+ UT.send({
+ modId: "msgbox",
+ type: "others",
+ sort: "show",
+ position: "newicon"
+ });
+ this.newIcon.removeClass("hide");
+ }
+ $.cookie("msgTimestamp", timestamp, {expires: 30});
+ },
+
+ //消息数据的请求
+ ajaxLoad: function(){
+ var self = this;
+ var apiUrl = this.apiUrlPrefix + this.apiUrlParam;
+ $.ajax({
+ // test
+ // url : "/resource/fe/message.json",
+ // dataType : "json",
+ // cache : true,
+ url: apiUrl,
+ dataType: "jsonp",
+ jsonp: "jsonp",
+ jsonpCallback: "ghao123_" + Md5(this.apiUrlParam, 16),
+ cache: false,
+ success: function(data){
+ var content = data.content;
+ if (content.data.length) {
+ self.judgeFresh(content.data[0].timestamp);
+ self.records = content.data;
+ self.filterRecord();
+ }
+ }
+ });
+ },
+
+ //初始化
+ init: function(){
+ this.defineVar();
+ this.bindEvent();
+ this.initDelId();
+ this.initClkId();
+ this.ajaxLoad();
+ }
+};
+
+module.exports = Message;
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/message/message.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/message/message.tpl
new file mode 100755
index 000000000..c1a41652e
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/message/message.tpl
@@ -0,0 +1,20 @@
+<%if $head.dir=='ltr'%>
+<%require name="common:widget/header/message/ltr/ltr.more.css"%>
+<%else%>
+<%require name="common:widget/header/message/rtl/rtl.more.css"%>
+<%/if%>
+
+
+
+<%script%>
+window.conf || (window.conf = {});
+conf.messageBox = <%json_encode($body.messageBox)%>;
+require.async(["common:widget/ui/jquery/jquery.js", "common:widget/header/message/message-async.js"], function($, Message){
+ $(function(){
+ var message = new Message(conf.messageBox);
+ message.init();
+ });
+});
+<%/script%>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/message/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/message/rtl/rtl.more.css
new file mode 100755
index 000000000..5ec7c9aa2
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/message/rtl/rtl.more.css
@@ -0,0 +1,25 @@
+.wrap-message{float: right;position: relative;}
+.wrap-message-content{position: relative; background: #F0FFFB;width: 280px;}
+.wrap-message-content li{border-bottom: 1px solid #BFF1E4;}
+.wrap-message-content li:hover{background-color: #d6f8ef;}
+.wrap-message-content .message-target{float:right;color: #666666;width: 255px;font-size: 12px;min-height: 58px;}
+.message-target:hover span{color:#00ad72;}
+a.message-target:hover span{color:#00ad72; text-decoration: underline;}
+.message-over-item .message-target{color: #999999;}
+.message-over-item .message-target:hover span{color: #777777;}
+.message-target span{display: block;width: 200px;float: right;margin: 19px 10px 10px 0;}
+.ico-message-delete{color: #9dd2bf;float: left;margin-top: 10px;margin-left:10px;display: none;width: 11px;height: 11px;background: url("../img/icon-delete.png?__sprite") no-repeat;}
+.ico-message-delete:hover{cursor: pointer;background: url("../img/icon-delete-hover.png?__sprite") no-repeat;}
+.wrap-message-content li:hover .ico-message-delete{display: block;}
+.ico-message-new{position: absolute;left: 10px;top: 10px;width: 12px;height: 12px;background: url("../img/icon-msg-new.png?__sprite") no-repeat;}
+.ico-message-type{width: 28px;height: 25px;float: right;margin-right: 15px;margin-top: 17px;background: url("../img/icon-msg-notice-rtl.png?__sprite") no-repeat;}
+.ico-message-type1,
+.ico-message-type2{background: url("../img/icon-msg-notice-rtl.png?__sprite") no-repeat;}
+.message-over-item .ico-message-type{background-image: url("../img/icon-msg-notice-over-rtl.png?__sprite");}
+.message-over-item .ico-message-type1,
+.message-over-item .ico-message-type2{background-image: url("../img/icon-msg-notice-over-rtl.png?__sprite");}
+.message-no-item{line-height: 58px;text-align: center;}
+.message-no-item span{width: 100%;overflow: hidden;color: #aaaaaa;text-overflow:ellipsis;white-space: nowrap;}
+
+/****** 固定页头调整 *****/
+.header-fixed .ico-message-new{top: 4px;}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/newerguide/img/cancel.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/newerguide/img/cancel.png
new file mode 100755
index 000000000..aa724e5cd
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/newerguide/img/cancel.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/newerguide/img/finger.gif b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/newerguide/img/finger.gif
new file mode 100755
index 000000000..20418e687
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/newerguide/img/finger.gif differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/newerguide/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/newerguide/ltr/ltr.css
new file mode 100755
index 000000000..68fda95df
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/newerguide/ltr/ltr.css
@@ -0,0 +1 @@
+.newerguide-tip{ display: none;}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/newerguide/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/newerguide/ltr/ltr.more.css
new file mode 100755
index 000000000..ca7d6b0b8
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/newerguide/ltr/ltr.more.css
@@ -0,0 +1,49 @@
+.newerguide-tip {
+ display: none;
+ position: absolute;
+ left: 20px;
+ top: 130px;
+ width: 220px;
+ height: 41px;
+ color: #585E5C;
+ -moz-border-radius: 10px;
+ -webkit-border-radius: 10px;
+ -o-border-radius: 10px;
+ border-radius: 10px;
+ z-index: 8;
+ border: 1px solid #7BC6AC;
+ border-bottom-width: 2px;
+ background-color: #F7FFFD;
+}
+.newerguide-content {
+ margin: 6px 14px 6px 4px;
+ padding-left: 24px;
+ background: url("../img/finger.gif") no-repeat;
+}
+.newerguide-close {
+ position: absolute;
+ right: 6px;
+ top: 10px;
+ width: 7px;
+ height: 7px;
+ cursor: pointer;
+ background: url("../img/cancel.png?__sprite") no-repeat;
+}
+.guide-arrow, .arrow-inner {
+ position: absolute;
+ height: 0;
+ width: 0;
+ border: 12px dashed transparent;
+}
+.guide-arrow {
+ border-top-color: #7BC6AC;
+ border-top-style: solid;
+ bottom: -24px;
+ left: 26px;
+}
+.arrow-inner {
+ border-width: 9px;
+ border-top-color: #F7FFFD;
+ border-top-style: solid;
+ margin: -12px 0 0 -9px;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/newerguide/newerguide-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/newerguide/newerguide-async.js
new file mode 100755
index 000000000..cbeb465ed
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/newerguide/newerguide-async.js
@@ -0,0 +1,150 @@
+/**
+ * @author: chenguangyin
+ *
+ * @descrip: 本模块的目的是引导用户访问我们的页面信息,具体过程如下:
+ * 用户如果在页面没有进行任何有效点击,当鼠标经过logo旁边时(访问地址栏)显示引导信息
+ * 关闭引导信息有三种方式:
+ * 1. 点击X按钮,可配置以后是否出现或者永不出现
+ * 2. 点击有效区域(搜索框、页面内容等),可配置以后是否出现或者永不出现
+ * 3. 刷新页面
+ *
+ **/
+
+
+var $ = require("common:widget/ui/jquery/jquery.js"),
+ UT = require("common:widget/ui/ut/ut.js"),
+ newerguide = {},
+ /* 用到的相关元素 */
+ CONF = {
+ head: $("#top"),
+ logo: $(".userbar-logo", "#top").eq(0),
+ tip: $("#newerguide"),
+ tipClose: $("#newerguideClose"),
+ form: $("#searchGroupForm")
+ };
+
+newerguide.isSHow = false; /* 引导框是否显示 */
+newerguide.clicked = false; /* 是否点击过页面有效区域 */
+
+/* 根据CMS配置的位置信息设置引导框位置,并显示 */
+newerguide.showTips = function() {
+ CONF.tip && CONF.tip.css(this.data.position).show();
+ this.isShow = true;
+};
+
+/* 隐藏引导框 */
+newerguide.hideTips = function(status, value) {
+ var that = this;
+
+ CONF.tip.hide();
+ that.isShow = false;
+ that.handleCommand(status);
+ that.sendUT(value);
+};
+
+/* 根据参数发送不同的统计 */
+newerguide.sendUT = function(value) {
+ UT.send({
+ type: "others",
+ sort: value,
+ position: "newerguide",
+ modId: "newerguide"
+ });
+};
+
+/* 保存cookie,cookie时间为10年 */
+newerguide.setCookie = function() {
+ $.cookie("newerguide", "close", {
+ expires: 10*365
+ });
+};
+
+/* 删除cookie */
+newerguide.deleteCookie = function() {
+ $.cookie("newerguide", null);
+};
+
+/**
+ * @params event对象
+ * @return boolean值,在区域内发生为true
+ * @descrip 验证鼠标事件是否发生在相应区域
+ *
+ **/
+/*
+newerguide.showConfirm = function(e) {
+ var eventX = e.pageX,
+ logoX = CONF.logo.offset().left;
+
+ if ($("html").attr("dir") === "ltr") {
+ return (eventX - logoX > 250) ? false : true;
+ } else {
+ return (logoX - eventX > 250) ? false : true;
+ }
+};
+*/
+
+/**
+ * @params 控制引导框显示时间的CMS指令
+ * @descrip 当要求下次显示时删除cookie,否则保存cookie
+ *
+ **/
+newerguide.handleCommand = function(order) {
+ if (order === "") {
+ this.setCookie();
+ } else {
+ this.deleteCookie();
+ }
+};
+
+/* 绑定事件 */
+newerguide.bindEvent = function() {
+ var that = this,
+ data = that.data;
+
+ /* 判断鼠标是否经过有效区域并处理,同时发送引导出现次数统计 */
+ CONF.head.on("mouseenter", function(e) {
+ /*if (!that.clicked && !$.cookie("newerguide") && that.showConfirm(e) && !that.isShow) {*/
+ if (!that.clicked && !$.cookie("newerguide") && !that.isShow) {
+ that.showTips();
+ that.sendUT("show");
+ }
+ });
+
+ /* 鼠标点击X按钮关闭引导框,并发送X的点击次数统计 */
+ CONF.tipClose.on("click", function() {
+ that.hideTips(data.isShowAgainBtn, "close");
+ });
+
+ /* 点击有效区域(a)时移除引导框,发送统计 */
+ $(document).on("click", function(e) {
+ if($(e.target).closest("a").length === 1) {
+ if (!$.cookie("newerguide") && that.isShow) {
+ that.hideTips(data.isShowAgainArc, "link");
+ }
+ that.clicked = true;
+ }
+
+ });
+
+ /* 补充有效区域,点击表单时也应处理 */
+ CONF.form.on("click", function() {
+ if (!$.cookie("newerguide") && that.isShow) {
+ that.hideTips(data.isShowAgainArc, "link");
+ }
+ that.clicked = true;
+ });
+
+};
+
+/**
+ * @params CMS配置信息
+ * @descrip 模块初始化
+ *
+ **/
+newerguide.init = function(data) {
+ this.data = data;
+ this.bindEvent();
+};
+
+
+module.exports = newerguide;
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/newerguide/newerguide.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/newerguide/newerguide.tpl
new file mode 100755
index 000000000..2229b1abf
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/newerguide/newerguide.tpl
@@ -0,0 +1,36 @@
+<%style%>
+<%if $head.dir=='ltr'%>
+@import url('/widget/header/newerguide/ltr/ltr.css?__inline');
+<%else%>
+@import url('/widget/header/newerguide/rtl/rtl.css?__inline');
+<%/if%>
+<%/style%>
+
+<%* 声明对ltr/rtl的css依赖 *%>
+<%if $head.dir=='ltr'%> <%require name="common:widget/header/newerguide/ltr/ltr.more.css"%> <%else%> <%require name="common:widget/header/newerguide/rtl/rtl.more.css"%> <%/if%>
+
+
+
<%$body.newerguide.text%>
+
+
+
+<%script%>
+ require.async("common:widget/ui/jquery/jquery.js", function($) {
+ $(window).one("e_go.newerguide", function () {
+ require.async("common:widget/header/newerguide/newerguide-async.js", function (newerguide) {
+ newerguide.init({
+ position: {
+ <%if $head.dir=='ltr'%>left<%else%>right<%/if%>: "<%$body.newerguide.left%>px",
+ top: "<%$body.newerguide.top%>px"
+ },
+ isShowAgainArc: "<%$body.newerguide.isShowAgainArc%>",/* 控制引导框在点击有效区域后下次是否出现 */
+ isShowAgainBtn: "<%$body.newerguide.isShowAgainBtn%>"/* 控制引导框在点击关闭按钮后下次是否出现 */
+ });
+ });
+ });
+
+ $(function () {
+ $(window).trigger("e_go.newerguide");
+ });
+ });
+<%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/newerguide/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/newerguide/rtl/rtl.css
new file mode 100755
index 000000000..68fda95df
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/newerguide/rtl/rtl.css
@@ -0,0 +1 @@
+.newerguide-tip{ display: none;}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/newerguide/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/newerguide/rtl/rtl.more.css
new file mode 100755
index 000000000..3c2ea78d0
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/newerguide/rtl/rtl.more.css
@@ -0,0 +1,51 @@
+.newerguide-tip {
+ display: none;
+ position: absolute;
+ right: 20px;
+ top: 130px;
+ width: 220px;
+ height: 41px;
+ color: #585E5C;
+ -moz-border-radius: 10px;
+ -webkit-border-radius: 10px;
+ -o-border-radius: 10px;
+ border-radius: 10px;
+ z-index: 8;
+ border: 1px solid #7BC6AC;
+ border-bottom-width: 2px;
+ background-color: #F7FFFD;
+}
+.newerguide-content {
+ margin: 6px 4px 6px 14px;
+ padding-right: 24px;
+ background: url("../img/finger.gif") no-repeat;
+ background-position: right top;
+}
+.newerguide-close {
+ position: absolute;
+ left: 6px;
+ top: 10px;
+ width: 7px;
+ height: 7px;
+ cursor: pointer;
+ background: url("../img/cancel.png?__sprite") no-repeat;
+}
+.guide-arrow, .arrow-inner {
+ position: absolute;
+ height: 0;
+ width: 0;
+ border: 12px dashed transparent;
+}
+.guide-arrow {
+ border-top-color: #7BC6AC;
+ border-top-style: solid;
+ bottom: -24px;
+ right: 26px;
+}
+.arrow-inner {
+ border-width: 9px;
+ border-top-color: #F7FFFD;
+ border-top-style: solid;
+ left: -9px;
+ top: -12px;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/rtl/rtl.css
new file mode 100755
index 000000000..4c1886492
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/rtl/rtl.css
@@ -0,0 +1,26 @@
+/*============userbar=============*/
+
+.userbar-wrap {
+ background: #00ad73;
+ border-bottom: 1px solid #009e69;
+ _border-bottom: 0 none;
+ min-width: 960px;
+ position: relative;
+ height: 50px;
+}
+.userbar {
+ height: 50px;
+ margin: 0 auto;
+ color: #fff;
+ position: relative;
+ z-index: 9;
+}
+.userbar-tool {
+ display: none;
+}
+.weather-more {
+ display: none;
+}
+.weather-more_wrap {
+ border-bottom: 1px solid #fff;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/rtl/rtl.more.css
new file mode 100755
index 000000000..1c5cd8561
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/rtl/rtl.more.css
@@ -0,0 +1,41 @@
+/*============userbar=============*/
+.userbar-tool {
+ width: 240px;
+ margin-top: 4px;
+ position: relative;
+ overflow: visible;
+ z-index: 11;
+ display: block;
+}
+.userbar-wrap {
+ background-image:-moz-linear-gradient(50% 0% -90deg,rgb(0,176,117) 0%,rgb(0,171,114) 100%);
+ background-image:-webkit-gradient(linear,50% 0%,50% 100%,color-stop(0, rgb(0,176,117)),color-stop(1, rgb(0,171,114)));
+ background-image:-webkit-linear-gradient(-90deg,rgb(0,176,117) 0%,rgb(0,171,114) 100%);
+ background-image:-o-linear-gradient(-90deg,rgb(0,176,117) 0%,rgb(0,171,114) 100%);
+ background-image:-ms-linear-gradient(-90deg,rgb(0,176,117) 0%,rgb(0,171,114) 100%);
+ background-image:linear-gradient(-90deg,rgb(0,176,117) 0%,rgb(0,171,114) 100%);
+ /*-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff00b075,endColorstr=#ff00ab72,GradientType=0)";
+ filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff00b075,endColorstr=#ff00ab72,GradientType=0);*/
+}
+.userbar a:hover {
+ text-decoration: none;
+}
+.weather-more_wrap {
+ background: #0c815a;
+ overflow: hidden;
+ height: 0;
+ border-top: 0 none;
+ zoom: 1;
+}
+.weather-more_show {
+ height: auto;
+ border-top: 1px solid #0a6f4e;
+}
+.weather-more_line {
+ -moz-box-shadow: 0 0 4px rgba(0,0,0,0.1) inset;
+ -webkit-box-shadow: 0 0 4px rgba(0,0,0,0.1) inset;
+ -o-box-shadow: 0 0 4px rgba(0,0,0,0.1) inset;
+ box-shadow: 0 0 4px rgba(0,0,0,0.1) inset;
+ border-bottom: 1px solid #0a6f4e;
+
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/site-switch/img/i-settings-btn-open.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/site-switch/img/i-settings-btn-open.png
new file mode 100755
index 000000000..ae4cd8c22
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/site-switch/img/i-settings-btn-open.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/site-switch/img/i-settings-btn.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/site-switch/img/i-settings-btn.png
new file mode 100755
index 000000000..c571adaf0
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/site-switch/img/i-settings-btn.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/site-switch/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/site-switch/ltr/ltr.css
new file mode 100755
index 000000000..3c6afee34
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/site-switch/ltr/ltr.css
@@ -0,0 +1 @@
+.settings, .settings-btn{ visibility: hidden;}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/site-switch/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/site-switch/ltr/ltr.more.css
new file mode 100755
index 000000000..85dd20474
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/site-switch/ltr/ltr.more.css
@@ -0,0 +1,76 @@
+.settings {
+ float: right;
+ position: relative;
+ visibility: visible !important;
+}
+.settings-btn {
+ position: relative;
+ z-index: 12;
+ visibility: visible !important;
+ width: 18px;
+ height: 19px;
+ border: 1px solid #00af75;
+ background: url(../img/i-settings-btn.png?__sprite) no-repeat;
+ display: block;
+}
+.settings-dropdown,.settings-site {
+ display: none;
+}
+
+/*---------more:----------*/
+
+.settings-site {
+ display: block;
+}
+.settings-btn_open {
+ background: url(../img/i-settings-btn-open.png?__sprite) no-repeat;
+ border: 1px solid #bee2d6;
+ border-bottom: 0 none;
+ -moz-border-radius: 2px 2px 0 0;
+ -webkit-border-radius: 2px 2px 0 0;
+ -o-border-radius: 2px 2px 0 0;
+ border-radius: 2px 2px 0 0;
+}
+.settings-dropdown {
+ display: none;
+ position: absolute;
+ background-color: #ebfcf7;
+ border: 1px solid #bee2d6;
+ top: 19px;
+ right: 0;
+ width: 162px;
+ overflow: hidden;
+ z-index: 11;
+}
+.settings-site {
+ display: block;
+ overflow: hidden;
+ padding: 5px 10px;
+}
+.settings-site li {
+ display: block;
+ float: left;
+}
+.settings-site a {
+ display: block;
+ width: 61px;
+ height: 30px;
+ line-height: 30px;
+ padding: 0 5px;
+ font-size: 12px;
+ color: #454545;
+}
+.settings-site a:hover {
+ background-color: #d9f3ea;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -o-border-radius: 2px;
+ border-radius: 2px;
+}
+.settings-site .cur {
+ color: #00ac72;
+ cursor: default;
+}
+.settings-site .cur:hover {
+ background-color: transparent;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/site-switch/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/site-switch/rtl/rtl.css
new file mode 100755
index 000000000..3c6afee34
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/site-switch/rtl/rtl.css
@@ -0,0 +1 @@
+.settings, .settings-btn{ visibility: hidden;}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/site-switch/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/site-switch/rtl/rtl.more.css
new file mode 100755
index 000000000..c98fd2761
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/site-switch/rtl/rtl.more.css
@@ -0,0 +1,77 @@
+.settings {
+ float: left;
+ position: relative;
+ visibility: visible !important;
+}
+.settings-btn {
+ position: relative;
+ z-index: 12;
+ visibility: visible !important;
+ width: 18px;
+ height: 19px;
+ border: 1px solid #00af75;
+ background: url(../img/i-settings-btn.png?__sprite) no-repeat;
+ display: block;
+}
+.settings-dropdown,.settings-site {
+ display: none;
+}
+
+/*----------more------------*/
+
+.settings-site {
+ display: block;
+}
+
+.settings-btn_open {
+ background: url(../img/i-settings-btn-open.png?__sprite) no-repeat;
+ border: 1px solid #bee2d6;
+ border-bottom: 0 none;
+ -moz-border-radius: 2px 2px 0 0;
+ -webkit-border-radius: 2px 2px 0 0;
+ -o-border-radius: 2px 2px 0 0;
+ border-radius: 2px 2px 0 0;
+}
+.settings-dropdown {
+ display: none;
+ position: absolute;
+ background-color: #ebfcf7;
+ border: 1px solid #bee2d6;
+ top: 19px;
+ left: 0;
+ width: 162px;
+ overflow: hidden;
+ z-index: 11;
+}
+.settings-site {
+ display: block;
+ overflow: hidden;
+ padding: 5px 10px;
+}
+.settings-site li {
+ display: block;
+ float: right;
+}
+.settings-site a {
+ display: block;
+ width: 61px;
+ height: 30px;
+ line-height: 30px;
+ padding: 0 5px;
+ font-size: 12px;
+ color: #454545;
+}
+.settings-site a:hover {
+ background-color: #d9f3ea;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -o-border-radius: 2px;
+ border-radius: 2px;
+}
+.settings-site .cur {
+ color: #00ac72;
+ cursor: default;
+}
+.settings-site .cur:hover {
+ background-color: transparent;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/site-switch/site-switch-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/site-switch/site-switch-async.js
new file mode 100755
index 000000000..1a0427601
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/site-switch/site-switch-async.js
@@ -0,0 +1,66 @@
+/*
+* Setting btn including site switching and theme features
+* @ by FK
+*/
+var $ = require("common:widget/ui/jquery/jquery.js");
+window.Gl || (window.Gl = {});
+
+Gl.settings = function () {
+ var btn = $("#settingBtn"),
+ dropdown = $("#settingDropdown"),
+ siteList = $("#siteList"),
+ curCountry = $("li.site_" + conf.country + " a", siteList),
+ status = 0, // Status of whether the dropdown is show, 0: hide; 1: show
+ _this = {}, // Copy objects to this function's return value
+
+ bindEvent = function () {
+ btn.on("click.old", function (e) {
+ e.preventDefault();
+ if (!status) {
+ Gl.settings.open();
+ } else {
+ Gl.settings.close();
+ }
+ });
+ $(document).on("click", function (e) {
+ var el = e.target;
+ // Shut the dropdown when clicking on other areas
+ el !== btn[0] && el !== dropdown[0] && !$.contains(dropdown[0], el) && Gl.settings.close();
+ });
+ $("a", siteList).on("click", function (e) {
+ e.preventDefault();
+ if (e.target !== curCountry[0]) {
+ var la = $(this).attr("data-la");
+ // Set cookie for the Accept-language judging
+ la !== "" && $.cookie("LA", $(this).attr("data-la"), {expires: 2000, domain: "hao123.com"});
+ Gl.settings.close();
+ // Open target site
+ window.open($(this).attr("href"), $(this).attr("target"));
+ }
+ });
+
+ }
+
+ // Open the dropdown list
+ _this.open = function () {
+ btn.addClass("settings-btn_open");
+ dropdown.show();
+ status = 1; // Set status to open
+ };
+
+ // Shut the dropdown list
+ _this.close = function () {
+ btn.removeClass("settings-btn_open");
+ dropdown.hide();
+ status = 0; // Set status to close
+ };
+
+ // init
+ _this.init = function () {
+ curCountry.addClass("cur");
+ bindEvent();
+ };
+
+ return _this;
+}();
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/site-switch/site-switch.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/site-switch/site-switch.tpl
new file mode 100755
index 000000000..07329fe8f
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/site-switch/site-switch.tpl
@@ -0,0 +1,72 @@
+<%style%>
+<%if $head.dir=='ltr'%>
+@import url('/widget/header/site-switch/ltr/ltr.css?__inline');
+<%else%>
+@import url('/widget/header/site-switch/rtl/rtl.css?__inline');
+<%/if%>
+<%/style%>
+
+<%* 声明对ltr/rtl的css依赖 *%>
+<%if $head.dir=='ltr'%> <%require name="common:widget/header/site-switch/ltr/ltr.more.css"%> <%else%> <%require name="common:widget/header/site-switch/rtl/rtl.more.css"%> <%/if%>
+
+
+ <%script%>
+ require.async("common:widget/ui/jquery/jquery.js", function($) {
+ $(window).one("e_go.siteswitch", function () {
+ require.async("common:widget/header/site-switch/site-switch-async.js", function () {
+ Gl.settings.init();
+ });
+ });
+
+ $(function () {
+ $(window).trigger("e_go.siteswitch");
+ });
+
+ $("#settingBtn").one("mouseenter", function () {
+ $(window).trigger("e_go.siteswitch");
+ });
+ });
+ <%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skin-trans/img/i-christmas.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skin-trans/img/i-christmas.png
new file mode 100755
index 000000000..65b6d7bb8
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skin-trans/img/i-christmas.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skin-trans/img/i-newyear.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skin-trans/img/i-newyear.png
new file mode 100755
index 000000000..efa9e128c
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skin-trans/img/i-newyear.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skin-trans/img/i-transform.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skin-trans/img/i-transform.png
new file mode 100755
index 000000000..06da9f8aa
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skin-trans/img/i-transform.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skin-trans/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skin-trans/ltr/ltr.css
new file mode 100755
index 000000000..ae164ae28
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skin-trans/ltr/ltr.css
@@ -0,0 +1 @@
+.mod-skin-trans {visibility: hidden;}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skin-trans/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skin-trans/ltr/ltr.more.css
new file mode 100755
index 000000000..69740aa49
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skin-trans/ltr/ltr.more.css
@@ -0,0 +1,41 @@
+body .mod-skin-trans {
+ visibility: visible;
+ float: right;
+ padding-left: 10px;
+}
+.header-fixed .mod-skin-trans,.header-fixed .mod-skin-trans+.userbar_split {
+ display: none;
+}
+.mod-skin-trans .i-st-btn {
+ height: 26px;
+ line-height: 26px;
+ border: 1px solid #039266;
+ /*border-color: #8F8085 #1DCA90 #1DC990 #8F7D83;*/
+ border-top-color: #027955;
+ border-radius: 2px;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -o-border-radius: 2px;
+ -ms-border-radius: 2px;
+ cursor: pointer;
+ background-color: #039266;
+ color: #ffffff;
+ font-size: 13px;
+ padding-left: 6px;
+ padding-right: 6px;
+ margin-top: 12px;
+ transition: all .2s;
+}
+.mod-skin-trans .i-st-btn:hover {
+ background-color: #11C08A;
+ border-color: #11C08A;
+ border-top-color: #0D976D;
+}
+.mod-skin-trans .i-st-ico {
+ float: left;
+ width: 20px;
+ height: 20px;
+ margin-top: 3px;
+ margin-right: 4px;
+ display: inline;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skin-trans/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skin-trans/rtl/rtl.css
new file mode 100755
index 000000000..ae164ae28
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skin-trans/rtl/rtl.css
@@ -0,0 +1 @@
+.mod-skin-trans {visibility: hidden;}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skin-trans/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skin-trans/rtl/rtl.more.css
new file mode 100755
index 000000000..3d004e8a2
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skin-trans/rtl/rtl.more.css
@@ -0,0 +1,41 @@
+body .mod-skin-trans {
+ visibility: visible;
+ float: left;
+ padding-right: 10px;
+}
+.header-fixed .mod-skin-trans,.header-fixed .mod-skin-trans+.userbar_split {
+ display: none;
+}
+.mod-skin-trans .i-st-btn {
+ height: 26px;
+ line-height: 26px;
+ border: 1px solid #039266;
+ /*border-color: #8F8085 #1DCA90 #1DC990 #8F7D83;*/
+ border-top-color: #027955;
+ border-radius: 2px;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -o-border-radius: 2px;
+ -ms-border-radius: 2px;
+ cursor: pointer;
+ background-color: #039266;
+ color: #ffffff;
+ font-size: 13px;
+ padding-left: 6px;
+ padding-right: 6px;
+ margin-top: 12px;
+ transition: all .2s;
+}
+.mod-skin-trans .i-st-btn:hover {
+ background-color: #11C08A;
+ border-color: #11C08A;
+ border-top-color: #0D976D;
+}
+.mod-skin-trans .i-st-ico {
+ float: right;
+ width: 20px;
+ height: 20px;
+ margin-top: 3px;
+ margin-left: 4px;
+ display: inline;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skin-trans/skin-trans-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skin-trans/skin-trans-async.js
new file mode 100755
index 000000000..d52497116
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skin-trans/skin-trans-async.js
@@ -0,0 +1,95 @@
+var $ = require("common:widget/ui/jquery/jquery.js");
+var UT = require("common:widget/ui/ut/ut.js");
+require("common:widget/header/skinbox/skinbox-async.js");
+require("common:widget/header/skinbox/skin-mod.js");
+
+var _conf = conf.skinTrans,
+ d_skin = _conf.defaultSkin,
+ d_word = _conf.defaultWords,
+ d_icon = _conf.defaultIcon,
+ d_freq = parseInt(_conf.frequency, 10),
+ t_word = _conf.transWords,
+ t_icon = _conf.transIcon,
+ $wrap = $("#" + _conf.id),
+ $btn = $wrap.find(".i-st-btn"),
+ $icon = $wrap.find(".i-st-ico"),
+ $tip = $wrap.find(".i-st-tip"),
+ $win = $(window);
+
+var modId = "skin-trans",
+ isFirst = 0,
+ dataGroup = [];
+
+var controller = {
+ init: function() {
+ var that = this;
+ if (d_skin == that.getCurrentSkin()) {
+ t_icon && $icon.css("background-image", "url(" + t_icon + ")");
+ t_word && $tip.html(t_word);
+ } else {
+ d_icon && $icon.css("background-image", "url(" + d_icon + ")");
+ d_word && $tip.html(d_word);
+ }
+ that.fixSkin();
+ that.bindEvent();
+ },
+ fixSkin: function() {
+ var data = conf.skin.data,
+ len = data.length;
+ for (var i = 0; i < len; i++) {
+ dataGroup.push(data[i].key);
+ }
+ if (d_freq > 0) {
+ for (var j = 0; j < d_freq; j++) {
+ dataGroup.push("no");
+ }
+ }
+ },
+ getRandomSkin: function() {
+ var that = this;
+ !dataGroup.length && that.fixSkin();
+ return dataGroup.splice(parseInt(dataGroup.length * Math.random(), 10), 1);
+ },
+ getCurrentSkin: function() {
+
+ var skin = $.store("lastSkin") || $.cookie("lastSkin");
+ if (skin) {
+ skin = skin.split("|")[0];
+ }
+ return skin || "no";
+ },
+ bindEvent: function() {
+ var that = this;
+ $btn.on("click", function(e) {
+ ++isFirst;
+ if (isFirst === 1 && d_skin != that.getCurrentSkin()) {
+ $win.trigger( "skinTrans.recommendedSelect" );
+ t_word && $tip.html(t_word);
+ // 切换到推荐皮肤
+ $win.trigger("skin.change", d_skin);
+ } else {
+ // 随机切换皮肤
+ $win.trigger("skin.change", that.getRandomSkin());
+ }
+ UT.send({
+ type: "click",
+ modId: modId,
+ position: "btn",
+ ac: "b"
+ });
+ });
+ $win.on("beforeunload", function() {
+ UT.send({
+ type: "others",
+ modId: modId,
+ position: that.getCurrentSkin()
+ });
+ });
+ // 提供给外部使用
+ $win.on( "skinTrans.recommendedSelect", function(){
+ t_icon && $icon.css("background-image", "url(" + t_icon + ")");
+ } );
+ }
+};
+
+module.exports = controller;
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skin-trans/skin-trans.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skin-trans/skin-trans.tpl
new file mode 100755
index 000000000..ffcdbcb58
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skin-trans/skin-trans.tpl
@@ -0,0 +1,40 @@
+<%style%>
+<%if $head.dir=='ltr'%>
+ @import url('/widget/header/skin-trans/ltr/ltr.css?__inline');
+ <%if $body.skinTrans.padding == '1'%>
+.mod-skin-trans {
+ padding-right: 10px;
+}
+ <%/if%>
+<%else%>
+ @import url('/widget/header/skin-trans/rtl/rtl.css?__inline');
+ <%if $body.skinTrans.padding == '1'%>
+.mod-skin-trans {
+ padding-left: 10px;
+}
+ <%/if%>
+<%/if%>
+<%/style%>
+
+<%* 声明对ltr/rtl的css依赖 *%>
+<%if $head.dir=='ltr'%>
+<%require name="common:widget/header/skin-trans/ltr/ltr.more.css"%>
+<%else%>
+<%require name="common:widget/header/skin-trans/rtl/rtl.more.css"%>
+<%/if%>
+
+
+
+<%script%>
+ conf.skinTrans = <%json_encode($body.skinTrans)%>;
+ conf.skinTrans.id = conf.skinTrans.id || "skinTrans";
+ require.async(["common:widget/ui/jquery/jquery.js", "common:widget/header/skin-trans/skin-trans-async.js"], function($, control) {
+ $(window).trigger("slide.skin"); // 触发皮肤加载文件
+ $(window).trigger("append.skin"); // 触发皮肤加载文件
+ control && control.init && control.init();
+ });
+<%/script%>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/img/green-current.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/img/green-current.png
new file mode 100755
index 000000000..da133c94a
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/img/green-current.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/img/green-not-current.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/img/green-not-current.png
new file mode 100755
index 000000000..f67f0f2e5
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/img/green-not-current.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/img/hot-ltr.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/img/hot-ltr.png
new file mode 100755
index 000000000..66580ec43
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/img/hot-ltr.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/img/hot-rtl.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/img/hot-rtl.png
new file mode 100755
index 000000000..d9ccdbccc
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/img/hot-rtl.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/img/ico-skinbox-head-close.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/img/ico-skinbox-head-close.png
new file mode 100755
index 000000000..793312ade
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/img/ico-skinbox-head-close.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/img/ico-skinbox-head-open.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/img/ico-skinbox-head-open.png
new file mode 100755
index 000000000..396ef063c
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/img/ico-skinbox-head-open.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/img/ico-skinbox-selected.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/img/ico-skinbox-selected.png
new file mode 100755
index 000000000..52d6d5893
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/img/ico-skinbox-selected.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/img/new-ltr.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/img/new-ltr.png
new file mode 100755
index 000000000..52fa160af
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/img/new-ltr.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/img/new-rtl.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/img/new-rtl.png
new file mode 100755
index 000000000..8dc06b298
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/img/new-rtl.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/ltr/ltr.css
new file mode 100755
index 000000000..7289bcdff
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/ltr/ltr.css
@@ -0,0 +1,2 @@
+.skinbox-wrap{visibility: hidden;}
+#skin-bgimage{ position:absolute; width:100%; height:92%; z-index:-2; background-position:center 0; background-repeat:no-repeat;-webkit-transform:translate3d(0px, 0px, 0px); }
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/ltr/ltr.more.css
new file mode 100755
index 000000000..089ebd0b7
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/ltr/ltr.more.css
@@ -0,0 +1,68 @@
+.skinbox-wrap{visibility: visible !important; float: right; position: relative;}
+.skinbox-wrap:hover{cursor: pointer;}
+.skinbox-header{height: 50px;line-height: 50px;padding: 0 10px;display: block;}
+.ico-skinbox{background: url("../img/ico-skinbox-head-open.png?__sprite") no-repeat; width: 20px;height: 20px;float: left;margin-top: 15px;}
+.title-skinbox{color:#fff;}
+.skinbox-header .ico-skinbox-triangle{position: absolute;left: 17px;top:38px;width: 0;height: 0;border-left: 3px solid transparent;border-right: 3px solid transparent;border-top: 3px solid #ffffff;opacity: 0.5;filter: alpha(opacity=50);}
+.skinbox-more-hide .ico-skinbox-triangle{left:16px;top:45px;border-top-width: 0px; border-left-width: 5px;border-right-width: 5px;border-bottom: 5px solid #087c55;opacity: 1;filter: alpha(opacity=100);}
+.skinbox-more-hide .ico-skinbox{background: url("../img/ico-skinbox-head-close.png?__sprite") no-repeat;}
+
+.skinbox-more-wrap{height:0px;background: #0c815a;overflow: hidden;display: none;border-top: 1px solid #0a6f4e;border-bottom:1px solid #0a6f4e;-moz-box-shadow: 0 0 4px rgba(0,0,0,0.1) inset;-webkit-box-shadow: 0 0 4px rgba(0,0,0,0.1) inset;-o-box-shadow: 0 0 4px rgba(0,0,0,0.1) inset; box-shadow: 0 0 4px rgba(0,0,0,0.1) inset;}
+.skinbox-content-wrap{position: relative;}
+.skin-clickarea{position: absolute;cursor: pointer;}
+
+.skinbox-item{width: 154px;height: 84px;border:3px solid #0e7855;float: left;margin-left: 10px;margin-top: 28px;position: relative;}
+.skinbox-item:hover{cursor: pointer;border-color: #87cab3;}
+.skinbox-item .tips{
+ display: block;
+ width: 42px;
+ height: 42px;
+ position: absolute;
+ left: -2px;
+ top: -2px;
+}
+.skinbox-item .hot{
+ background: url(../img/hot-ltr.png?__sprite) no-repeat;
+}
+.skinbox-item .new{
+ background: url(../img/new-ltr.png?__sprite) no-repeat;
+}
+.skinbox-item-selected{border-color: #87cab3;}
+.skinbox-item-selected .ico-skinbox-selected{width:24px;height:24px;position: absolute;right: 0;top: 0;background: url("../img/ico-skinbox-selected.png?__sprite") no-repeat;background-color: #00ac72;}
+.skinbox-item-default{margin-left: 60px;}
+.skinbox-item-default p{position: absolute;color: #ffffff;font-size: 20px;top: 20px;left:30px;font-weight: bold;}
+.skinbox-normal-wrap .skinbox-mask{display: none;position: absolute;left: 0;bottom: 0;height: 24px;line-height: 24px;color: #ffffff;padding-left: 5px;background: #000000;width: 149px;opacity: 0.5;filter:alpha(opacity=50);overflow: hidden;text-overflow:ellipsis;white-space: nowrap;}
+.skinbox-item:hover .skinbox-mask{display: block;}
+.skinbox-item-default:hover .skinbox-mask{position: absolute;width: 100%;height: 100%;background-color: #000;opacity:0.8;filter:alpha(opacity=80);background:rgba(0,0,0,0.5);top:0;left: 0;}
+
+/********************* slide ctrl adjust **************************/
+.skinbox-normal-wrap .ui-nav{text-align: center;}
+.skinbox-normal-wrap .nav-item-list{position: relative;}
+.skinbox-normal-wrap .wrap{float: left;overflow: hidden;}
+.skinbox-normal-wrap .nav-item{float: left;}
+.skinbox-normal-wrap .prev, .skinbox-normal-wrap .next{position: absolute;width: 50px;height: 50px;background: #0b7652;color: #85bba9;top: 48px;font-size: 80px;border-radius: 2px;-ms-border-radius: 2px;-o-border-radius: 2px;-webkit-border-radius: 2px;-moz-border-radius: 2px;font-family:arial,Tahoma,helvetica,clean,sans-serif;}
+.skinbox-normal-wrap .next{right:0;}
+.skinbox-normal-wrap .prev:hover, .skinbox-normal-wrap .next:hover{cursor: pointer;color: #cee4dc;}
+.skinbox-normal-wrap .arrow-prev, .skinbox-normal-wrap .arrow-next{position: relative;top: -30px;}
+.skinbox-normal-wrap .switch{clear: both;}
+.skinbox-normal-wrap .switch-item{ display: inline-block;width: 33px;height:12px;background: url("../img/green-not-current.png?__sprite") no-repeat;margin:10px;}
+.skinbox-normal-wrap .switch-item:hover{cursor: pointer;}
+.skinbox-normal-wrap .switch-item-current{background: url("../img/green-current.png?__sprite") no-repeat;}
+
+/********************* many pic adjust **************************/
+.skin-many-pic-true .skinbox-item{height: 65px;}
+.skin-many-pic-true .skinbox-item{margin-top: 20px;}
+.skin-many-pic-true .row-second{margin-top: 10px;}
+.skin-many-pic-true .column-first{margin-left: 0px;}
+.skin-many-pic-true .wrap{margin-left: -160px; height: 172px;}
+.skin-many-pic-true .nav-item{width: 850px;}
+.skin-many-pic-true .nav-item .skinbox-item:first-child{margin-left: 170px;}
+.skin-many-pic-true .skinbox-item-default{z-index: 1;}
+.skin-many-pic-true .prev, .skin-many-pic-true .next{top: 70px;}
+
+/************************ header-fixed adjust *******************************/
+.header-fixed .skinbox-header{height: 30px;line-height: 30px;}
+.header-fixed .skinbox-more-wrap{display: none !important;}
+.header-fixed .skinbox-wrap{display: none;}
+.header-fixed .skinbox-wrap + .userbar_split{display: none;}
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/ltr/ltr.more.flow.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/ltr/ltr.more.flow.css
new file mode 100755
index 000000000..16be4b236
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/ltr/ltr.more.flow.css
@@ -0,0 +1,8 @@
+/* @media(min-width: 1024px){
+ .flow-on .skinbox-item-default{
+ margin-left: 90px;
+ }
+} */
+.w1020 .skinbox-item-default{
+ margin-left: 90px;
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/rtl/rtl.css
new file mode 100755
index 000000000..73a34dbe9
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/rtl/rtl.css
@@ -0,0 +1,2 @@
+.box-skin{visibility: hidden;}
+#skin-bgimage{ position:absolute; width:100%; height:92%; z-index:-2; background-position:center 0; background-repeat:no-repeat;-webkit-transform:translate3d(0px, 0px, 0px); }
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/rtl/rtl.flow.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/rtl/rtl.flow.css
new file mode 100755
index 000000000..8f3ed003c
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/rtl/rtl.flow.css
@@ -0,0 +1,3 @@
+.w1020 .skinbox-item-default{
+ margin-right: 90px;
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/rtl/rtl.more.css
new file mode 100755
index 000000000..29c6e9b36
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/rtl/rtl.more.css
@@ -0,0 +1,67 @@
+.skinbox-wrap{visibility: visible !important; float: left; position: relative;}
+.skinbox-wrap:hover{cursor: pointer;}
+.skinbox-header{height: 50px;line-height: 50px;padding: 0 10px;display: block;}
+.ico-skinbox{background: url("../img/ico-skinbox-head-open.png?__sprite") no-repeat; width: 20px;height: 20px;float: right;margin-top: 15px;}
+.title-skinbox{color:#fff;}
+.skinbox-header .ico-skinbox-triangle{position: absolute;right: 17px;top:38px;width: 0;height: 0;border-left: 3px solid transparent;border-right: 3px solid transparent;border-top: 3px solid #ffffff;opacity: 0.5;filter: alpha(opacity=50);}
+.skinbox-more-hide .ico-skinbox-triangle{right:15px;top:45px;border-top-width: 0px; border-left-width: 5px;border-right-width: 5px;border-bottom: 5px solid #087c55;opacity: 1;filter: alpha(opacity=100);}
+.skinbox-more-hide .ico-skinbox{background: url("../img/ico-skinbox-head-close.png?__sprite") no-repeat;}
+
+.skinbox-more-wrap{height: 0px;background: #0c815a;overflow: hidden;display: none;border-top: 1px solid #0a6f4e;border-bottom:1px solid #0a6f4e;-moz-box-shadow: 0 0 4px rgba(0,0,0,0.1) inset;-webkit-box-shadow: 0 0 4px rgba(0,0,0,0.1) inset;-o-box-shadow: 0 0 4px rgba(0,0,0,0.1) inset; box-shadow: 0 0 4px rgba(0,0,0,0.1) inset;}
+.skinbox-content-wrap{position: relative;}
+.skin-clickarea{position: absolute;cursor: pointer;}
+
+.skinbox-item{width: 154px;height: 84px;border:3px solid #0e7855;float: right;margin-right: 10px;margin-top: 28px;position: relative;}
+.skinbox-item:hover{cursor: pointer;border-color: #87cab3;}
+.skinbox-item .tips{
+ display: block;
+ width: 42px;
+ height: 42px;
+ position: absolute;
+ right: -2px;
+ top: -2px;
+}
+.skinbox-item .hot{
+ background: url(../img/hot-rtl.png?__sprite) no-repeat;
+}
+.skinbox-item .new{
+ background: url(../img/new-rtl.png?__sprite) no-repeat;
+}
+.skinbox-item-selected{border-color: #87cab3;}
+.skinbox-item-selected .ico-skinbox-selected{width:24px;height:24px;position: absolute;left: 0;top: 0;background: url("../img/ico-skinbox-selected.png?__sprite") no-repeat;background-color: #00ac72;}
+.skinbox-item-default{margin-right: 60px;}
+.skinbox-item-default p{position: absolute;color: #ffffff;font-size: 15px;top: 20px;right:30px;font-weight: bold;}
+.skinbox-normal-wrap .skinbox-mask{display: none;position: absolute;right: 0;bottom: 0;height: 24px;line-height: 24px;color: #ffffff;padding-right: 5px;background: #000000;width: 149px;opacity: 0.5;filter:alpha(opacity=50);overflow: hidden;text-overflow:ellipsis;white-space: nowrap;}
+.skinbox-item:hover .skinbox-mask{display: block;}
+.skinbox-item-default:hover .skinbox-mask{position: absolute;width: 100%;height: 100%;background-color: #000;opacity:0.8;filter:alpha(opacity=80);background:rgba(0,0,0,0.5);top:0;right: 0;}
+
+/********************* slide ctrl adjust **************************/
+.skinbox-normal-wrap .ui-nav{text-align: center;}
+.skinbox-normal-wrap .nav-item-list{position: relative;}
+.skinbox-normal-wrap .wrap{float: right;overflow: hidden;}
+.skinbox-normal-wrap .nav-item{float: right;}
+.skinbox-normal-wrap .prev, .skinbox-normal-wrap .next{position: absolute;width: 50px;height: 50px;background: #0b7652;color: #85bba9;top: 48px;font-size: 80px;border-radius: 2px;-ms-border-radius: 2px;-o-border-radius: 2px;-webkit-border-radius: 2px;-moz-border-radius: 2px;font-family:arial,Tahoma,helvetica,clean,sans-serif;}
+.skinbox-normal-wrap .next{left:0;}
+.skinbox-normal-wrap .prev:hover, .skinbox-normal-wrap .next:hover{cursor: pointer;color: #cee4dc;}
+.skinbox-normal-wrap .arrow-prev, .skinbox-normal-wrap .arrow-next{position: relative;top: -30px;}
+.skinbox-normal-wrap .switch{clear: both;}
+.skinbox-normal-wrap .switch-item{ display: inline-block;width: 33px;height:12px;background: url("../img/green-not-current.png?__sprite") no-repeat;margin:10px;}
+.skinbox-normal-wrap .switch-item:hover{cursor: pointer;}
+.skinbox-normal-wrap .switch-item-current{background: url("../img/green-current.png?__sprite") no-repeat;}
+
+/********************* many pic adjust **************************/
+.skin-many-pic-true .skinbox-item{height: 65px;}
+.skin-many-pic-true .skinbox-item{margin-top: 20px;}
+.skin-many-pic-true .row-second{margin-top: 10px;}
+.skin-many-pic-true .column-first{margin-right: 0px;}
+.skin-many-pic-true .wrap{margin-right: -160px; height: 172px;}
+.skin-many-pic-true .nav-item{width: 850px;}
+.skin-many-pic-true .nav-item .skinbox-item:first-child{margin-right: 170px;}
+.skin-many-pic-true .skinbox-item-default{z-index: 1;}
+.skin-many-pic-true .prev, .skin-many-pic-true .next{top: 70px;}
+
+/************************ header-fixed adjust *******************************/
+.header-fixed .skinbox-header{height: 30px;line-height: 30px;}
+.header-fixed .skinbox-more-wrap{display: none !important;}
+.header-fixed .skinbox-wrap{display: none;}
+.header-fixed .skinbox-wrap + .userbar_split{display: none;}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/skin-mod.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/skin-mod.js
new file mode 100755
index 000000000..be320105b
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/skin-mod.js
@@ -0,0 +1,260 @@
+var $ = require("common:widget/ui/jquery/jquery.js");
+var UT = require("common:widget/ui/ut/ut.js");
+var Helper = require("common:widget/ui/helper/helper.js");
+
+var WINDOW = $(window);
+var BODY = $(document.body);
+
+/*
+ * 换肤插件
+ * loadTime:
+ 1. "" - 默认值,即刻加载
+ 2. 数字 - 延迟加载,毫秒数
+ * recommandSkin:设置推荐皮肤
+ * data:
+ key为皮肤关键字;
+ value是一个对象,必须包含"bgImgSrc"属性(皮肤图片URL);
+ * 使用示例:
+ var skin = new Skin({
+ recommandSkin: "music",
+ data: {
+ music: {
+ bgImgSrc: "http://xxx.com/a.jpg"
+ },
+ baozou: {
+ bgImgSrc: "http://xxx.com/b.jpg"
+ }
+ }
+ });
+ skin.init();
+ */
+
+var Skin = function(userOption) {
+ var defaultOptions = {
+ loadTime: "",
+ recommandSkin: "",
+ mainWidth: 960,
+ data: []
+ };
+ $.extend(this, defaultOptions, userOption);
+
+ this.bgContainer = $("#skin-bgimage");
+ this.leftClickArea = $("#skin-clickarea-left");
+ this.rightClickArea = $("#skin-clickarea-right");
+ this.clickArea = $(".skin-clickarea");
+ this.modId = "skinbox";
+};
+
+Skin.prototype = {
+
+ constructor: Skin,
+
+ //设置皮肤,若skin为空字符串则关闭皮肤
+ setSkin: function(skin, bgImgSrc) {
+ if (bgImgSrc) {
+ var removedSkin = conf.skin.current;
+ var skinItem = this._getSkinDataByKey(skin);
+ var needClass = skinItem.type ? ("skin skin-type-dark skin-"+skin) : ("skin skin-"+skin);
+ var bodyBg = BODY.css("background-color");
+ var htmlBg = $("html").css("background-color");
+
+ this.bgContainer.css({ "background-image": "url(" + bgImgSrc + ")" });
+
+ // 背景图片支持Y方向重复
+ if (skinItem.isRepeat === "1") {
+ this.bgContainer.css({ "background-repeat": "repeat-y" });
+ } else {
+ this.bgContainer.css({ "background-repeat": "no-repeat" });
+ }
+
+ this._resetLogo(skinItem.type);
+ $.cookie("lastSkin", null);
+ $.store("lastSkin", skin+"|"+conf.skin.recommandSkin, {expires: 100});
+ conf.skin.current = skin;
+ if(skinItem.color){
+ BODY.css({
+ "background-color": skinItem.color,
+ "z-index": 0
+ });
+ }else if(bodyBg != htmlBg){
+ BODY.css({
+ "background-color": htmlBg,
+ "z-index": 0
+ });
+ }
+ BODY.removeClass("skin-"+removedSkin+" skin-type-dark").addClass(needClass);
+ }else if (bgImgSrc === "" || bgImgSrc == "no") {
+ this.emptySkin();
+ }
+ },
+
+ //清空皮肤
+ emptySkin: function(){
+ var removedSkin = conf.skin.current;
+ this.bgContainer.css({ "background-image": "" });
+ this._resetLogo();
+ $.cookie("lastSkin", null);
+ $.store("lastSkin", "no|"+conf.skin.recommandSkin, {expires: 100});
+ conf.skin.current = "no";
+ BODY.removeClass("skin skin-type-dark skin-"+removedSkin).css("background-color", $("html").css("background-color"));
+ },
+
+ //可点击区域的重置
+ setClickArea: function(skin, clickData){
+ var self = this;
+ WINDOW.off("resize.skin");
+ self.clickArea.off("click.skin");
+ if(clickData && clickData.length>0 && clickData[0].landingpage){
+ self._clickAreaAjust(clickData[0]);
+ WINDOW.on("resize.skin", $.proxy(self._clickAreaAjust, self, clickData[0]));
+ self.clickArea.on("click.skin", function(){
+ window.open(self._updateLandingpage(clickData[0].landingpage));
+ UT.send({
+ modId: self.modId,
+ ac: "b",
+ position: "background",
+ sort: skin
+ });
+ });
+ }else{
+ self.clickArea.width(0);
+ }
+ },
+
+ _resetLogo: function(type){
+ $("#searchGroupLogos img").each(function(){
+ var dataSrc = $(this).attr("data-src"),
+ realSrc = $(this).attr("src"),
+ oldSrc = realSrc || dataSrc || "";
+
+ if(!type){
+ if(realSrc) {
+ $(this).attr("src", oldSrc.replace(/\/dark\//, "/"));
+ } else {
+ $(this).attr("data-src", oldSrc.replace(/\/dark\//, "/"));
+ }
+ }else if(!/\/dark\//.test(oldSrc)){
+ var prefix = oldSrc.substring(0, oldSrc.lastIndexOf("/"));
+ var suffix = oldSrc.substring(oldSrc.lastIndexOf("/"));
+ if(realSrc) {
+ $(this).attr("src", prefix+"/dark"+suffix);
+ } else {
+ $(this).attr("data-src", prefix+"/dark"+suffix);
+ }
+ }
+ });
+ },
+
+ _getSkinDataByKey: function(skin){
+ var data = this.data;
+ var skinData = {};
+ for(var i=0; i ");
+ this.bgContainer = $("#skin-bgimage");
+ },*/
+
+ //绑定事件
+ _bindEvent: function() {
+ var self = this;
+ //class为"ui-skin-close"的元素点击时将关闭
+ //BODY.on("click", ".skinbox-item-default", $.proxy(self.emptySkin, self));
+ //class为"ui-skin-item"的元素点击时将设置皮肤(取属性值"data-value")
+ BODY.on("click", ".skinbox-item", function(){
+ if($(this).hasClass("skinbox-item-selected")){
+ return;
+ }
+ $(".skinbox-item-selected").removeClass("skinbox-item-selected");
+ $(this).addClass("skinbox-item-selected");
+ var skin = $(this).attr("data-value");
+ var skinData = self._getSkinDataByKey(skin);
+ self.setSkin(skin, skinData.bgImgSrc);
+ self.setClickArea(skin, skinData.clickArea);
+ // 判断,当当前选中的皮肤和皮肤skinTrans上推荐的皮肤一致时,改变skinTrans上的icon
+ if( skin === conf.skinTrans.defaultSkin ){
+ $( window ).trigger( "skinTrans.recommendedSelect" );
+ }
+ UT.send({
+ modId: self.modId,
+ ac: "b",
+ position: "thumbnail",
+ sort: skin
+ });
+ });
+ },
+
+ // 提供外部换肤接口
+ _setTrigger: function() {
+ var self = this;
+ WINDOW.on("skin.change", function(e, arg1) {
+ $(".skinbox-item-selected").removeClass("skinbox-item-selected");
+ BODY.find(".skinbox-item[data-value='" + arg1 + "']").addClass("skinbox-item-selected");
+ var skinData = self._getSkinDataByKey(arg1);
+ self.setSkin(arg1, skinData.bgImgSrc);
+ self.setClickArea(arg1, skinData.clickArea);
+ });
+ },
+
+ //具体设置可点击区域的样式
+ _clickAreaAjust: function(data){
+ var divWidth = parseInt(data.width);
+ var mainWidth = parseInt(this.mainWidth);
+ var windowWidth = WINDOW.width();
+ var margin = (windowWidth - mainWidth)/2;
+ if(windowWidth <= mainWidth){
+ margin = 0;
+ divWidth = 0;
+ }else if(divWidth > margin){
+ divWidth = margin;
+ }
+ var firstLeft = margin - divWidth;
+ var secondLeft = firstLeft + mainWidth + divWidth;
+ this.leftClickArea.css({left:firstLeft, width:divWidth, height:data.height});
+ this.rightClickArea.css({left:secondLeft, width:divWidth, height:data.height});
+ },
+
+ //第一次载入时机、策略(分拆)
+ /*_firstLoad: function(){
+ var skinCookie = $.cookie("lastSkin");
+ var skin = this.recommandSkin ? this.recommandSkin : skinCookie;
+ //如果skin不为空,则进行皮肤设置
+ if (skin) {
+ var time = this.loadTime;
+ var self = this;
+ //即刻加载
+ if (time === "") {
+ self.setSkin(skin);
+ //延迟加载
+ }else{
+ setTimeout($.proxy(self.setSkin, self, skin), time);
+ }
+ }
+ },*/
+
+ //插件初始化
+ init: function() {
+ var that = this;
+ that._bindEvent();
+ that._setTrigger();
+ }
+};
+
+module.exports = Skin;
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/skinbox-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/skinbox-async.js
new file mode 100755
index 000000000..25387866a
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/skinbox-async.js
@@ -0,0 +1,275 @@
+var $ = require("common:widget/ui/jquery/jquery.js");
+var Slide = require("common:widget/ui/cycletabs/cycletabs.js");
+var Helper = require("common:widget/ui/helper/helper.js");
+var UT = require("common:widget/ui/ut/ut.js");
+
+$(function(){
+ var modId = "skinbox";
+ var confSkin = conf.skin;
+ var skinData = confSkin.data;
+ var headerIcon = $(".skinbox-header");
+ var moreWrap;
+ var BODY = $(document.body);
+ var WINDOW = $(window);
+ var headerDesc = headerIcon.find(".title-skinbox");
+ var isAnimate = false;
+ var manyPic = confSkin.manyPic && confSkin != "0" ? "true" : "false";
+ var skinMoreTpl = ''
+ + '
'
+ + '
'
+ + '
'
+ + '
'
+ + '
'
+ + '
'
+ + '
'
+ + '
'
+ + '
';
+ var skinItemTpl = ""
+ + "#{tipType}"
+ + "
"
+ + "
#{title}
"
+ + "
"
+ + "
";
+
+ headerIcon.one("click", function(){
+ var fullNum = manyPic == "true" ? 9 : 4;
+ var height = manyPic == "true" ? 65 : 84;
+ //内容拼接
+ $("#top").after(Helper.replaceTpl(skinMoreTpl, $.extend({
+ "manyPic": manyPic,
+ "height": height
+ }, skinData[0])));
+ moreWrap = $(".skinbox-more-wrap");
+
+ //数据拼接
+ var tempData = [];
+ var tempItemStr = "";
+ var tempId = 1;
+ var rowClass = "";
+ for(var i=1; i 4 || modNum == 0 ? (modNum == 5 ? "column-first row-second" : "row-second") : "row-first";
+ tempItemStr += Helper.replaceTpl(skinItemTpl, $.extend({
+ "tipType" : tipType ? ( tipType == "hot" ? " " : ( tipType == "new" ? " " : "" ) ) : "",
+ "rowClass": rowClass,
+ "height": height
+ }, curData));
+ if (i==skinData.length-1 || modNum==0) {
+ tempData.push({
+ "content": tempItemStr,
+ "id": tempId
+ });
+ }
+ }
+
+ //调用slide组件
+ var options = {
+ offset: 0,
+ navSize: 1,
+ itemSize: manyPic == "true" ? 850 : 680,
+ scrollDuration: 500,
+ quickSwitch: true,
+ dir: conf.dir,
+ containerId: ".skinbox-normal-wrap",
+ data: tempData
+ };
+ var skinSlide = new Slide.NavUI();
+ skinSlide.init(options);
+ //项数不到两屏时,隐藏控制Handler
+ if(skinData.length < fullNum + 2){
+ $(".ctrl, .switch", moreWrap).hide();
+ }
+
+ //已选中皮肤的跟新状态
+ $(".skinbox-item[data-value="+conf.skin.current+"]", moreWrap).addClass("skinbox-item-selected");
+
+ }).on("click", function(e){
+ //fix ie8 bug(原来使用的是slideToggle)
+ if(isAnimate){
+ return false;
+ }
+ isAnimate = true;
+ var containerHeight = manyPic == "true" ? 200 : 150;
+ if (headerIcon.hasClass("skinbox-more-hide")) {
+ moreWrap.animate({
+ height:0
+ }, 400, function(){
+ moreWrap.hide();
+ headerIcon.removeClass("skinbox-more-hide");
+ headerDesc.text(confSkin.iconLiteral);
+ isAnimate = false;
+ });
+ }else{
+ moreWrap.show().animate({
+ height: containerHeight
+ }, 400, function(){
+ headerIcon.addClass("skinbox-more-hide");
+ headerDesc.text(confSkin.closeLiteral);
+ isAnimate = false;
+ });
+ }
+ UT.send({
+ modId: modId,
+ position: "header",
+ sort: headerIcon.hasClass("skinbox-more-hide") ? "close" : "open"
+ });
+ e.preventDefault();
+ });
+
+ BODY.on("click", function(e){
+ var target = $(e.target);
+ //非目标区域的点击将关闭皮肤盒子.skinbox-wrap
+ if(target.parents(".skinbox-more-wrap, .skinbox-wrap").length <= 0 && target.closest(".i-st-btn").length <= 0 && !target.hasClass("skinbox-more-wrap") && moreWrap && moreWrap.css("display") == "block"){
+ if (isAnimate) {
+ return false;
+ }
+ isAnimate = true;
+ moreWrap.animate({
+ height:0
+ }, 400, function(){
+ moreWrap.hide();
+ headerIcon.removeClass("skinbox-more-hide");
+ headerDesc.text(confSkin.iconLiteral);
+ isAnimate = false;
+ });
+ }
+ //更新选中状态
+ }).on("click", ".skinbox-normal-wrap .prev, .skinbox-normal-wrap .next, .skinbox-normal-wrap .switch", function(e){
+ var target = $(e.target);
+ $(".skinbox-item-selected", moreWrap).removeClass("skinbox-item-selected");
+ $(".skinbox-item[data-value="+confSkin.current+"]", moreWrap).addClass("skinbox-item-selected");
+ if (target.hasClass("next") || target.hasClass("arrow-next")) {
+ UT.send({
+ modId: modId,
+ ac: "b",
+ position: "switch",
+ sort: "next"
+ });
+ }else if(target.hasClass("prev") || target.hasClass("arrow-prev")){
+ UT.send({
+ modId: modId,
+ ac: "b",
+ position: "switch",
+ sort: "prev"
+ });
+ }
+ });
+
+ //顶部icon区的hover效果
+ $(".skinbox-wrap").on("hover", function(){
+ headerIcon.toggleClass("module-mask");
+ });
+
+ //皮肤装载(由skin-mod.js分拆出来)
+ var skinCookie = $.store("lastSkin") || $.cookie("lastSkin");
+ var skin = confSkin.recommandSkin;
+ var filtered = confSkin.filter;
+ if((skin && skin != "no") && (filtered && filtered != "0")){
+ var browserInfo = $.browser;
+ if(browserInfo.mozilla || browserInfo.msie){
+ skin = confSkin.recommandSkin;
+ }else{
+ skin = "";
+ conf.skin.recommandSkin = "";
+ }
+ }
+ if(skinCookie && skinCookie.indexOf("|") >= 0){
+ var skinCookies = skinCookie.split("|");
+ if(skin == skinCookies[1] || skin == ""){
+ skin = skinCookies[0];
+ }
+ }
+ if (skin) {
+ var time = confSkin.loadTime;
+ if (time === "" || time <= 15) {
+ setSkin(skin);
+ }else{
+ setTimeout($.proxy(setSkin, null, skin), time);
+ }
+ }
+ //设置皮肤
+ function setSkin(skin){
+ for(var i=0;i0 && skinItem.clickArea[0].landingpage) {
+ setClickArea(skin, skinItem.clickArea[0]);
+ WINDOW.on("resize.skin", $.proxy(setClickArea, null, skin, skinItem.clickArea[0]));
+ }
+ }
+ }
+ }
+ //设置可点击区域
+ function setClickArea(skin, data){
+ var divWidth = parseInt(data.width);
+ var mainWidth = 960;
+ var windowWidth = WINDOW.width();
+ var margin = (windowWidth - mainWidth)/2;
+ if(windowWidth <= mainWidth){
+ margin = 0;
+ divWidth = 0;
+ }else if(divWidth > margin){
+ divWidth = margin;
+ }
+ var firstLeft = margin - divWidth;
+ var secondLeft = firstLeft + mainWidth + divWidth;
+ $("#skin-clickarea-left").css({left:firstLeft, width:divWidth, height:data.height});
+ $("#skin-clickarea-right").css({left:secondLeft, width:divWidth, height:data.height});
+ $(".skin-clickarea").on("click.skin", function(){
+ window.open(updateLandingpage(data.landingpage));
+ UT.send({
+ modId: "skinbox",
+ ac: "b",
+ position: "background",
+ sort: skin
+ });
+ });
+ }
+ //深色换肤搜索框Logo
+ function setDarkLogo(){
+ $("#searchGroupLogos img").each(function(){
+ var dataSrc = $(this).attr("data-src"),
+ realSrc = $(this).attr("src"),
+ oldSrc = realSrc || dataSrc || "";
+
+ var prefix = oldSrc.substring(0, oldSrc.lastIndexOf("/"));
+ var suffix = oldSrc.substring(oldSrc.lastIndexOf("/"));
+
+ if (realSrc) {
+ $(this).attr("src", prefix+"/dark"+suffix);
+ } else {
+ $(this).attr("data-src", prefix+"/dark"+suffix);
+ }
+ });
+ }
+ //带uid设置
+ function updateLandingpage(url){
+ var paramKey = confSkin.passQueryParam || "uid",
+ paramVal = Helper.getQuery(location.href)[paramKey];
+ if(paramVal){
+ url += (url.indexOf("?") != -1 ? "&" : "?") + paramKey + "=" + paramVal;
+ }
+ return url;
+ }
+});
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/skinbox.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/skinbox.tpl
new file mode 100755
index 000000000..d584d484a
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/skinbox/skinbox.tpl
@@ -0,0 +1,54 @@
+<%style%>
+<%if $head.dir=='ltr'%>
+@import url('/widget/header/skinbox/ltr/ltr.css?__inline');
+<%else%>
+@import url('/widget/header/skinbox/rtl/rtl.css?__inline');
+<%/if%>
+<%if !empty($body.skinBox.iconImg)%>
+body .ico-skinbox {
+ background: url(<%$body.skinBox.iconImg%>) no-repeat left top;
+}
+<%/if%>
+<%/style%>
+
+<%* 声明对ltr/rtl的css依赖 *%>
+<%if $head.dir=='ltr'%>
+<%require name="common:widget/header/skinbox/ltr/ltr.more.css"%>
+<%else%>
+<%require name="common:widget/header/skinbox/rtl/rtl.more.css"%>
+<%/if%>
+
+
+
+
+
+<%script%>
+conf.skin = <%json_encode($body.skinBox)%>;
+
+require.async("common:widget/ui/jquery/jquery.js", function($){
+ $(window).one("append.skin", function(){
+ require.async("common:widget/header/skinbox/skinbox-async.js");
+ });
+ $(window).one("slide.skin", function(){
+ require.async("common:widget/header/skinbox/skin-mod.js", function(Skin){
+ var skin = new Skin(conf.skin);
+ skin.init();
+ });
+ });
+ $(".skinbox-header").one("click", function(e){
+ $(window).trigger("slide.skin");
+ e.preventDefault();
+ }).one("mouseenter", function(){
+ $(window).trigger("append.skin");
+ });
+ $(function(){
+ $(window).trigger("append.skin");
+ });
+});
+<%/script%>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/tear-page/img/close-rtl.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/tear-page/img/close-rtl.png
new file mode 100755
index 000000000..06e82eff2
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/tear-page/img/close-rtl.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/tear-page/img/close.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/tear-page/img/close.png
new file mode 100755
index 000000000..96201a26e
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/tear-page/img/close.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/tear-page/img/del_active.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/tear-page/img/del_active.png
new file mode 100755
index 000000000..691b86857
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/tear-page/img/del_active.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/tear-page/img/del_grey.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/tear-page/img/del_grey.png
new file mode 100755
index 000000000..ae2b84f17
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/tear-page/img/del_grey.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/tear-page/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/tear-page/ltr/ltr.css
new file mode 100755
index 000000000..61952cf07
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/tear-page/ltr/ltr.css
@@ -0,0 +1,3 @@
+.tear-page{visibility: hidden;}
+.body_bg { width: 100%; height: 500px; position: absolute; left: 0; z-index: -5; background-position: center 0; background-repeat: no-repeat; zoom: 1;}
+.bg-content-clickable{ position: absolute; cursor: pointer; }
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/tear-page/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/tear-page/ltr/ltr.more.css
new file mode 100755
index 000000000..6630c7206
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/tear-page/ltr/ltr.more.css
@@ -0,0 +1,6 @@
+.tear-page{position: absolute;right: 0px; top: 0px; width: 52px;height: 50px;overflow: hidden;z-index: 9; visibility: visible !important;}
+.tear-page img, .tear-page i{position: absolute;left: 0px;top: 0px;}
+.i-tear-page{display: block;width: 52px; height: 50px;background: url(../img/close.png?__sprite) no-repeat;}
+.tear-page .i-tear-page-close{display: block;left: 12px;top:25px;width: 12px;height: 12px; background: url(../img/del_grey.png?__sprite) no-repeat;}
+.tear-page .i-tear-page-close:hover{cursor: pointer;background: url(../img/del_active.png?__sprite) no-repeat;}
+.tear-page .tear-page_btn { display: block; height: 20px; width: 58px; position: absolute; cursor: pointer; right: 0px; top: 0px; overflow: hidden;}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/tear-page/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/tear-page/rtl/rtl.css
new file mode 100755
index 000000000..f3f3d0267
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/tear-page/rtl/rtl.css
@@ -0,0 +1 @@
+.tear-page{ visibility: hidden;}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/tear-page/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/tear-page/rtl/rtl.more.css
new file mode 100755
index 000000000..7b2c1690a
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/tear-page/rtl/rtl.more.css
@@ -0,0 +1,6 @@
+.tear-page{position: absolute;left: 0px; top: 0px; width: 52px;height: 50px;overflow: hidden;z-index: 9; visibility: visible !important;}
+.tear-page img, .tear-page i{position: absolute;right: 0px;top: 0px;}
+.i-tear-page{display: block;width: 52px; height: 50px;background: url(../img/close-rtl.png?__sprite) no-repeat;}
+.tear-page .i-tear-page-close{display: block;right: 12px;top:25px;width: 12px;height: 12px; background: url(../img/del_grey.png?__sprite) no-repeat;}
+.tear-page .i-tear-page-close:hover{cursor: pointer;background: url(../img/del_active.png?__sprite) no-repeat;}
+.tear-page .tear-page_btn { display: block; height: 20px; width: 58px; position: absolute; cursor: pointer; left: 0px; top: 0px; overflow: hidden;}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/tear-page/tear-page-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/tear-page/tear-page-async.js
new file mode 100755
index 000000000..a5786a53e
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/tear-page/tear-page-async.js
@@ -0,0 +1,188 @@
+//requirement
+var $ = require("common:widget/ui/jquery/jquery.js");
+var helper = require("common:widget/ui/helper/helper.js");
+var DateUI = require("common:widget/ui/date/date.js");
+var UT = require("common:widget/ui/ut/ut.js");
+
+window.Gl || (window.Gl = {});
+$(function(){
+ var lastCloseDay = $.cookie("Gh_t");
+ var currentDay = DateUI.format("dd");
+ var modId = "tearpage";
+ var isCompleteHover;
+ //展现策略
+ if(currentDay != lastCloseDay){
+ var container = $(".tear-page");
+ var content = $(".tear-page textarea").text();
+ container.html(content);
+ var closeBtn = $(".i-tear-page-close");
+ var backImg = $(".tear-page img");
+ Gl.tearPage || (Gl.tearPage = {});
+ //使用皮肤
+ if (conf.tearPage.useSkin) {
+ var divWidth = conf.tearPage.clickWidth || 0;
+ var divHeight = conf.tearPage.clickHeight || 0;
+ var lazyTime = conf.tearPage.timeout || 1000;
+ var skinMod = conf.tearPage.modId || "skin";
+ var parentSelector = conf.tearPage.parentSelector || "div[alog-alias=p-1]";
+ var body = $(document.body);
+ var mainWidth = 960;
+ var windowWidth = $(window).width();
+ var margin = (windowWidth - mainWidth)/2;
+ if(windowWidth <= mainWidth){
+ margin = 0;
+ divWidth = 0;
+ }else if(divWidth > margin){
+ divWidth = margin;
+ }
+ var firstLeft = margin - divWidth;
+ var secondeLeft = firstLeft + mainWidth + divWidth;
+ var bodyBgContent = "
"
+ + "
"
+ + "
";
+ bodyBgContent = helper.replaceTpl(bodyBgContent, {
+ firstLeft: firstLeft,
+ secondeLeft: secondeLeft,
+ divWidth: divWidth,
+ divHeight: divHeight
+ });
+ //皮肤可点击
+ if (conf.tearPage.landingpage) {
+ $(window).on("resize", function(){
+ divWidth = conf.tearPage.clickWidth || 0;
+ windowWidth = $(window).width();
+ margin = (windowWidth - mainWidth)/2;
+ if(windowWidth <= mainWidth){
+ margin = 0;
+ divWidth = 0;
+ }else if(divWidth > margin){
+ divWidth = margin;
+ }
+ firstLeft = margin - divWidth;
+ secondeLeft = firstLeft + mainWidth + divWidth;
+ $(".bg-content-clickable").eq(0).css({
+ width: divWidth,
+ left: firstLeft
+ }).end().eq(1).css({
+ width: divWidth,
+ left: secondeLeft
+ });
+ });
+ $(document).on("click", ".bg-content-clickable", function(){
+ UT.send({
+ "type": "click",
+ "position": "bgimage",
+ "modId": skinMod
+ });
+ window.open(conf.tearPage.landingpage);
+ });
+ }
+ Gl.tearPage.hasBg = conf.tearPage.hasBg; // 背景图是否存在
+ Gl.tearPage.makeBg = function() { // 生成背景图
+ $(parentSelector).append(bodyBgContent);
+ $("#bodyBg").css("background-image", "url(" + conf.tearPage.bgImg + ")");
+ body.addClass("have-skin");
+ };
+ var setTearBg = setTimeout(function() {
+ if((Gl.tearPage.hasBg === '1' && $.cookie("Gh_so") === null) || $.cookie("Gh_so") === "1") {
+ Gl.tearPage.makeBg();
+ }
+ }, lazyTime);
+ //点击换肤按钮
+ $("#tearBtn").on("click", function(e) {
+ if(setTearBg) {
+ clearTimeout(setTearBg);
+ setTearBg = 0;
+ }
+ if($("#bodyBg").length === 0) {
+ Gl.tearPage.makeBg();
+ }
+ if((Gl.tearPage.hasBg === '1' && $.cookie("Gh_so") === null) || $.cookie("Gh_so") === "1") {
+ $("#bodyBg, .bg-content-clickable").hide();
+ backImg.attr("src", backImg.attr("data-open-src"));
+ Gl.tearPage.hasBg = '0';
+ $.cookie("Gh_so", "0");
+ UT.send({
+ "type": "click",
+ "position": "button",
+ "sort": "close",
+ "modId": skinMod
+ });
+ body.removeClass("have-skin");
+ } else {
+ $("#bodyBg, .bg-content-clickable").show();
+ backImg.attr("src", backImg.attr("data-restore-src"));
+ Gl.tearPage.hasBg = '1';
+ $.cookie("Gh_so", "1");
+ UT.send({
+ "type": "click",
+ "position": "button",
+ "sort": "open",
+ "modId": skinMod
+ });
+ body.addClass("have-skin");
+ }
+ e.preventDefault();
+ e.stopPropagation();
+ });
+ };
+
+ //hover效果切换
+ container.removeClass("hide").hover(function(){
+ isCompleteHover = 0;
+ backImg.attr("src", backImg.attr("data-open-src"));
+
+ // 巴西音乐节
+ if((Gl.tearPage.hasBg === '1' && $.cookie("Gh_so") === null) || $.cookie("Gh_so") === "1") {
+ backImg.attr("src", backImg.attr("data-restore-src"));
+ }else{
+ backImg.attr("src", backImg.attr("data-open-src"));
+ }
+
+ container.clearQueue().animate({
+ width: (conf.tearPage.width || '200') + 'px'
+ }, {
+ duration: 500,
+ always: function(){
+ closeBtn.removeClass("hide");
+ $("#tearBtn").show();// 巴西音乐节
+ }
+ });
+ }, function(){
+ isCompleteHover = 1;
+ closeBtn.addClass("hide");
+ container.clearQueue().animate({
+ width: "52px"
+ }, {
+ duration: 500,
+ always: function(){
+ if(isCompleteHover){
+ backImg.attr("src", backImg.attr("data-close-src"));
+ $("#tearBtn").hide();// 巴西音乐节
+ }
+ }
+ });
+ }).click(function(e){//如果有passQueryParam,则点击链接要带上这个参数
+ var url = $(this).attr("href"),
+ paramKey = conf.tearPage.passQueryParam.trim();
+ url = helper.appendQueryToUrl(url, paramKey);
+ UT.send({
+ "position": "banner",
+ "modId": modId
+ });
+ window.open(url);
+ e.preventDefault();
+ });
+ //关闭按钮点击响应(关闭仅对当天有效)
+ closeBtn.on("click", function(e){
+ container.addClass("hide");
+ $.cookie("Gh_t", currentDay, {expires: 1});
+ UT.send({
+ "position": "button",
+ "modId": modId
+ });
+ e.preventDefault();
+ e.stopPropagation();
+ });
+ }
+});
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/tear-page/tear-page.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/tear-page/tear-page.tpl
new file mode 100755
index 000000000..cd1597ee3
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/tear-page/tear-page.tpl
@@ -0,0 +1,56 @@
+<%style%>
+<%if $head.dir=='ltr'%>
+@import url('/widget/header/tear-page/ltr/ltr.css?__inline');
+<%else%>
+@import url('/widget/header/tear-page/rtl/rtl.css?__inline');
+<%/if%>
+<%/style%>
+
+<%* 声明对ltr/rtl的css依赖 *%>
+<%if $head.dir=='ltr'%> <%require name="common:widget/header/tear-page/ltr/ltr.more.css"%> <%else%> <%require name="common:widget/header/tear-page/rtl/rtl.more.css"%> <%/if%>
+
+<%assign var="tearSkin" value=$body.tearPage.skin%>
+
+
+
+ data-restore-src="<%$tearSkin.bgRestoreSrc%>"<%/if%>>
+
+
+
+ <%if empty($tearSkin.isHidden)%>
+
+ <%/if%>
+
+
+
+<%script%>
+ conf.tearPage = {
+ passQueryParam: "<%$body.tearPage.passQueryParam%>",
+ hasBg: "<%$tearSkin.initBgImg%>",
+ bgImg: "<%$tearSkin.image%>",
+ width: "<%$tearSkin.width%>",
+ <%if !empty($tearSkin.timeout)%>
+ timeout: <%$tearSkin.timeout%>,
+ <%/if%>
+ useSkin: "<%empty($tearSkin.isHidden)%>",
+ modId: "<%$tearSkin.modId%>",
+ parentSelector: "<%$tearPage.parentSelector%>"
+ <%if empty($tearSkin.isHidden) && !empty($tearSkin.clickArea)%>
+ ,clickWidth: <%$tearSkin.clickArea.width%>,
+ clickHeight: <%$tearSkin.clickArea.height%>,
+ landingpage: "<%$tearSkin.clickArea.landingpage%>"
+ <%/if%>
+ };
+ require.async("common:widget/ui/jquery/jquery.js", function($) {
+ $(window).one("e_go.tearpage", function () {
+ require.async("common:widget/header/tear-page/tear-page-async.js");
+ });
+ $(function () {
+ $(window).trigger("e_go.tearpage");
+ });
+ $(".tear-page").one("mouseenter", function () {
+ $(window).trigger("e_go.tearpage");
+ });
+ });
+<%/script%>
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/img/i-theme-skin1-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/img/i-theme-skin1-hover.png
new file mode 100755
index 000000000..46f04da94
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/img/i-theme-skin1-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/img/i-theme-skin1.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/img/i-theme-skin1.png
new file mode 100755
index 000000000..aa75a23f2
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/img/i-theme-skin1.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/img/i-theme-skin2-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/img/i-theme-skin2-hover.png
new file mode 100755
index 000000000..840f810b3
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/img/i-theme-skin2-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/img/i-theme-skin2.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/img/i-theme-skin2.png
new file mode 100755
index 000000000..549c2c42f
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/img/i-theme-skin2.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/img/i-theme-skin3-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/img/i-theme-skin3-hover.png
new file mode 100755
index 000000000..243ea5be3
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/img/i-theme-skin3-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/img/i-theme-skin3.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/img/i-theme-skin3.png
new file mode 100755
index 000000000..9293218fb
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/img/i-theme-skin3.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/ltr-s/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/ltr-s/ltr.css
new file mode 100755
index 000000000..e69de29bb
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/ltr-s/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/ltr-s/ltr.more.css
new file mode 100755
index 000000000..bc0742c06
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/ltr-s/ltr.more.css
@@ -0,0 +1,48 @@
+/*.select_theme,
+.select_theme_hover,*/
+/*.select_theme .skin_1,
+.select_theme .skin_1 span,
+.select_theme .skin_2,
+.select_theme .skin_2 span,
+.select_theme .skin_3,
+.select_theme .skin_3 span{
+ background: url("./theme_bg.png") top left no-repeat;
+}*/
+
+.select_theme{
+ /*display: none;
+ position: absolute; z-index: 9; top: 0; right: 0; width: 25px; height: 25px; overflow: hidden; padding-right: 5px; padding-top: 5px;
+ background-color: #EDF0EF; white-space:nowrap;
+
+ -webkit-transition: width .2s ease-out;
+ -moz-transition: width .2s ease-out;
+ -o-transition: width .2s ease-out;
+ transition: width .2s ease-out;*/
+ display: block;
+ clear: both;
+ overflow: hidden;
+ border-top: 1px solid #bee2d6;
+ padding: 5px 15px;
+ zoom: 1;
+}
+
+/*.select_theme_hover{
+ width: 90px;
+}*/
+.select_theme li{ width: 20px; height: 20px; /*background: #f00; float: right;*/ float: left; /*margin-right: 1px;*/ margin-right: 5px; cursor: pointer; /*display: none;*/}
+
+/*.select_theme_hover{ background-position: 0 -31px;}
+.select_theme_hover li{ background-position: 0 -31px; display: inline-block;}*/
+
+.select_theme span{ /*display: none;*/ width: 20px; height: 20px;}
+
+.select_theme .skin_cur{
+ background: #ff0; cursor: default;
+}
+.select_theme .skin_cur span{ display: inline-block;}
+.select_theme .skin_1{ background: url(../img/i-theme-skin1.png?__sprite) no-repeat;}
+.select_theme .skin_1 span{ background: url(../img/i-theme-skin1-hover.png?__sprite) no-repeat;}
+.select_theme .skin_2{ background: url(../img/i-theme-skin2.png?__sprite) no-repeat;}
+.select_theme .skin_2 span{ background: url(../img/i-theme-skin2-hover.png?__sprite) no-repeat;}
+.select_theme .skin_3{ background: url(../img/i-theme-skin3.png?__sprite) no-repeat;}
+.select_theme .skin_3 span{ background: url(../img/i-theme-skin3-hover.png?__sprite) no-repeat;}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/rtl-s/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/rtl-s/rtl.css
new file mode 100755
index 000000000..e69de29bb
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/rtl-s/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/rtl-s/rtl.more.css
new file mode 100755
index 000000000..bc0742c06
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/rtl-s/rtl.more.css
@@ -0,0 +1,48 @@
+/*.select_theme,
+.select_theme_hover,*/
+/*.select_theme .skin_1,
+.select_theme .skin_1 span,
+.select_theme .skin_2,
+.select_theme .skin_2 span,
+.select_theme .skin_3,
+.select_theme .skin_3 span{
+ background: url("./theme_bg.png") top left no-repeat;
+}*/
+
+.select_theme{
+ /*display: none;
+ position: absolute; z-index: 9; top: 0; right: 0; width: 25px; height: 25px; overflow: hidden; padding-right: 5px; padding-top: 5px;
+ background-color: #EDF0EF; white-space:nowrap;
+
+ -webkit-transition: width .2s ease-out;
+ -moz-transition: width .2s ease-out;
+ -o-transition: width .2s ease-out;
+ transition: width .2s ease-out;*/
+ display: block;
+ clear: both;
+ overflow: hidden;
+ border-top: 1px solid #bee2d6;
+ padding: 5px 15px;
+ zoom: 1;
+}
+
+/*.select_theme_hover{
+ width: 90px;
+}*/
+.select_theme li{ width: 20px; height: 20px; /*background: #f00; float: right;*/ float: left; /*margin-right: 1px;*/ margin-right: 5px; cursor: pointer; /*display: none;*/}
+
+/*.select_theme_hover{ background-position: 0 -31px;}
+.select_theme_hover li{ background-position: 0 -31px; display: inline-block;}*/
+
+.select_theme span{ /*display: none;*/ width: 20px; height: 20px;}
+
+.select_theme .skin_cur{
+ background: #ff0; cursor: default;
+}
+.select_theme .skin_cur span{ display: inline-block;}
+.select_theme .skin_1{ background: url(../img/i-theme-skin1.png?__sprite) no-repeat;}
+.select_theme .skin_1 span{ background: url(../img/i-theme-skin1-hover.png?__sprite) no-repeat;}
+.select_theme .skin_2{ background: url(../img/i-theme-skin2.png?__sprite) no-repeat;}
+.select_theme .skin_2 span{ background: url(../img/i-theme-skin2-hover.png?__sprite) no-repeat;}
+.select_theme .skin_3{ background: url(../img/i-theme-skin3.png?__sprite) no-repeat;}
+.select_theme .skin_3 span{ background: url(../img/i-theme-skin3-hover.png?__sprite) no-repeat;}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme-async.js
new file mode 100755
index 000000000..9a809b7ec
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme-async.js
@@ -0,0 +1,131 @@
+/*
+* Weather
+*/
+
+var $ = require("common:widget/ui/jquery/jquery.js"),
+ UT = require("common:widget/ui/ut/ut.js");
+/**
+ * NOTICE please, turn on this module you should:
+ *
+ * 1. init function(fire before domReady and auguments[0] is the path of
+ * theme resource)
+ *
+ * G.theme.init("/static/web/common/theme/");
+ *
+ * 2. add style:
+ * .select_theme{display:block !important;}
+ *
+ * update: 20130320 | by WMF
+ *
+ * 1. handle css loading before domReady
+ * 2. base on jQuery 1.9.x
+ */
+window.G || (window.G = {});
+G.theme = {
+ init: function(themePath) {
+ this.themeId = "themeLinkNodeRef";
+ this.cookieName = "hao123themename";
+ this.themePath = themePath || "./theme/";
+ this.defaultThemeName = "1";
+ this.themeName = $.cookie(this.cookieName);
+ this.load();
+ window.jQuery && $(function() {
+ if(!$("#themeSelect")[0]) return;
+ /*$("#themeSelect").on("mouseenter", function(e) {
+ $(this).addClass("select_theme_hover")
+ }).on("mouseleave", function(e) {
+ $(this).removeClass("select_theme_hover")
+ });*/
+
+ $("#themeSelect li").on("click", function(event){
+ var el = $(this)[0];
+ UT.send({
+ position: "changeStyle",
+ type:"click",
+ sort: $(this).attr("data-theme"),
+ value: $(this).attr("data-theme"),
+ modId:"theme"
+ });
+
+ el.tagName === "LI" && !$(this).hasClass("skin_cur") && G.theme.setTheme(el);
+ });
+ G.theme.initSelect();
+ });
+ return this;
+ },
+
+ load: function(themeName) {
+ themeName = themeName || this.themeName;
+ if(!themeName) return;
+ var themeNodeRef = document.getElementById(this.themeId),
+ // href = this.themePath + themeName + "/css/index.css";
+
+ // supports fis
+ href = {
+ "1": __uri("./theme/1/css/index.css"),
+ "2": __uri("./theme/2/css/index.css"),
+ "3": __uri("./theme/3/css/index.css"),
+ "4": __uri("./theme/3/css/index.css")
+ }[themeName];
+
+ if(themeNodeRef) {
+ themeNodeRef.href = href;
+ } else {
+ // var ref = document.getElementsByTagName('script')[0],
+ var ref = document.body || document.getElementsByTagName('script')[0],
+ node = document.createElement("LINK");
+ node.id = this.themeId;
+ node.type = "text/css";
+ node.rel = "stylesheet";
+ node.href = href;
+ ref.appendChild(node);
+ }
+
+ // add a Hook on
+ !function() {
+ document.body
+ ? (document.body.className = document.body.className.replace(/body-theme_[^\s$]/g, " ").replace(/^\s+|\s+$/g, "").replace(/\s{2,}/g, " ") + " body-theme_" + themeName)
+ : setTimeout(arguments.callee, 64);
+ }();
+ },
+
+ getName: function(el) {
+ return el.getAttribute("data-theme");
+ },
+
+ initSelect: function() {
+ var themeName = this.themeName || this.defaultThemeName,
+ lis = document.getElementById("themeSelect").getElementsByTagName("LI"),
+ l = lis.length,
+ i = 0,
+ li;
+ for(; i
+<%if $head.dir=='ltr'%>
+@import url('/widget/header/theme/ltr-s/ltr.css?__inline');
+<%else%>
+@import url('/widget/header/theme/rtl-s/rtl.css?__inline');
+<%/if%>
+<%/style%>
+<%* 声明对ltr/rtl的css依赖 *%>
+<%if $head.dir=='ltr'%> <%require name="common:widget/header/theme/ltr-s/ltr.more.css"%> <%else%> <%require name="common:widget/header/theme/rtl-s/rtl.more.css"%> <%/if%>
+
+
+ <%script%>
+ require.async(["common:widget/header/theme/theme-async.js"],function(){
+ G.theme.init("/widget/header/theme/theme/");
+ });
+ <%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/1/css/index.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/1/css/index.css
new file mode 100755
index 000000000..e69de29bb
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/2/css/index.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/2/css/index.css
new file mode 100755
index 000000000..a7b26ea29
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/2/css/index.css
@@ -0,0 +1,317 @@
+body .site-switch_container{ position: absolute; top: 28px; left: 140px; z-index: 99;}
+body .site-switch{ position: static;}
+/*.userbar{ position: relative;}*/
+
+body .userbar-btn i,
+body .custom_item .btn,
+body .hotsite-custom_list .add-btn,
+body .custom_item .sprite-del_normal,
+body .custom_item .sprite-modify_normal,
+body .site-switch a,
+body .weather-days_click p,
+body .userbar-weather_city-cur a,
+body .bar-addfav_icon,
+body .bar-addfav_btn,
+body .userbar-btn a{ background: url("../img/bg.png") 0 0 no-repeat;}
+
+
+/*.select_theme,
+.select_theme_hover{ background: #EDF0EF url("../img/theme_bg.png") 0 0 no-repeat;}*/
+
+body .hotsite-custom_bar a,
+body .hotsite-custom_bar a:hover,
+body .hotsite-custom .bar_open a,
+body .hotsite-custom .bar_open a:hover,
+body .hotsite-custom_list .add-btn,
+body .news-item_txt,
+body .news-btn_type i,
+body .charts-order,
+body .mod-joke .joke_refresh,
+body .scroll-arrow,
+body .news-btn_type i,
+body .top-arrow,
+body .bottom-arrow,
+body .hotsite-custom_list .add-btn-ico{ background: url("../img/i-news_item.png") no-repeat 0 0;}
+
+
+body .bar-addfav_icon {background-position: 0 -1068px;}
+
+body .bar-addfav{ border-bottom: 1px solid #0064C0;}
+
+body .charts-song:hover, body .charts-singer:hover { color: #1188F7;}
+
+
+body .mod-joke .joke_content:hover{ color: #1188F7;}
+
+#indexLogo{
+ float: left; width: 130px; height: 50px;
+ background: url(../img/logo_new.png);
+ _background: url(/static/web/tw/img/logo_new.png);
+}
+#indexLogoImg{display: none;}
+body .news-btn_type:hover{ border-color: #7EB8EB;}
+body .bar-addfav_btn{ background-position: 0 -1008px; background-repeat: repeat-x;
+
+ border-color: #82BBEF;
+}
+
+body .bar-addfav_btn:hover{
+ background-position: 0 -1028px; border-color: #1188F7;
+}
+
+body .site-switch a{ background-position: right -432px;}
+body .custom_item .sprite-del_normal{ background-position: 0 -639px;}
+body .custom_item .sprite-modify_normal{ background-position: -1px -931px;}
+body .hotsite-custom_bar a{ background-position: -1px -233px;}
+body .hotsite-custom_bar a:hover{ background-position: -1px -254px;}
+body .hotsite-custom .bar_open a{ background-position: -1px -296px;}
+body .hotsite-custom .bar_open a:hover{ background-position: -1px -317px;}
+body .hotsite-custom_list .add-btn{ background-position: 0 -685px; background-repeat: repeat-x; border:1px solid; border-color:#ebebeb #ebebeb #d9dcde #ebebeb; color:#909191;}
+
+body .hotsite-custom_list .add-btn-ico{ background-position: -12px -99px;}
+body dl.sortsite dt .arrow_r{ border-left-color: #5998FE;}
+body .bar-addfav_title, body .bar-addfav_text{ color: #1188F7;}
+
+body .charts_more .arrow_r{ color: #5998FE;}
+body .select_theme_hover{ background-position: 0 -31px;}
+body .mod-joke .joke_refresh{ background-position:0 -168px;}
+body .ui-tip .arrow{border-top-color: #5998FE;}
+body .ui-tip{ border-color: #5998FE;}
+body .news-btn_type i{ background-position: -12px -96px;}
+body .top-arrow { background-position: -15px -114px;}
+body .bottom-arrow{background-position: -15px -131px;}
+
+body .userbar-wrap {
+ background: #1082EC;
+ border-bottom: 1px solid #0069CA;
+ _border-bottom: 0 none;
+
+ background-image:-moz-linear-gradient(50% 0% -90deg,rgb(17,136,247) 0%,rgb(16,127,230) 100%);
+ background-image:-webkit-gradient(linear,50% 0%,50% 100%,color-stop(0, rgb(17,136,247)),color-stop(1, rgb(16,127,230)));
+ background-image:-webkit-linear-gradient(-90deg,rgb(17,136,247) 0%,rgb(16,127,230) 100%);
+ background-image:-o-linear-gradient(-90deg,rgb(17,136,247) 0%,rgb(16,127,230) 100%);
+ background-image:-ms-linear-gradient(-90deg,rgb(17,136,247) 0%,rgb(16,127,230) 100%);
+ background-image:linear-gradient(-90deg,rgb(17,136,247) 0%,rgb(16,127,230) 100%);
+ /*-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff1188f7,endColorstr=#ff107fe6,GradientType=0)";
+ filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff1188f7,endColorstr=#ff107fe6,GradientType=0);*/
+}
+
+
+body .site-switch{
+ background-image:-moz-linear-gradient(50% 0% -90deg,rgb(16,135,245) 0%,rgb(3,118,225) 100%);
+ background-image:-webkit-gradient(linear,50% 0%,50% 100%,color-stop(0, rgb(16,135,245)),color-stop(1, rgb(3,118,225)));
+ background-image:-webkit-linear-gradient(-90deg,rgb(16,135,245) 0%,rgb(3,118,225) 100%);
+ background-image:-o-linear-gradient(-90deg,rgb(16,135,245) 0%,rgb(3,118,225) 100%);
+ background-image:-ms-linear-gradient(-90deg,rgb(16,135,245) 0%,rgb(3,118,225) 100%);
+ background-image:linear-gradient(-90deg,rgb(16,135,245) 0%,rgb(3,118,225) 100%);
+ border-color:#0070D8;
+ border-width:1px;
+ border-style:solid;
+ /*-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff1087f5,endColorstr=#ff0376e1,GradientType=0)";
+ filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff1087f5,endColorstr=#ff0376e1,GradientType=0);*/
+}
+
+body .weather-days_click p{ background-position: 50% -552px;}
+body .userbar-weather_city-cur a{ background-position: right -431px;}
+body .site-switch_hover {
+ background: #0070D8;
+}
+
+body .site-switch_content {
+ border: 1px solid #fefefe;
+ background: #E2EAEF;
+}
+body .site-switch_container a {
+ color: #333;
+}
+body .site-switch_content a{ background-image: none;}
+
+body .site-switch_container a:hover {
+ background-color: #C0DAEF;
+}
+
+body .ui-button .ui-button-text,
+body .mod-btn_normal .ui-button-text{ color: #05ae76;}
+
+
+
+body .box-prompt{ background: #E2EAEF;
+ border: 1px solid #ceded9;
+ border-bottom: 1px solid #beccc7;
+}
+
+body .weather-more_wrap {
+ /*background: #0c815a;
+ border-top: 1px solid #0a6f4e;
+ border-bottom: 1px solid #0a6f4e;*/
+}
+body .weather-days {
+ border: 1px solid #0070D8;
+ border-bottom: 0 none;
+ background-image:-moz-linear-gradient(50% 0% -90deg,rgb(16,135,245) 0%,rgb(3,118,225) 100%);
+background-image:-webkit-gradient(linear,50% 0%,50% 100%,color-stop(0, rgb(16,135,245)),color-stop(1, rgb(3,118,225)));
+background-image:-webkit-linear-gradient(-90deg,rgb(16,135,245) 0%,rgb(3,118,225) 100%);
+background-image:-o-linear-gradient(-90deg,rgb(16,135,245) 0%,rgb(3,118,225) 100%);
+background-image:-ms-linear-gradient(-90deg,rgb(16,135,245) 0%,rgb(3,118,225) 100%);
+background-image:linear-gradient(-90deg,rgb(16,135,245) 0%,rgb(3,118,225) 100%);
+}
+body .weather-days_click {
+ border: 1px solid #0069CA;
+ border-bottom: 0 none;
+}
+body .weather-days:hover {
+ background: #0070D8;
+}
+body .weather-days_click p{ background-position: 50% -552px;}
+body .userbar-btn a {
+ background-position: 0 -84px;
+ background-repeat: repeat-x;
+ color: #0069CA;
+ border: 1px solid #0070D8;
+}
+body .userbar-btn i{
+ background-image: url("../img/bg.png") !important;
+}
+body .userbar-btn .userbar-sethome {
+ background-position: 0 0;
+}
+body .userbar-btn .userbar-addfav {
+ background-position: 0 -18px;
+}
+body .userbar-btn .userbar-down {
+ background-position: 0 -38px;
+}
+body .userbar-btn .userbar-btn_click .userbar-sethome {
+ background-position: 0 -710px;
+}
+body .userbar-btn .userbar-btn_click .userbar-addfav {
+ background-position: 0 -729px;
+}
+body .userbar-btn .userbar-btn_click .userbar-down {
+ background-position: 0 -748px;
+}
+body .weather-more_wrap{ background: #0070D8;}
+body .weather-more_show { height: auto; border-top: 1px solid #0069CA;}
+body .weather-more_line{border-bottom: 1px solid #0069CA;}
+body .weather-more_odd{ background: #0069CA;}
+body .box-search_tab a.cur { color:#0069CA;}
+body .hotsite_b{ border: 1px solid #DFE4E6;}
+
+body .hotsite-custom{ border-color: #D9E8FF;}
+body .sortsite dt a,
+body .charts_menu a:hover,
+body .charts_menu .cur,
+body .charts_menu .cur:hover,
+body .charts-imgitem a:hover,
+body .toolbar-v .charts_menu a:hover,
+body .charts_more{ color: #1188F7;}
+body .mod-btn_cancel .ui-button-text{ color: #e25856;}
+
+body .i-toolbar{ background: url(../img/i-news_item.png) no-repeat -16px -150px;}
+body .i-toolbar-0,
+body .i-toolbar-1,
+body .i-toolbar-2{ background-position: 0 -150px;}
+body .toolbar-v dd em{ color: #047AE3;}
+
+body .cur .i-hotsite, body .hotsite-tabs_btn:hover .i-hotsite {
+ background: url(../img/i-news_item.png) no-repeat 0 -360px;
+}
+body .cur .i-history, body .hotsite-tabs_btn:hover .i-history {
+ background: url(../img/i-news_item.png) no-repeat 0 -376px;
+}
+body .hotsite-tabs_btn:hover {color: #1188f7;}
+body .hotsite-tabs .cur {color: #1188f7;border-bottom: 2px solid #1188f7;}
+body .hist-block {background: #1188f7;}
+body .hotsite-hist_bg {color: #1188f7;}
+body .hotsite-hist_bg i{
+ background: url(../img/i-news_item.png) no-repeat 0 -390px;
+}
+body .hist-icon {background: url(../img/i-news_item.png) no-repeat 0 -462px;}
+
+body .settings-btn {
+ border: 1px solid #1185f2;
+ background: url(../img/bg.png) no-repeat 3px -1137px #1185f2;
+}
+body .settings-btn_open {
+ border: 1px solid #d4e0eb;
+ border-bottom: 0 none;
+ background: url(../img/bg.png) no-repeat 3px -1154px #eef3f8;
+}
+body .settings-dropdown {
+ border: 1px solid #d4e0eb;
+ background-color: #eef3f8;
+}
+body .select_theme {
+ border-top: 1px solid #d4e0eb;
+}
+body .settings-site .cur {
+ color: #1188f7;
+}
+body .settings-site a:hover {
+ background-color: #d6e2ef;
+}
+body .box-bot .t a:hover{ color: #1188F7;}
+
+
+body .news-tab li.nav-item-current{color: #1188f7;}
+body .playlist .arrow_r{color:#1188f7;}
+body .playlist .arrow_r_disabled{color:#DEDEDE;}
+div#current_indicator{border-bottom:3px solid #1188f7;}
+body .playlist-tab li.cur{color:#1188f7;}
+ul.playlist-tab .hover{color:#1188f7;}
+body .playlist-body .cur .playlist-song, body .playlist-body .cur_pause .playlist-song {color:#1188f7;}
+body .news-item a:hover .title, body .news-item_dbline a:hover .desc {color:#1188f7;text-decoration: underline;}
+body .news-tab .ui-nav .arrow-prev, body .news-tab .ui-nav .arrow-next{background-image: url(../img/i-news-icon-blue.png) !important;}
+body .news-tab .ui-nav .arrow-prev{background-position: -22px -1px;background-repeat:no-repeat;}
+body .news-tab .ui-nav .arrow-next{background-position: -36px -1px;background-repeat:no-repeat;}
+body .news-tab .ui-nav .prev-hover span.arrow-prev{background-position: -4px -1px;}
+body .news-tab .ui-nav .next-hover span.arrow-next{background-position: -54px -1px;}
+body .playing{background: url(../img/icon_playing.gif) no-repeat scroll 0 0 transparent;}
+body .user_controller {background: url(../img/icon_player.png) no-repeat scroll 0 0 transparent;}
+body .player-controller i{background-image: url(../img/icon_player.png);}
+body .playlist-body .cur .playlist-order{background-image: url(../img/icon_player.png);}
+body .playlist-body .cur_pause .playlist-order{background-image: url(../img/icon_player.png);}
+
+body .mod-login{border-color: #0070d8;}
+body .userbar-btn a{background:#0d83f1;color:white;}
+body .userbar-btn i{background-image:url(../img/bg.png);}
+body .dot_img{background:url(../img/bg.png) 0 -1244px no-repeat;}
+body .dot_img_head{background:url(../img/bg.png) -9px -1244px no-repeat;}
+
+body .cur .i-notepad, body .hotsite-tabs_btn:hover .i-notepad {
+ background: url(../img/i-news_item.png) no-repeat 0 -489px;
+}
+body .close .i-notepad, body .cur:hover .i-notepad {
+ background: url(../img/i-news_item.png) no-repeat 0 -507px;
+}
+
+span.hsrch_word a:hover{color:#1188f7;}
+body .news-slide .nav-item a:hover .title {
+color: #1188f7;
+text-decoration: underline;
+}
+body .charts-order {
+ background-position: 0 -150px;
+}
+body .charts-order_grey{
+ background-position: -15px -150px;
+}
+body .mod-side .news-tab li.nav-item-current{color: #1188f7;}
+
+
+/****** 皮肤盒子 ******/
+body .skinbox-more-wrap{background: #0070D8;border-top-color: #0069CA;border-bottom-color:#0069ca; }
+body .skinbox-normal-wrap .switch-item{border-color: #0070D8;}
+body .skinbox-more-hide .ico-skinbox-triangle{border-bottom-color: #0069ca;}
+body .skinbox-normal-wrap .prev, body .skinbox-normal-wrap .next{background: #0161c2;color: #80b0e1;}
+body .skinbox-item{border-color: #0358b2;}
+body .skinbox-item-selected, body .skinbox-item:hover{border-color: #80b6ed;}
+body .skinbox-normal-wrap .switch-item{background: url("../img/blue-not-current.png?__sprite") no-repeat;}
+body .skinbox-normal-wrap .switch-item-current{background: url("../img/blue-current.png?__sprite") no-repeat;}
+body .skinbox-item-selected .ico-skinbox-selected{background-color: #0084fa;}
+
+/****** 消息盒子 ******/
+body .wrap-message-content li{border-bottom-color:#d4e0eb;}
+body .wrap-message-content{background-color: #EEF3F8;}
+body .wrap-message-content li:hover{background-color: #D3E5F6}
+body .message-target:hover span{color: #1188f7;}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/2/css/index_dev.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/2/css/index_dev.css
new file mode 100755
index 000000000..47eb69cc1
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/2/css/index_dev.css
@@ -0,0 +1,249 @@
+.site-switch_container{ position: absolute; top: 28px; left: 140px; z-index: 99;}
+.site-switch{ position: static;}
+/*.userbar{ position: relative;}*/
+
+.userbar-btn i,
+.custom_item .btn,
+.hotsite-custom_list .add-btn,
+.custom_item .sprite-del_normal,
+.custom_item .sprite-modify_normal,
+.site-switch a,
+.weather-days_click p,
+.userbar-weather_city-cur a,
+.bar-addfav_icon,
+.bar-addfav_btn,
+.userbar-btn a{ background: url("../img/bg.png") 0 0 no-repeat;}
+
+
+/*.select_theme,
+.select_theme_hover{ background: #EDF0EF url("../img/theme_bg.png") 0 0 no-repeat;}*/
+
+.hotsite-custom_bar a,
+.hotsite-custom_bar a:hover,
+.hotsite-custom .bar_open a,
+.hotsite-custom .bar_open a:hover,
+.hotsite-custom_list .add-btn,
+.news-item_txt,
+.news-btn_type i,
+.charts-order,
+.mod-joke .joke_refresh,
+.scroll-arrow,
+.news-btn_type i,
+.top-arrow,
+.bottom-arrow,
+.hotsite-custom_list .add-btn-ico{ background: url("../img/i-news_item.png") no-repeat 0 0;}
+
+
+.bar-addfav_icon {background-position: 0 -1068px;}
+
+.bar-addfav{ border-bottom: 1px solid #0064C0;}
+
+.charts-song:hover, .charts-singer:hover { color: #1188F7;}
+
+
+.mod-joke .joke_content:hover{ color: #1188F7;}
+
+#indexLogo{
+ float: left; width: 130px; height: 50px;
+ background: url(../img/logo_new.png);
+ _background: url(/static/web/tw/img/logo_new.png);
+}
+#indexLogoImg{display: none;}
+.news-btn_type:hover{ border-color: #7EB8EB;}
+.bar-addfav_btn{ background-position: 0 -1008px; background-repeat: repeat-x;
+
+ border-color: #82BBEF;
+}
+
+.bar-addfav_btn:hover{
+ background-position: 0 -1028px; border-color: #1188F7;
+}
+
+.site-switch a{ background-position: right -432px;}
+.custom_item .sprite-del_normal{ background-position: 0 -639px;}
+.custom_item .sprite-modify_normal{ background-position: -1px -931px;}
+.hotsite-custom_bar a{ background-position: -1px -233px;}
+.hotsite-custom_bar a:hover{ background-position: -1px -254px;}
+.hotsite-custom .bar_open a{ background-position: -1px -296px;}
+.hotsite-custom .bar_open a:hover{ background-position: -1px -317px;}
+.hotsite-custom_list .add-btn{ background-position: 0 -685px; background-repeat: repeat-x; border:1px solid; border-color:#ebebeb #ebebeb #d9dcde #ebebeb; color:#909191;}
+
+.hotsite-custom_list .add-btn-ico{ background-position: -12px -96px;}
+.sortsite dt .arrow_r{ border-left-color: #5998FE;}
+.bar-addfav_title, .bar-addfav_text{ color: #1188F7;}
+
+.charts_more .arrow_r{ color: #5998FE;}
+.select_theme_hover{ background-position: 0 -31px;}
+.mod-joke .joke_refresh{ background-position:0 -168px;}
+.ui-tip .arrow{border-top-color: #5998FE;}
+.ui-tip{ border-color: #5998FE;}
+.news-btn_type i{ background-position: -12px -96px;}
+.top-arrow { background-position: -15px -114px;}
+.bottom-arrow{background-position: -15px -131px;}
+.userbar-wrap {
+ background: #1082EC;
+ border-bottom: 1px solid #0069CA;
+ _border-bottom: 0 none;
+
+ background-image:-moz-linear-gradient(50% 0% -90deg,rgb(17,136,247) 0%,rgb(16,127,230) 100%);
+ background-image:-webkit-gradient(linear,50% 0%,50% 100%,color-stop(0, rgb(17,136,247)),color-stop(1, rgb(16,127,230)));
+ background-image:-webkit-linear-gradient(-90deg,rgb(17,136,247) 0%,rgb(16,127,230) 100%);
+ background-image:-o-linear-gradient(-90deg,rgb(17,136,247) 0%,rgb(16,127,230) 100%);
+ background-image:-ms-linear-gradient(-90deg,rgb(17,136,247) 0%,rgb(16,127,230) 100%);
+ background-image:linear-gradient(-90deg,rgb(17,136,247) 0%,rgb(16,127,230) 100%);
+ -ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff1188f7,endColorstr=#ff107fe6,GradientType=0)";
+ filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff1188f7,endColorstr=#ff107fe6,GradientType=0);
+}
+
+
+.site-switch{
+ background-image:-moz-linear-gradient(50% 0% -90deg,rgb(16,135,245) 0%,rgb(3,118,225) 100%);
+ background-image:-webkit-gradient(linear,50% 0%,50% 100%,color-stop(0, rgb(16,135,245)),color-stop(1, rgb(3,118,225)));
+ background-image:-webkit-linear-gradient(-90deg,rgb(16,135,245) 0%,rgb(3,118,225) 100%);
+ background-image:-o-linear-gradient(-90deg,rgb(16,135,245) 0%,rgb(3,118,225) 100%);
+ background-image:-ms-linear-gradient(-90deg,rgb(16,135,245) 0%,rgb(3,118,225) 100%);
+ background-image:linear-gradient(-90deg,rgb(16,135,245) 0%,rgb(3,118,225) 100%);
+ border-color:#0070D8;
+ border-width:1px;
+ border-style:solid;
+ -ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff1087f5,endColorstr=#ff0376e1,GradientType=0)";
+ filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff1087f5,endColorstr=#ff0376e1,GradientType=0);
+}
+
+.weather-days_click p{ background-position: 50% -552px;}
+.userbar-weather_city-cur a{ background-position: right -431px;}
+.site-switch_hover {
+ background: #0070D8;
+}
+
+.site-switch_content {
+ border: 1px solid #fefefe;
+ background: #E2EAEF;
+}
+.site-switch_container a {
+ color: #333;
+}
+.site-switch_content a{ background-image: none;}
+
+.site-switch_container a:hover {
+ background-color: #C0DAEF;
+}
+
+.ui-button .ui-button-text,
+.mod-btn_normal .ui-button-text{ color: #05ae76;}
+
+
+
+.box-prompt{ background: #E2EAEF;
+ border: 1px solid #ceded9;
+ border-bottom: 1px solid #beccc7;
+}
+
+.weather-more_wrap {
+ /*background: #0c815a;
+ border-top: 1px solid #0a6f4e;
+ border-bottom: 1px solid #0a6f4e;*/
+}
+.weather-days {
+ border: 1px solid #0070D8;
+ border-bottom: 0 none;
+ background-image:-moz-linear-gradient(50% 0% -90deg,rgb(16,135,245) 0%,rgb(3,118,225) 100%);
+background-image:-webkit-gradient(linear,50% 0%,50% 100%,color-stop(0, rgb(16,135,245)),color-stop(1, rgb(3,118,225)));
+background-image:-webkit-linear-gradient(-90deg,rgb(16,135,245) 0%,rgb(3,118,225) 100%);
+background-image:-o-linear-gradient(-90deg,rgb(16,135,245) 0%,rgb(3,118,225) 100%);
+background-image:-ms-linear-gradient(-90deg,rgb(16,135,245) 0%,rgb(3,118,225) 100%);
+background-image:linear-gradient(-90deg,rgb(16,135,245) 0%,rgb(3,118,225) 100%);
+}
+.weather-days_click {
+ border: 1px solid #0069CA;
+ border-bottom: 0 none;
+}
+.weather-days:hover {
+ background: #0070D8;
+}
+.weather-days_click p{ background-position: 50% -552px;}
+.userbar-btn a {
+ background-position: 0 -84px;
+ background-repeat: repeat-x;
+ color: #0069CA;
+ border: 1px solid #0070D8;
+}
+
+.weather-more_wrap{ background: #0070D8;}
+.weather-more_show { height: auto; border-top: 1px solid #0069CA;}
+.weather-more_line{border-bottom: 1px solid #0069CA;}
+.weather-more_odd{ background: #0069CA;}
+.box-search_tab a.cur { color:#0069CA;}
+.hotsite_b{ border: 1px solid #DFE4E6;}
+
+.hotsite-custom{ border-color: #D9E8FF;}
+.sortsite dt a,
+.charts_menu a:hover,
+.charts_menu .cur,
+.charts_menu .cur:hover,
+.charts-imgitem a:hover,
+.toolbar-v .charts_menu a:hover,
+.charts_more{ color: #1188F7;}
+.mod-btn_cancel .ui-button-text{ color: #e25856;}
+
+.i-toolbar{ background: url(../img/i-news_item.png) no-repeat -16px -150px;}
+.i-toolbar-0,
+.i-toolbar-1,
+.i-toolbar-2{ background-position: 0 -150px;}
+.toolbar-v dd em{ color: #047AE3;}
+
+.box-bot .t a:hover{ color: #1188F7;}
+
+.cur .i-hotsite, .hotsite-tabs_btn:hover .i-hotsite {
+ background: url(../img/i-news_item.png) no-repeat 0 -360px;
+}
+.cur .i-history, .hotsite-tabs_btn:hover .i-history {
+ background: url(../img/i-news_item.png) no-repeat 0 -376px;
+}
+.hotsite-tabs_btn:hover {color: #1188f7;}
+.hotsite-tabs .cur {color: #1188f7;border-bottom: 2px solid #1188f7;}
+.hist-block {background: #1188f7;}
+.hotsite-hist_bg {background: url(../img/i-news_item.png) no-repeat 0 -390px; color: #1188f7;}
+.hist-icon {background: url(../img/i-news_item.png) no-repeat 0 -462px;}
+
+.settings-btn {
+ border: 1px solid #1185f2;
+ background: url(../img/bg.png) no-repeat 3px -1137px #1185f2;
+}
+.settings-btn_open {
+ border: 1px solid #d4e0eb;
+ border-bottom: 0 none;
+ background: url(../img/bg.png) no-repeat 3px -1154px #eef3f8;
+}
+.settings-dropdown {
+ border: 1px solid #d4e0eb;
+ background-color: #eef3f8;
+}
+.select_theme {
+ border-top: 1px solid #d4e0eb;
+}
+.settings-site .cur {
+ color: #1188f7;
+}
+.settings-site a:hover {
+ background-color: #d6e2ef;
+}
+
+.news-tab li.nav-item-current{color: #1188f7;}
+.playlist .arrow_r{color:#1188f7;}
+.playlist .arrow_r_disabled{color:#DEDEDE;}
+div#current_indicator{border-bottom:3px solid #1188f7;}
+.playlist-tab li.cur{color:#1188f7;}
+ul.playlist-tab .hover{color:#1188f7;}
+.playlist-body .cur .playlist-song, .playlist-body .cur_pause .playlist-song {color:#1188f7;}
+.news-item a:hover .title, .news-item_dbline a:hover .desc {color:#1188f7;text-decoration: underline;}
+.news-tab .ui-nav .arrow-prev, .news-tab .ui-nav .arrow-next{background-image: url(../img/i-news-icon-blue.png);}
+.news-tab .ui-nav .arrow-prev{background-position: -22px -1px;background-repeat:no-repeat;}
+.news-tab .ui-nav .arrow-next{background-position: -36px -1px;background-repeat:no-repeat;}
+.news-tab .ui-nav .prev-hover span.arrow-prev{background-position: -4px -1px;}
+.news-tab .ui-nav .next-hover span.arrow-next{background-position: -54px -1px;}
+.playing{background: url(../img/icon_playing.gif) no-repeat scroll 0 0 transparent;}
+.user_controller {background: url(../img/icon_player.png) no-repeat scroll 0 0 transparent;}
+.player-controller i{background-image: url(../img/icon_player.png);}
+.playlist-body .cur .playlist-order{background-image: url(../img/icon_player.png);}
+.playlist-body .cur_pause .playlist-order{background-image: url(../img/icon_player.png);}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/2/img/bg.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/2/img/bg.png
new file mode 100755
index 000000000..3dd8d91ff
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/2/img/bg.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/2/img/blue-current.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/2/img/blue-current.png
new file mode 100755
index 000000000..9e40ecdbe
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/2/img/blue-current.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/2/img/blue-not-current.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/2/img/blue-not-current.png
new file mode 100755
index 000000000..230a39709
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/2/img/blue-not-current.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/2/img/i-news-icon-blue.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/2/img/i-news-icon-blue.png
new file mode 100755
index 000000000..ae25cd238
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/2/img/i-news-icon-blue.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/2/img/i-news_item.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/2/img/i-news_item.png
new file mode 100755
index 000000000..b90f1a05e
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/2/img/i-news_item.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/2/img/icon_player.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/2/img/icon_player.png
new file mode 100755
index 000000000..c8675f656
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/2/img/icon_player.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/2/img/icon_playing.gif b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/2/img/icon_playing.gif
new file mode 100755
index 000000000..cc23b09ab
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/2/img/icon_playing.gif differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/2/img/logo_new.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/2/img/logo_new.png
new file mode 100755
index 000000000..778270cd2
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/2/img/logo_new.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/2/img/theme_bg.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/2/img/theme_bg.png
new file mode 100755
index 000000000..1ee9a5efc
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/2/img/theme_bg.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/3/css/index.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/3/css/index.css
new file mode 100755
index 000000000..5b349315b
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/3/css/index.css
@@ -0,0 +1,315 @@
+body .site-switch_container{ position: absolute; top: 28px; left: 140px; z-index: 99;}
+body .site-switch{ position: static;}
+/*.userbar{ position: relative;}*/
+
+
+
+body .mod-joke .joke_refresh {
+ background: url(/static/web/common/img/i-news_item.png?m6a55ad5ce7bd83c9ee12482edb38d563=1) 0 -168px no-repeat;
+}
+
+body .userbar-btn i,
+body .custom_item .btn,
+body .hotsite-custom_list .add-btn,
+body .custom_item .sprite-del_normal,
+body .custom_item .sprite-modify_normal,
+body .site-switch a,
+body .weather-days_click p,
+body .userbar-weather_city-cur a,
+body .bar-addfav_icon,
+body .bar-addfav_btn,
+body .userbar-btn a{ background: url("../img/bg.png") 0 0 no-repeat;}
+
+/*.select_theme,
+.select_theme_hover{ background: #EDF0EF url("../img/theme_bg.png") 0 0 no-repeat;}*/
+
+body .hotsite-custom_bar a,
+body .hotsite-custom_bar a:hover,
+body .hotsite-custom .bar_open a,
+body .hotsite-custom .bar_open a:hover,
+body .hotsite-custom_list .add-btn,
+body .news-item_txt,
+body .news-btn_type i,
+/*.news-label_type,*/
+body .charts-order,
+body .mod-joke .joke_refresh,
+body .scroll-arrow,
+body .top-arrow,
+body .bottom-arrow,
+body .hotsite-custom_list .add-btn-ico{ background: url("../img/i-news_item.png") no-repeat 0 0;}
+
+body .news-item_txt{ background-position: 13px 10px;}
+body .news-btn_type i{ background-position: -12px -96px;}
+/*.news-label_type{ background-color: #fff; background-position: 10px -40px;}*/
+body .charts-order{ background-position: 0 -150px;}
+body .mod-joke .joke_refresh{ background-position:0 -168px;}
+body .scroll-arrow{ background-position: 0 0;}
+
+body .news-btn_type:hover{ border-color: #FFB2BF;}
+body .mod-joke .joke_content:hover{ color: #FF617B;}
+body .bar-addfav_icon {background-position: 0 -1068px;}
+
+body #indexLogo{
+ float: left; width: 130px; height: 50px;
+ background: url(../img/logo_new.png);
+ _background: url(/static/web/tw/img/logo_new.png);
+}
+body #indexLogoImg{display: none;}
+
+body .custom_item .sprite-del_normal{ background-position: 0 -639px;}
+body .custom_item .sprite-modify_normal{ background-position: -1px -931px;}
+body .hotsite-custom_bar a{ background-position: -1px -234px;}
+body .hotsite-custom_bar a:hover{ background-position: -1px -254px;}
+body .hotsite-custom .bar_open a{ background-position: -1px -296px;}
+body .hotsite-custom .bar_open a:hover{ background-position: -1px -317px;}
+body .hotsite-custom_list .add-btn{ background-position: 0 -685px; background-repeat: repeat-x; border:1px solid; border-color:#ebebeb #ebebeb #d9dcde #ebebeb; color:#909191;}
+
+body .bar-addfav_btn{ background-position: 0 -1008px; background-repeat: repeat-x;
+ border-color: #EAB8C1;
+}
+
+body .bar-addfav_btn:hover{
+ background-position: 0 -1028px; border-color: #EC8294;
+}
+
+body .site-switch a{ background-position: right -432px;}
+body .hotsite-custom_list .add-btn-ico{ background-position: -12px -99px;}
+body .bar-addfav_title, body .bar-addfav_text{ color: #EC8294;}
+body .select_theme_hover{ background-position: 0 -31px;}
+
+body .charts-song:hover, body .charts-singer:hover { color: #FE6F7B;}
+
+body .sortsite dt .arrow_r{ border-left-color: #FFB2BF;}
+body .charts_more .arrow_r{ color: #FF617B;}
+body .ui-tip .arrow{border-top-color: #FFB2BF;}
+body .ui-tip{ border-color: #FFB2BF;}
+body .bar-addfav{ border-bottom: 1px solid #EC8294;}
+body .top-arrow { background-position: -15px -114px;}
+body .bottom-arrow{background-position: -15px -131px;}
+body .userbar-wrap {
+ background: #F98FA0;
+ border-bottom: 1px solid #FB91A2;
+ _border-bottom: 0 none;
+ background-image:-moz-linear-gradient(50% 0% -90deg,rgb(255,148,166) 0%,rgb(235,129,147) 100%);
+ background-image:-webkit-gradient(linear,50% 0%,50% 100%,color-stop(0, rgb(255,148,166)),color-stop(1, rgb(235,129,147)));
+ background-image:-webkit-linear-gradient(-90deg,rgb(255,148,166) 0%,rgb(235,129,147) 100%);
+ background-image:-o-linear-gradient(-90deg,rgb(255,148,166) 0%,rgb(235,129,147) 100%);
+ background-image:-ms-linear-gradient(-90deg,rgb(255,148,166) 0%,rgb(235,129,147) 100%);
+ background-image:linear-gradient(-90deg,rgb(255,148,166) 0%,rgb(235,129,147) 100%);
+ /*-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffff94a6,endColorstr=#ffeb8193,GradientType=0)";
+ filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffff94a6,endColorstr=#ffeb8193,GradientType=0);*/
+}
+
+body .site-switch,
+body .weather-days{
+ background-image:-moz-linear-gradient(50% 0% -90deg,rgb(255,148,166) 0%,rgb(235,129,147) 100%);
+ background-image:-webkit-gradient(linear,50% 0%,50% 100%,color-stop(0, rgb(255,148,166)),color-stop(1, rgb(235,129,147)));
+ background-image:-webkit-linear-gradient(-90deg,rgb(255,148,166) 0%,rgb(235,129,147) 100%);
+ background-image:-o-linear-gradient(-90deg,rgb(255,148,166) 0%,rgb(235,129,147) 100%);
+ background-image:-ms-linear-gradient(-90deg,rgb(255,148,166) 0%,rgb(235,129,147) 100%);
+ background-image:linear-gradient(-90deg,rgb(255,148,166) 0%,rgb(235,129,147) 100%);
+ /*-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffff94a6,endColorstr=#ffeb8193,GradientType=0)";
+ filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffff94a6,endColorstr=#ffeb8193,GradientType=0);*/
+
+ border: 1px solid #E76F83;
+}
+
+body .site-switch_hover,
+body .weather-days:hover{
+ background: #E76F83;
+}
+
+body .site-switch_content {
+ border: 1px solid #fefefe;
+ background: #EEE5E6;
+}
+
+body .site-switch_content a{ background-image: none;}
+
+body .site-switch_container{ border: 1px solid #eee;}
+body .site-switch_container a {
+ color: #333;
+}
+body .site-switch_container a:hover {
+ background-color: #EFC6CD;
+}
+
+body .ui-button .ui-button-text,
+body .mod-btn_normal .ui-button-text{ color: #05ae76;}
+
+/*?*/
+body .box-prompt{ background: #FDF0F2;
+ border: 1px solid #ceded9;
+ border-bottom: 1px solid #beccc7;
+}
+
+body .weather-more_wrap {
+ /*background: #0c815a;
+ border-top: 1px solid #0a6f4e;
+ border-bottom: 1px solid #0a6f4e;*/
+}
+body .weather-days {
+ border-bottom: 0 none;
+}
+
+body .weather-days_click {
+ border: 1px solid #F88D9F;
+ border-bottom: 0 none;
+}
+body .weather-days_click p{ background-position: 50% -552px;}
+body .userbar-btn a {
+ background-position: 0 -84px;
+ background-repeat: repeat-x;
+ color: #FF617B;
+ border: 1px solid #DF6A7E;
+ border-bottom-color: #BE485C;
+}
+body .userbar-btn i{
+ background-image: url("../img/bg.png") !important;
+}
+body .userbar-btn .userbar-sethome {
+ background-position: 0 0;
+}
+body .userbar-btn .userbar-addfav {
+ background-position: 0 -18px;
+}
+body .userbar-btn .userbar-down {
+ background-position: 0 -38px;
+}
+body .userbar-btn .userbar-btn_click .userbar-sethome {
+ background-position: 0 -710px;
+}
+body .userbar-btn .userbar-btn_click .userbar-addfav {
+ background-position: 0 -729px;
+}
+body .userbar-btn .userbar-btn_click .userbar-down {
+ background-position: 0 -748px;
+}
+body .userbar-weather_city-cur a{ background-position: right -431px;}
+
+body .weather-more_wrap{ background: #DF6A7E;}
+body .weather-more_show { height: auto; border-top: 1px solid #DF6A7E;}
+body .weather-more_line{border-bottom: 1px solid #FB91A2;}
+body .weather-more_odd{ background: #CC4C62;}
+body .box-search_tab a.cur { color:#FF617B;}
+body .hotsite_b{ border: 1px solid #D7DDDE;}
+
+body .hotsite-custom{ border-color: #FFD9DF;}
+body .sortsite dt a,
+body .charts_menu a:hover,
+body .charts_menu .cur,
+body .charts_menu .cur:hover,
+body .charts-imgitem a:hover,
+body .toolbar-v .charts_menu a:hover,
+body .charts_more{ color: #FF617B;}
+
+body .mod-btn_cancel .ui-button-text{ color: #e25856;}
+body .i-toolbar{ background: url(../img/i-news_item.png) no-repeat -16px -150px;}
+body .i-toolbar-0,
+body .i-toolbar-1,
+body .i-toolbar-2{ background-position: 0 -150px;}
+
+body .toolbar-v dd em{ color: #FB568B;}
+
+body .cur .i-hotsite, body .hotsite-tabs_btn:hover .i-hotsite {
+ background: url(../img/i-news_item.png) no-repeat 0 -360px;
+}
+body .cur .i-history, body .hotsite-tabs_btn:hover .i-history {
+ background: url(../img/i-news_item.png) no-repeat 0 -376px;
+}
+body .hotsite-tabs_btn:hover {color: #ff617b;}
+body .hotsite-tabs .cur {color: #ff617b;border-bottom: 2px solid #ff617b;}
+body .hist-block {background: #ff617b;}
+body .hotsite-hist_bg {color: #ff617b;}
+body .hotsite-hist_bg i{
+ background: url(../img/i-news_item.png) no-repeat 0 -390px;
+}
+body .hist-icon {background: url(../img/i-news_item.png) no-repeat 0 -462px;}
+
+body .settings-btn {
+ border: 1px solid #fd92a4;
+ background: url(../img/bg.png) no-repeat 3px -1137px #fd92a4;
+}
+body .settings-btn_open {
+ border: 1px solid #ecdfe1;
+ border-bottom: 0 none;
+ background: url(../img/bg.png) no-repeat 3px -1154px #fcf6f7;
+}
+body .settings-dropdown {
+ border: 1px solid #ecdfe1;
+ background-color: #fcf6f7;
+}
+body .select_theme {
+ border-top: 1px solid #ecdfe1;
+}
+body .settings-site .cur {
+ color: #ff617b;
+}
+body .settings-site a:hover {
+ background-color: #f7e3e6;
+}
+body .box-bot .t a:hover{ color: #FF617B;}
+
+body .news-tab li.nav-item-current{color: #FF617B;}
+body .playlist .arrow_r{color:#FF617B;}
+body .playlist .arrow_r_disabled{color:#DEDEDE;}
+body #current_indicator{border-bottom:3px solid #FF617B;}
+body .playlist-tab li.cur{color:#FF617B;}
+body ul.playlist-tab .hover{color:#FF617B;}
+body .playlist-body .cur .playlist-song, body .playlist-body .cur_pause .playlist-song {color:#FF617B;}
+body .news-item a:hover .title, body .news-item_dbline a:hover .desc {color:#FF617B;text-decoration: underline;}
+body .news-tab .ui-nav .arrow-prev, body .news-tab .ui-nav .arrow-next{background-image: url(../img/i-news-icon-pink.png) !important;}
+body .news-tab .ui-nav .arrow-prev{background-position: -22px -1px;background-repeat:no-repeat;}
+body .news-tab .ui-nav .arrow-next{background-position: -36px -1px;background-repeat:no-repeat;}
+body .news-tab .ui-nav .prev-hover span.arrow-prev{background-position: -4px -1px;}
+body .news-tab .ui-nav .next-hover span.arrow-next{background-position: -54px -1px;}
+body .playing{background: url(../img/icon_playing.gif) no-repeat scroll 0 0 transparent;}
+body .user_controller {background: url(../img/icon_player.png) no-repeat scroll 0 0 transparent;}
+body .player-controller i{background-image: url(../img/icon_player.png);}
+body .playlist-body .cur .playlist-order{background-image: url(../img/icon_player.png);}
+body .playlist-body .cur_pause .playlist-order{background-image: url(../img/icon_player.png);}
+
+body .mod-login{border-color: #e76f83;}
+body .userbar-btn a{background:#fa8ea0;color:white;}
+body .userbar-btn i{background-image:url(../img/bg.png);}
+body .dot_img{background:url(../img/bg.png) 0 -1244px no-repeat;}
+body .dot_img_head{background:url(../img/bg.png) -9px -1244px no-repeat;}
+
+body .cur .i-notepad, body .hotsite-tabs_btn:hover .i-notepad {
+ background: url(../img/i-news_item.png) no-repeat 0 -489px;
+}
+body .close .i-notepad, body .cur:hover .i-notepad {
+ background: url(../img/i-news_item.png) no-repeat 0 -507px;
+}
+body .dot_img_head{background:url(../img/bg.png) -9px -1244px no-repeat;}
+
+body .hsrch_word a:hover{color:#FF617B;}
+
+body .news-slide .nav-item a:hover .title {
+color: #FF617B;
+text-decoration: underline;
+}
+body .charts-order {
+ background-position: 0 -150px;
+}
+body i.charts-order_grey{
+ background-position: -15px -150px;
+}
+body .mod-side .news-tab li.nav-item-current{color: #FF617B;}
+
+/****** 皮肤盒子 ******/
+body .skinbox-more-wrap{background: #df6a7e;border-top-color: #df6a7e;border-bottom-color:#fb91a2; }
+body .skinbox-normal-wrap .switch-item{border-color: #df6a7e;}
+body .skinbox-more-hide .ico-skinbox-triangle{border-bottom-color: #df6a7e;}
+body .skinbox-normal-wrap .prev, body .skinbox-normal-wrap .next{background: #ce4a60;color: #e7a5b0;}
+body .skinbox-item{border-color: #b75566;}
+body .skinbox-item-selected, body .skinbox-item:hover{border-color: #f0b4be;}
+body .skinbox-normal-wrap .switch-item{background: url("../img/pink-not-current.png?__sprite") no-repeat;}
+body .skinbox-normal-wrap .switch-item-current{background: url("../img/pink-current.png?__sprite") no-repeat;}
+body .skinbox-item-selected .ico-skinbox-selected{background-color: #f28597;}
+
+/****** 消息盒子 ******/
+body .wrap-message-content li{border-bottom-color:#ecdfe1;}
+body .wrap-message-content{background-color: #FCF6F7;}
+body .wrap-message-content li:hover{background-color: #FCE7EA}
+body .message-target:hover span{color: #ff617b;}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/3/css/index_dev.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/3/css/index_dev.css
new file mode 100755
index 000000000..3d6b696cf
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/3/css/index_dev.css
@@ -0,0 +1,247 @@
+.site-switch_container{ position: absolute; top: 28px; left: 140px; z-index: 99;}
+.site-switch{ position: static;}
+/*.userbar{ position: relative;}*/
+
+
+
+.mod-joke .joke_refresh {
+ background: url(/static/web/common/img/i-news_item.png?m6a55ad5ce7bd83c9ee12482edb38d563=1) 0 -168px no-repeat;
+}
+
+.userbar-btn i,
+.custom_item .btn,
+.hotsite-custom_list .add-btn,
+.custom_item .sprite-del_normal,
+.custom_item .sprite-modify_normal,
+.site-switch a,
+.weather-days_click p,
+.userbar-weather_city-cur a,
+.bar-addfav_icon,
+.bar-addfav_btn,
+.userbar-btn a{ background: url("../img/bg.png") 0 0 no-repeat;}
+
+/*.select_theme,
+.select_theme_hover{ background: #EDF0EF url("../img/theme_bg.png") 0 0 no-repeat;}*/
+
+.hotsite-custom_bar a,
+.hotsite-custom_bar a:hover,
+.hotsite-custom .bar_open a,
+.hotsite-custom .bar_open a:hover,
+.hotsite-custom_list .add-btn,
+.news-item_txt,
+.news-btn_type i,
+/*.news-label_type,*/
+.charts-order,
+.mod-joke .joke_refresh,
+.scroll-arrow,
+.top-arrow,
+.bottom-arrow,
+.hotsite-custom_list .add-btn-ico{ background: url("../img/i-news_item.png") no-repeat 0 0;}
+
+.news-item_txt{ background-position: 13px 10px;}
+.news-btn_type i{ background-position: -12px -96px;}
+/*.news-label_type{ background-color: #fff; background-position: 10px -40px;}*/
+.charts-order{ background-position: 0 -150px;}
+.mod-joke .joke_refresh{ background-position:0 -168px;}
+.scroll-arrow{ background-position: 0 0;}
+
+.news-btn_type:hover{ border-color: #FFB2BF;}
+.mod-joke .joke_content:hover{ color: #FF617B;}
+.bar-addfav_icon {background-position: 0 -1068px;}
+
+#indexLogo{
+ float: left; width: 130px; height: 50px;
+ background: url(../img/logo_new.png);
+ _background: url(/static/web/tw/img/logo_new.png);
+}
+#indexLogoImg{display: none;}
+
+.custom_item .sprite-del_normal{ background-position: 0 -639px;}
+.custom_item .sprite-modify_normal{ background-position: -1px -931px;}
+.hotsite-custom_bar a{ background-position: -1px -234px;}
+.hotsite-custom_bar a:hover{ background-position: -1px -254px;}
+.hotsite-custom .bar_open a{ background-position: -1px -296px;}
+.hotsite-custom .bar_open a:hover{ background-position: -1px -317px;}
+.hotsite-custom_list .add-btn{ background-position: 0 -685px; background-repeat: repeat-x; border:1px solid; border-color:#ebebeb #ebebeb #d9dcde #ebebeb; color:#909191;}
+
+.bar-addfav_btn{ background-position: 0 -1008px; background-repeat: repeat-x;
+ border-color: #EAB8C1;
+}
+
+.bar-addfav_btn:hover{
+ background-position: 0 -1028px; border-color: #EC8294;
+}
+
+.site-switch a{ background-position: right -432px;}
+.hotsite-custom_list .add-btn-ico{ background-position: -12px -96px;}
+.bar-addfav_title, .bar-addfav_text{ color: #EC8294;}
+.select_theme_hover{ background-position: 0 -31px;}
+
+.charts-song:hover, .charts-singer:hover { color: #FE6F7B;}
+
+.sortsite dt .arrow_r{ border-left-color: #FFB2BF;}
+.charts_more .arrow_r{ color: #FF617B;}
+.ui-tip .arrow{border-top-color: #FFB2BF;}
+.ui-tip{ border-color: #FFB2BF;}
+.bar-addfav{ border-bottom: 1px solid #EC8294;}
+.top-arrow { background-position: -15px -114px;}
+.bottom-arrow{background-position: -15px -131px;}
+.userbar-wrap {
+ background: #F98FA0;
+ border-bottom: 1px solid #FB91A2;
+ _border-bottom: 0 none;
+ background-image:-moz-linear-gradient(50% 0% -90deg,rgb(255,148,166) 0%,rgb(235,129,147) 100%);
+ background-image:-webkit-gradient(linear,50% 0%,50% 100%,color-stop(0, rgb(255,148,166)),color-stop(1, rgb(235,129,147)));
+ background-image:-webkit-linear-gradient(-90deg,rgb(255,148,166) 0%,rgb(235,129,147) 100%);
+ background-image:-o-linear-gradient(-90deg,rgb(255,148,166) 0%,rgb(235,129,147) 100%);
+ background-image:-ms-linear-gradient(-90deg,rgb(255,148,166) 0%,rgb(235,129,147) 100%);
+ background-image:linear-gradient(-90deg,rgb(255,148,166) 0%,rgb(235,129,147) 100%);
+ -ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffff94a6,endColorstr=#ffeb8193,GradientType=0)";
+ filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffff94a6,endColorstr=#ffeb8193,GradientType=0);
+}
+
+.box-bot .t a:hover{ color: #FF617B;}
+.site-switch,
+.weather-days{
+ background-image:-moz-linear-gradient(50% 0% -90deg,rgb(255,148,166) 0%,rgb(235,129,147) 100%);
+ background-image:-webkit-gradient(linear,50% 0%,50% 100%,color-stop(0, rgb(255,148,166)),color-stop(1, rgb(235,129,147)));
+ background-image:-webkit-linear-gradient(-90deg,rgb(255,148,166) 0%,rgb(235,129,147) 100%);
+ background-image:-o-linear-gradient(-90deg,rgb(255,148,166) 0%,rgb(235,129,147) 100%);
+ background-image:-ms-linear-gradient(-90deg,rgb(255,148,166) 0%,rgb(235,129,147) 100%);
+ background-image:linear-gradient(-90deg,rgb(255,148,166) 0%,rgb(235,129,147) 100%);
+ -ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffff94a6,endColorstr=#ffeb8193,GradientType=0)";
+ filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffff94a6,endColorstr=#ffeb8193,GradientType=0);
+
+ border: 1px solid #E76F83;
+}
+
+.site-switch_hover,
+.weather-days:hover{
+ background: #E76F83;
+}
+
+.site-switch_content {
+ border: 1px solid #fefefe;
+ background: #EEE5E6;
+}
+
+.site-switch_content a{ background-image: none;}
+
+.site-switch_container{ border: 1px solid #eee;}
+.site-switch_container a {
+ color: #333;
+}
+.site-switch_container a:hover {
+ background-color: #EFC6CD;
+}
+
+.ui-button .ui-button-text,
+.mod-btn_normal .ui-button-text{ color: #05ae76;}
+
+/*?*/
+.box-prompt{ background: #FDF0F2;
+ border: 1px solid #ceded9;
+ border-bottom: 1px solid #beccc7;
+}
+
+.weather-more_wrap {
+ /*background: #0c815a;
+ border-top: 1px solid #0a6f4e;
+ border-bottom: 1px solid #0a6f4e;*/
+}
+.weather-days {
+ border-bottom: 0 none;
+}
+
+.weather-days_click {
+ border: 1px solid #F88D9F;
+ border-bottom: 0 none;
+}
+.weather-days_click p{ background-position: 50% -552px;}
+.userbar-btn a {
+ background-position: 0 -84px;
+ background-repeat: repeat-x;
+ color: #FF617B;
+ border: 1px solid #DF6A7E;
+ border-bottom-color: #BE485C;
+}
+
+.userbar-weather_city-cur a{ background-position: right -431px;}
+
+.weather-more_wrap{ background: #DF6A7E;}
+.weather-more_show { height: auto; border-top: 1px solid #DF6A7E;}
+.weather-more_line{border-bottom: 1px solid #FB91A2;}
+.weather-more_odd{ background: #CC4C62;}
+.box-search_tab a.cur { color:#FF617B;}
+.hotsite_b{ border: 1px solid #D7DDDE;}
+
+.hotsite-custom{ border-color: #FFD9DF;}
+.sortsite dt a,
+.charts_menu a:hover,
+.charts_menu .cur,
+.charts_menu .cur:hover,
+.charts-imgitem a:hover,
+.toolbar-v .charts_menu a:hover,
+.charts_more{ color: #FF617B;}
+
+.mod-btn_cancel .ui-button-text{ color: #e25856;}
+.i-toolbar{ background: url(../img/i-news_item.png) no-repeat -16px -150px;}
+.i-toolbar-0,
+.i-toolbar-1,
+.i-toolbar-2{ background-position: 0 -150px;}
+
+.toolbar-v dd em{ color: #FB568B;}
+
+.cur .i-hotsite, .hotsite-tabs_btn:hover .i-hotsite {
+ background: url(../img/i-news_item.png) no-repeat 0 -360px;
+}
+.cur .i-history, .hotsite-tabs_btn:hover .i-history {
+ background: url(../img/i-news_item.png) no-repeat 0 -376px;
+}
+.hotsite-tabs_btn:hover {color: #ff617b;}
+.hotsite-tabs .cur {color: #ff617b;border-bottom: 2px solid #ff617b;}
+.hist-block {background: #ff617b;}
+.hotsite-hist_bg {background: url(../img/i-news_item.png) no-repeat 0 -390px; color: #ff617b;}
+.hist-icon {background: url(../img/i-news_item.png) no-repeat 0 -462px;}
+
+.settings-btn {
+ border: 1px solid #fd92a4;
+ background: url(../img/bg.png) no-repeat 3px -1137px #fd92a4;
+}
+.settings-btn_open {
+ border: 1px solid #ecdfe1;
+ border-bottom: 0 none;
+ background: url(../img/bg.png) no-repeat 3px -1154px #fcf6f7;
+}
+.settings-dropdown {
+ border: 1px solid #ecdfe1;
+ background-color: #fcf6f7;
+}
+.select_theme {
+ border-top: 1px solid #ecdfe1;
+}
+.settings-site .cur {
+ color: #ff617b;
+}
+.settings-site a:hover {
+ background-color: #f7e3e6;
+}
+
+.news-tab li.nav-item-current{color: #FF617B;}
+.playlist .arrow_r{color:#FF617B;}
+.playlist .arrow_r_disabled{color:#DEDEDE;}
+div#current_indicator{border-bottom:3px solid #FF617B;}
+.playlist-tab li.cur{color:#FF617B;}
+ul.playlist-tab .hover{color:#FF617B;}
+.playlist-body .cur .playlist-song, .playlist-body .cur_pause .playlist-song {color:#FF617B;}
+.news-item a:hover .title, .news-item_dbline a:hover .desc {color:#FF617B;text-decoration: underline;}
+.news-tab .ui-nav .arrow-prev, .news-tab .ui-nav .arrow-next{background-image: url(../img/i-news-icon-pink.png);}
+.news-tab .ui-nav .arrow-prev{background-position: -22px -1px;background-repeat:no-repeat;}
+.news-tab .ui-nav .arrow-next{background-position: -36px -1px;background-repeat:no-repeat;}
+.news-tab .ui-nav .prev-hover span.arrow-prev{background-position: -4px -1px;}
+.news-tab .ui-nav .next-hover span.arrow-next{background-position: -54px -1px;}
+.playing{background: url(../img/icon_playing.gif) no-repeat scroll 0 0 transparent;}
+.user_controller {background: url(../img/icon_player.png) no-repeat scroll 0 0 transparent;}
+.player-controller i{background-image: url(../img/icon_player.png);}
+.playlist-body .cur .playlist-order{background-image: url(../img/icon_player.png);}
+.playlist-body .cur_pause .playlist-order{background-image: url(../img/icon_player.png);}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/3/img/bg.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/3/img/bg.png
new file mode 100755
index 000000000..32926be17
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/3/img/bg.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/3/img/i-news-icon-pink.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/3/img/i-news-icon-pink.png
new file mode 100755
index 000000000..ead87a286
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/3/img/i-news-icon-pink.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/3/img/i-news_item.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/3/img/i-news_item.png
new file mode 100755
index 000000000..267a8f327
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/3/img/i-news_item.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/3/img/icon_player.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/3/img/icon_player.png
new file mode 100755
index 000000000..43c8fdc9f
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/3/img/icon_player.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/3/img/icon_playing.gif b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/3/img/icon_playing.gif
new file mode 100755
index 000000000..0c63f08ba
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/3/img/icon_playing.gif differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/3/img/logo_new.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/3/img/logo_new.png
new file mode 100755
index 000000000..778270cd2
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/3/img/logo_new.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/3/img/theme_bg.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/3/img/theme_bg.png
new file mode 100755
index 000000000..43e3ad6ca
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme/3/img/theme_bg.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme_bg.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme_bg.png
new file mode 100755
index 000000000..ec1192605
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/theme/theme_bg.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/img/addfav-small.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/img/addfav-small.png
new file mode 100755
index 000000000..b7f868e5b
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/img/addfav-small.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/img/addfav.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/img/addfav.png
new file mode 100755
index 000000000..0475ba20e
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/img/addfav.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/img/down-small.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/img/down-small.png
new file mode 100755
index 000000000..156731f4f
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/img/down-small.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/img/down.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/img/down.png
new file mode 100755
index 000000000..7d5fff021
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/img/down.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/img/setHome-small.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/img/setHome-small.png
new file mode 100755
index 000000000..c5f654f67
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/img/setHome-small.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/img/setHome.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/img/setHome.png
new file mode 100755
index 000000000..4bc1de01e
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/img/setHome.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/ltr-s/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/ltr-s/ltr.css
new file mode 100755
index 000000000..67a9a99c5
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/ltr-s/ltr.css
@@ -0,0 +1,5 @@
+.userbar-btn-hd .userbar_split {
+ float: left;
+ visibility: hidden;
+}
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/ltr-s/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/ltr-s/ltr.more.css
new file mode 100755
index 000000000..caf1a5547
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/ltr-s/ltr.more.css
@@ -0,0 +1,149 @@
+.userbar-btn-hd {
+ float: right;
+ position: relative;
+ max-width: 170px;
+}
+.userbar-btn-hd_item {
+ float: left;
+ position: relative;
+}
+.userbar-btn-hd_item .userbar-btn-hd_item-anchor {
+ display: block;
+ padding: 0 10px;
+ height: 50px;
+ line-height: 48px;
+ white-space: nowrap;
+ text-align: center;
+ overflow: hidden;
+ color: #ffffff;
+ /*color: rgba(255, 255, 255, 0.5);*/
+ max-width: 100px;
+}
+.userbar-btn-hd_item i {
+ margin: 0 auto;
+ display: inline-block;
+ width: 20px;
+ height: 20px;
+ vertical-align: middle;
+}
+.userbar-btn-hd_item-tips {
+ position: absolute;
+ left: -50px;
+ top: 46px;
+ display: none;
+}
+.userbar-btn-hd_item-tips p {
+ color: #676767;
+ background-color: #F2F2F2;
+ border: 1px solid #C7C0C0;
+ height: 18px;
+ width: 140px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-align: center;
+ line-height: 20px;
+ cursor: pointer;
+ border-radius: 3px;
+ font-size: 12px;
+}
+.userbar-btn-hd_item-tips #shortCutBot a {
+ display: block;
+ height: 18px;
+ width: 140px;
+ white-space: nowrap;
+ overflow: hidden;
+ color: #676767;
+ text-align: center;
+ line-height: 20px;
+ font-size: 12px;
+}
+.userbar-btn-hd_item-arrow, .userbar-btn-hd_item-arrow-bg {
+ position: absolute;
+ height: 0;
+ width: 0;
+ border: 6px dashed transparent;
+ pointer-events: none;
+}
+.userbar-btn-hd_item-arrow {
+ border-bottom-color: #C7C0C0;
+ border-bottom-style: solid;
+ top: -11px;
+ right: 46%;
+}
+.userbar-btn-hd_item-arrow-bg {
+ border-bottom-color: #F2F2F2;
+ border-bottom-style: solid;
+ margin: -6px 0 0 -7px;
+}
+.userbar-btn-hd-addfav {
+ background: url(../img/addfav.png?__sprite) no-repeat;
+}
+.userbar-btn-hd-down {
+ background: url(../img/down.png?__sprite) no-repeat;
+}
+.userbar-btn-hd-sethome {
+ background: url(../img/setHome.png?__sprite) no-repeat;
+}
+
+
+.header-fixed .userbar-btn-hd_item i {
+ width: 14px;
+ height: 14px;
+}
+.header-fixed .userbar-btn-hd_item .userbar-btn-hd_item-anchor {
+ height: 30px;
+ line-height: 28px;
+}
+.header-fixed .userbar-btn-hd_item-tips {
+ top: 30px;
+ left: -52px;
+}
+.header-fixed-up .userbar-btn-hd_item .userbar-btn-hd_item-anchor {
+ height: 40px;
+ line-height: 38px;
+}
+.header-fixed-up .userbar-btn-hd_item-tips {
+ top: 40px;
+}
+.header-fixed .userbar-btn-hd-addfav {
+ background: url(../img/addfav-small.png?__sprite) no-repeat;
+}
+.header-fixed .userbar-btn-hd-down {
+ background: url(../img/down-small.png?__sprite) no-repeat;
+}
+.header-fixed .userbar-btn-hd-sethome {
+ background: url(../img/setHome-small.png?__sprite) no-repeat;
+}
+
+body .mod-ff-sethome0 {
+ z-index: 402;
+ right: -4px;
+ top: 46px;
+ padding-top: 8px;
+ width: 180px;
+}
+body .mod-ff-sethome0 .ui-bubble_in, body .mod-ff-sethome0 .ui-bubble_out {
+ left: auto;
+ right: 36px;
+}
+.mod-ff-sethome0 .ui-bubble_close {
+ position: absolute;
+ left: auto;
+ right: 0;
+ margin-right: 0;
+ margin-left: -10px;
+}
+.header-fixed .mod-ff-sethome0 {
+ right: -4px;
+ top: 28px;
+}
+.header-fixed .mod-ff-sethome0 .ui-bubble_in, .header-fixed .mod-ff-sethome0 .ui-bubble_out {
+ right: 32px;
+}
+
+.header-fixed-up .userbar-btn-hd_item {
+ display: block !important;
+}
+.header-fixed-up .userbar-btn-hd .userbar_split {
+ display: inline !important;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/rtl-s/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/rtl-s/rtl.css
new file mode 100755
index 000000000..7b62c0b19
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/rtl-s/rtl.css
@@ -0,0 +1,5 @@
+.userbar-btn-hd .userbar_split {
+ float: right;
+ visibility: hidden;
+}
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/rtl-s/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/rtl-s/rtl.more.css
new file mode 100755
index 000000000..a2f73a909
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/rtl-s/rtl.more.css
@@ -0,0 +1,144 @@
+.userbar-btn-hd {
+ float: left;
+ position: relative;
+ max-width: 170px;
+}
+.userbar-btn-hd_item {
+ float: right;
+ position: relative;
+}
+.userbar-btn-hd_item .userbar-btn-hd_item-anchor {
+ display: block;
+ padding: 0 10px;
+ height: 50px;
+ line-height: 48px;
+ white-space: nowrap;
+ text-align: center;
+ overflow: hidden;
+ color: #ffffff;
+ /*color: rgba(255, 255, 255, 0.5);*/
+ max-width: 100px;
+}
+.userbar-btn-hd_item i {
+ margin: 0 auto;
+ display: inline-block;
+ width: 20px;
+ height: 20px;
+ vertical-align: middle;
+}
+.userbar-btn-hd_item-tips {
+ position: absolute;
+ right: -50px;
+ top: 46px;
+ display: none;
+}
+.userbar-btn-hd_item-tips p {
+ color: #676767;
+ background-color: #F2F2F2;
+ border: 1px solid #C7C0C0;
+ height: 18px;
+ width: 140px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-align: center;
+ line-height: 20px;
+ cursor: pointer;
+ border-radius: 3px;
+ font-size: 12px;
+}
+.userbar-btn-hd_item-tips #shortCutBot a {
+ display: block;
+ height: 18px;
+ width: 140px;
+ white-space: nowrap;
+ overflow: hidden;
+ color: #676767;
+ text-align: center;
+ line-height: 20px;
+ font-size: 12px;
+}
+.userbar-btn-hd_item-arrow, .userbar-btn-hd_item-arrow-bg {
+ position: absolute;
+ height: 0;
+ width: 0;
+ border: 6px dashed transparent;
+ pointer-events: none;
+}
+.userbar-btn-hd_item-arrow {
+ border-bottom-color: #C7C0C0;
+ border-bottom-style: solid;
+ top: -11px;
+ left: 46%;
+}
+.userbar-btn-hd_item-arrow-bg {
+ border-bottom-color: #F2F2F2;
+ border-bottom-style: solid;
+ margin: -6px -7px 0 0;
+}
+.userbar-btn-hd-addfav {
+ background: url(../img/addfav.png?__sprite) no-repeat;
+}
+.userbar-btn-hd-down {
+ background: url(../img/down.png?__sprite) no-repeat;
+}
+.userbar-btn-hd-sethome {
+ background: url(../img/setHome.png?__sprite) no-repeat;
+}
+
+
+.header-fixed .userbar-btn-hd_item i {
+ width: 14px;
+ height: 14px;
+}
+.header-fixed .userbar-btn-hd_item .userbar-btn-hd_item-anchor {
+ height: 30px;
+ line-height: 28px;
+}
+.header-fixed .userbar-btn-hd_item-tips {
+ top: 30px;
+ right: -52px;
+}
+.header-fixed-up .userbar-btn-hd_item .userbar-btn-hd_item-anchor {
+ height: 40px;
+ line-height: 38px;
+}
+.header-fixed-up .userbar-btn-hd_item-tips {
+ top: 40px;
+}
+.header-fixed .userbar-btn-hd-addfav {
+ background: url(../img/addfav-small.png?__sprite) no-repeat;
+}
+.header-fixed .userbar-btn-hd-down {
+ background: url(../img/down-small.png?__sprite) no-repeat;
+}
+.header-fixed .userbar-btn-hd-sethome {
+ background: url(../img/setHome-small.png?__sprite) no-repeat;
+}
+
+body .mod-ff-sethome0 {
+ z-index: 402;
+ left: -4px;
+ top: 46px;
+ padding-top: 8px;
+ width: 180px;
+}
+body .mod-ff-sethome0 .ui-bubble_in, body .mod-ff-sethome0 .ui-bubble_out {
+ left: 36px;
+}
+.mod-ff-sethome0 .ui-bubble_close {
+ position: absolute;
+}
+.header-fixed .mod-ff-sethome0 {
+ left: -4px;
+ top: 28px;
+}
+.header-fixed .mod-ff-sethome0 .ui-bubble_in, .header-fixed .mod-ff-sethome0 .ui-bubble_out {
+ left: 32px;
+}
+
+.header-fixed-up .userbar-btn-hd_item {
+ display: block !important;
+}
+.header-fixed-up .userbar-btn-hd .userbar_split {
+ display: inline !important;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/userbar-btn-header-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/userbar-btn-header-async.js
new file mode 100755
index 000000000..3eaeadc13
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/userbar-btn-header-async.js
@@ -0,0 +1,159 @@
+/*
+* User Bar Buttons
+* html改为JS动态拼接
+*/
+
+var $ = require("common:widget/ui/jquery/jquery.js");
+var UT = require("common:widget/ui/ut/ut.js");
+var helper = require("common:widget/ui/helper/helper.js");
+require("common:widget/ui/jquery/widget/jquery.sethome/jquery.sethome.js");
+require("common:widget/ui/jquery/widget/jquery.addfav/jquery.addfav.js");
+
+var isFirefox = /firefox/.test(navigator.userAgent.toLowerCase()),
+ _conf = conf.userbarBtnHd,
+ _ffCon = conf.setHomeOnFf,
+ isShowFf = (isFirefox && _ffCon && (_ffCon.isHidden === "0") && (_conf.isSetHomeFf === "1")),
+ setFfHome = null,
+ isRended = false;
+
+// 火狐设首优化
+if (isShowFf) {
+ require.async("common:widget/ui/sethome-ff/sethome-ff-c.js", function(init) {
+ setFfHome = init;
+ _ffCon.num = 0;
+ });
+}
+
+_conf.browser.reverse();
+
+var _browser = _conf.browser,
+ _addfav = _conf.addfav,
+ _download = _conf.download,
+ _sethome = _conf.sethome,
+ _browserData = _conf.browserData,
+ _itemTpl = '| ',
+ _itemMsg = {
+ addfav: {
+ 'display': (_browserData == 'addfav' ? ' style="display: none;"' : ''),
+ 'url': _addfav.url,
+ 'id': 'addFav',
+ 'retrn': ' onclick="return false;"',
+ 'content': _addfav.content || ' ',
+ 'botId': 'addFavBot',
+ 'botContent': _addfav.title
+ },
+ download: {
+ 'display': (_browserData == 'download' ? ' style="display: none;"' : ''),
+ 'url': _download.url,
+ 'id': 'shortCut',
+ 'retrn': '',
+ 'content': _download.content || ' ',
+ 'botId': 'shortCutBot',
+ 'botContent': '' +_download.title +' '
+ },
+ sethome: {
+ 'display': (_browserData == 'sethome' ? ' style="display: none;"' : ''),
+ 'url': _sethome.url,
+ 'id': 'setHome',
+ 'retrn': ' onclick="return false;"',
+ 'content': _sethome.content || ' ',
+ 'botId': 'setHomeBot',
+ 'botContent': _sethome.title
+ }
+ },
+ _tplGroup = '',
+ curObj = null,
+ wrap = $("#userbarBtnHd");
+
+for (var m = 0, n = _browser.length; m < n; m++) {
+ curObj = _browser[m];
+ _tplGroup += helper.replaceTpl(_itemTpl, _itemMsg[curObj]);
+}
+wrap.html(_tplGroup);
+
+//userbar buttons
+var userbarBtn = function () {
+ var bdy = $(document.body),
+ splt = wrap.find(".userbar_split");
+ var tmpObj = wrap.find(".userbar-btn-hd_item").filter(function(index) {
+ return $(this).css("display") == "none";
+ });
+
+ splt.last().remove();
+ if(tmpObj.next(".userbar_split").length) {
+ tmpObj.next(".userbar_split").css("display", "none");
+ } else {
+ tmpObj.prev(".userbar_split").css("display", "none");
+ }
+ splt = wrap.find(".userbar_split");
+
+ wrap.on("click", ".userbar-btn-hd_item-anchor, .userbar-btn-hd_item-tips p", function(e) {
+ var curTarget = $(this),
+ curAttr = curTarget.attr("id").replace(/Bot/, "");
+
+ if (/addFav/i.test(curAttr)) {
+ curTarget.addfav(_addfav.error, window.location.href);
+ } else if (/setHome/i.test(curAttr)) {
+ if (isShowFf && setFfHome) {
+ if (isRended) {
+
+ } else {
+ setFfHome.init(wrap, _ffCon);
+ isRended = true;
+ }
+ setFfHome.toggle({});
+ e.stopPropagation();
+ } else {
+ curTarget.sethome();
+ }
+ }
+ if (curTarget.get(0).tagName === "A") {
+ UT.send({
+ position: "sethp-btn",
+ sort: curAttr,
+ type: "click",
+ modId: "sethp-btn"
+ });
+ } else {
+ UT.send({
+ position: "sethp-btn",
+ ac: "b",
+ sort: curAttr,
+ type: "click",
+ modId: "sethp-btn"
+ });
+ }
+
+ });
+
+ $(".userbar-btn-hd_item", wrap).on("mouseenter", function() {
+ var obj = $(this);
+ obj.children(".userbar-btn-hd_item-tips").show();
+ obj.children(".userbar-btn-hd_item-anchor").addClass('module-mask');
+ if(bdy.hasClass("header-fixed-up")) {
+ obj.next(".userbar_split").css("visibility", "hidden");
+ obj.prev(".userbar_split").css("visibility", "hidden");
+ } else {
+ splt.css("visibility", "hidden");
+ }
+
+ }).on("mouseleave", function() {
+ var obj = $(this);
+ obj.children(".userbar-btn-hd_item-tips").hide();
+ obj.children(".userbar-btn-hd_item-anchor").removeClass('module-mask');
+ if(bdy.hasClass("header-fixed-up")) {
+ obj.next(".userbar_split").css("visibility", "visible");
+ obj.prev(".userbar_split").css("visibility", "visible");
+ } else {
+ splt.css("visibility", "visible");
+ }
+ });
+
+ $(window).load(function() {
+ if (isShowFf && ($("#setHome", wrap).length > 0) && setFfHome && !isRended) {
+ setFfHome.init(wrap, _ffCon);
+ isRended = true;
+ }
+ });
+};
+module.exports = userbarBtn;
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/userbar-btn-header.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/userbar-btn-header.tpl
new file mode 100755
index 000000000..f49bba1aa
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-header/userbar-btn-header.tpl
@@ -0,0 +1,54 @@
+<%style%>
+<%if $head.dir=='ltr'%>
+@import url('/widget/header/userbar-btn-header/ltr-s/ltr.css?__inline');
+<%else%>
+@import url('/widget/header/userbar-btn-header/rtl-s/rtl.css?__inline');
+<%/if%>
+<%/style%>
+
+<%* 声明对ltr/rtl的css依赖 *%>
+<%if $head.dir=='ltr'%>
+<%require name="common:widget/header/userbar-btn-header/ltr-s/ltr.more.css"%>
+<%else%>
+<%require name="common:widget/header/userbar-btn-header/rtl-s/rtl.more.css"%>
+<%/if%>
+
+ <%if strpos($smarty.server["HTTP_USER_AGENT"], "MSIE")%>
+ <%assign var="browser" value=$body.userbarBtn.ie%>
+ <%assign var="browserData" value=$body.headerTest.userbarBtn.ie%>
+ <%elseif strpos($smarty.server["HTTP_USER_AGENT"], "Firefox")%>
+ <%assign var="browser" value=$body.userbarBtn.firefox%>
+ <%assign var="browserData" value=$body.headerTest.userbarBtn.firefox%>
+ <%else%>
+ <%assign var="browser" value=$body.userbarBtn.chrome%>
+ <%assign var="browserData" value=$body.headerTest.userbarBtn.chrome%>
+ <%/if%>
+
+
+ <%script%>
+ conf.userbarBtnHd = {
+ browser: <%json_encode($browser)%>,
+ browserData: '<%$browserData%>',
+ addfav: {
+ 'content': '<%$body.addFav.content%>',
+ 'title': '<%$body.addFav.title%>',
+ 'url': '<%$body.addFav.url%>',
+ 'error': '<%$body.addFav.error%>'
+ },
+ download: {
+ 'content': '<%$body.download.content%>',
+ 'title': '<%$body.download.title%>',
+ 'url': '<%$body.download.url%>'
+ },
+ sethome: {
+ 'content': '<%$body.setHome.content%>',
+ 'title': '<%$body.setHome.title%>',
+ 'url': '<%$body.setHome.url%>'
+ },
+ isSetHomeFf: <%if $body.headerTest.userbarBtn.firefox === "sethome"%>'0'<%else%>'1'<%/if%>
+ };
+ conf.setHomeOnFf ||(conf.setHomeOnFf = <%json_encode($body.setHomeOnFf)%>);
+ require.async(["common:widget/header/userbar-btn-header/userbar-btn-header-async.js"],function(userbarBtn){
+ userbarBtn();
+ });
+ <%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/1/addfav-1-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/1/addfav-1-hover.png
new file mode 100755
index 000000000..85d993dd4
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/1/addfav-1-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/1/addfav-1.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/1/addfav-1.png
new file mode 100755
index 000000000..117a2fc93
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/1/addfav-1.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/1/down-1-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/1/down-1-hover.png
new file mode 100755
index 000000000..19d26bd9e
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/1/down-1-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/1/down-1.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/1/down-1.png
new file mode 100755
index 000000000..a42e28d11
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/1/down-1.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/1/setHome-1-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/1/setHome-1-hover.png
new file mode 100755
index 000000000..279bf361f
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/1/setHome-1-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/1/setHome-1.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/1/setHome-1.png
new file mode 100755
index 000000000..e2f826ed4
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/1/setHome-1.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/2/addfav-2-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/2/addfav-2-hover.png
new file mode 100755
index 000000000..df9bef6be
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/2/addfav-2-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/2/addfav-2.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/2/addfav-2.png
new file mode 100755
index 000000000..396c944c8
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/2/addfav-2.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/2/down-2-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/2/down-2-hover.png
new file mode 100755
index 000000000..c07c69111
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/2/down-2-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/2/down-2.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/2/down-2.png
new file mode 100755
index 000000000..c7775cf55
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/2/down-2.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/2/setHome-2-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/2/setHome-2-hover.png
new file mode 100755
index 000000000..90d342c86
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/2/setHome-2-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/2/setHome-2.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/2/setHome-2.png
new file mode 100755
index 000000000..30335fe55
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/2/setHome-2.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/3/addfav-3-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/3/addfav-3-hover.png
new file mode 100755
index 000000000..138671f50
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/3/addfav-3-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/3/addfav-3.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/3/addfav-3.png
new file mode 100755
index 000000000..8b47758e3
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/3/addfav-3.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/3/down-3-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/3/down-3-hover.png
new file mode 100755
index 000000000..a8cc3012c
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/3/down-3-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/3/down-3.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/3/down-3.png
new file mode 100755
index 000000000..bff017a74
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/3/down-3.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/3/setHome-3-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/3/setHome-3-hover.png
new file mode 100755
index 000000000..560429c35
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/3/setHome-3-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/3/setHome-3.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/3/setHome-3.png
new file mode 100755
index 000000000..a73842a98
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/3/setHome-3.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/addfav.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/addfav.png
new file mode 100755
index 000000000..0475ba20e
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/addfav.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/down.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/down.png
new file mode 100755
index 000000000..7d5fff021
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/down.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/setHome.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/setHome.png
new file mode 100755
index 000000000..4bc1de01e
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/img/setHome.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/ltr-s/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/ltr-s/ltr.css
new file mode 100755
index 000000000..6c87d82c2
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/ltr-s/ltr.css
@@ -0,0 +1,28 @@
+.userbar-btns{ visibility: hidden;display: none;}
+
+body .box-search_hsrch {
+ width: 582px;
+ margin-left: 168px;
+}
+body .box-search_tab {
+ margin-left: 170px;
+}
+body .box-search_form .radios label {
+ padding-left: 24px;
+}
+body .box-search {
+ margin-left: 22px;
+}
+body .sug-search, body .baidu_sug, body .baidu_video_sug {
+ width: 490px;
+}
+body .box-search .box-search_form .input input {
+ width: 480px;
+}
+body .box-search .box-search_form .input {
+ margin-left: 9px;
+}
+/* For 1020px layout */
+/* body.l-1020 .box-search{
+ margin-left: 26px;
+} */
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/ltr-s/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/ltr-s/ltr.more.css
new file mode 100755
index 000000000..d100e47ad
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/ltr-s/ltr.more.css
@@ -0,0 +1,127 @@
+
+.userbar-btns {
+ height: 28px;
+ font-size: 12px;
+ color: #676767;
+ visibility: visible !important;
+ background-color: #F5F5F5;
+ border: 1px solid #D2D2D2;
+ width: 170px;
+ /*overflow: hidden;*/
+}
+.userbar-btns a {
+ color: #676767;
+ float: left;
+ overflow: hidden;
+ width: 100%;
+ height: 100%;
+}
+.userbar-btns i {
+ display: block;
+ width: 20px;
+ height: 20px;
+ margin: 4px auto 0;
+}
+.userbar-btns .userbar-btns-content {
+ width: 140px;
+ height: 28px;
+ line-height: 28px;
+ float: right;
+ text-align: center;
+ white-space: nowrap;
+ overflow: hidden;
+ font-size: 13px;
+}
+.userbar-btns .userbar-btns-icon {
+ float: left;
+ width: 28px;
+ height: 28px;
+ text-align: center;
+ line-height: 28px;
+ border-right: 1px solid #D2D2D2;
+ background-color: #ECEDEC;
+}
+.userbar-btns .userbar-btns-icon:hover {
+ background-color: #F1F1F1;
+}
+.userbar-btns .userbar-btns-sethome {
+ background: url(../img/1/setHome-1.png?__sprite) no-repeat;
+}
+.userbar-btns .userbar-btns-addfav {
+ background: url(../img/1/addfav-1.png?__sprite) no-repeat;
+}
+.userbar-btns .userbar-btns-down {
+ background: url(../img/1/down-1.png?__sprite) no-repeat;
+}
+.userbar-btns-icon:hover .userbar-btns-sethome {
+ background: url(../img/1/setHome-1-hover.png?__sprite) no-repeat;
+}
+.userbar-btns-icon:hover .userbar-btns-addfav {
+ background: url(../img/1/addfav-1-hover.png?__sprite) no-repeat;
+}
+.userbar-btns-icon:hover .userbar-btns-down {
+ background: url(../img/1/down-1-hover.png?__sprite) no-repeat;
+}
+/*
+.body-theme_2 .userbar-btns .userbar-btns-sethome {
+ background: url(../img/2/setHome-2.png?__sprite) no-repeat;
+}
+.body-theme_2 .userbar-btns .userbar-btns-addfav {
+ background: url(../img/2/addfav-2.png?__sprite) no-repeat;
+}
+.body-theme_2 .userbar-btns .userbar-btns-down {
+ background: url(../img/2/down-2.png?__sprite) no-repeat;
+}
+.body-theme_2 .userbar-btns-icon:hover .userbar-btns-sethome {
+ background: url(../img/2/setHome-2-hover.png?__sprite) no-repeat;
+}
+.body-theme_2 .userbar-btns-icon:hover .userbar-btns-addfav {
+ background: url(../img/2/addfav-2-hover.png?__sprite) no-repeat;
+}
+.body-theme_2 .userbar-btns-icon:hover .userbar-btns-down {
+ background: url(../img/2/down-2-hover.png?__sprite) no-repeat;
+}
+
+.body-theme_3 .userbar-btns .userbar-btns-sethome {
+ background: url(../img/3/setHome-3.png?__sprite) no-repeat;
+}
+.body-theme_3 .userbar-btns .userbar-btns-addfav {
+ background: url(../img/3/addfav-3.png?__sprite) no-repeat;
+}
+.body-theme_3 .userbar-btns .userbar-btns-down {
+ background: url(../img/3/down-3.png?__sprite) no-repeat;
+}
+.body-theme_3 .userbar-btns-icon:hover .userbar-btns-sethome {
+ background: url(../img/3/setHome-3-hover.png?__sprite) no-repeat;
+}
+.body-theme_3 .userbar-btns-icon:hover .userbar-btns-addfav {
+ background: url(../img/3/addfav-3-hover.png?__sprite) no-repeat;
+}
+.body-theme_3 .userbar-btns-icon:hover .userbar-btns-down {
+ background: url(../img/3/down-3-hover.png?__sprite) no-repeat;
+}*/
+
+body .mod-ff-sethome1 {
+ z-index: 402;
+ right: -2px;
+ top: 30px;
+ padding-top: 8px;
+ width: 180px;
+}
+body .mod-ff-sethome1 .ui-bubble_in, body .mod-ff-sethome1 .ui-bubble_out {
+ left: auto;
+ right: 36px;
+}
+.mod-ff-sethome1 a {
+ float: none;
+ overflow: visible;
+ width: auto;
+ height: auto;
+}
+.mod-ff-sethome1 .ui-bubble_close {
+ position: absolute;
+ left: auto;
+ right: 0;
+ margin-right: 0;
+ margin-left: -10px;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/rtl-s/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/rtl-s/rtl.css
new file mode 100755
index 000000000..632f9acc8
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/rtl-s/rtl.css
@@ -0,0 +1,30 @@
+.userbar-btns{visibility: hidden;display: none;}
+
+body .box-search_hsrch {
+ width: 582px;
+ margin-right: 168px;
+}
+body .box-search_tab {
+ margin-right: 170px;
+}
+body .box-search_form .radios label {
+ padding-right: 24px;
+}
+
+body .box-search {
+ margin-right: 22px;
+}
+body .sug-search, body .baidu_sug, body .baidu_video_sug {
+ width: 487px;
+ right: -1px;
+}
+body .baidu_sug,
+body .baidu_video_sug {
+ right: 0;
+}
+body .box-search .box-search_form .input input {
+ width: 450px;
+}
+body .box-search .box-search_form .input {
+ margin-right: 9px;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/rtl-s/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/rtl-s/rtl.more.css
new file mode 100755
index 000000000..03ff3820a
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/rtl-s/rtl.more.css
@@ -0,0 +1,122 @@
+
+.userbar-btns {
+ height: 28px;
+ font-size: 12px;
+ color: #676767;
+ visibility: visible !important;
+ background-color: #F5F5F5;
+ border: 1px solid #D2D2D2;
+ width: 170px;
+ /* overflow: hidden;*/
+}
+.userbar-btns a {
+ color: #676767;
+ float: right;
+ overflow: hidden;
+ width: 100%;
+ height: 100%;
+}
+.userbar-btns i {
+ display: block;
+ width: 20px;
+ height: 20px;
+ margin: 4px auto 0;
+}
+.userbar-btns .userbar-btns-content {
+ width: 140px;
+ height: 28px;
+ line-height: 28px;
+ float: left;
+ text-align: center;
+ white-space: nowrap;
+ overflow: hidden;
+ font-size: 13px;
+}
+.userbar-btns .userbar-btns-icon {
+ float: right;
+ width: 28px;
+ height: 28px;
+ text-align: center;
+ line-height: 28px;
+ border-left: 1px solid #D2D2D2;
+ background-color: #ECEDEC;
+}
+.userbar-btns .userbar-btns-icon:hover {
+ background-color: #F1F1F1;
+}
+.userbar-btns .userbar-btns-sethome {
+ background: url(../img/1/setHome-1.png?__sprite) no-repeat;
+}
+.userbar-btns .userbar-btns-addfav {
+ background: url(../img/1/addfav-1.png?__sprite) no-repeat;
+}
+.userbar-btns .userbar-btns-down {
+ background: url(../img/1/down-1.png?__sprite) no-repeat;
+}
+.userbar-btns-icon:hover .userbar-btns-sethome {
+ background: url(../img/1/setHome-1-hover.png?__sprite) no-repeat;
+}
+.userbar-btns-icon:hover .userbar-btns-addfav {
+ background: url(../img/1/addfav-1-hover.png?__sprite) no-repeat;
+}
+.userbar-btns-icon:hover .userbar-btns-down {
+ background: url(../img/1/down-1-hover.png?__sprite) no-repeat;
+}
+/*
+.body-theme_2 .userbar-btns .userbar-btns-sethome {
+ background: url(../img/2/setHome-2.png?__sprite) no-repeat;
+}
+.body-theme_2 .userbar-btns .userbar-btns-addfav {
+ background: url(../img/2/addfav-2.png?__sprite) no-repeat;
+}
+.body-theme_2 .userbar-btns .userbar-btns-down {
+ background: url(../img/2/down-2.png?__sprite) no-repeat;
+}
+.body-theme_2 .userbar-btns-icon:hover .userbar-btns-sethome {
+ background: url(../img/2/setHome-2-hover.png?__sprite) no-repeat;
+}
+.body-theme_2 .userbar-btns-icon:hover .userbar-btns-addfav {
+ background: url(../img/2/addfav-2-hover.png?__sprite) no-repeat;
+}
+.body-theme_2 .userbar-btns-icon:hover .userbar-btns-down {
+ background: url(../img/2/down-2-hover.png?__sprite) no-repeat;
+}
+
+.body-theme_3 .userbar-btns .userbar-btns-sethome {
+ background: url(../img/3/setHome-3.png?__sprite) no-repeat;
+}
+.body-theme_3 .userbar-btns .userbar-btns-addfav {
+ background: url(../img/3/addfav-3.png?__sprite) no-repeat;
+}
+.body-theme_3 .userbar-btns .userbar-btns-down {
+ background: url(../img/3/down-3.png?__sprite) no-repeat;
+}
+.body-theme_3 .userbar-btns-icon:hover .userbar-btns-sethome {
+ background: url(../img/3/setHome-3-hover.png?__sprite) no-repeat;
+}
+.body-theme_3 .userbar-btns-icon:hover .userbar-btns-addfav {
+ background: url(../img/3/addfav-3-hover.png?__sprite) no-repeat;
+}
+.body-theme_3 .userbar-btns-icon:hover .userbar-btns-down {
+ background: url(../img/3/down-3-hover.png?__sprite) no-repeat;
+}*/
+
+body .mod-ff-sethome1 {
+ z-index: 402;
+ left: -2px;
+ top: 30px;
+ padding-top: 8px;
+ width: 180px;
+}
+body .mod-ff-sethome1 .ui-bubble_in, body .mod-ff-sethome1 .ui-bubble_out {
+ left: 36px;
+}
+.mod-ff-sethome1 .ui-bubble_close {
+ position: absolute;
+}
+.mod-ff-sethome1 a {
+ float: none;
+ overflow: visible;
+ width: auto;
+ height: auto;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/userbar-btn-test-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/userbar-btn-test-async.js
new file mode 100755
index 000000000..357702582
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/userbar-btn-test-async.js
@@ -0,0 +1,65 @@
+/*
+* User Bar Buttons
+* V2.1.0
+*/
+
+var $ = require("common:widget/ui/jquery/jquery.js");
+require("common:widget/ui/jquery/widget/jquery.sethome/jquery.sethome.js");
+require("common:widget/ui/jquery/widget/jquery.addfav/jquery.addfav.js");
+
+var isFirefox = /firefox/.test(navigator.userAgent.toLowerCase()),
+ _FfCon = conf.setHomeOnFf,
+ isShowFf = (isFirefox && _FfCon && (_FfCon.isHidden === "0") && (conf.userbarBtn.isSetHomeFf === "1")),
+ setFfHome = null,
+ isRended = false;
+
+if (isShowFf) {
+ require.async("common:widget/ui/sethome-ff/sethome-ff-c.js", function(init) {
+ setFfHome = init;
+ _FfCon.num = 1;
+ });
+}
+
+//userbar buttons
+var userbarBtn = function() {
+ var _conf = conf.userbarBtn,
+ wrap = $("#userbarBtn"),
+ curTarget,
+ curAttr;
+
+ wrap.on("click", "a", function(e) {
+ curTarget = $(this);
+ curAttr = curTarget.attr("id");
+ if (/addFav/i.test(curAttr)) {
+ curTarget.addfav(_conf.addFavText, window.location.href);
+ } else if (/setHome/i.test(curAttr)) {
+ if (isShowFf && setFfHome) {
+ if (isRended) {
+
+ } else {
+ setFfHome.init(wrap, _FfCon);
+ isRended = true;
+ }
+ setFfHome.toggle({});
+ e.stopPropagation();
+ } else {
+ curTarget.sethome();
+ }
+ }
+
+ UT.send({
+ position: "sethp-btn",
+ sort: curAttr.replace(/02/, ""),
+ type: "click",
+ modId: "sethp-btn"
+ });
+ });
+
+ $(window).load(function() {
+ if (isShowFf && ($("#setHome02", wrap).length > 0) && setFfHome && !isRended) {
+ setFfHome.init(wrap, _FfCon);
+ isRended = true;
+ }
+ });
+};
+module.exports = userbarBtn;
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/userbar-btn-test.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/userbar-btn-test.tpl
new file mode 100755
index 000000000..1ea69762a
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn-test/userbar-btn-test.tpl
@@ -0,0 +1,59 @@
+<%style%>
+<%if $head.dir=='ltr'%>
+@import url('/widget/header/userbar-btn-test/ltr-s/ltr.css?__inline');
+<%else%>
+@import url('/widget/header/userbar-btn-test/rtl-s/rtl.css?__inline');
+<%/if%>
+<%/style%>
+
+<%* 声明对ltr/rtl的css依赖 *%>
+<%if $head.dir=='ltr'%>
+<%require name="common:widget/header/userbar-btn-test/ltr-s/ltr.more.css"%>
+<%else%>
+<%require name="common:widget/header/userbar-btn-test/rtl-s/rtl.more.css"%>
+<%/if%>
+
+<%if strpos($smarty.server["HTTP_USER_AGENT"], "MSIE")%>
+ <%assign var="browser" value=$body.headerTest.userbarBtn.ie%>
+<%elseif strpos($smarty.server["HTTP_USER_AGENT"], "Firefox")%>
+ <%assign var="browser" value=$body.headerTest.userbarBtn.firefox%>
+<%else%>
+ <%assign var="browser" value=$body.headerTest.userbarBtn.chrome%>
+<%/if%>
+
+
+<%script%>
+conf.userbarBtn = {
+ <%if !empty($body.userbarBtn.maxSpanWidth)%>maxSpanWidth: '<%$body.userbarBtn.maxSpanWidth%>',<%/if%>
+ addFavText: '<%$body.addFav.error%>',
+ isSetHomeFf: <%if $body.headerTest.userbarBtn.firefox === "sethome"%>'1'<%else%>'0'<%/if%>
+};
+conf.setHomeOnFf ||(conf.setHomeOnFf = <%json_encode($body.setHomeOnFf)%>);
+
+require.async(["common:widget/header/userbar-btn-test/userbar-btn-test-async.js"],function(init){
+ init();
+});
+<%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/img/bg-userbar.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/img/bg-userbar.png
new file mode 100755
index 000000000..7f25ffbb4
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/img/bg-userbar.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/img/i-addfav-click.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/img/i-addfav-click.png
new file mode 100755
index 000000000..3eac45ebb
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/img/i-addfav-click.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/img/i-addfav-new.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/img/i-addfav-new.png
new file mode 100755
index 000000000..ed612f2a0
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/img/i-addfav-new.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/img/i-addfav.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/img/i-addfav.png
new file mode 100755
index 000000000..62e54753a
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/img/i-addfav.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/img/i-down-click.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/img/i-down-click.png
new file mode 100755
index 000000000..6573344ba
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/img/i-down-click.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/img/i-down-new.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/img/i-down-new.png
new file mode 100755
index 000000000..d610ede3a
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/img/i-down-new.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/img/i-down.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/img/i-down.png
new file mode 100755
index 000000000..fa37f379e
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/img/i-down.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/img/i-sethome-click.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/img/i-sethome-click.png
new file mode 100755
index 000000000..d95ef43e7
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/img/i-sethome-click.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/img/i-sethome-new.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/img/i-sethome-new.png
new file mode 100755
index 000000000..a43059eaa
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/img/i-sethome-new.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/img/i-sethome.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/img/i-sethome.png
new file mode 100755
index 000000000..f7191306e
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/img/i-sethome.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/ltr/ltr.css
new file mode 100755
index 000000000..c084424ab
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/ltr/ltr.css
@@ -0,0 +1,3 @@
+.userbar-btn{ visibility: hidden;}
+.userbar-btn .userbar-btn-item { width: 9px;}
+.userbar-btn i {width: 19px;}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/ltr/ltr.more.css
new file mode 100755
index 000000000..bc41eba3b
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/ltr/ltr.more.css
@@ -0,0 +1,87 @@
+.userbar-btn {
+ float: right;
+ clear: both;
+ width: 220px;
+ font-size: 12px;
+ visibility: visible !important;
+ position: relative;
+ z-index: 2;
+}
+.userbar-btn .userbar-btn-item {
+ float: right;
+ margin-right: 1px;
+ background: #00ad73;
+ height: 18px;
+ line-height: 20px;
+ padding: 0 7px 0 2px;
+ color: #fff;
+ border: 1px solid #009e69;
+ text-decoration: none;
+ width: 9px;
+ overflow: hidden;
+ white-space: nowrap;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -o-border-radius: 2px;
+ border-radius: 2px;
+ transition: width .4s ease;
+ -webkit-transition: width .4s ease;
+ -moz-transition: width .4s ease;
+ cursor: pointer;
+}
+/*.userbar-btn a#setHome {
+ width: auto;
+}*/
+body .userbar-btn .userbar-btn_click {
+ background-position: 0 -578px;
+}
+.userbar-btn i {
+ width: 19px;
+ height: 18px;
+ display: inline-block;
+ float: left;
+}
+.userbar-btn span {
+ display: inline-block;
+ line-height: 18px;
+ overflow: hidden;
+ *overflow: inherit;
+}
+
+.userbar-btn .userbar-sethome {
+ background: url(../img/i-sethome-new.png?__sprite) no-repeat;
+}
+.userbar-btn .userbar-addfav {
+ background: url(../img/i-addfav-new.png?__sprite) no-repeat;
+}
+.userbar-btn .userbar-down {
+ background: url(../img/i-down-new.png?__sprite) no-repeat;
+}
+/*.userbar-btn .userbar-btn_click .userbar-sethome {
+ background: url(../img/i-sethome-click.png) no-repeat;
+}
+.userbar-btn .userbar-btn_click .userbar-addfav {
+ background: url(../img/i-addfav-click.png) no-repeat;
+}
+.userbar-btn .userbar-btn_click .userbar-down {
+ background: url(../img/i-down-click.png) no-repeat;
+}*/
+
+body .mod-ff-sethome2 {
+ z-index: 402;
+ right: 4px;
+ top: 24px;
+ padding-top: 8px;
+ width: 180px;
+}
+body .mod-ff-sethome2 .ui-bubble_in, body .mod-ff-sethome2 .ui-bubble_out {
+ left: auto;
+ right: 36px;
+}
+.mod-ff-sethome2 .ui-bubble_close {
+ position: absolute;
+ left: auto;
+ right: 0;
+ margin-right: 0;
+ margin-left: -10px;
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/rtl/rtl.css
new file mode 100755
index 000000000..803071d55
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/rtl/rtl.css
@@ -0,0 +1,3 @@
+.userbar-btn{visibility: hidden;}
+.userbar-btn .userbar-btn-item { width: 9px;}
+.userbar-btn i {width: 19px;}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/rtl/rtl.more.css
new file mode 100755
index 000000000..76496506e
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/rtl/rtl.more.css
@@ -0,0 +1,89 @@
+.userbar-btn {
+ float: left;
+ clear: both;
+ width: 220px;
+ font-size: 12px;
+ visibility: visible !important;
+ position: relative;
+ z-index: 2;
+}
+.userbar-btn .userbar-btn-item {
+ float: left;
+ margin-right: 1px;
+ background: #00ad73;
+ height: 18px;
+ line-height: 20px;
+ padding: 0 2px 0 7px;
+ color: #fff;
+ border: 1px solid #009e69;
+ /*border-right: 1px solid #edf1f5\0;*/
+ text-decoration: none;
+ width: 9px;
+ overflow: hidden;
+ white-space: nowrap;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -o-border-radius: 2px;
+ border-radius: 2px;
+ transition: width .4s ease;
+ -webkit-transition: width .4s ease;
+ -moz-transition: width .4s ease;
+ cursor: pointer;
+}
+/*.userbar-btn a#setHome {
+ width: auto;
+}*/
+body .userbar-btn .userbar-btn_click {
+ background-position: 0 -578px;
+}
+.userbar-btn i {
+ width: 19px;
+ height: 18px;
+ display: inline-block;
+
+}
+.userbar-btn span {
+ display: inline-block;
+ line-height: 18px;
+ vertical-align: top;
+ overflow: hidden;
+ *overflow: inherit;
+}
+.userbar-btn .userbar-sethome {
+ background-image:url(../img/i-sethome-new.png?__sprite);
+ background-repeat:no-repeat;
+ background-position: 5px 0;
+}
+.userbar-btn .userbar-addfav {
+ background-image:url(../img/i-addfav-new.png?__sprite);
+ background-repeat:no-repeat;
+ background-position: 5px 0;
+}
+.userbar-btn .userbar-down {
+ background-image:url(../img/i-down-new.png?__sprite);
+ background-repeat:no-repeat;
+ background-position: 5px 0;
+}
+/*.userbar-btn .userbar-btn_click .userbar-sethome {
+ background: url(../img/i-sethome-click.png) no-repeat;
+}
+.userbar-btn .userbar-btn_click .userbar-addfav {
+ background: url(../img/i-addfav-click.png) no-repeat;
+}
+.userbar-btn .userbar-btn_click .userbar-down {
+ background: url(../img/i-down-click.png) no-repeat;
+}*/
+
+body .mod-ff-sethome2 {
+ z-index: 402;
+ left: 4px;
+ top: 24px;
+ padding-top: 8px;
+ width: 180px;
+}
+body .mod-ff-sethome2 .ui-bubble_in, body .mod-ff-sethome2 .ui-bubble_out {
+ left: 36px;
+}
+.mod-ff-sethome2 .ui-bubble_close {
+ position: absolute;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/userbar-btn-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/userbar-btn-async.js
new file mode 100755
index 000000000..9dcbcd6e7
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/userbar-btn-async.js
@@ -0,0 +1,105 @@
+/*
+* User Bar Buttons
+* V2.0.0
+*/
+
+var $ = require("common:widget/ui/jquery/jquery.js");
+require("common:widget/ui/jquery/widget/jquery.sethome/jquery.sethome.js");
+require("common:widget/ui/jquery/widget/jquery.addfav/jquery.addfav.js");
+
+var isFirefox = /firefox/.test(navigator.userAgent.toLowerCase()),
+ _FfCon = conf.setHomeOnFf,
+ isShowFf = (isFirefox && _FfCon && (_FfCon.isHidden === "0")),
+ setFfHome = null,
+ isRended = false;
+
+if (isShowFf) {
+ require.async("common:widget/ui/sethome-ff/sethome-ff-c.js", function(init) {
+ setFfHome = init;
+ _FfCon.num = 2;
+ });
+}
+
+//userbar buttons
+Gl.userbarBtn = function () {
+ var wrap = $("#userbarBtnOld"),
+ setHomeBtn = $("#setHome"),
+ addFavBtn = $("#addFav"),
+ buttons = wrap.children("a"),
+ _conf = conf.userbarBtn,
+ // cur = type === "index" ? $("#setHome") : $("#addFav"),
+ cur = buttons.eq(-1),
+ iconWidth = $("i", cur).width(),
+
+
+ // closeWidth = cur[0].clientWidth - $("span", cur)[0].offsetWidth - iconWidth,
+ closeWidth = buttons.eq(0).width(),
+ maxWidth = parseInt(conf.userbarBtn.maxSpanWidth) + iconWidth + 3,//normal width, add 3px to fix blank issue in IE6
+
+ matchTagName = function(el, tagName) {
+ el = el.parentNode.tagName === tagName ? el.parentNode : el;
+ return el.tagName === tagName ? el : null;
+ },
+
+ fold = function(el) {
+ if(!el || el.clientWidth - $("i", cur)[0].offsetWidth > closeWidth) return;
+ el = $(el);
+ cur.width(closeWidth);
+ //reset to normal width, add 3px to fix blank issue in IE6
+ if(conf.userbarBtn.maxSpanWidth){
+ el.width(maxWidth);
+ }else{
+ el.width($("span", el)[0].offsetWidth + iconWidth + 3);
+ }
+
+ cur = el;
+ };
+
+ buttons.on("mouseenter", function (e) {
+ fold(matchTagName(this, "A"));
+ });
+
+ buttons.on("mousedown", function () {
+ $(this).addClass("userbar-btn_click");
+ });
+
+ buttons.on("mouseup", function () {
+ $(this).removeClass("userbar-btn_click");
+ });
+
+ buttons.on("mouseout", function () {
+ $(this).removeClass("userbar-btn_click");
+ });
+
+ setHomeBtn.on("click", function (e) {
+ if (isShowFf && setFfHome) {
+ if (isRended) {
+
+ } else {
+ setFfHome.init(wrap, _FfCon);
+ isRended = true;
+ }
+ setFfHome.toggle({});
+ e.stopPropagation();
+ } else {
+ $(this).sethome();
+ }
+ });
+
+ addFavBtn.on("click", function () {
+ $(this).addfav(_conf.addFavText, window.location.href)
+ });
+
+ $(window).load(function() {
+ if (isShowFf && setFfHome && !isRended) {
+ setFfHome.init(wrap, _FfCon);
+ isRended = true;
+ }
+ });
+
+ if(conf.userbarBtn.maxSpanWidth){
+ cur.width(maxWidth);
+ } else {
+ cur.width("auto");
+ }
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/userbar-btn.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/userbar-btn.tpl
new file mode 100755
index 000000000..64ad99c4a
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/userbar-btn/userbar-btn.tpl
@@ -0,0 +1,61 @@
+<%style%>
+<%if $head.dir=='ltr'%>
+@import url('/widget/header/userbar-btn/ltr/ltr.css?__inline');
+<%else%>
+@import url('/widget/header/userbar-btn/rtl/rtl.css?__inline');
+<%/if%>
+<%/style%>
+
+<%* 声明对ltr/rtl的css依赖 *%>
+<%if $head.dir=='ltr'%> <%require name="common:widget/header/userbar-btn/ltr/ltr.more.css"%> <%else%> <%require name="common:widget/header/userbar-btn/rtl/rtl.more.css"%> <%/if%>
+
+ <%if strpos($smarty.server["HTTP_USER_AGENT"], "MSIE")%>
+ <%assign var="browser" value=$body.userbarBtn.ie%>
+ <%elseif strpos($smarty.server["HTTP_USER_AGENT"], "Firefox")%>
+ <%assign var="browser" value=$body.userbarBtn.firefox%>
+ <%else%>
+ <%assign var="browser" value=$body.userbarBtn.chrome%>
+ <%/if%>
+
+ <%script%>
+ conf.userbarBtn = {
+ <%if !empty($body.userbarBtn.maxSpanWidth)%>maxSpanWidth: '<%$body.userbarBtn.maxSpanWidth%>',<%/if%>
+ addFavText: '<%$body.addFav.error%>'
+ };
+ conf.setHomeOnFf ||(conf.setHomeOnFf = <%json_encode($body.setHomeOnFf)%>);
+
+ require.async("common:widget/ui/jquery/jquery.js", function($) {
+ $(window).one("e_go.userbarbtn", function () {
+ require.async("common:widget/header/userbar-btn/userbar-btn-async.js", function () {
+ Gl.userbarBtn();
+ });
+ });
+
+ $(function () {
+ $(window).trigger("e_go.userbarbtn");
+ });
+
+ $(".userbar-btn").one("mouseenter", function () {
+ $(window).trigger("e_go.userbarbtn");
+ });
+ });
+ <%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/ae/ae.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/ae/ae.tpl
new file mode 100755
index 000000000..76a0d4d19
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/ae/ae.tpl
@@ -0,0 +1,18 @@
+<%script%>
+ require.async("common:widget/ui/jquery/jquery.js", function($) {
+ $(window).one("e_go.weather", function () {
+ require.async("common:widget/ui/weather/weather.js", function (Gl) {
+ Gl.weather.init(__uri('./weather-city.json'));
+ });
+ });
+
+ $(function () {
+ $(window).trigger("e_go.weather");
+ });
+
+ $("#weather").one("mouseenter", function () {
+ $(window).trigger("e_go.weather");
+ });
+ });
+<%/script%>
+<%require name="common:widget/ui/weather/`$country`/`$country`.js" async="true" %>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/ae/weather-city.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/ae/weather-city.json
new file mode 100755
index 000000000..347e3dd1d
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/ae/weather-city.json
@@ -0,0 +1,43 @@
+{
+ "9-127164_1_AL": "Cairo",
+ "6-207321_1_AL": "Alexandria",
+ "12-127047_1_AL": "El-Giza",
+ "4-130201_1_AL": "Luxor",
+ "6-127335_1_AL": "Zagazig",
+ "5-127358_1_AL": "Aswan",
+ "15-126919_1_AL": "El Fayoum",
+ "126996": "Ismailia",
+ "7-127484_1_AL": "Port Said",
+ "5-127330_1_AL": "Suez",
+ "3-127049_1_AL": "Shibin el-Kom",
+ "3-126883_1_AL": "Hurghada",
+ "129332": "Mersa Matruh",
+ "4-297030_1_AL": "Riyadh",
+ "3-299429_1_AL": "Jeddah",
+ "3-299427_1_AL": "Mecca",
+ "5-296807_1_AL": "Medina",
+ "4-321626_1_AL": "Abu Dhabi",
+ "323091": "Dubai",
+ "8-1280745_1_AL": "Fujairah",
+ "2-245072_1_AL": "Rabat",
+ "4-6368_1_AL": "Tangier",
+ "2-243353_1_AL": "Casablanca",
+ "3-244231_1_AL": "Marrakech",
+ "1135733": "Tunis",
+ "320522": "Sfax",
+ "317198": "Bizerte",
+ "1888491": "Algiers",
+ "2115": "Annaba",
+ "3-227342_1_AL": "Beirut",
+ "3-230555_1_AL": "Tripoli",
+ "3-314446_1_AL": "Damascus",
+ "3-313468_1_AL": "Aleppo",
+ "1-313556_1_AL": "Hims",
+ "13-222056_1_AL": "Kuwait City",
+ "4-271669_1_AL": "Doha",
+ "6-29687_1_AL": "Al Manama",
+ "3-258638_1_AL": "Muscat",
+ "4-258843_1_AL": "Khassab",
+ "2-221790_1_AL": "Amman",
+ "14-221898_1_AL": "Al Aqabah"
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/ar/ar.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/ar/ar.tpl
new file mode 100755
index 000000000..76a0d4d19
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/ar/ar.tpl
@@ -0,0 +1,18 @@
+<%script%>
+ require.async("common:widget/ui/jquery/jquery.js", function($) {
+ $(window).one("e_go.weather", function () {
+ require.async("common:widget/ui/weather/weather.js", function (Gl) {
+ Gl.weather.init(__uri('./weather-city.json'));
+ });
+ });
+
+ $(function () {
+ $(window).trigger("e_go.weather");
+ });
+
+ $("#weather").one("mouseenter", function () {
+ $(window).trigger("e_go.weather");
+ });
+ });
+<%/script%>
+<%require name="common:widget/ui/weather/`$country`/`$country`.js" async="true" %>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/ar/weather-city.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/ar/weather-city.json
new file mode 100755
index 000000000..e11cbbe84
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/ar/weather-city.json
@@ -0,0 +1,43 @@
+{
+ "9-127164_1_AL": "\u0627\u0644\u0642\u0627\u0647\u0631\u0629",
+ "6-207321_1_AL": "\u0627\u0644\u0627\u0633\u0643\u0646\u062f\u0631\u064a\u0629",
+ "12-127047_1_AL": "\u0627\u0644\u062c\u064a\u0632\u0629",
+ "4-130201_1_AL": "\u0627\u0644\u0623\u0642\u0635\u0631",
+ "6-127335_1_AL": "\u0627\u0644\u0632\u0642\u0627\u0632\u064a\u0642",
+ "5-127358_1_AL": "\u0623\u0633\u0648\u0627\u0646",
+ "15-126919_1_AL": "\u0627\u0644\u0641\u064a\u0648\u0645",
+ "126996": "\u0627\u0644\u0627\u0633\u0645\u0627\u0639\u064a\u0644\u064a\u0629",
+ "7-127484_1_AL": "\u0628\u0648\u0631 \u0633\u0639\u064a\u062f",
+ "5-127330_1_AL": "\u0627\u0644\u0633\u0648\u064a\u0633",
+ "3-127049_1_AL": "\u0634\u0628\u064a\u0646 \u0627\u0644\u0643\u0648\u0645",
+ "3-126883_1_AL": "\u0627\u0644\u063a\u0631\u062f\u0642\u0629",
+ "129332": "\u0645\u0631\u0633\u0649 \u0645\u0637\u0631\u0648\u062D",
+ "4-297030_1_AL": "\u0627\u0644\u0631\u064a\u0627\u0636",
+ "3-299429_1_AL": "\u062c\u062f\u0629",
+ "3-299427_1_AL": "\u0645\u0643\u0629 \u0627\u0644\u0645\u0643\u0631\u0645\u0629",
+ "5-296807_1_AL": "\u0627\u0644\u0645\u062f\u064a\u0646\u0629 \u0627\u0644\u0645\u0646\u0648\u0631\u0629",
+ "4-321626_1_AL": "\u0623\u0628\u0648 \u0638\u0628\u064a",
+ "323091": "\u062f\u0628\u0649",
+ "8-1280745_1_AL": "\u0627\u0644\u0641\u062c\u064a\u0631\u0629",
+ "2-245072_1_AL": "\u0627\u0644\u0631\u0628\u0627\u0637",
+ "4-6368_1_AL": "\u0637\u0646\u062c\u0629",
+ "2-243353_1_AL": "\u0627\u0644\u062f\u0627\u0631 \u0627\u0644\u0628\u064a\u0636\u0627\u0621",
+ "3-244231_1_AL": "\u0645\u0631\u0627\u0643\u0634",
+ "1135733": "\u062a\u0648\u0646\u0633",
+ "320522": "\u0635\u0641\u0627\u0642\u0633",
+ "317198": "\u0628\u0646\u0632\u0631\u062a",
+ "1888491": "\u0627\u0644\u062c\u0632\u0627\u0626\u0631",
+ "2115": "\u0639\u0646\u0627\u0628\u0629",
+ "3-227342_1_AL": "\u0628\u064a\u0631\u0648\u062a",
+ "3-230555_1_AL": "\u0637\u0631\u0627\u0628\u0644\u0633",
+ "3-314446_1_AL": "\u062f\u0645\u0634\u0642",
+ "3-313468_1_AL": "\u062d\u0644\u0628",
+ "3-313556_1_AL": "\u062d\u0645\u0635",
+ "13-222056_1_AL": "\u0627\u0644\u0643\u0648\u064a\u062a",
+ "4-271669_1_AL": "\u0627\u0644\u062f\u0648\u062d\u0629",
+ "6-29687_1_AL": "\u0627\u0644\u0645\u0646\u0627\u0645\u0629",
+ "3-258638_1_AL": "\u0645\u0633\u0642\u0637",
+ "4-258843_1_AL": "\u062e\u0635\u0628",
+ "2-221790_1_AL": "\u0639\u0645\u0627\u0646",
+ "14-221898_1_AL": "\u0627\u0644\u0639\u0642\u0628\u0629"
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/br/br.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/br/br.tpl
new file mode 100755
index 000000000..76a0d4d19
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/br/br.tpl
@@ -0,0 +1,18 @@
+<%script%>
+ require.async("common:widget/ui/jquery/jquery.js", function($) {
+ $(window).one("e_go.weather", function () {
+ require.async("common:widget/ui/weather/weather.js", function (Gl) {
+ Gl.weather.init(__uri('./weather-city.json'));
+ });
+ });
+
+ $(function () {
+ $(window).trigger("e_go.weather");
+ });
+
+ $("#weather").one("mouseenter", function () {
+ $(window).trigger("e_go.weather");
+ });
+ });
+<%/script%>
+<%require name="common:widget/ui/weather/`$country`/`$country`.js" async="true" %>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/br/weather-city.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/br/weather-city.json
new file mode 100755
index 000000000..58244fcee
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/br/weather-city.json
@@ -0,0 +1,29 @@
+{
+ "45881": "S\u00e3o Paulo - SP",
+ "45449": "Rio de Janeiro - RJ",
+ "36757": "Aracaju - SE",
+ "44857": "Bel\u00e9m - PA",
+ "44403": "Belo Horizonte - MG",
+ "35950": "Boa Vista - RR",
+ "43348": "Bras\u00edlia - DF",
+ "33738": "Campo Grande - MS",
+ "44281": "Cuiab\u00e1 - MT",
+ "44944": "Curitiba - PR",
+ "35952": "Florian\u00f3polis - SC",
+ "43346": "Fortaleza - CE",
+ "43599": "Goi\u00e2nia - GO",
+ "34631": "Jo\u00e3o Pessoa - PB",
+ "31913": "Macei\u00f3 - AL",
+ "64": "Macap\u00e1 - AP",
+ "42471": "Manaus - AM",
+ "35658": "Natal - RN",
+ "36879": "Palmas - TO",
+ "45561": "Porto Alegre - RS",
+ "35941": "Porto Velho - RO",
+ "45090": "Recife - PE",
+ "31909": "Rio Branco - AC",
+ "43080": "Salvador - BA",
+ "44127": "S\u00e3o Lu\u00eds - MA",
+ "45253": "Teresina - PI",
+ "32929": "Vit\u00f3ria - ES"
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/en/en.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/en/en.tpl
new file mode 100755
index 000000000..76a0d4d19
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/en/en.tpl
@@ -0,0 +1,18 @@
+<%script%>
+ require.async("common:widget/ui/jquery/jquery.js", function($) {
+ $(window).one("e_go.weather", function () {
+ require.async("common:widget/ui/weather/weather.js", function (Gl) {
+ Gl.weather.init(__uri('./weather-city.json'));
+ });
+ });
+
+ $(function () {
+ $(window).trigger("e_go.weather");
+ });
+
+ $("#weather").one("mouseenter", function () {
+ $(window).trigger("e_go.weather");
+ });
+ });
+<%/script%>
+<%require name="common:widget/ui/weather/`$country`/`$country`.js" async="true" %>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/en/weather-city.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/en/weather-city.json
new file mode 100755
index 000000000..81c341ef2
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/en/weather-city.json
@@ -0,0 +1 @@
+{"zmw:00000.1.58968":"\u81fa\u5317","zmw:00000.1.46751":"\u81fa\u4e2d\u5e02","zmw:00000.1.59358":"\u81fa\u5357","zmw:00000.1.46740":"\u9ad8\u96c4","zmw:00000.1.46745":"\u5ca1\u5c71","zmw:00000.2.46694":"\u57fa\u9686","zmw:00000.1.46756":"\u65b0\u7af9\u7e23","zmw:00000.1.46746":"\u5609\u7fa9","zmw:00000.1.58965":"\u6843\u5712\u7e23","zmw:00000.1.46750":"\u5c4f\u6771\u7e23","zmw:00000.1.59559":"\u6052\u6625\u93ae","zmw:00000.1.59162":"\u5b9c\u862d\u5e02","zmw:00000.1.46706":"\u8607\u6fb3\u93ae","zmw:00000.3.59362":"\u82b1\u84ee\u7e23","zmw:00000.1.59562":"\u81fa\u6771\u5e02","zmw:00000.1.46754":"\u5927\u6b66\u9109"}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/id/id.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/id/id.tpl
new file mode 100755
index 000000000..76a0d4d19
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/id/id.tpl
@@ -0,0 +1,18 @@
+<%script%>
+ require.async("common:widget/ui/jquery/jquery.js", function($) {
+ $(window).one("e_go.weather", function () {
+ require.async("common:widget/ui/weather/weather.js", function (Gl) {
+ Gl.weather.init(__uri('./weather-city.json'));
+ });
+ });
+
+ $(function () {
+ $(window).trigger("e_go.weather");
+ });
+
+ $("#weather").one("mouseenter", function () {
+ $(window).trigger("e_go.weather");
+ });
+ });
+<%/script%>
+<%require name="common:widget/ui/weather/`$country`/`$country`.js" async="true" %>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/id/weather-city.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/id/weather-city.json
new file mode 100755
index 000000000..874da9f6d
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/id/weather-city.json
@@ -0,0 +1,24 @@
+{
+ "208971": "Jakarta",
+ "205110": "Banda Aceh",
+ "210188": "Bandar Lampung",
+ "208977": "Bandung",
+ "209036": "Banjarmasin",
+ "1127709": "Batam",
+ "202574": "Bekasi",
+ "202507": "Bogor",
+ "202196": "Denpasar",
+ "202649": "Depok",
+ "211242": "Makassar",
+ "208996": "Malang",
+ "211298": "Medan",
+ "206120": "Padang",
+ "211288": "Palembang",
+ "205619": "Pekanbaru",
+ "203749": "Samarinda",
+ "208981": "Semarang",
+ "203449": "Surabaya",
+ "202242": "Tangerang",
+ "202512": "Tasikmalaya",
+ "211671": "Yogyakarta"
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/img/del_ative.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/img/del_ative.png
new file mode 100755
index 000000000..12bb63a4f
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/img/del_ative.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/img/del_gray.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/img/del_gray.png
new file mode 100755
index 000000000..efb7884bf
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/img/del_gray.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/img/i-weather-hum.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/img/i-weather-hum.png
new file mode 100755
index 000000000..70c549e17
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/img/i-weather-hum.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/img/i-weather-more-hum.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/img/i-weather-more-hum.png
new file mode 100755
index 000000000..a745bb196
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/img/i-weather-more-hum.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/img/light.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/img/light.png
new file mode 100755
index 000000000..f8e4516b9
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/img/light.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/jp/jp.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/jp/jp.tpl
new file mode 100755
index 000000000..76a0d4d19
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/jp/jp.tpl
@@ -0,0 +1,18 @@
+<%script%>
+ require.async("common:widget/ui/jquery/jquery.js", function($) {
+ $(window).one("e_go.weather", function () {
+ require.async("common:widget/ui/weather/weather.js", function (Gl) {
+ Gl.weather.init(__uri('./weather-city.json'));
+ });
+ });
+
+ $(function () {
+ $(window).trigger("e_go.weather");
+ });
+
+ $("#weather").one("mouseenter", function () {
+ $(window).trigger("e_go.weather");
+ });
+ });
+<%/script%>
+<%require name="common:widget/ui/weather/`$country`/`$country`.js" async="true" %>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/jp/weather-city.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/jp/weather-city.json
new file mode 100755
index 000000000..f46be2cca
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/jp/weather-city.json
@@ -0,0 +1,146 @@
+{
+ "4-223985_1_AL": "\u672d\u5e4c",
+ "8-217875_1_AL": "\u91e7\u8def",
+ "2-217787_1_AL": "\u7a1a\u5185",
+ "6-223986_1_AL": "\u65ed\u5ddd",
+ "5-217907_1_AL": "\u7559\u840c",
+ "4-217942_1_AL": "\u7db2\u8d70",
+ "10-217792_1_AL": "\u5317\u898b",
+ "5-218128_1_AL": "\u7d0b\u5225",
+ "4-217892_1_AL": "\u6839\u5ba4",
+ "5-217794_1_AL": "\u5e2f\u5e83",
+ "6-217784_1_AL": "\u5ca9\u898b\u6ca2",
+ "1-217876_1_AL": "\u5036\u77e5\u5b89",
+ "4-217793_1_AL": "\u5ba4\u862d",
+ "1-2334234_1_AL": "\u6d66\u6cb3",
+ "6-223987_1_AL": "\u51fd\u9928",
+ "217843": "\u6c5f\u5dee",
+ "4-224683_1_AL": "\u4ed9\u53f0",
+ "4-222341_1_AL": "\u9752\u68ee",
+ "6-216904_1_AL": "\u3080\u3064",
+ "8-216886_1_AL": "\u516b\u6238",
+ "4-224170_1_AL": "\u76db\u5ca1",
+ "4-218332_1_AL": "\u5bae\u53e4",
+ "4-218342_1_AL": "\u5927\u8239\u6e21",
+ "4-221897_1_AL": "\u79cb\u7530",
+ "5-216836_1_AL": "\u6a2a\u624b",
+ "4-221567_1_AL": "\u5c71\u5f62",
+ "4-221569_1_AL": "\u7c73\u6ca2",
+ "4-221570_1_AL": "\u9152\u7530",
+ "6-221591_1_AL": "\u65b0\u5e84",
+ "4-223551_1_AL": "\u798f\u5cf6",
+ "217436": "\u5c0f\u540d\u6d5c",
+ "224683": "\u4ed9\u53f0",
+ "218964": "\u77f3\u5dfb",
+ "217415": "\u82e5\u677e",
+ "218990": "\u767d\u77f3",
+ "2-226396_1_AL": "\u6771\u4eac",
+ "4-224374_1_AL": "\u6a2a\u6d5c",
+ "4-724_1_AL": "\u5c0f\u7530\u539f",
+ "221048": "\u5927\u5cf6",
+ "1510182": "\u516b\u4e08\u5cf6",
+ "1652504": "\u7236\u5cf6",
+ "4-220908_1_AL": "\u718a\u8c37",
+ "1-220889_1_AL": "\u79e9\u7236",
+ "4-223069_1_AL": "\u5343\u8449",
+ "6-309_1_AL": "\u929a\u5b50",
+ "6-216952_1_AL": "\u9928\u5c71",
+ "4-218223_1_AL": "\u6c34\u6238",
+ "4-226389_1_AL": "\u5b87\u90fd\u5bae",
+ "221137": "\u5927\u7530\u539f",
+ "1-223622_1_AL": "\u524d\u6a4b",
+ "1-221693_1_AL": "\u7532\u5e9c",
+ "4-224701_1_AL": "\u9577\u91ce",
+ "8-219098_1_AL": "\u677e\u672c",
+ "4-219097_1_AL": "\u98ef\u7530",
+ "2012157": "\u3055\u3044\u307e\u305f",
+ "218236": "\u571f\u6d66",
+ "1-2334040_1_AL": "\u6cb3\u53e3\u6e56",
+ "2423804": "\u307f\u306a\u304b\u307f",
+ "4-224807_1_AL": "\u65b0\u6f5f",
+ "4-224165_1_AL": "\u91d1\u6ca2",
+ "4-219302_1_AL": "\u9577\u5ca1",
+ "4-219303_1_AL": "\u9ad8\u7530",
+ "4-226415_1_AL": "\u5bcc\u5c71",
+ "221279": "\u4f0f\u6728",
+ "1-218305_1_AL": "\u8f2a\u5cf6",
+ "4-223540_1_AL": "\u798f\u4e95",
+ "5-217288_1_AL": "\u6566\u8cc0",
+ "2014153": "\u76f8\u5ddd",
+ "4-221855_1_AL": "\u540d\u53e4\u5c4b",
+ "1-221859_1_AL": "\u8c4a\u6a4b",
+ "1-223600_1_AL": "\u5c90\u961c",
+ "4-217488_1_AL": "\u9ad8\u5c71",
+ "1-226089_1_AL": "\u9759\u5ca1",
+ "1523": "\u7db2\u4ee3",
+ "221060": "\u4e09\u5cf6",
+ "5-226090_1_AL": "\u6d5c\u677e",
+ "218908": "\u6d25",
+ "2-944_1_AL": "\u5c3e\u9df2",
+ "10-225007_1_AL": "\u5927\u962a",
+ "4-224023_1_AL": "\u795e\u6238",
+ "218187": "\u8c4a\u5ca1",
+ "224436": "\u4eac\u90fd",
+ "4-218698_1_AL": "\u821e\u9db4",
+ "5-220939_1_AL": "\u5927\u6d25",
+ "1-220944_1_AL": "\u5f66\u6839",
+ "4-224769_1_AL": "\u5948\u826f",
+ "4-226509_1_AL": "\u548c\u6b4c\u5c71",
+ "219281": "\u98a8\u5c4b",
+ "1505444": "\u6f6e\u5cac",
+ "4-223955_1_AL": "\u5e83\u5cf6",
+ "4-221238_1_AL": "\u9ce5\u53d6",
+ "4-221241_1_AL": "\u7c73\u5b50",
+ "4-220975_1_AL": "\u677e\u6c5f",
+ "4-220976_1_AL": "\u6d5c\u7530",
+ "2333845": "\u897f\u90f7",
+ "4-224935_1_AL": "\u5ca1\u5c71",
+ "1-219446_1_AL": "\u6d25\u5c71",
+ "1-217744_1_AL": "\u5e84\u539f",
+ "1-226560_1_AL": "\u4e0b\u95a2",
+ "221623": "\u5c71\u53e3",
+ "4-221659_1_AL": "\u67f3\u4e95",
+ "4-221624_1_AL": "\u8429",
+ "1-224395_1_AL": "\u9ad8\u77e5",
+ "4-224352_1_AL": "\u9ad8\u677e",
+ "4-223539_1_AL": "\u677e\u5c71",
+ "217238": "\u65b0\u5c45\u6d5c",
+ "1-217236_1_AL": "\u5b87\u548c\u5cf6",
+ "4-226392_1_AL": "\u5fb3\u5cf6",
+ "218601": "\u5ba4\u6238",
+ "218617": "\u6e05\u6c34",
+ "1-221183_1_AL": "\u65e5\u548c\u4f50",
+ "4-223544_1_AL": "\u798f\u5ca1",
+ "1-224369_1_AL": "\u9e7f\u5150\u5cf6",
+ "223545": "\u516b\u5e61",
+ "4-217320_1_AL": "\u98ef\u585a",
+ "4-217333_1_AL": "\u4e45\u7559\u7c73",
+ "4-219768_1_AL": "\u4f50\u8cc0",
+ "1-219769_1_AL": "\u4f0a\u4e07\u91cc",
+ "4-224706_1_AL": "\u9577\u5d0e",
+ "1-219187_1_AL": "\u4f50\u4e16\u4fdd",
+ "2333734": "\u53b3\u539f",
+ "10-219200_1_AL": "\u798f\u6c5f",
+ "4-224428_1_AL": "\u718a\u672c",
+ "1-218666_1_AL": "\u725b\u6df1",
+ "1-218650_1_AL": "\u4eba\u5409",
+ "5-224930_1_AL": "\u5927\u5206",
+ "5-219398_1_AL": "\u4e2d\u6d25",
+ "4-219394_1_AL": "\u65e5\u7530",
+ "5-219395_1_AL": "\u4f50\u4f2f",
+ "4-224686_1_AL": "\u5bae\u5d0e",
+ "1-219035_1_AL": "\u5ef6\u5ca1",
+ "2-219034_1_AL": "\u90fd\u57ce",
+ "2333684": "\u540d\u702c",
+ "1-218434_1_AL": "\u9e7f\u5c4b",
+ "2-3492_1_POI_AL": "\u7a2e\u5b50\u5cf6",
+ "2333690": "\u9ad8\u5343\u7a42",
+ "218649": "\u963f\u8607\u4e59\u59eb",
+ "1-224944_1_AL": "\u90a3\u8987",
+ "1-2012155_1_AL": "\u4e45\u7c73\u5cf6",
+ "5-219499_1_AL": "\u540d\u8b77",
+ "1779977": "\u5357\u5927\u6771\u5cf6",
+ "2333670": "\u5bae\u53e4\u5cf6",
+ "219525": "\u77f3\u57a3\u5cf6",
+ "219564": "\u4e0e\u90a3\u56fd\u5cf6"
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/ltr/ltr-c.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/ltr/ltr-c.css
new file mode 100755
index 000000000..613035342
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/ltr/ltr-c.css
@@ -0,0 +1 @@
+.userbar-weather{ display: none;}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/ltr/ltr.more.css
new file mode 100755
index 000000000..93d213d0e
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/ltr/ltr.more.css
@@ -0,0 +1,273 @@
+/* weather */
+/*@require common:widget/ui/prompt/prompt.css*/
+
+#weatherView img{ width: 32px;}
+.userbar-weather {
+ color: #fff;
+ font-size: 11px;
+ height: 45px;
+ padding-top: 5px;
+ margin-right: 20px;
+ white-space: nowrap;
+ position: relative;
+ *z-index: 9;
+
+
+ display: block !important;
+}
+.userbar-weather .fl{
+ height: 50px;
+ overflow: hidden;
+ margin-left: 10px;
+ width:228px;
+}
+
+.userbar-weather_console{ display: none;}
+.userbar-weather ul {
+ margin-top: 5px;
+}
+.userbar-weather_console, .userbar-weather img, .userbar-weather .weather-info {
+ float: left;
+}
+.userbar-weather li {
+ display: block;
+ float: left;
+ margin-right: 45px;
+ _margin-right: 35px;
+}
+.userbar-weather li.weather_last {
+ margin-right: 0;
+}
+.userbar-weather img {
+ margin-right: 10px;
+}
+.userbar-weather span {
+ font-weight: bold;
+}
+.userbar-weather p {
+ margin: 2px 0;
+}
+.weather_last{
+ visibility: hidden;
+}
+.text{
+ visibility: hidden;
+}
+.dot_img{
+ background:url(../img/i-weather-hum.png?__sprite) no-repeat;
+ width:9px;
+ height:16px;
+ display:inline-block;
+ margin-left: 20px;
+ margin-bottom:-5px;
+ left: 10px;
+ margin-right:5px;
+}
+
+/*--------more---------*/
+
+
+
+
+/* weather */
+/*@require common:widget/ui/prompt/prompt.css*/
+.userbar-weather_console {
+ height: 38px;
+ margin-right: 20px;
+ _margin-right: 11px;
+ _width: 200px;
+ display: inline-block;
+}
+.userbar-weather_console a {
+ color: #fff;
+}
+.userbar-weather_city {
+ padding-right: 7px;
+ text-align: right;
+ position: relative;
+ line-height: 15px;
+ z-index: 11;
+}
+.userbar-weather_city-cur {
+ height: 15px;
+}
+.userbar-weather_city-cur a {
+ padding-right: 10px;
+ background: url(/widget/img/bg.png) right 6px no-repeat;
+}
+.userbar-weather_city-click a {
+ background-position: right -442px;
+}
+.city-select {
+ right:-8px;
+ top:16px;
+ z-index:11;
+ text-align:left;
+}
+.city-select .box-prompt-inner {
+ *width: 100%;
+ _width: auto;
+}
+.city-select p {
+ margin: 0;
+ font-size:12px;
+}
+.city-select label {
+ display: block;
+ margin-bottom: 5px;
+}
+.city-select select {
+ width: 160px;
+ margin-bottom: 7px;
+ border: 1px solid #d7d7d9;
+}
+.city-select .btn-bar {
+ width: 160px;
+ text-align:center;
+}
+.weather-days {
+ display: block;
+ height: 25px;
+ line-height: 25px;
+ padding: 0 7px;
+ margin-top: 5px;
+ border: 1px solid #009e69;
+ border-bottom: 0 none;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -o-border-radius: 2px;
+ border-radius: 2px;
+ position: relative;
+ _float: right;
+}
+.weather-days_click {
+ border: 1px solid #00ad73;
+ border-bottom: 0 none;
+}
+.weather-days p {
+ display: block;
+ line-height: 25px;
+ background: url(/widget/img/bg.png) 50% -12px no-repeat;
+ margin: 0;
+}
+.weather-days_click p {
+ background-position: 50% -35px;
+}
+.weather-days:hover {
+ background: #009e69;
+ -moz-border-top-left-radius: 2px;
+ -webkit-border-top-left-radius: 2px;
+ -o-border-top-left-radius: 2px;
+ border-top-left-radius: 2px;
+ -moz-border-top-right-radius: 2px;
+ -webkit-border-top-right-radius: 2px;
+ -o-border-top-right-radius: 2px;
+ border-top-right-radius: 2px;
+}
+.weather-more_show .weather-more {
+ display: block;
+}
+.weather-more li {
+ text-align: center;
+ font-size: 14px;
+ padding: 20px 0;
+ color: #fff;
+}
+.weather-more li a{
+ display: block;
+ width: 100%;
+ height: 100%;
+}
+.weather-more li img {
+ padding: 10px 0;
+}
+.weather-more span {
+ padding: 0 5px;
+}
+.weather-more_odd {
+ background: #117a57;
+ -moz-box-shadow: 0 0 4px rgba(0,0,0,0.1) inset;
+ -webkit-box-shadow: 0 0 4px rgba(0,0,0,0.1) inset;
+ -o-box-shadow: 0 0 4px rgba(0,0,0,0.1) inset;
+ box-shadow: 0 0 4px rgba(0,0,0,0.1) inset;
+}
+.weather-more_today p {
+ font-weight: bold;
+}
+.weather_last{
+ width:40px
+}
+.humidity{
+ left:5px;
+}
+.dot_img_head{
+ background:url(../img/i-weather-more-hum.png?__sprite) no-repeat;
+ width:9px;
+ height:16px;
+ display:inline-block;
+ margin-left: 10px;
+ margin-bottom:-5px;
+ left: 10px;
+}
+.userbar-weather_tip {
+ position: absolute;
+ top: 49px;
+ right: -28px;
+ padding: 2px 32px 2px 12px;
+ width: 190px;
+ border: 1px solid #FFA97E;
+ color: #454545;
+ font-size: 12px;
+ background-color: #FFF8F4;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -o-border-radius: 2px;
+ border-radius: 2px;
+ z-index: 10;
+}
+.userbar-weather_tip .arrow, .userbar-weather_tip .arrow_bg {
+position: absolute;
+height: 0;
+width: 0;
+border: 8px dashed transparent;
+}
+.userbar-weather_tip .arrow {
+border-bottom-color: #FFB793;
+border-bottom-style: solid;
+border-width: 9px;
+top: -18px;
+left: 19px;
+}
+.userbar-weather_tip .arrow_bg {
+border-bottom-color: #fcfefd;
+border-bottom-style: solid;
+margin: -7px -8px 0 -8px;
+_margin-top: -22px;
+}
+.userbar-weather_tip .tips-close {
+display: block;
+width: 12px;
+height: 12px;
+position: absolute;
+top: 5px;
+right: 5px;
+background: url(../img/del_gray.png?__sprite) no-repeat;
+cursor: pointer;
+}
+.userbar-weather_tip .tips-close_hover {
+background: url(../img/del_ative.png?__sprite) no-repeat;
+}
+.userbar-weather_tip p {
+ text-indent: 16px;
+ white-space: normal;
+ line-height: 1.5;
+}
+.userbar-weather_tip .tips-light {
+ width: 12px;
+ height: 16px;
+ display: inline-block;
+ background: url(../img/light.png?__sprite) no-repeat;
+ position: absolute;
+ left: 12px;
+ top: 4px;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/ltr/ltr.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/ltr/ltr.tpl
new file mode 100755
index 000000000..6fedfb84a
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/ltr/ltr.tpl
@@ -0,0 +1,7 @@
+<%require name="common:widget/header/weather/ltr/ltr.more.css"%>
+<%require name="common:widget/ui/jquery/widget/jquery.ui.button/ltr/ltr.css"%>
+<%style%>
+ @import url('/widget/header/weather/ltr/ltr-c.css?__inline');
+<%/style%>
+
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/ma/ma.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/ma/ma.tpl
new file mode 100755
index 000000000..76a0d4d19
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/ma/ma.tpl
@@ -0,0 +1,18 @@
+<%script%>
+ require.async("common:widget/ui/jquery/jquery.js", function($) {
+ $(window).one("e_go.weather", function () {
+ require.async("common:widget/ui/weather/weather.js", function (Gl) {
+ Gl.weather.init(__uri('./weather-city.json'));
+ });
+ });
+
+ $(function () {
+ $(window).trigger("e_go.weather");
+ });
+
+ $("#weather").one("mouseenter", function () {
+ $(window).trigger("e_go.weather");
+ });
+ });
+<%/script%>
+<%require name="common:widget/ui/weather/`$country`/`$country`.js" async="true" %>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/ma/weather-city.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/ma/weather-city.json
new file mode 100755
index 000000000..b021da656
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/ma/weather-city.json
@@ -0,0 +1,43 @@
+{
+ "9-127164_1_AL": "\u0627\u0644\u0642\u0627\u0647\u0631\u0629",
+ "6-207321_1_AL": "\u0627\u0644\u0627\u0633\u0643\u0646\u062f\u0631\u064a\u0629",
+ "12-127047_1_AL": "\u0627\u0644\u062c\u064a\u0632\u0629",
+ "4-130201_1_AL": "\u0627\u0644\u0623\u0642\u0635\u0631",
+ "6-127335_1_AL": "\u0627\u0644\u0632\u0642\u0627\u0632\u064a\u0642",
+ "5-127358_1_AL": "\u0623\u0633\u0648\u0627\u0646",
+ "15-126919_1_AL": "\u0627\u0644\u0641\u064a\u0648\u0645",
+ "126996": "\u0627\u0644\u0627\u0633\u0645\u0627\u0639\u064a\u0644\u064a\u0629",
+ "7-127484_1_AL": "\u0628\u0648\u0631 \u0633\u0639\u064a\u062f",
+ "5-127330_1_AL": "\u0627\u0644\u0633\u0648\u064a\u0633",
+ "3-127049_1_AL": "\u0634\u0628\u064a\u0646 \u0627\u0644\u0643\u0648\u0645",
+ "3-126883_1_AL": "\u0627\u0644\u063a\u0631\u062f\u0642\u0629",
+ "129332": "\u0645\u0631\u0633\u064a \u0627\u0644\u0645\u0637\u0631\u0648\u062d",
+ "4-297030_1_AL": "\u0627\u0644\u0631\u064a\u0627\u0636",
+ "3-299429_1_AL": "\u062c\u062f\u0629",
+ "3-299427_1_AL": "\u0645\u0643\u0629 \u0627\u0644\u0645\u0643\u0631\u0645\u0629",
+ "5-296807_1_AL": "\u0627\u0644\u0645\u062f\u064a\u0646\u0629 \u0627\u0644\u0645\u0646\u0648\u0631\u0629",
+ "4-321626_1_AL": "\u0623\u0628\u0648 \u0638\u0628\u064a",
+ "323091": "\u062f\u0628\u0649",
+ "8-1280745_1_AL": "\u0627\u0644\u0641\u062c\u064a\u0631\u0629",
+ "2-245072_1_AL": "\u0627\u0644\u0631\u0628\u0627\u0637",
+ "4-6368_1_AL": "\u0637\u0646\u062c\u0629",
+ "2-243353_1_AL": "\u0627\u0644\u062f\u0627\u0631 \u0627\u0644\u0628\u064a\u0636\u0627\u0621",
+ "3-244231_1_AL": "\u0645\u0631\u0627\u0643\u0634",
+ "1135733": "\u062a\u0648\u0646\u0633",
+ "320522": "\u0635\u0641\u0627\u0642\u0633",
+ "317198": "\u0628\u0646\u0632\u0631\u062a",
+ "1888491": "\u0627\u0644\u062c\u0632\u0627\u0626\u0631",
+ "2115": "\u0639\u0646\u0627\u0628\u0629",
+ "3-227342_1_AL": "\u0628\u064a\u0631\u0648\u062a",
+ "3-230555_1_AL": "\u0637\u0631\u0627\u0628\u0644\u0633",
+ "3-314446_1_AL": "\u062f\u0645\u0634\u0642",
+ "3-313468_1_AL": "\u062d\u0644\u0628",
+ "3-313556_1_AL": "\u062d\u0645\u0635",
+ "13-222056_1_AL": "\u0627\u0644\u0643\u0648\u064a\u062a",
+ "4-271669_1_AL": "\u0627\u0644\u062f\u0648\u062d\u0629",
+ "6-29687_1_AL": "\u0627\u0644\u0645\u0646\u0627\u0645\u0629",
+ "3-258638_1_AL": "\u0645\u0633\u0642\u0637",
+ "4-258843_1_AL": "\u062e\u0635\u0628",
+ "2-221790_1_AL": "\u0639\u0645\u0627\u0646",
+ "14-221898_1_AL": "\u0627\u0644\u0639\u0642\u0628\u0629"
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/rtl/rtl-c.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/rtl/rtl-c.css
new file mode 100755
index 000000000..613035342
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/rtl/rtl-c.css
@@ -0,0 +1 @@
+.userbar-weather{ display: none;}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/rtl/rtl.more.css
new file mode 100755
index 000000000..5a6cf86f7
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/rtl/rtl.more.css
@@ -0,0 +1,320 @@
+/* weather */
+/*@require common:widget/ui/prompt/prompt.css*/
+#weatherView img{ width: 32px;}
+.userbar-weather {
+ color: #fff;
+ font-size: 11px;
+ height: 45px;
+ padding-top: 5px;
+ width:240px;
+ *width: 260px;
+ _width: auto;
+ zoom: 1;
+ position: relative;
+
+ display: block !important;
+}
+.userbar-weather_console{ display: none;}
+.userbar-weather ul {
+ margin-top: 5px;
+ *width: 222px;
+}
+.userbar-weather img, .userbar-weather .weather-info {
+ float: right;
+}
+.userbar-weather li {
+ display: block;
+ float: right;
+ *width: 100px;
+ margin-left: 20px;
+ *margin-left: 10px;
+}
+.userbar-weather li.weather_last {
+ margin-left: 0;
+}
+.userbar-weather img {
+ margin-left: 26px;
+}
+.userbar-weather span {
+ font-weight: bold;
+}
+.userbar-weather p {
+ margin: 2px 0;
+ direction: rtl;
+}
+.weather_last{
+ visibility: hidden;
+}
+.text{
+ visibility: hidden;
+}
+.dot_img{
+ background:url(../img/i-weather-hum.png?__sprite) no-repeat;
+ width:9px;
+ height:16px;
+ display:inline-block;
+ margin-bottom:-5px;
+ left: 10px;
+ position: relative;
+
+ margin-right: 20px;
+ margin-left: -5px;
+}
+
+/*----------more-------------*/
+
+/* weather */
+/*@require common:widget/ui/prompt/prompt.css*/
+
+.userbar-weather {
+ width:390px;
+ *width: 410px;
+}
+.userbar-weather_console {
+ height: 38px;
+ display: block;
+ margin-left: 20px;
+ *margin-left: 10px;
+ float: right;
+ *float: left;
+ _float: right;
+}
+.userbar-weather_console a {
+ color: #fff;
+}
+.weather-info{
+ direction: ltr;
+ width:110px;
+ right: -12px;
+ position: relative;
+}
+.userbar-weather_city {
+ padding-right: 7px;
+ text-align: left;
+ position: relative;
+ line-height: 15px;
+ z-index: 11;
+}
+.userbar-weather_city-cur {
+ height: 15px;
+}
+.userbar-weather_city-cur a {
+ padding-left: 10px;
+ background: url(/widget/img/bg.png) -12px 6px no-repeat;
+ zoom: 1;
+}
+.userbar-weather_city-click a {
+ background-position: right -442px;
+}
+
+
+.city-select {
+ left:-8px;
+ top:16px;
+ z-index:11;
+ text-align:right;
+ _width: 180px;
+}
+.city-select .box-prompt-inner {
+ *width: 100%;
+ _width: auto;
+ *position: relative;
+}
+.city-select p {
+ margin: 0;
+ font-size:12px;
+ zoom: 1;
+}
+.city-select label {
+ display: block;
+ margin-bottom: 5px;
+}
+.city-select select {
+ width: 160px;
+ margin-bottom: 7px;
+ border: 1px solid #d7d7d9;
+}
+.city-select .btn-bar {
+ width: 160px;
+ text-align:center;
+ *position: relative;
+}
+.weather-days {
+ display: block;
+ height: 25px;
+ line-height: 25px;
+ padding: 0 7px;
+ margin-top: 5px;
+ border: 1px solid #009e69;
+ border-bottom: 0 none;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -o-border-radius: 2px;
+ border-radius: 2px;
+ position: relative;
+ _float: left;
+}
+.weather-days_click {
+ border: 1px solid #00ad73;
+ border-bottom: 0 none;
+}
+.weather-days p {
+ display: block;
+ line-height: 25px;
+ background: url(/widget/img/bg.png) 50% -12px no-repeat;
+ margin: 0;
+}
+.weather-days_click p {
+ background-position: 50% -35px;
+}
+.weather-days:hover {
+ background: #009e69;
+ -moz-border-top-left-radius: 2px;
+ -webkit-border-top-left-radius: 2px;
+ -o-border-top-left-radius: 2px;
+ border-top-left-radius: 2px;
+ -moz-border-top-right-radius: 2px;
+ -webkit-border-top-right-radius: 2px;
+ -o-border-top-right-radius: 2px;
+ border-top-right-radius: 2px;
+}
+.weather-more_show .weather-more {
+ display: block;
+}
+.weather-more li {
+ text-align: center;
+ font-size: 14px;
+ padding: 20px 0;
+ color: #fff;
+ direction: ltr;
+}
+.weather-more li a{
+ display: block;
+ width: 100%;
+ height: 100%;
+}
+.weather-more li img {
+ padding: 10px 0;
+}
+.weather-more span {
+ padding: 0 5px;
+}
+.weather-more_odd {
+ background: #117a57;
+ -moz-box-shadow: 0 0 4px rgba(0,0,0,0.1) inset;
+ -webkit-box-shadow: 0 0 4px rgba(0,0,0,0.1) inset;
+ -o-box-shadow: 0 0 4px rgba(0,0,0,0.1) inset;
+ box-shadow: 0 0 4px rgba(0,0,0,0.1) inset;
+}
+.weather-more_today p {
+ font-weight: bold;
+}
+.weather_last{
+ width:40px
+}
+.humidity{
+ float:left;
+ margin-left: 40px;
+}
+.dot_img{
+ margin-left: 10px;
+ margin-right: 0;
+}
+.dot_img_head{
+ background:url(../img/i-weather-more-hum.png?__sprite) no-repeat;
+ width:9px;
+ height:16px;
+ display:inline-block;
+ margin-left: -10px;
+ margin-bottom:-5px;
+ left:5px;
+ position:relative;
+ *left: 10px;
+ *float: right;
+ *margin-right: 20px;
+}
+.temperature_p{
+ float: right;
+}
+.temperature_hum{
+ left: -33px;
+ position: relative;
+}
+.temperature_big{
+ float:right;
+ margin-right:20px;
+}
+.userbar-weather{
+ position: relative;
+ z-index: 99;
+}
+#weatherView .weather-info{
+ *position: absolute;
+ *right: 240px;
+}
+.weather-more_today .dot_img_head{
+ position:relative;
+}
+.userbar-weather_tip {
+ position: absolute;
+ top: 49px;
+ right: 224px;
+ padding: 2px 12px 2px 32px;
+ width: 190px;
+ border: 1px solid #FFA97E;
+ color: #454545;
+ font-size: 12px;
+ background-color: #FFF8F4;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -o-border-radius: 2px;
+ border-radius: 2px;
+ z-index: 10;
+}
+.userbar-weather_tip .arrow, .userbar-weather_tip .arrow_bg {
+position: absolute;
+height: 0;
+width: 0;
+border: 8px dashed transparent;
+}
+.userbar-weather_tip .arrow {
+border-bottom-color: #FFB793;
+border-bottom-style: solid;
+border-width: 9px;
+top: -18px;
+right: 19px;
+}
+.userbar-weather_tip .arrow_bg {
+border-bottom-color: #fcfefd;
+border-bottom-style: solid;
+margin: -7px -8px 0 -8px;
+_margin-top: -22px;
+}
+.userbar-weather_tip .tips-close {
+display: block;
+width: 12px;
+height: 12px;
+position: absolute;
+top: 5px;
+left: 5px;
+background: url(../img/del_gray.png?__sprite) no-repeat;
+cursor: pointer;
+}
+.userbar-weather_tip .tips-close_hover {
+background: url(../img/del_ative.png?__sprite) no-repeat;
+}
+.userbar-weather_tip p {
+ text-indent: 16px;
+ background-position: right top;
+ white-space: normal;
+ line-height: 1.5;
+}
+.userbar-weather_tip .tips-light {
+ width: 12px;
+ height: 16px;
+ display: inline-block;
+ background: url(../img/light.png?__sprite) no-repeat;
+ position: absolute;
+ right: 12px;
+ top: 4px;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/rtl/rtl.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/rtl/rtl.tpl
new file mode 100755
index 000000000..61f168d24
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/rtl/rtl.tpl
@@ -0,0 +1,7 @@
+<%require name="common:widget/header/weather/rtl/rtl.more.css"%>
+<%require name="common:widget/ui/jquery/widget/jquery.ui.button/rtl/rtl.css"%>
+<%style%>
+ @import url('/widget/header/weather/rtl/rtl-c.css?__inline');
+<%/style%>
+
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/sa/sa.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/sa/sa.tpl
new file mode 100755
index 000000000..76a0d4d19
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/sa/sa.tpl
@@ -0,0 +1,18 @@
+<%script%>
+ require.async("common:widget/ui/jquery/jquery.js", function($) {
+ $(window).one("e_go.weather", function () {
+ require.async("common:widget/ui/weather/weather.js", function (Gl) {
+ Gl.weather.init(__uri('./weather-city.json'));
+ });
+ });
+
+ $(function () {
+ $(window).trigger("e_go.weather");
+ });
+
+ $("#weather").one("mouseenter", function () {
+ $(window).trigger("e_go.weather");
+ });
+ });
+<%/script%>
+<%require name="common:widget/ui/weather/`$country`/`$country`.js" async="true" %>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/sa/weather-city.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/sa/weather-city.json
new file mode 100755
index 000000000..e11cbbe84
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/sa/weather-city.json
@@ -0,0 +1,43 @@
+{
+ "9-127164_1_AL": "\u0627\u0644\u0642\u0627\u0647\u0631\u0629",
+ "6-207321_1_AL": "\u0627\u0644\u0627\u0633\u0643\u0646\u062f\u0631\u064a\u0629",
+ "12-127047_1_AL": "\u0627\u0644\u062c\u064a\u0632\u0629",
+ "4-130201_1_AL": "\u0627\u0644\u0623\u0642\u0635\u0631",
+ "6-127335_1_AL": "\u0627\u0644\u0632\u0642\u0627\u0632\u064a\u0642",
+ "5-127358_1_AL": "\u0623\u0633\u0648\u0627\u0646",
+ "15-126919_1_AL": "\u0627\u0644\u0641\u064a\u0648\u0645",
+ "126996": "\u0627\u0644\u0627\u0633\u0645\u0627\u0639\u064a\u0644\u064a\u0629",
+ "7-127484_1_AL": "\u0628\u0648\u0631 \u0633\u0639\u064a\u062f",
+ "5-127330_1_AL": "\u0627\u0644\u0633\u0648\u064a\u0633",
+ "3-127049_1_AL": "\u0634\u0628\u064a\u0646 \u0627\u0644\u0643\u0648\u0645",
+ "3-126883_1_AL": "\u0627\u0644\u063a\u0631\u062f\u0642\u0629",
+ "129332": "\u0645\u0631\u0633\u0649 \u0645\u0637\u0631\u0648\u062D",
+ "4-297030_1_AL": "\u0627\u0644\u0631\u064a\u0627\u0636",
+ "3-299429_1_AL": "\u062c\u062f\u0629",
+ "3-299427_1_AL": "\u0645\u0643\u0629 \u0627\u0644\u0645\u0643\u0631\u0645\u0629",
+ "5-296807_1_AL": "\u0627\u0644\u0645\u062f\u064a\u0646\u0629 \u0627\u0644\u0645\u0646\u0648\u0631\u0629",
+ "4-321626_1_AL": "\u0623\u0628\u0648 \u0638\u0628\u064a",
+ "323091": "\u062f\u0628\u0649",
+ "8-1280745_1_AL": "\u0627\u0644\u0641\u062c\u064a\u0631\u0629",
+ "2-245072_1_AL": "\u0627\u0644\u0631\u0628\u0627\u0637",
+ "4-6368_1_AL": "\u0637\u0646\u062c\u0629",
+ "2-243353_1_AL": "\u0627\u0644\u062f\u0627\u0631 \u0627\u0644\u0628\u064a\u0636\u0627\u0621",
+ "3-244231_1_AL": "\u0645\u0631\u0627\u0643\u0634",
+ "1135733": "\u062a\u0648\u0646\u0633",
+ "320522": "\u0635\u0641\u0627\u0642\u0633",
+ "317198": "\u0628\u0646\u0632\u0631\u062a",
+ "1888491": "\u0627\u0644\u062c\u0632\u0627\u0626\u0631",
+ "2115": "\u0639\u0646\u0627\u0628\u0629",
+ "3-227342_1_AL": "\u0628\u064a\u0631\u0648\u062a",
+ "3-230555_1_AL": "\u0637\u0631\u0627\u0628\u0644\u0633",
+ "3-314446_1_AL": "\u062f\u0645\u0634\u0642",
+ "3-313468_1_AL": "\u062d\u0644\u0628",
+ "3-313556_1_AL": "\u062d\u0645\u0635",
+ "13-222056_1_AL": "\u0627\u0644\u0643\u0648\u064a\u062a",
+ "4-271669_1_AL": "\u0627\u0644\u062f\u0648\u062d\u0629",
+ "6-29687_1_AL": "\u0627\u0644\u0645\u0646\u0627\u0645\u0629",
+ "3-258638_1_AL": "\u0645\u0633\u0642\u0637",
+ "4-258843_1_AL": "\u062e\u0635\u0628",
+ "2-221790_1_AL": "\u0639\u0645\u0627\u0646",
+ "14-221898_1_AL": "\u0627\u0644\u0639\u0642\u0628\u0629"
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/th/th.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/th/th.tpl
new file mode 100755
index 000000000..76a0d4d19
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/th/th.tpl
@@ -0,0 +1,18 @@
+<%script%>
+ require.async("common:widget/ui/jquery/jquery.js", function($) {
+ $(window).one("e_go.weather", function () {
+ require.async("common:widget/ui/weather/weather.js", function (Gl) {
+ Gl.weather.init(__uri('./weather-city.json'));
+ });
+ });
+
+ $(function () {
+ $(window).trigger("e_go.weather");
+ });
+
+ $("#weather").one("mouseenter", function () {
+ $(window).trigger("e_go.weather");
+ });
+ });
+<%/script%>
+<%require name="common:widget/ui/weather/`$country`/`$country`.js" async="true" %>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/th/weather-city.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/th/weather-city.json
new file mode 100755
index 000000000..c65a7a699
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/th/weather-city.json
@@ -0,0 +1,46 @@
+{
+ "4-318849_1_AL": "\u0e01\u0e23\u0e38\u0e07\u0e40\u0e17\u0e1e\u0e2f",
+ "4-318418_1_AL": "\u0e01\u0e33\u0e41\u0e1e\u0e07\u0e40\u0e1e\u0e0a\u0e23",
+ "1-319052_1_AL": "\u0e25\u0e1e\u0e1a\u0e38\u0e23\u0e35",
+ "4-319602_1_AL": "\u0e19\u0e04\u0e23\u0e1b\u0e10\u0e21",
+ "2-320033_1_AL": "\u0e1e\u0e34\u0e29\u0e13\u0e38\u0e42\u0e25\u0e01",
+ "4-320049_1_AL": "\u0e1e\u0e23\u0e30\u0e19\u0e04\u0e23\u0e28\u0e23\u0e35\u0e2d\u0e22\u0e38\u0e18\u0e22\u0e32",
+ "4-320620_1_AL": "\u0e2a\u0e21\u0e38\u0e17\u0e23\u0e1b\u0e23\u0e32\u0e01\u0e32\u0e23",
+ "4-320626_1_AL": "\u0e2a\u0e21\u0e38\u0e17\u0e23\u0e2a\u0e32\u0e04\u0e23",
+ "1-320984_1_AL": "\u0e2a\u0e38\u0e1e\u0e23\u0e23\u0e13\u0e1a\u0e38\u0e23\u0e35",
+ "4-320984_1_AL": "\u0e40\u0e0a\u0e35\u0e22\u0e07\u0e43\u0e2b\u0e21\u0e48",
+ "2-318882_1_AL": "\u0e25\u0e33\u0e1b\u0e32\u0e07",
+ "2-318901_1_AL": "\u0e25\u0e33\u0e1e\u0e39\u0e19",
+ "319106": "\u0e41\u0e21\u0e48\u0e2e\u0e48\u0e2d\u0e07\u0e2a\u0e2d\u0e19",
+ "3-319108_1_AL": "\u0e41\u0e21\u0e48\u0e2e\u0e48\u0e2d\u0e07\u0e2a\u0e2d\u0e19(\u0e41\u0e21\u0e48\u0e2a\u0e30\u0e40\u0e23\u0e35\u0e22\u0e07)",
+ "2-319733_1_AL": "\u0e19\u0e48\u0e32\u0e19",
+ "2-319956_1_AL": "\u0e1e\u0e30\u0e40\u0e22\u0e32",
+ "2-317465_1_AL": "\u0e0a\u0e31\u0e22\u0e20\u0e39\u0e21\u0e34",
+ "4-318585_1_AL": "\u0e02\u0e2d\u0e19\u0e41\u0e01\u0e48\u0e19",
+ "3-318607_1_AL": "\u0e02\u0e2d\u0e19\u0e41\u0e01\u0e48\u0e19(\u0e0a\u0e38\u0e21\u0e41\u0e1e)",
+ "2-319038_1_AL": "\u0e40\u0e25\u0e22",
+ "4-319122_1_AL": "\u0e21\u0e2b\u0e32\u0e2a\u0e32\u0e23\u0e04\u0e32\u0e21",
+ "2-319494_1_AL": "\u0e21\u0e38\u0e01\u0e14\u0e32\u0e2b\u0e32\u0e23",
+ "4-319629_1_AL": "\u0e19\u0e04\u0e23\u0e23\u0e32\u0e0a\u0e2a\u0e35\u0e21\u0e32",
+ "5-319817_1_AL": "\u0e2b\u0e19\u0e2d\u0e07\u0e04\u0e32\u0e22",
+ "4-320359_1_AL": "\u0e23\u0e49\u0e2d\u0e22\u0e40\u0e2d\u0e47\u0e14",
+ "4-321409_1_AL": "\u0e2d\u0e38\u0e1a\u0e25\u0e23\u0e32\u0e0a\u0e18\u0e32\u0e19\u0e35",
+ "7-321441_1_AL": "\u0e2d\u0e38\u0e14\u0e23\u0e18\u0e32\u0e19\u0e35",
+ "1-317584_1_AL": "\u0e1e\u0e31\u0e17\u0e22\u0e32",
+ "2-317490_1_AL": "\u0e08\u0e31\u0e19\u0e17\u0e1a\u0e38\u0e23\u0e35",
+ "1-317582_1_AL": "\u0e0a\u0e25\u0e1a\u0e38\u0e23\u0e35",
+ "1-320137_1_AL": "\u0e1b\u0e23\u0e32\u0e08\u0e35\u0e19\u0e1a\u0e38\u0e23\u0e35",
+ "2-320337_1_AL": "\u0e23\u0e30\u0e22\u0e2d\u0e07",
+ "4-319691_1_AL": "\u0e19\u0e04\u0e23\u0e28\u0e23\u0e35\u0e18\u0e23\u0e23\u0e21\u0e23\u0e32\u0e0a",
+ "2-319761_1_AL": "\u0e19\u0e23\u0e32\u0e18\u0e34\u0e27\u0e32\u0e2a",
+ "2-320075_1_AL": "\u0e20\u0e39\u0e40\u0e01\u0e47\u0e15",
+ "2-320938_1_AL": "\u0e2a\u0e07\u0e02\u0e25\u0e32",
+ "3-320939_1_AL": "\u0e2a\u0e07\u0e02\u0e25\u0e32(\u0e2b\u0e32\u0e14\u0e43\u0e2b\u0e0d\u0e48)",
+ "4-320998_1_AL": "\u0e2a\u0e38\u0e23\u0e32\u0e29\u0e0e\u0e23\u0e4c\u0e18\u0e32\u0e19\u0e35",
+ "4-5470_1_AL": "\u0e2a\u0e38\u0e23\u0e32\u0e29\u0e0e\u0e23\u0e4c\u0e18\u0e32\u0e19\u0e35(\u0e40\u0e01\u0e32\u0e30\u0e2a\u0e21\u0e38\u0e22)",
+ "3-320151_1_AL": "\u0e1b\u0e23\u0e30\u0e08\u0e27\u0e1a\u0e04\u0e35\u0e23\u0e35\u0e02\u0e31\u0e19\u0e18\u0e4c(\u0e2b\u0e31\u0e27\u0e2b\u0e34\u0e19)",
+ "2-318443_1_AL": "\u0e01\u0e32\u0e0d\u0e08\u0e19\u0e1a\u0e38\u0e23\u0e35",
+ "318455": "\u0e01\u0e32\u0e0d\u0e08\u0e19\u0e1a\u0e23\u0e35(\u0e17\u0e2d\u0e07\u0e1c\u0e32\u0e20\u0e39\u0e21\u0e34)",
+ "2-320001_1_AL": "\u0e40\u0e1e\u0e0a\u0e23\u0e1a\u0e38\u0e23\u0e35",
+ "4-320150_1_AL": "\u0e1b\u0e23\u0e30\u0e08\u0e27\u0e1a\u0e04\u0e35\u0e23\u0e35\u0e02\u0e31\u0e19\u0e18\u0e4c"
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/tw/tw.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/tw/tw.tpl
new file mode 100755
index 000000000..76a0d4d19
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/tw/tw.tpl
@@ -0,0 +1,18 @@
+<%script%>
+ require.async("common:widget/ui/jquery/jquery.js", function($) {
+ $(window).one("e_go.weather", function () {
+ require.async("common:widget/ui/weather/weather.js", function (Gl) {
+ Gl.weather.init(__uri('./weather-city.json'));
+ });
+ });
+
+ $(function () {
+ $(window).trigger("e_go.weather");
+ });
+
+ $("#weather").one("mouseenter", function () {
+ $(window).trigger("e_go.weather");
+ });
+ });
+<%/script%>
+<%require name="common:widget/ui/weather/`$country`/`$country`.js" async="true" %>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/tw/weather-city.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/tw/weather-city.json
new file mode 100755
index 000000000..1a38eb1c2
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/tw/weather-city.json
@@ -0,0 +1,18 @@
+{
+ "1-315078_1_AL": "\u81fa\u5317",
+ "12-315040_1_AL": "\u81fa\u4e2d",
+ "3-314999_1_AL": "\u81fa\u5357",
+ "1-313812_1_AL": "\u9ad8\u96c4",
+ "1-313793_1_AL": "\u5ca1\u5c71",
+ "4-312605_1_AL": "\u57fa\u9686",
+ "7-313567_1_AL": "\u65b0\u7af9",
+ "6-312591_1_AL": "\u5609\u7fa9",
+ "3-315125_1_AL": "\u6843\u5712",
+ "3-314385_1_AL": "\u5c4f\u6771",
+ "3-314391_1_AL": "\u6052\u6625",
+ "4-316306_1_AL": "\u5b9c\u862d",
+ "2-316307_1_AL": "\u8607\u6fb3\u93ae",
+ "2-313570_1_AL": "\u82b1\u84ee",
+ "3-315079_1_AL": "\u81fa\u6771"
+
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/vn/vn.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/vn/vn.tpl
new file mode 100755
index 000000000..76a0d4d19
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/vn/vn.tpl
@@ -0,0 +1,18 @@
+<%script%>
+ require.async("common:widget/ui/jquery/jquery.js", function($) {
+ $(window).one("e_go.weather", function () {
+ require.async("common:widget/ui/weather/weather.js", function (Gl) {
+ Gl.weather.init(__uri('./weather-city.json'));
+ });
+ });
+
+ $(function () {
+ $(window).trigger("e_go.weather");
+ });
+
+ $("#weather").one("mouseenter", function () {
+ $(window).trigger("e_go.weather");
+ });
+ });
+<%/script%>
+<%require name="common:widget/ui/weather/`$country`/`$country`.js" async="true" %>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/vn/weather-city.json b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/vn/weather-city.json
new file mode 100755
index 000000000..990ab2f4c
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/vn/weather-city.json
@@ -0,0 +1,25 @@
+{
+ "2-353412_1_AL": "H\u00e0 N\u1ed9i",
+ "3-353511_1_AL": "H\u1ea3i Ph\u00f2ng",
+ "1-352107_1_AL": "B\u1eafc C\u1ea1n",
+ "1-352511_1_AL": "Cao B\u1eb1ng",
+ "2-353983_1_AL": "H\u00f2a B\u00ecnh",
+ "1-354293_1_AL": "L\u1ea1ng S\u01a1n",
+ "1-354305_1_AL": "L\u00e0o Cai",
+ "1-355085_1_AL": "Nam \u0110\u1ecbnh",
+ "1-356182_1_AL": "Th\u00e1i Nguy\u00ean",
+ "1-356356_1_AL": "Vi\u1ec7t Tr\u00ec",
+ "2-356425_1_AL": "Y\u00ean B\u00e1i",
+ "2-352954_1_AL": "\u0110\u00e0 N\u1eb5ng",
+ "1-355711_1_AL": "H\u1ed9i An",
+
+ "354222": "Nha Trang",
+ "1-356184_1_AL": "Thanh H\u00f3a",
+ "355417": "Vinh",
+
+ "1-352499_1_AL": "C\u00e0 Mau",
+ "2-352508_1_AL": "C\u1ea7n Th\u01a1",
+ "3-354237_1_AL": "Ph\u00fa Qu\u1ed1c",
+ "3-352089_1_AL": "V\u0169ng T\u00e0u",
+ "1-356354_1_AL": "V\u0129nh Long"
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/weather.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/weather.tpl
new file mode 100755
index 000000000..42fb04639
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/header/weather/weather.tpl
@@ -0,0 +1,45 @@
+
+<%widget name="common:widget/header/weather/`$head.dir`/`$head.dir`.tpl"%>
+<%script%>
+ //conf.weather
+ conf.weather = {
+ prefixUrl: "<%$body.weather.prefixUrl%>",
+ country: "<%$country%>",
+ defaultCity: "<%$body.weather.accuDefaultCity%>",
+ smallIconPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/weather/weather_icon_small",
+ bigIconPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/weather/weather_icon_big",
+ isHeaderTest: "<%$body.headerTest.widget%>",
+ testSmallIcon: "<%$body.headerTest.weather.smallIconPath%>",
+ testBigIcon: "<%$body.headerTest.weather.bigIconPath%>",
+ testDefaultIcon: "<%$body.headerTest.weather.defaultIcon%>",
+ testWidth: "<%$body.headerTest.weather.width%>",
+ testSwitch: "<%$body.headerTest.weather.remindSwitch%>",
+ dateFormat: "<%$body.weather.dateFormat%>",
+ connector: "<%$body.weather.connector%>",
+ humidity: "<%$body.weather.humidity%>",
+ remindSwitch: "<%$body.weather.remindSwitch%>",
+ userFrom: "<%$body.weather.userFrom%>",
+ testUserFrom:"<%$body.headerTest.weather.testUserFrom%>",
+ dataLength: 5,
+ dataRef: function(data) {
+ return data;
+ },
+ tips: {
+ "click": '<%$body.weather.clickText%>',
+ "loading": '<%$body.weather.loadingText%>',
+ "loadError": '<%$body.weather.loadError%>',
+ "nojs": '<%$body.weather.noJS%>',
+ "nocookie": '<%$body.weather.noCookie%>'
+ },
+ dataGroup: {
+ "noScript": '<%$body.weather.noScript%>',
+ "selectCity": '<%$body.weather.selectCity%>',
+ "area": '<%$body.weather.area%>',
+ "city": '<%$body.weather.city%>',
+ "okBtn": '<%$body.weather.okBtn%>',
+ "cancelBtn": '<%$body.weather.cancelBtn%>',
+ "moreDays": '<%$body.weather.moreDays%>'
+ }
+ };
+<%/script%>
+<%widget name="common:widget/header/weather/`$sysInfo.country`/`$sysInfo.country`.tpl" country=$sysInfo.country%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/img/bg.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/img/bg.png
new file mode 100755
index 000000000..c4b4d1b81
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/img/bg.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/img/icon-n.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/img/icon-n.png
new file mode 100755
index 000000000..6a3801287
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/img/icon-n.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/img/icon_hover-n.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/img/icon_hover-n.png
new file mode 100755
index 000000000..521ab7acd
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/img/icon_hover-n.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/img/icons.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/img/icons.png
new file mode 100755
index 000000000..51473b8c7
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/img/icons.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/img/tia.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/img/tia.png
new file mode 100755
index 000000000..ce88edf20
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/img/tia.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/img/tia_down.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/img/tia_down.png
new file mode 100755
index 000000000..1996c2311
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/img/tia_down.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/img/tia_down2.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/img/tia_down2.png
new file mode 100755
index 000000000..837219a4d
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/img/tia_down2.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/img/tia_hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/img/tia_hover.png
new file mode 100755
index 000000000..0f0bb27d9
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/img/tia_hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/img/tia_hover2.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/img/tia_hover2.png
new file mode 100755
index 000000000..837219a4d
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/img/tia_hover2.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/img/tia_normal.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/img/tia_normal.png
new file mode 100755
index 000000000..837219a4d
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/img/tia_normal.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/keyboard-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/keyboard-async.js
new file mode 100755
index 000000000..12638a3c6
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/keyboard-async.js
@@ -0,0 +1,41 @@
+var $ = require("common:widget/ui/jquery/jquery.js");
+//keyboard on search group
+;;(function () {
+ var searchKeyboard = $("#searchKeyboard");
+
+ searchKeyboard.hover(function() {
+ !(searchKeyboard.attr("src") === __uri("img/tia_down2.png")) && searchKeyboard.attr("src", __uri("img/tia_hover2.png"));
+ }, function() {
+ !(searchKeyboard.attr("src") === __uri("img/tia_down2.png")) && searchKeyboard.attr("src", __uri("img/tia_normal.png"));
+ });
+
+ searchKeyboard.on("click", function () {
+ UT.send({
+ type: "click",
+ ac: "b",
+ position: "keyboard",
+ modId: "search"
+ });
+ $(this).toggleClass("keyboard-down");
+ require.async("common:widget/keyboard/keyboard-main.js", function () {
+ var input = $("#searchGroupInput"),
+ kbda = $("#kbda");
+ input.length > 0 && input.focus();
+ if($("#addFavBar").css("display")=="block"){
+ $("#kbd").css("top","167px");
+ }
+
+ //修复IE下小键盘点击光标乱跳
+ kbda.length > 0 && document.all && $(document.body).on("mousedown", function(e) {
+ var el = e.target;
+ $.contains(kbda, el) && input.length > 0 && (input[0].onbeforedeactivate = function() {
+ window.event.returnValue = false;
+ input.onbeforedeactivate = null;
+ });
+ });
+ });
+ });
+ $(document).on("mousedown","#close",function(){
+ searchKeyboard.removeClass("keyboard-down");
+ });
+})();
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/keyboard-main.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/keyboard-main.js
new file mode 100755
index 000000000..bc1d0c0f0
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/keyboard-main.js
@@ -0,0 +1,2 @@
+(function(){function r(n){this.t={},this.tick=function(t,n,r){r=r!=e?r:(new Date).getTime(),this.t[t]=[r,n]},this.tick("start",t,n)}function s(){var e=this;e.Ma(),e.tc(),this.ee={0:function(t,n,r){return e.ke(t,n,r)},1:function(t,n,r){return e.le(t,n,r)},2:function(t,n,r){return e.me(t,n,r)},3:function(t,n,r){return e.ne(t,n,r)},4:function(t,n,r){return e.ie(t,n,r)},5:function(t,n,r){return e.je(t,n,r)},6:function(t,n,r){return e.yc(t,n,r)},7:function(t,n,r){return e.zc(t,n,r)}}}function o(e,t){var n=this;n.n=e,n.u=t}function u(e){var t=document.getElementsByTagName("head")[0];if(!t)return;var n=document.createElement("style");n.type="text/css",n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e)),t.appendChild(n)}function a(){var e=this;u(".goog-button{border-width:1px;border-style:solid;border-color:#bbb #999 #999 #bbb;border-radius:2px;-webkit-border-radius:2px;-moz-border-radius:2px;font:normal normal normal 13px/13px Arial,sans-serif;color:#676767;text-align:middle;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,1);background:#eee;background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f5f8f7));background:-moz-linear-gradient(top,#fff,#f5f8f7);filter:progid:DXImageTransform.Microsoft.Gradient(EndColorstr='#f5f8f7',StartColorstr='#ffffff',GradientType=0);cursor:pointer;margin:0;display:inline;display:-moz-inline-box;display:inline-block;*overflow:visible;padding:4px 8px 5px}a.goog-button,span.goog-button,div.goog-button{padding:4px 8px 5px}.goog-button:visited{color:#676767}.goog-button{*display:inline}.goog-button:focus,.goog-button:hover{border-color:#676767}.goog-button:active,.goog-button-active{color:#676767;background-color:#bbb;border-color:#999 #bbb #bbb #999;background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f8f7),to(#fff));background-image:-moz-linear-gradient(top,#f5f8f7,#fff);filter:progid:DXImageTransform.Microsoft.Gradient(EndColorstr='#ffffff',StartColorstr='#f5f8f7',GradientType=0)}.goog-button[disabled],.goog-button[disabled]:active,.goog-button[disabled]:hover{color:#666;border-color:#ddd;background-color:#f3f3f3;background-image:none;text-shadow:none;cursor:auto}.goog-button{padding:5px 8px 4px\\9}.goog-button{*padding:4px 7px 2px}html>body input.goog-button,x:-moz-any-link,x:default,html>body button.goog-button,x:-moz-any-link,x:default{padding-top:3px;padding-bottom:2px}a.goog-button,x:-moz-any-link,x:default,span.goog-button,x:-moz-any-link,x:default,div.goog-button,x:-moz-any-link,x:default{padding:4px 8px 5px}.goog-button-fixed{padding-left:0!important;padding-right:0!important;width:100%}button.goog-button-icon-c{padding-top:1px;padding-bottom:1px}button.goog-button-icon-c{padding-top:3px\\9;padding-bottom:2px\\9}button.goog-button-icon-c{*padding-top:0;*padding-bottom:0}html>body button.goog-button-icon-c,x:-moz-any-link,x:default{padding-top:1px;padding-bottom:1px}.goog-button-icon{display:block;margin:0 auto;height:18px;width:18px}.outerbox{background-color:#ebfcf7;border-style:solid;border-color:#ceded9;border-width:1px;min-width:395px;z-index:20001}select.select-dialog{font-size:9px;height:17px;border:1px solid}table.select-dialog{border-spacing:0;padding:0}span.trigger{cursor:pointer}span.trigger-over{background-color:#99ccff;color:black}#kbd .goog-button{height:16px;*height:24px;border-style:solid;padding:3px 5px;border-color:#d3d3d3 #d3d3d3 #c3c3c3 #d3d3d3;}#kbd table{background:none;margin:0!important;border:0}#kbd td{padding:1px;background-color:transparent;border:0;color:#676767;vertical-align:middle;}#kbd form{margin:0}div.goog-button{border-style:none;padding:0}#BGK8,#BGK10,#BGK16,#BGK16.right,#BGK16.left,#BGK20,#close,#kbd-help,#kbd-cfg,#loop,#min,#max{background-repeat:no-repeat;background-image:url("+__uri("img/icons.png")+");}#BGK8,#BGK10,#BGK16,#BGK16.left,#BGK16.right,#BGK20{width:22px;height:17px;}#close,#kbd-help,#kbd-cfg,#loop,#min,#max{font-size:0;width:14px;height:14px}#BGK8{background-position:0 -29px}#BGK10{background-position:0 -44px}#BGK10.long{background-position:0 -44px}#BGK10.short{background-position:0 18px}#BGK16{background-position:0 -59px}#BGK16.right{background-position:0 -59px}#BGK16.left{background-position:0 -59px}#BGK16.shortleft{background-position:0 -60px}#BGK20{background-position:0 -77px}#K273{font-size:12px}#kbd_t{font:12px/12px normal normal Arial,sans-serif;width:100%}#kbd-logo{max-height:14px;border:0}.kbd-title-row{line-height:12px}#minmax{cursor:pointer;font-size:12px;display:inline-block;background-color:#ebfcf7;border:1px solid #6b90da}.kbd-button{cursor:pointer;width:14px!important;height:14px!important;border:none;display:inline-block}#kbd-cfg{background-position:0 -152px}#kbd-cfg:hover{background-position:0 -166px}#kbd-help{background-position:0 -96px}#kbd-help:hover{background-position:0 -110px}#close{background-position:0 0}#close.kbd-button-over{background-position:0 -14px}#min{background-position:0 -208px}#min.kbd-button-over{background-position:0 -222px}#max{background-position:0 -180px}#max.kbd-button-over{background-position:0 -194px}#loop{background-position:0 -124px}#loop.kbd-button-over{background-position:0 -138px}"),e.sb=0,e.tb=0,w.jc(!1),w.kc(!0),w.K(!1),w.ea(!1),w.ic(!1),w.ga(!1),w.lc(function(){e.ec(),e.fc(!1)}),e.d=new w.i([]),e.w(!0),e.oa(),A.a.ab=function(){e.oa()},e.Gd=A.a.q,A.a.q=function(){e.Gd(),e.oa()}}function f(e,t){for(var n=e.split(/\./),r=window,i=0;ie.xc?this.zc:this.yc},n.tc=function(){},n.ue=function(){var e=document.getElementById(this.Yd);e&&this.moveTo(this.Xd(e,this.height(),this.width()))},n.oa=function(){this.uc(this.yb)?this.Hc(this.Fc,this.Gc):this.ue()},n.Hc=function(e,t){var n=typeof e=="string"?document.getElementById(e):e;n&&(n=this.ee[t](n,this.height(),this.width()),this.moveTo(n),this.Ce(this.yb,e,t))},n.Ma=function(){var e=this.$d();this.ce(e),this.uc(e),this.yb=e,this.Wd=e.src,this.Vd=__uri("img/tia_down2.png"),e.onclick=q,this.ae=this.l(e);var n=document.getElementById("searchGroupInput");if(n)this.Yd=n.id,this.wc=this.l(n),this.Xd=this.Zd(this.wc,this.ae);else for(var e=document.getElementsByTagName("input"),r=0;r0?this.sb-this.tb:0,"tia.cnt":this.d.Qd(),"tia.l":this.d.Ka(),"tia.v":0}},n.Ve=function(){return{"tia.l":this.d.Ka(),"tia.v":0}},n.w=function(e){e?(this.S=new window.jstiming.Timer,this.S.name="show",this.S.tick("_sr"),this.d.zb(!0),this.S.tick("render","_sr"),this.sb=(new Date).getTime()):(this.ec(),this.d.zb(!1)),this.fc(e)},n.ec=function(){this.He(),this.tb=(new Date).getTime()},n.r=function(){return this.d.r()},n.Te=function(){this.tc();var e=this.d.r();this.w(!e),e||this.oa()},n.k=function(){this.w(!1)},n.ha=function(){this.w(!0)},n.moveTo=function(e){A.a.L(e.n,e.u)},n.height=function(){return A.a.height},n.width=function(){return A.a.width};var l={Bc:44032,Ac:4352,Cc:4449,ra:4519,Ec:21,Ua:28};l.Dc=l.Ec*l.Ua,l.Ab=["ᄀ","ᄁ","ᄀᄉ","ᄂ","ᄂᄌ","ᄂᄒ","ᄃ","ᄅ","ᄅᄀ","ᄅᄆ","ᄅᄇ","ᄅᄉ","ᄅᄐ","ᄅᄑ","ᄅᄒ","ᄆ","ᄇ","ᄇᄉ","ᄉ","ᄊ","ᄋ","ᄌ","ᄎ","ᄏ","ᄐ","ᄑ","ᄒ","ᄀᄅ"],l.Lc={"ᄄ":"ᄄ","ᄈ":"ᄈ","ᄍ":"ᄍ"};for(var c=0;c=3?e.charCodeAt(2)-l.ra:0;return String.fromCharCode((t*l.Ec+n)*l.Ua+e+l.Bc)},l.Ee=function(e){return e.replace(l.Ke,l.Me)},l.Va=function(e,t,n,r){return t+l.Lc[n]+r},l.Ge=function(e){return l.se(l.te(e)).replace(l.qe,l.Va).replace(l.oe,l.Va).replace(l.pe,l.Va).replace(l.re,l.Va)},l.Ye=function(e){return l.Ee(l.Ge(l.Fe(e.replace("",""))))};var h=!0,p=typeof unsafeWindow=="undefined"?window:unsafeWindow,d,v,m,b=document.getElementById?g:y,w={},x=0,T=0,N=0,C=0;p.yf&&(x=Event.Pe,T=Event.xf,N=Event.Pe,C=Event.zf);var k=x|T|N,L={en:"",fr:"",de:""},A={};A.userAgent=navigator.userAgent.toLowerCase(),A.Ga=A.userAgent.indexOf("msie")>0&&!window.opera,A.$=A.userAgent.indexOf("firefox")>=0;var O;if(O=A.$){var M=A.userAgent.match(/firefox\/(\d+)/);O=M&&M.length==2&&M[1]<=2}A.nd=O;var _;if(_=A.Ga){var D=A.userAgent.match(/msie (\d+)/);_=D&&D.length==2&&D[1]>=7}A.Cf=_,A.eb=A.userAgent.indexOf("applewebkit")>-1,A.Xb=A.userAgent.indexOf("windows")>-1,A.i=function(t,n,r){function i(e){var t=B!=e;return B=e,t&&P.xa(),t}function s(){for(var e=0;e ')}function u(e){s(''),e&&o(e)}function a(e){o(e),s("
\n")}function f(t,n,r,i,o){o=o||"",t=t.charCodeAt(0),P.ja[t]=e,t="K"+t,s('');if(n){o=P.Ia+" "+o+" ",s(" =0||u>127||u<33?""+u+";":i)}n=o.join(""),t(n),s('"')}A.a.I&&s(' dir="rtl"'),s("/>")}else s(""),s(" "),s(" "),s(" ");s(" ")}function l(e,t){for(var n=0;n":190,"?":191},V={de:{Y:90,Z:89,"Ü":192,"Û":109,"Ý":61,";":219,"=":221,"¿":220,"Ì":59,m:191},fr:{Q:65,A:81,Z:87,W:90,"Ý":219,"º":221,M:59,"À":222,"Þ":192,"¼":77,"¾":188,"¿":190,"ß":191,"Û":109}},$={189:109,187:61,107:61,186:59},J="endefr";P.sf=i,P.Xc=function(e){P.C=e,P.Aa(),A.a.aa()},P.qb=function(){return A.a.Qc&&A.a.c&&A.a.Gb()},P.Dd=function(){var e=P.b.O?z:U;P.pb="",H=[''],u(),l(e[0]),f("\b","",48),u(36),P.b.O?(l(e[1]),P.qb()?f("\n","",36):a(36)):l(e[1],1.5),u(),f("","",48),l(e[2]),P.b.O?P.qb()?f("\n","",24,1,"short"):a(24):P.qb()?f("\n","",48,1,"long"):a(48),u(),P.b.O?f("","",36,1,"shortleft"):f("","",60,1,"left"),l(e[3]),f("","",60,1,"right"),A.a.Rc&&(u(),f("đ","Alt+Ctrl",72),f(" "," ",236),f("đ","Alt+Ctrl",72)),s(" "),P.pb=H.join("")},P.Wc=function(){return J.indexOf(P.C)+P.F.join("")},P.Nc=function(e){if(e){var t=e.charCodeAt(0)-48,e=e.substring(e.length-2);P.C=J.substring(t,t+2),P.p(e)}else P.p(R?R.z():"??")},P.mf=function(){return function(e){A.a.p(e.id)}},P.Za=function(e){R=e},P.p=function(e){var t;e&&(t=n[e]||n[e.toUpperCase()]||n[e.substring(0,2).toUpperCase()],P.wa=e),t?P.b&&P.b.z()==e||t.Bd()&&A.a.ba(t):(P.wa=R?R.z():"??",A.a.ba(R))},P.Aa=function(){var e=P.C=="en"?"":L[P.C];if(P.b)A.a.Fb(P.b.kb(),P.b.Ad(),e);else{var t="(loading...)";A.a.Fb(t,t,e)}},P.ba=function(e){if(P.b!=e){c(),P.b=e,P.Aa(),P.xa();for(var e=e.z(),t=0;tA.a.Sc&&P.F.shift()}},P.Oc=function(){P.Aa(),A.a.Eb(P.pb)},P.Ia="goog-button goog-button-fixed",A.userAgent.indexOf("linux");var Q=A.userAgent.indexOf("mac")>-1;P.lb=function(e){return P.b&&P.b.bc?P.b.lb(e):{Ya:e}};var G={back:1,Ya:""},Y={K8:function(){c();var e=G;P.Ja++,A.a.ya(e)},K10:function(){A.a.Uc(),c()},K16:function(){F=!F,y((B&1)!=1)},K20:function(){i(B^2),A.a.f()},K273:function(){b()}};P.Cd=function(e,t){var n=P.lb(e.value);P.Ja++,A.a.ya(n);if(typeof t!="boolean"||!t)y(!1),i(B&-13)},P.$a=function(){for(var e in P.ja){var t="K"+e;if(e.charCodeAt(0)<58){var n=document.getElementsByName(t);P.ja[e]=n;for(var r=0;rP.za*1.1||t.3?P.Ed(t):!1}},P.kf=function(){return P.b&&P.b.ac?P.b.ac[(B&2)==2?"l":""]:""},P.xa=function(){if(P.b){var e=P.b.zd(((B&1)==1?"s":"")+((B&12)==12?"c":"")+((B&2)==2?"l":"")),t=m(20);t&&g(t,(B&2)==2);if(t=v(16))g(t[0],(B&1)==1),g(t[1],(B&1)==1);if(t=v(273))g(t[0],(B&12)==12),g(t[1],(B&12)==12);if(e)for(var n in e)if(t=e[n],typeof t=="string"){var r=m(n.charCodeAt(0));r&&(r.value=t?t:" ")}}};var Z={" ":function(){A.a.Hb()},Q:function(){A.a.Db()}},et=S(function(e){if(!O())return!0;P.ob++;var t=E(e);return t==16&&y(!1),F=j=!1,t==17&&i(B&-5),t==18&&i(B&-9),t==224||B&16?(i(B&-17),!0):e.ctrlKey&&!e.altKey||e.R&k?(e.R&x&&b(!1),!0):(I=!1,t==20&&(i(B^2),A.a.f()),!1)});P.rf=et;var tt=S(function(e){var t=E(e);if(B&4&&!(B&8)&&t>20)return B!=4?t=!1:(t=String.fromCharCode(t),(t=Z[t])?(t(),t=!0):t=!1),e.returnValue=!t;e&&(e.keyCode==17||e.ctrlKey||e.R&T)&&i(B|4);if(!O())return e.returnValue=!0;P.mb++,j=!0;var n=e.target||e.srcElement;if(n)try{n.onfocus()}catch(r){}if(t==20)return e.returnValue=!0;if(t==224||B&16)return i(B|16),e.returnValue=!0;if(e.R&x)return b(!!(e.R&x)),e.returnValue=!0;(t==18||e&&(e.altKey||e.R&N))&&i(B|8);if(t==16)return e.returnValue=y(!0);t==13&&(t=10);if(Q&&A.$){q=t;if(q==107)q=0;else if(q==13||q==10)q=10;if(q==0)return e.returnValue=!1}return e.returnValue=M(e,t,n)});P.pf=tt;var nt=S(function(e){if(!O())return!0;if(A.$&&!e.of)return!0;P.nb++;if(Q&&A.$){var t=e.target||e.srcElement;if(t)try{t.onfocus()}catch(n){}if(q==0){var r=String.fromCharCode(E(e));if(r in X)return e.returnValue=M(e,X[r],t);A.a.ya(r)}}return B&16?!0:B==4?!0:j||!I?j=!1:O()&&q!=20&&(e=m(q))?(I?c():(e.onclick(!0),I=!1),!1):(c(),j=!1,!0)});P.qf=nt;var rt,it=S(function(e){return e=e.target||e.srcElement,e==A.a.c&&(rt=_(e)),!0}),st=S(function(e){return e=e.target||e.srcElement,e==A.a.c&&rt&&(e=_(e),(rt.start!=e.start||rt.cc!=e.cc)&&c()),!0});P.va=function(){d.onkeyup!=et&&(d.onkeyup=et),d.onkeydown!=tt&&(d.onkeydown=tt),d.onkeypress!=nt&&(d.onkeypress=nt),d.onmousedown!=it&&(d.onmousedown=it),d.onmouseup!=st&&(d.onmouseup=st)}},A.Ca=function(e,t,n){var r=document.createElement("div");return r.className="kbd-button kbd-button-out",r.id=t,r.appendChild(document.createTextNode(e)),n&&(r.onclick=n),r.onmouseover=function(){r.className="kbd-button kbd-button-over"},r.onmouseout=function(){r.className="kbd-button kbd-button-out"},r},A.gb=function(e,t){t.className="select-dialog",e.className="trigger",e.onmouseover=function(){e.className="trigger trigger-over"},e.onmouseout=function(){e.className="trigger"};var n=this,r=A.Ca("","close",function(){n.k(),A.a.f()}),i=document.createElement("table"),s=document.createElement("tbody");i.cellSpacing="0",i.cellPadding="0",i.appendChild(s),i.className="select-dialog";var o=e.parentNode.clientWidth||e.parentNode.width,u=r.clientWidth||r.width;o&&(i.style.width=Math.max(o-5,0),u)&&(t.style.width=Math.max(o-u-20,0)),o=document.createElement("tr"),s.appendChild(o),s=document.createElement("td"),o.appendChild(s),u=document.createElement("td"),o.appendChild(u),s.appendChild(t),u.appendChild(r),this.Pa=i;var a=t.onchange;t.onchange=function(){n.k(),a&&a()},e.onclick=function(){n.ha()},this.Pa.style.display="none",this.rc=e,e.parentNode.insertBefore(this.Pa,e)},A.gb.prototype.ha=function(){this.rc.style.display="none",this.Pa.style.display=""},A.gb.prototype.k=function(){this.Pa.style.display="none",this.rc.style.display=""},A.nc=function(e,t){return t==e?e:e.indexOf("=0?e:['',e," "].join("")},A.Mb=function(e){function t(e){if(e.indexOf(":")>0){var t=e.split(/:/),e=t[0].split(/,/),n=t[1];i.wb=t[t.length>2?2:1]}else e=e.split(/,/);i.id=e[0],u=e.length>1?e[1]:i.id,a=A.nc(i.wb,n)}function n(e){var t=i.O?"À1234567890m=QWERTYUIOPÛÝÜASDFGHJKL;ÞâZXCVBNM¼¾¿":"À1234567890m=QWERTYUIOPÛÝÜASDFGHJKL;ÞZXCVBNM¼¾¿",n;for(n in e){var r=e[n],s=n.split(/,/);s.join(",")!=n&&s.push("");var o={};if(r){for(var u in r)if(u!=""){var a=r[u];if(typeof a=="string")if(u.length==1)o[u.charAt(0)]=a;else for(var l=0;l0&&t.push(" "),t.push(A.Id(r,"s2"+n,"_kbdS2('"+n+"');")))}return t.join("")}},i.Ad=function(){return i.Pd||i.kb()},i.z=function(){return u},i.Ma=function(e){e.is102Keyboard&&(i.O=!0),e.mappings&&(n(e.mappings),e.capslock&&(i.ac=e.capslock),e.view2char&&(c=e.view2char),i.pc(),i.Ma=i.Bd=P(!0),i.bc=!0,i.Mc=function(){return e.direction=="rtl"})},i.zd=function(e){return f[e]},i.lb=function(e){return c[e]&&(e=c[e]),l?i.Nd(e):e},i.pc=function(){i.e=[{j:"",o:-1,H:"",X:0,h:""}]},i.Nd=function(e){for(var t=0;t-1&&(r=r.slice(0,n.o)+i.U+r.slice(n.o)),n=i.Od(r,n.H);if(n.back>-1)break}if(t==i.e.length){for(t=0;te.X?n.back=e.h.length+n.back-e.X:(t=e.j.length-e.X,r=e.j.length-n.back,n.V=e.j.slice(t,r)+n.V,n.back=e.h.length);for(t=0;te.h.length?(e.X+=n.back-e.h.length,e.h=n.V):(r=e.h.length-n.back,e.h=e.h.slice(0,r),e.h+=n.V);return t=n.vb.indexOf(i.U),e=n.vb.replace(i.U,""),i.oc({j:e,o:t,H:"",X:0,h:""}),{back:n.back,Ya:n.V}},i.oc=function(e){i.e.push(e),i.Ld(),i.Md()},i.Ld=function(){for(var e=0;e-1?1:0,o=o.length-a-t.length,n=n.replace(r,u),r=n.slice(s.index),n=n.replace(i.U,"")+i.U,n={back:o,V:r,vb:n}}else n={back:-1,V:t,vb:n};return n},i.yd=function(){i.pc()},t(e.id),e.mappings&&i.Ma(e)};var H={en:"QWERTY",fr:"AZERTY",de:"QWERTZ"};A.Id=function(e,t,n){return['",e," "].join("")};var B="vMmh";A.Qe=function(){function e(){var e=d.createElement("div"),t=e.style;return t.visibility="hidden",e.innerHTML='',e.setAttribute("id","kbd"),e.className="outerbox",m.appendChild(e),e}function n(){function e(){if(i==0){if(w.od()){var e=A.Ea();if(!e)return!1}A.Ga?f.ld(d.getElementsByTagName("iframe")):A.nd||(f.jb(window,"_kbdWF"),f.ud())}return i=(i+1)%10,r||(f.vd(),f.wd(),y.Nc(),r=!0),y.Ib()}function t(){p.setTimeout(t,e()?130:1300)}d=p.document,v=d.documentElement,m=d.body;var n=b("kbd");n&&E(n,d);var r=!1,i=0;t(),e()}function r(){var e=b("kbd_t");return e&&(f.Yb(e),b("kbd_ta").onclick=function(e){if(!u()){if(A.N){var t=A.N();t&&(t.bb=!1,t.r()&&a("v"))}else a("v");e&&(e.stopPropagation?e.stopPropagation():e.cancelBubble=!0)}},o()),e}function i(){var e=r();e&&(f.jd||M>1)&&(e.innerHTML=f.gd(),e=b("kbd_oem"),A.Xb&&e&&A.a.fb)&&(e.innerHTML=H[y.C])}function s(){var e=b("kbd_minmax");if(!(e.childNodes.length>0)){var t;t=A.a.K?A.Ca("",f.g=="v"?"max":"min",function(){f.Hb()}):A.Ca("","close",function(){f.k()}),e.appendChild(t)}}function o(){if(A.Xb&&A.a.fb){var e=b("kbd_oem");e.title="Click to setup the physical keyboard layout.";if(e.parentNode.childNodes.length==1){var t=document.createElement("select");if(A.eb){var n=document.createElement("optgroup");n.label="Native Layout";for(var r in H)n.appendChild(new Option(H[r],r));t.appendChild(n)}else for(r in H)t.options.add(new Option(H[r],r));t.selectedIndex=0,t.onchange=function(){y.Xc(t.value),f.f()},A.eb&&(t.onfocus=function(){A.a.ib=!0},t.onblur=function(){A.a.ib=!1}),new A.gb(e,t)}}}function u(){return"vM".indexOf(f.g)>=0}function a(e){f.db(e),f.aa()}var f=this,l,c,g,y,x={},T=1,N=1,C=1;f.ia=!1,f.ib=!1,f.ad=function(){return f.ib},f.n=-1;var k=f.u=-1,L=-1;f.scrollX=0,f.scrollY=0,f.Ob=!0,f.hf="left",f.s=0,f.D=0,f.Kb="h",f.g="h",f.$c="h",f.Ha={};var O=[],M=0;f.Sc=1,f.gf="black",f.linkColor="blue",f.bgColor="#ebfcf7",f.bf="#ebfcf7",f.Qb="",f.Pb="",f.scale=1,f.sd=A.Ga?"absolute":"fixed",f.jd=!0,f.Vb=!1,f.hb=t,f.Rb="",f.Rc=!0,f.Qc=!0,f.pd=!1,f.ga=!1,f.fb=!0,f.K=!0,f.ea=!1,f.Jb=function(e){for(var t in e){var n=t.charAt(0)=="_"?t.substring(1):t;e.hasOwnProperty(t)&&typeof f[n]!="undefined"&&(f[n]=e[t])}},f.ef=function(e){f.hb=e},f.Zb=[function(){function t(){A.rd(),n&&n()}l=e(),f.hb&&f.hb(l),y||(y=f.d=new A.i(x,f.Ha,g)),f.d.Cb=f.scale,c=l.style,c.position=f.sd,A.rd=function(){f.Tb()?f.ab():f.q()};var n=p.onresize;t!=n&&(p.onresize=t),y.Oc(),f.ba(g,!0),f.aa=function(){var e=d,t=y.Wc()+"-",n;n=Math.floor(2e3*f.s)*4804+Math.floor(1200*f.D)*4+B.indexOf(f.g);var r=[];if(n<=0)n="0";else{for(;n>0;){var i=n%62;r.push(String.fromCharCode(i+(i<10?48:i<36?55:61))),n=Math.floor(n/62)}n=r.reverse().join("")}e.cookie="KBD="+(t+n)+";expires=July 19, 2051"};if(c.position=="absolute"){A.onscroll=function(){f.scrollX=v&&v.scrollLeft,f.scrollX||(f.scrollX=m.scrollLeft),f.scrollY=v&&v.scrollTop,f.scrollY||(f.scrollY=m.scrollTop),f.L(f.n,f.u)};var r=p.onscroll,i=function(){p.onscroll=function(){A.onscroll(),r&&r()}};r!=p.onscroll&&(p.onscroll=i)}}],f.vd=function(){for(var e=0;et){t=n;break e}}else t=-1;e.width=t,T=f.fd()-f.width,N=f.I?0:T,C=f.ed()-f.height,k=Math.floor(T*(f.I?f.s:1-f.s)+.5),L=Math.floor(C*(1-f.D)+.5)},f.aa=function(){},f.jb=function(e,t){if(e){var n=e.onfocus;n?n.toString().indexOf(t)<0&&(e.onfocus=function(){p[t](e),n()}):e.onfocus=function(){p[t](e)}}},f.ud=function(){var e=window.onblur;e?e.toString().indexOf("_kbdWB")<0&&(window.onblur=function(){p._kbdWB(),e()}):window.onblur=function(){p._kbdWB()}},f.Ea=function(e){for(var t=!1,n=0;nt?r.substring(0,i-t):"";e.value=o+n+r.substring(s,r.length),t=i+n.length-t,e.blur(),e.focus(),e.setSelectionRange(t,t),A.$&&window.cd&&(t=document.createEvent("KeyEvents"),t.Wb("keypress",!0,!0,window,!1,!1,!1,!1,0,32),e.dispatchEvent(t),t=document.createEvent("KeyEvents"),t.Wb("keypress",!0,!0,window,!1,!1,!1,!1,8,0),e.dispatchEvent(t))}else e.value=r.length'+(f.Rb||t)+"",i()},f.gd=function(){return f.xd},f.$a=function(){y.$a()},f.Lb=function(e){if(O.length==2||e&&O.length>1){var e=b("kbd-loop"),t=A.Ca("","loop",function(){f.Db()});f.df=t,e.appendChild(t)}},f.dd=function(e){var t="";A.a.ea&&(t=' ');var n="";return A.a.Da&&(n=' '),[' "].join("")},f.Eb=function(e){f.jf=""+Math.floor(12*f.scale)+"px";var t=b("kbd_0");t&&(t.innerHTML=f.dd(e),s(),f.Lb(!0),i(),f.$a())},f.Sb=function(){f.v();var e=f.s,t=f.D;f.s=Math.min(1,(f.I?f.n:T-f.n)/T),f.D=Math.min(1,1-f.u/C),e!=f.s&&t!=f.D&&f.aa()},f.L=function(e,t){f.n=Math.min(T,Math.max(0,e)),f.u=Math.min(C,Math.max(0,t)),c.right=""+Math.floor(T-f.n-f.scrollX)-5+"px",c.bottom=""+Math.floor(C-f.u-f.scrollY)+"px"},f.q=function(){f.v();for(var e=3;e-->0&&(k!=f.n||L!=f.u);)f.L(k,L),f.v()},f.Vc=function(){f.g!="h"&&f.q()},f.Tb=function(){f.v();var e=Math.abs(N-f.n)+Math.abs(C-f.u);return e<90},f.ab=function(){f.s=f.D=0,f.v(),f.L(N,C),f.q(),f.Sb()},f.Hb=function(){if(u())f.k();else if(f.g=="M")if(A.N){var e=A.N();e&&(e.bb=!0,e.r()&&a("m"))}else a("m");else f.ha()},f.Ba="v",f.Bb=u,f.cb=function(){f.ia=!1},f.va=function(){!f.ia&&u()&&(y.va(),f.ia=!0
+)},f.Tc=function(){return f.ia},f.ff=function(){},f.db=function(e){if(y){if("hm".indexOf(e||f.g)>=0){if(f.g=e,f.cb(),f.f(),f.g=="h"){c.visibility="hidden";return}}else y.xa();e=="M"&&!f.Ob&&(e="v"),f.g=e,y.Aa();var t=b("kbd_mka");t&&(t.style.display=e=="v"?"block":"none",f.q(),f.va(),y.za=1,y.Ib(!0),f.f(),c.visibility="visible")}},f.wd=function(){f.db(f.Kb)},f.J=function(){a(f.K?"m":"h")},f.k=function(){f.J(),b("kbd_ta").onclick=t,f.Ba=u(),A.a.Fa&&A.a.Fa()},f.bd=function(){if(A.N){var e=A.N();e&&e.bb?a("m"):a("v")}else a("v")},f.ha=function(){a("v"),f.Ba=u(),A.a.Fa&&A.a.Fa()}},A.a=new A.Qe,p._kbdHide=function(){A.a.J()},A.Ea=function(){var e=A.a.Ea(d.getElementsByTagName("textarea")),t=A.a.Ea(d.getElementsByTagName("input"));return e||t},A.a.Td=function(t){var n=A.a.Nb("-",new A.Mb(t));n.kb=n.Fd({}),A.a.Za(n),A.a.Jb({Ob:!1,$c:"h",Qb:t.Qb||"▲",Pb:t.Pb||"▼",Rb:e})},p._kbdS2=function(e){A.a.p(e)},A.a.Af=!0,A.a.sa=!1,A.a.$b="move",A.a.Yb=function(e){var t=this;e.onmousedown=function(e){return t.Be=d.onmousemove,d.onmousemove=function(e){return t.ze(e||p.event)},t.Ae(e||p.event),!1},e.onmouseup=function(){t.Ic(),d.onmousemove=t.Be},e.onblur=function(){t.Ic()}},A.a.Bf=function(e){var t=this;t.D=Math.floor(e%1201)/1200,t.s=Math.floor(e/1201)/2e3,t.q(),t.Tb()&&t.ab()},A.a.Ic=function(){var e=this;e.sa&&(e.Sb(),e.va(),e.sa=!1)},A.a.Ae=function(e){var t=this;t.ve=e.clientX-t.left(),t.we=e.clientY-t.top(),t.sa=!0},A.a.ze=function(e){var t=this;return t.sa&&t.L(e.clientX-t.ve-t.scrollX,e.clientY-t.we-t.scrollY),!t.sa},w.De=!1,w.na=!0,w.Oa=!0,w.sc=!0,w.jc=function(e){w.na=e},w.Df=function(e){w.sc=e},w.Ff=function(e){w.Oa=e},w.od=function(){return w.Oa},w.kc=function(e){A.a.Vb=e},w.ub=function(e){if(e in w.Xa||w.Wa[e])return e==e.toUpperCase()&&(e=w.Xa[e]),e;throw e+" is not a supported layout."},w.xb=t,w.Ef=function(e){w.xb=e},w.Ze=function(t){A.a.q=function(){A.a.v();var n=t(A.a.height,A.a.width);typeof n.x!=e&&typeof n.y!=e&&(A.a.L(n.x,n.y),A.a.v())}},w.We=function(e){return e=w.ub(e),w.Wa[e]},w.Rd=function(e){typeof e=="string"&&(e=document.getElementById(e));if(e&&e.id){if(!w.Oa)return e.id;if(w.qc(e))return e.id}return t},w.qc=function(e){var t=e.nodeName.toLowerCase();return t=="textarea"||t=="input"&&e.type.toLowerCase()=="text"},w.la=[],w.qa={},w.La=[],w.xe=function(){return A.a.c},w.gc=function(e){var t=w.qa[e];t?typeof t=="object"&&w.loadme(t):(w.qa[e]="loading",e=w.De+e+".js",t=document.createElement("script"),t.src=e,document.body.appendChild(t))},w.Na=function(e,t){for(var n=0;n0&&A.a.Yc("-"),typeof e[0]=="object")for(var r=e,e=[],i=0;i0)for(i in e)s=w.ub(e[i]),w.gc(s);if(!n||n.length==0)if(w.P=this,!A.a.c)A.a.c=document.activeElement;this.Hd(n),w.La.push(this);for(i=0;i0&&this.rb(e[0])},w.i.prototype.Hd=function(e){for(var t in e){var n=w.Rd(e[t]);if(n&&(this.ma.push(n),w.la[n]&&w.la[n].Na(n),w.la[n]=this,!A.a.c)){var r=document.activeElement;if(r)if(w.Oa){if(w.qc(r)&&r.id!=n)continue}else if(r.id!=n)continue;A.a.c=document.getElementById(n)}}},w.ka="",w.loadme=function(e){var t=e.id;w.qa[t]=e,A.a.Td(e),w.sc&&A.a.Jb({Kb:"v"}),w.ka||A.a.Zc();for(var n in w.La)w.La[n].Ud(t);A.a.Lb(),w.xb&&w.xb(t),w.ka=t},n=w.i.prototype,n.fe=function(){if(w.P)return!0;var e=w.xe();if(e)for(var t=0;t=0;t--)if(this.pa[t]==e){this.b=e,this.fe()&&this.vc(e),this.pa=this.pa.slice(t+1);break}},n.Na=function(e){w.Na(this.ma,e),this.ma.length==0&&w.Na(w.La,this)},n.Ka=function(){return w.P?A.a.b||w.ka:this.b||A.a.b||w.ka},n.rb=function(e){e=w.ub(e),e in w.qa&&typeof w.qa[e]=="object"?(this.b=e,this.vc(e)):(this.pa.push(e),w.gc(e))},n.Qd=function(){return this.hc},n.r=function(){return A.a.Bb()},n.Xe=function(){return!!A.a.d},n.zb=function(e){A.a.Ba=e,this.w(e)},n.w=function(e){e?(this.hc++,A.a.bd()):A.a.J()},w.ea=function(e){A.a.ea=e},w.ga=function(e){A.a.ga=e},w.Da=function(e){A.a.Da=e},w.lc=function(e){A.a.Fa=e},w.$e=function(e){A.a.Ub=e},w.ic=function(e){A.a.fb=e},w.K=function(e){A.a.K=e},w.hangulTransform=function(e){return l.Ye(e)},p._kbdSI=function(e){if(e&&e!=A.a.c&&A.a.d&&e.className!=A.a.d.Ia){var n=w.P||w.la[e.id];n?(A.a.c=e,n.rb(n.Ka()),n.w(A.a.Ba)):(A.a.c=t,w.na?A.a.J():(A.a.cb(),A.a.f()))}},p._kbdIF=function(){w.na&&(A.a.c=t,A.a.J())},p._kbdWB=function(){w.na&&(!A.eb||!A.a.ad())&&(A.a.c=t,A.a.J())},p._kbdWF=function(){w.na&&document.activeElement&&document.activeElement.onfocus&&document.activeElement.onfocus()},A.N=function(){var e;return A.a.c&&A.a.c.id&&(e=w.la[A.a.c.id]),e?e:w.P},f("google.elements.keyboard.Keyboard",w.i),f("google.elements.keyboard.Keyboard.prototype.getLayout",w.i.prototype.Ka),f("google.elements.keyboard.Keyboard.prototype.setLayout",w.i.prototype.rb),f("google.elements.keyboard.Keyboard.prototype.isVisible",w.i.prototype.r),f("google.elements.keyboard.Keyboard.prototype.isReady",w.i.prototype.Xe),f("google.elements.keyboard.Keyboard.prototype.setVisible",w.i.prototype.zb),f("google.elements.keyboard.setVisibilityChangeCallback",w.lc),f("google.elements.keyboard.setLayoutChangeCallback",w.$e),f("google.elements.keyboard.getLayoutName",w.We),f("google.elements.keyboard.setAutoHide",w.jc),f("google.elements.keyboard.setSendShiftKeyUpEventUponInput",w.kc),f("google.elements.keyboard.enableGoogleLogo",w.ea),f("google.elements.keyboard.helpLink",w.ga),f("google.elements.keyboard.cfgLink",w.Da),f("google.elements.keyboard.enableKeyCodeScheme",w.ic),f("google.elements.keyboard.enableMinMaxMode",w.K),f("google.elements.keyboard.hangulTransform",w.hangulTransform),f("google.elements.keyboard.loadme",w.loadme),f("google.elements.keyboard.setHomePositionCallback",w.Ze),f("google.elements.keyboard.LayoutName",w.Wa),f("google.elements.keyboard.LayoutCode",w.Xa),w.Xa={ALBANIAN:"sq",ARABIC:"ar",ARMENIAN_EASTERN:"hy_east",ARMENIAN_WESTERN:"hy_west",BASQUE:"eu",BELARUSIAN:"be",BENGALI_INSCRIPT:"bn_inscript",BENGALI_PHONETIC:"bn_phone",BOSNIAN:"bs",BRAZILIAN_PORTUGUESE:"pt_br",BULGARIAN:"bg",BULGARIAN_PHONETIC:"bg_phone",CATALAN:"ca",CHEROKEE:"chr",CROATIAN:"hr",CZECH:"cs",CZECH_QWERTZ:"cs_qwertz",DANISH:"da",DARI:"prs",DUTCH:"nl",DEVANAGARI_PHONETIC:"deva_phone",ENGLISH:"en",ESTONIAN:"et",ETHIOPIC:"ethi",FINNISH:"fi",FRENCH:"fr",GALICIAN:"gl",GEORGIAN_QWERTY:"ka_qwerty",GEORGIAN_TYPEWRITER:"ka_typewriter",GERMAN:"de",GREEK:"el",GUJARATI_INSCRIPT:"gu_inscript",GUJARATI_PHONETIC:"gu_phone",GURMUKHI_INSCRIPT:"guru_inscript",GURMUKHI_PHONETIC:"guru_phone",HEBREW:"he",HINDI:"hi",HUNGARIAN_101:"hu_101",ICELANDIC:"is",ITALIAN:"it",KANNADA_INSCRIPT:"kn_inscript",KANNADA_PHONETIC:"kn_phone",KAZAKH:"kk",KHMER:"km",KOREAN:"ko",KYRGYZ:"ky_cyrl",LAO:"lo",LATVIAN:"lv",LITHUANIAN:"lt",MACEDONIAN:"mk",MALAYALAM_INSCRIPT:"ml_inscript",MALAYALAM_PHONETIC:"ml_phone",MALTESE:"mt",MAORI:"mi",MONGOLIAN_CYRILLIC:"mn_cyrl",MONTENEGRIN:"srp",NORWEGIAN:"no",ORIYA_INSCRIPT:"or_inscript",ORIYA_PHONETIC:"or_phone",PAN_AFRICA_LATIN:"latn_002",PASHTO:"ps",PERSIAN:"fa",POLISH:"pl",PORTUGUESE:"pt_pt",ROMANI:"rom",ROMANIAN:"ro",ROMANIAN_SR13392_PRIMARY:"ro_sr13392_primary",ROMANIAN_SR13392_SECONDARY:"ro_sr13392_secondary",RUSSIAN:"ru",SANSKRIT_PHONETIC:"sa_phone",SERBIAN_CYRILLIC:"sr_cyrl",SERBIAN_LATIN:"sr_latn",SINHALA:"si",SLOVAK:"sk",SLOVAK_QWERTY:"sk_qwerty",SLOVENIAN:"sl",SOUTHERN_UZBEK:"uzs",SPANISH:"es_es",SWEDISH:"sv",SWISS_GERMAN:"de_ch",TAMIL_99:"ta_tamil99",TAMIL_INSCRIPT:"ta_inscript",TAMIL_PHONETIC:"ta_phone",TATAR:"tt",TELUGU_INSCRIPT:"te_inscript",TELUGU_PHONETIC:"te_phone",THAI:"th",TURKISH_F:"tr_f",TURKISH_Q:"tr_q",UIGHUR:"ug",UKRAINIAN_101:"uk_101",URDU:"ur",UZBEK_LATIN:"uz_latn",UZBEK_CYRILLIC_PHONETIC:"uz_cyrl_phone",UZBEK_CYRILLIC_TYPEWRITTER:"uz_cyrl_type",VIETNAMESE_TCVN:"vi_tcvn",VIETNAMESE_TELEX:"vi_telex",VIETNAMESE_VIQR:"vi_viqr"},w.Wa={ar:"العربية",be:"беларуская",bg:"български език",bg_phone:"български език(фонетика)",bn_inscript:"বাংলা(INSCRIPT)",bn_phone:"বাংলা(ফোনেটিক)",bs:"bosanski",ca:"català",chr:"ᏣᎳᎩ",cs:"čeština",cs_qwertz:"čeština QWERTZ",da:"dansk",de:"Deutsch",de_ch:"Deutschsprachige Schweiz",deva_phone:"देवनागरी(फोनेटिक)",el:"ελληνικά",en:"English",es_es:"español",et:"eesti keel",ethi:"ግዕዝ",eu:"Euskara",fa:"فارسی",fi:"suomi",fr:"français",gl:"Galego",gu_inscript:"ગુજરાતી(INSCRIPT)",gu_phone:"ગુજરાતી(ફોનેતિક)",guru_inscript:"ਗੁਰਮੁਖੀ(INSCRIPT)",guru_phone:"ਗੁਰਮੁਖੀ(ਫੋਨੇਟਿਕ)",he:"עִבְרִית",hi:"हिंदी",hr:"hrvatski",hu_101:"magyar nyelv(101)",hy_east:"Արևելահայերեն",hy_west:"Արեւմտահայերէն",is:"íslenska",it:"italiano",ka_qwerty:"ქართული (ქწერტყ)",ka_typewriter:"ქართული (საბეჭდი მანქანა)",kk:"Қазақ",km:"អក្សរខ្មែរ NiDA",ko:"한국어",kn_inscript:"ಕನ್ನಡ(INSCRIPT)",kn_phone:"ಕನ್ನಡ(ಫೊನೆಟಿಕ್)",ky_cyrl:"Кыргыз",latn_002:"Africa Latin",lo:"ພາສາລາວ",lt:"lietuvių kalba",lv:"latviešu valoda",mi:"Māori",mk:"македонски",ml_inscript:"മലയാളം(INSCRIPT)",ml_phone:"മലയാളം(ഫൊണറ്റിക്)",mn_cyrl:"Монгол",mt:"Malti",nl:"Nederlands",no:"norsk",or_inscript:"ଓଡ଼ିଆ(INSCRIPT)",or_phone:"ଓଡ଼ିଆ(ଫୋନେଟିକ)",pl:"polski",prs:"فارسی دری",ps:"پښتو",pt_br:"português brasileiro",ro:"română",ro_sr13392_primary:"română SR13392 Primary",ro_sr13392_secondary:"română SR13392 Secondary",pt_pt:"português europeu",rom:"rromani ćhib",ru:"Pyccĸий",sa_phone:"संस्कृतम्(फोनेटिक)",si:"ශුද්ධ සිංහල SLS1134",sk:"slovenský jazyk",sk_qwerty:"slovenščina QWERTY",sl:"slovenščina",sq:"shqip",srp:"Crnogorski jezik",sr_cyrl:"Српски",sr_latn:"Srpski",sv:"svenska",ta_tamil99:"தமிழ்(TAMIL99)",ta_inscript:"தமிழ்(INSCRIPT)",ta_phone:"தமிழ்(போனெடிக்)",te_inscript:"తెలుగు(INSCRIPT)",te_phone:"తెలుగు(ఫోనెటిక్)",th:"ภาษาไทย",tr_f:"Türkçe - F",tr_q:"Türkçe - Q",tt:"Татар",ug:"ئۇيغۇرچە",uk_101:"украї́нська мо́ва(101)",ur:"اردو",uz_latn:"O‘zbek",uz_cyrl_phone:"Ўзбек(фонетичні)",uz_cyrl_type:"Ўзбек(Російська)",uzs:"Southern Uzbek",vi_tcvn:"Tiếng Việt TCVN 6064",vi_telex:"Tiếng Việt Telex",vi_viqr:"Tiếng Việt VIQR"},f("google.elements.keyboard.LayoutName",w.Wa),f("google.elements.keyboard.LayoutCode",w.Xa);var j={id:"ar",title:"لوحة مفاتيح اللغة العربية",direction:"rtl",mappings:{"scl,sc,sl,s":{"À1234567890m=":"ّ!@#$%^&*)(_+",QWER:"ًٌَُ",T:"لإ","YUIOPÛÝÜ":"إ‘÷×؛<>|",ASDF:"ٍِ][",G:"لأ","HJKL;Þ":'أـ،"',ZXCV:"~ْ}{",B:"لآ","NM¼¾¿":"آ’,.؟"},"cl,l,c,":{"À1234567890m=":"ذ١٢٣٤٥٦٧٨٩٠-=","QWERTYUIOPÛÝÜ":"ضصثقفغعهخحجد\\","ASDFGHJKL;Þ":"شسيبلاتنمكط",ZXCV:"ئءؤر",B:"لا","NM¼¾¿":"ىةوزظ"}}};google.elements.keyboard.loadme(j);if(window.jstiming){window.jstiming.Jc={},window.jstiming.Ie=1;var F=function(t,n,r){var i=t.t[n],s=t.t.start;if(i&&(s||r))return i=t.t[n][0],s=r!=e?r:s[0],i-s},I=function(e,t,n){};window.jstiming.report=function(e,t,n){}}var U=new a;R(),f("google.tia.positionTia",function(e,t){U.Hc(e,t)}),f("google.tia.isVisible",function(){U.r()}),f("google.tia.show",function(){U.ha()}),f("google.tia.hide",function(){U.k()})})();
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/keyboard.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/keyboard.tpl
new file mode 100755
index 000000000..c1779488e
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/keyboard.tpl
@@ -0,0 +1,19 @@
+<%require name="common:widget/keyboard/`$head.dir`/`$head.dir`.css"%>
+
+<%script%>
+require.async("common:widget/ui/jquery/jquery.js", function($) {
+ var $keyBoard = $("#searchKeyboard");
+ $keyBoard.attr("src", $keyBoard.attr("data-src"));
+ $keyBoard.one("e_go.keyboard", function() {
+ require.async("common:widget/keyboard/keyboard-async.js");
+ });
+
+ $(function() {
+ $keyBoard.trigger("e_go.keyboard");
+ });
+
+ $keyBoard.one("mouseenter", function() {
+ $(this).trigger("e_go.keyboard");
+ });
+});
+<%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/ltr/ltr.css
new file mode 100755
index 000000000..e69de29bb
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/rtl/rtl.css
new file mode 100755
index 000000000..f70423bb6
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/keyboard/rtl/rtl.css
@@ -0,0 +1,56 @@
+.box-search_keyboard {
+ cursor: pointer;
+ border-radius: 2px;
+ background-color: #e1e1e3;
+ width: 23px;
+ height: 23px;
+ margin: 1px;
+ margin-bottom: 0;
+}
+.box-search_keyboard:hover {
+ background-color: #dcdcde;
+}
+.keyboard-down{
+ background-color: #52ac79 !important;
+}
+#kbd{
+ position:absolute !important;
+ top:130px;
+ z-index: 100;
+}
+.outerbox{
+ max-height:152px;
+}
+#kbd input.goog-button,#kbd button.goog-button{height:16px;}
+
+ /* 新版首页 keyboard */
+.flow-on #kbd,body #kbd td{
+ background-color: #f5f6f7;
+}
+.flow-on #kbd{
+ border-color: #e6e6e6;
+ padding-top: 5px;
+}
+.flow-on #kbd #close{
+ background: url(../img/icon-n.png) no-repeat;
+ margin-left: 7px;
+ width: 5px !important;
+ height: 7px !important;
+ padding: 2px 1px;
+}
+.flow-on #kbd #close:hover{
+ background: url(../img/icon_hover-n.png) no-repeat;
+}
+
+.flow-on .box-search_keyboard{
+ margin-top: 3px;
+ background-color: #919191;
+ visibility: visible;
+}
+
+.flow-on .box-search_keyboard:hover{
+ background-color: #919191;
+}
+.flow-on .keyboard-down{
+ background-color: #1c81e5 !important;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/login-popup/img/i-popup-fb-click.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/login-popup/img/i-popup-fb-click.png
new file mode 100755
index 000000000..b314d87dd
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/login-popup/img/i-popup-fb-click.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/login-popup/img/i-popup-fb-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/login-popup/img/i-popup-fb-hover.png
new file mode 100755
index 000000000..4e4a6a368
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/login-popup/img/i-popup-fb-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/login-popup/img/i-popup-fb.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/login-popup/img/i-popup-fb.png
new file mode 100755
index 000000000..ecacef42b
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/login-popup/img/i-popup-fb.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/login-popup/img/popup-login-click.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/login-popup/img/popup-login-click.png
new file mode 100755
index 000000000..72bcb23db
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/login-popup/img/popup-login-click.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/login-popup/img/popup-login-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/login-popup/img/popup-login-hover.png
new file mode 100755
index 000000000..14f5695e2
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/login-popup/img/popup-login-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/login-popup/img/popup-login.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/login-popup/img/popup-login.png
new file mode 100755
index 000000000..645d16439
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/login-popup/img/popup-login.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/login-popup/login-popup.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/login-popup/login-popup.tpl
new file mode 100755
index 000000000..fd9347511
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/login-popup/login-popup.tpl
@@ -0,0 +1,28 @@
+<%if $head.dir=='ltr'%>
+ <%require name="common:widget/login-popup/ltr/ltr.css"%>
+<%else%>
+ <%require name="common:widget/login-popup/rtl/rtl.css"%>
+<%/if%>
+
+<%script%>
+require.async(["common:widget/ui/jquery/jquery.js", "common:widget/ui/popup/popup.js"], function($, Popup){
+ <%if !empty($body.loginPopup.selector)%>
+ $(document).on("click", "<%$body.loginPopup.selector%>", function(){
+ if(window.loginCtroller.verify != 1){
+ var options = {
+ title: "<%$body.loginPopup.title%>",
+ content: '',
+ key: "loginPop",
+ dir: "<%$head.dir%>"
+ };
+ Gl.loginPopup = new Popup(options);
+ Gl.loginPopup.init();
+ }
+ }).on("click", "#popupFBBtn", function(){
+ if(window.loginCtroller.verify != 1){
+ window.loginCtroller && window.loginCtroller.fire();
+ }
+ });
+ <%/if%>
+});
+<%/script%>
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/login-popup/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/login-popup/ltr/ltr.css
new file mode 100755
index 000000000..79c532b75
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/login-popup/ltr/ltr.css
@@ -0,0 +1,71 @@
+.login-popup-content {
+ width: 260px;
+ margin: 0px auto;
+}
+.login-popup-content .popup-login-btn{
+ display: block;
+ width: 230px;
+ margin: 25px auto 0px;
+ background: url(../img/popup-login.png?__sprite) repeat-x;
+ border-top: 1px solid #6b90dc;
+ border-right: 1px solid #476bba;
+ border-bottom: 1px solid #1d3e91;
+ border-left: 1px solid #476bba;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ -o-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+ box-shadow: 0px 1px 3px #555;
+ height: 35px;
+}
+.login-popup-content .i-popup-fb {
+ display: inline-block;
+ float: left;
+ width: 29px;
+ height: 35px;
+ border-right: 1px solid #5476b9;
+ background: url(../img/i-popup-fb.png?__sprite) no-repeat;
+}
+.login-popup-content .popup-login-text {
+ display: inline-block;
+ float: left;
+ height: 35px;
+ line-height: 35px;
+ border-left: 1px solid #6086cf;
+ padding: 0 20px;
+ font-size: 14px;
+ color: #fff;
+}
+.login-popup-content .popup-login-desc{
+ margin-top: 20px;
+ color: #999999;
+}
+.login-popup-content .popup-login-btn:hover {
+ background: url(../img/popup-login-hover.png?__sprite) repeat-x;
+ border-top: 1px solid #f67a35;
+ border-right: 1px solid #df551e;
+ border-bottom: 1px solid #c72f07;
+ border-left: 1px solid #ee671c;
+}
+.login-popup-content .popup-login-btn:hover .i-popup-fb {
+ border-right: 1px solid #cf6d24;
+ background: url(../img/i-popup-fb-hover.png?__sprite) no-repeat;
+}
+.login-popup-content .popup-login-btn:hover .popup-login-text {
+ border-left: 1px solid #d68a57;
+}
+.login-popup-content .popup-login-btn:active {
+ background: url(../img/popup-login-click.png?__sprite) repeat-x;
+ border-top: 1px solid #f67a35;
+ border-right: 1px solid #df551e;
+ border-bottom: 1px solid #c72f07;
+ border-left: 1px solid #ee671c;
+}
+.login-popup-content .popup-login-btn:active .i-popup-fb {
+ border-right: 1px solid #cf762c;
+ background: url(../img/i-popup-fb-click.png?__sprite) no-repeat;
+}
+.login-popup-content .popup-login-btn:active .popup-login-text {
+ border-left: 1px solid #d6915d;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/login-popup/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/login-popup/rtl/rtl.css
new file mode 100755
index 000000000..2724315b6
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/login-popup/rtl/rtl.css
@@ -0,0 +1,75 @@
+.login-popup-content {
+ width: 260px;
+ margin: 0px auto;
+}
+.login-popup-content .popup-login-btn{
+ display: block;
+ width: 230px;
+ margin: 25px auto 0px;
+ background: url(../img/popup-login.png?__sprite) repeat-x;
+ border-top: 1px solid #6b90dc;
+ border-left: 1px solid #476bba;
+ border-bottom: 1px solid #1d3e91;
+ border-right: 1px solid #476bba;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ -o-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+ box-shadow: 0px 1px 3px #555;
+ height: 35px;
+}
+.login-popup-content .i-popup-fb {
+ display: inline-block;
+ float: right;
+ width: 29px;
+ height: 35px;
+ border-left: 1px solid #5476b9;
+ background: url(../img/i-popup-fb.png?__sprite) no-repeat;
+}
+.login-popup-content .popup-login-text {
+ display: inline-block;
+ float: right;
+ height: 35px;
+ line-height: 35px;
+ border-right: 1px solid #6086cf;
+ padding: 0 20px;
+ font-size: 14px;
+ color: #fff;
+}
+.login-popup-content .popup-login-desc{
+ margin-top: 20px;
+ color: #999999;
+}
+.login-popup-content .popup-login-btn:hover {
+ background: url(../img/popup-login-hover.png?__sprite) repeat-x;
+ border-top: 1px solid #f67a35;
+ border-left: 1px solid #df551e;
+ border-bottom: 1px solid #c72f07;
+ border-right: 1px solid #ee671c;
+}
+.login-popup-content .popup-login-btn:hover .i-popup-fb {
+ border-left: 1px solid #cf6d24;
+ background: url(../img/i-popup-fb-hover.png?__sprite) no-repeat;
+}
+.login-popup-content .popup-login-btn:hover .popup-login-text {
+ border-right: 1px solid #d68a57;
+}
+.login-popup-content .popup-login-btn:active {
+ background: url(../img/popup-login-click.png?__sprite) repeat-x;
+ border-top: 1px solid #f67a35;
+ border-left: 1px solid #df551e;
+ border-bottom: 1px solid #c72f07;
+ border-right: 1px solid #ee671c;
+}
+.login-popup-content .popup-login-btn:active .i-popup-fb {
+ border-left: 1px solid #cf762c;
+ background: url(../img/i-popup-fb-click.png?__sprite) no-repeat;
+}
+.login-popup-content .popup-login-btn:active .popup-login-text {
+ border-right: 1px solid #d6915d;
+}
+
+/*popup modify*/
+.popup-title-wrap .popup-title{float: right;margin-right: 18px;}
+.popup-title-wrap i.i-popup-close{float: left;margin-left: 10px;}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/ar/ar.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/ar/ar.tpl
new file mode 100755
index 000000000..ad50cfd02
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/ar/ar.tpl
@@ -0,0 +1,251 @@
+
+<%if !empty($body.searchBox.tplUrl)%>
+ <%widget name="common:widget/search-box-4ps-cookie/`$sysInfo.country`/`$body.searchBox.tplUrl`/`$body.searchBox.tplUrl`.tpl"%>
+<%else%>
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+require.async('common:widget/ui/jquery/jquery.js', function () {
+conf.searchGroup = {
+ conf: {
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/ar/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/ar/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ }
+ <%if isset($body.searchBox.sort)%>, sort: "<%$body.searchBox.sort%>"<%/if%>
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if !empty($engine.tn[0].param)%><%foreach $engine.tn as $tn%><%if $tn.param == $root.urlparam.tn%><%$engine.hide = 'true'%><%/if%><%/foreach%><%/if%>
+ <%if empty($engine.hide)%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+ sug: {
+ "hao123": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: null,
+ callbackFn: "window.bdsug.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod": "eg",
+ "cb": "window.bdsug.sug",
+ "haobd": jQuery.cookie("BAIDUID")
+ },
+ templ: false
+ },
+ "google": {
+ requestQuery: "q",
+ url: null,
+ callbackFn: "window.google.ac.h",
+ callbackDataNum: 1,
+ requestParas: {
+ "client": "hp",
+ "hl": "ar",
+ "authuser": "0"
+ },
+ templ: false
+ },
+ "yahoo": {
+ requestQuery: "command",
+ url: "http://sugg.us.search.yahoo.net/gossip-us-ura",
+ callbackFn: "YUI.Env.DataSource.callbacks.yui_3_3_0_1_1312871021408973",
+ callbackDataKey: "r",
+ requestParas: {
+ "output": "yjsonp",
+ "callback": "YUI.Env.DataSource.callbacks.yui_3_3_0_1_1312871021408973"
+ },
+ templ: function(data) {
+ var _data = data["r"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "youtube": {
+ requestQuery: "q",
+ url: "http://suggestqueries.google.com/complete/search",
+ callbackFn: "window.yt.www.suggest.handleResponse",
+ callbackDataNum: 1,
+ requestParas: {
+ "hl": "ar",
+ "ds": "yt",
+ "client": "youtube",
+ "hjson": "t",
+ "jsonp": "window.yt.www.suggest.handleResponse",
+ "cp": "2"
+ },
+
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_video": {
+ requestQuery: "command",
+ url: "http://gossip-ss.us.search.yahoo.com/gossip-us_ss/",
+ callbackFn: "fxsearch",
+ callbackDataNum: 1,
+ requestParas: {
+ "nresults": 8,
+ "output": "fxjsonp"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i].replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.com.eg/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "ar",
+ "client": "img",
+ "sugexp": "gsihc"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_images": {
+ requestQuery: "command",
+ url: "http://gossip-ss.us.search.yahoo.com/gossip-us_ss",
+ callbackFn: "YUI.Env.DataSource.callbacks.yui_3_5_1_1_1354169017899_293",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjsonp",
+ "nresults": 10,
+ "callback": "{callback}",
+ "callback": "YUI.Env.DataSource.callbacks.yui_3_5_1_1_1354169017899_293",
+ "pubid": 103,
+ "queryfirst": 1
+ }
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.com.eg/maps/suggest",
+ callbackFn: "_xdc_._bgnkibby8",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "2",
+ "hl": "ar",
+ "gl": "ar",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "ll": "21.902278,101.469727",
+ "spn": "5.706298,39.506836",
+ "auth": "ac0dbe60:A6KQ3ztz8bQ13_rnpShsJPs6jOU",
+ "src": "1",
+ "num": "5",
+ "numps": "5",
+ "callback": "_xdc_._bgnkibby8"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for (; i < len; i++) {
+ try {
+ detail = _data[i][9][0][0] || _data[i][9][0] || _data[i][9] || "";
+ } catch (e) {
+ detail = ""
+ }
+
+ detail = detail ? ' - ' + detail + ' ' : "";
+
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "wikimapia": {
+ url: null
+ },
+ "wiki_ar": {
+ requestQuery: "search",
+ url: "http://ar.wikipedia.org/w/api.php",
+ callbackFn: "wikipedia.ar",
+ callbackDataNum: 1,
+ requestParas: {
+ "action": "opensearch",
+ "namespace": "0",
+ "suggest": "",
+ "callback": "wikipedia.ar"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i].replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_translate": {
+ url: null
+ }
+ }
+}
+});
+<%/strip%>
+<%/script%>
+<%/if%>
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/bg.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/bg.png
new file mode 100755
index 000000000..4e04de967
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/bg.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/br/br.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/br/br.tpl
new file mode 100755
index 000000000..548cc59aa
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/br/br.tpl
@@ -0,0 +1,215 @@
+
+<%if !empty($body.searchBox.tplUrl)%>
+ <%widget name="common:widget/search-box-4ps-cookie/`$sysInfo.country`/`$body.searchBox.tplUrl`/`$body.searchBox.tplUrl`.tpl"%>
+<%else%>
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+require.async('common:widget/ui/jquery/jquery.js', function () {
+conf.searchGroup = {
+ conf:{
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/br/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/br/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ }
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if !empty($engine.tn[0].param)%><%foreach $engine.tn as $tn%><%if $tn.param == $root.urlparam.tn%><%$engine.hide = 'true'%><%/if%><%/foreach%><%/if%>
+ <%if empty($engine.hide)%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+ sug: {
+ "hao123": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: null,
+ callbackFn: "window.bdsug.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod": "br",
+ "cb": "window.bdsug.sug",
+ "haobd": jQuery.cookie("BAIDUID")
+ },
+ templ: false
+ },
+ "google_br": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: null,
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "pt-BR",
+ "sugexp": "lemsnc",
+ "xhr": "f"
+ },
+ templ: false
+ },
+ "yahoo_web": {
+ autoCompleteData: false,
+ requestQuery: "command",
+ url: "http://sugg.br.search.yahoo.net/gossip-br-sayt/",
+ callbackFn: "fxsearch",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjsonp"
+ }
+ },
+ "4shared": {
+ requestQuery: "search",
+ url: "http://dc413.4shared.com/network/search-suggest.jsp",
+ callbackFn: "ajaxSuggestions.jsonpCallback",
+ callbackDataKey: "suggestions",
+ requestParas: {
+ "format": "jsonp"
+ },
+ customUrl: function(para) {
+ return this.o.url + "?search=" + btoa(this.q) + "&format=jsonp";
+ }
+ },
+ "youtube": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "google.sbox.p0 && google.sbox.p0",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "youtube",
+ "hl": "pt",
+ "gl": "br",
+ "gs_nf": "1",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_video": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com.br/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "video-hp",
+ "hl": "pt-BR",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "kboing": {
+ url: null
+ },
+ "google_dict": {
+ url: null
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.com.br/maps/suggest",
+ callbackFn: "_xdc_._bgnkibby8",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "100",
+ "hl": "pt-BR",
+ "gl": "br",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "ll": "-14.239424,-53.186502",
+ "spn": "24.779743,86.572266",
+ "auth": "ac0dbe60:A6KQ3ztz8bQ13_rnpShsJPs6jOU",
+ "src": "1",
+ "num": "10",
+ "callback": "_xdc_._bgnkibby8"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for(; i - ' + detail + '' : "";
+
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.com.br/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "img",
+ "ds": "i",
+ "hl": "pt-BR"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "postbar": {
+ url: null
+ }
+ }
+}
+});
+<%/strip%>
+<%/script%>
+<%/if%>
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/img/bg-search-btn-click.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/img/bg-search-btn-click.png
new file mode 100755
index 000000000..7828b5d56
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/img/bg-search-btn-click.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/img/bg-search-btn-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/img/bg-search-btn-hover.png
new file mode 100755
index 000000000..d11e540ed
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/img/bg-search-btn-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/img/bg-search-btn-side-click.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/img/bg-search-btn-side-click.png
new file mode 100755
index 000000000..b66706676
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/img/bg-search-btn-side-click.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/img/bg-search-btn-side-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/img/bg-search-btn-side-hover.png
new file mode 100755
index 000000000..693ac8896
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/img/bg-search-btn-side-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/img/bg-search-btn-side.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/img/bg-search-btn-side.png
new file mode 100755
index 000000000..d2b3c4f93
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/img/bg-search-btn-side.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/img/bg-search-btn.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/img/bg-search-btn.png
new file mode 100755
index 000000000..e0d576570
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/img/bg-search-btn.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/img/i-search-click.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/img/i-search-click.png
new file mode 100755
index 000000000..31d004952
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/img/i-search-click.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/img/i-search-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/img/i-search-hover.png
new file mode 100755
index 000000000..a01e36716
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/img/i-search-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/img/i-search.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/img/i-search.png
new file mode 100755
index 000000000..d8d67bc2c
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/img/i-search.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/ltr/ltr.css
new file mode 100755
index 000000000..3de7db983
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/ltr/ltr.css
@@ -0,0 +1,398 @@
+/*============box_search=============*/
+.box-search {
+ margin: 20px auto 0;
+ width: 777px;
+}
+.box-search_inner {
+ height:68px;
+}
+/*box-search_tab*/
+.box-search_tab {
+ white-space: nowrap;
+ margin-left: 161px;
+ position: relative;
+ z-index: 8;
+ clear: both;
+}
+.box-search_tab a {
+ /*font-size: 12px;*/
+ float:left;
+ padding: 4px 12px 3px;
+ margin-left: -1px;
+ text-decoration: none;
+ letter-spacing: normal;
+ position: relative;
+ z-index: 1;
+}
+.box-search_tab a:hover {
+ text-decoration: none;
+ background: #dcdcde;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -o-border-radius: 2px;
+ border-radius: 2px;
+}
+/*.box-search_more {
+ line-height:normal;
+ position: absolute;
+ float:right;
+ cursor:pointer;
+ z-index:8;
+ top: -8px;
+ right: -8px;
+ border: 1px solid #edf0ef;
+ border-bottom: 0 none;
+}
+.box-search_more dt {
+ margin-top: 6px;
+}
+.box-search_more a:hover {
+ background: transparent;
+ -moz-border-radius: 0px;
+ -webkit-border-radius: 0px;
+ -o-border-radius: 0px;
+ border-radius: 0px;
+}
+.box-search_more dt a {
+ margin: 0;
+ padding: 4px 17px 3px 9px;
+ color: #4c4c4c;
+ text-align: right;
+ display: block;
+ float: none;
+ line-height: 14px;
+ background:url(../bg.png) right -337px no-repeat transparent !important;
+}
+.box-search_more dt a:focus {
+ outline: none;
+}
+.box-search_more_hover {
+ background-color: #dcdcde;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -o-border-radius: 2px;
+ border-radius: 2px;
+}
+.box-search_more_show {
+ border:1px solid #e3e4e6;
+ background: #fff;
+}
+.box-search_more_show dt {
+ margin-top: 0px;
+ padding-top: 6px;
+}
+.box-search_more_show dt a {
+ background-position:right -351px !important;
+}
+.box-search_more_show .box-search_more_hover {
+ background-color: #f5f7f7;
+ -moz-border-radius: 0px;
+ -webkit-border-radius: 0px;
+ -o-border-radius: 0px;
+ border-radius: 0px;
+}
+.box-search_more_show dd {
+ line-height: 31px;
+}
+.box-search_more_show dd a {
+ padding:0 15px 0 9px;
+ display:block;
+ float:none;
+ color: #666;
+ text-align: right;
+ margin:0;
+}
+.box-search_more_hide {
+ display: none;
+}*/
+.box-search_tab a:focus {
+ outline:none;
+} /*clear FF's focusborder*/
+.box-search_tab a.cur {
+ color:#00b075; /*font-weight:bold;*/
+ cursor:default;
+ text-decoration: none;
+ font-weight: bold;
+}
+.box-search_sep {
+ display: block;
+ float: left;
+ height: 6px;
+ line-height: 6px;
+ margin-top: 8px;
+ border-left: 1px solid #b3b3b3;
+ position: relative;
+ z-index: 0;
+ margin-left: -1px;
+}
+/*box-search_logo*/
+.box-search_logo_wrap {
+ position: relative;
+ width: 155px;
+ height: 67px;
+ margin:-16px 5px 0 0;
+ float: left;
+ z-index: 6;
+}
+.box-search_logo {
+ position: absolute;
+ overflow:hidden;
+ vertical-align:bottom;
+ text-align:center;
+}
+.box-search_logo a {
+ padding-right: 18px;
+ display: block;
+}
+.box-search_logo a:focus {
+ outline: none;
+}
+.box-search_logo dt , .box-search_logo dd {
+ padding: 10px 8px 10px 7px;
+ /*cursor: pointer;*/
+}
+.box-search_logo dt a {
+ background: url(/widget/img/bg.png) right -61px no-repeat;
+}
+dt.box-search_logo_hover {
+ background-color: #e3e4e6;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -o-border-radius: 2px;
+ border-radius: 2px;
+}
+.box-search_logos_show .box-search_logo_hover {
+ background-color: #f5f7f7;
+ -moz-border-radius: 0px;
+ -webkit-border-radius: 0px;
+ -o-border-radius: 0px;
+ border-radius: 0px;
+}
+.box-search_logos_show {
+ background-color: #fff;
+ border: 1px solid #e3e4e6
+}
+.box-search_logos_show dt a {
+ background-position: right -390px;
+}
+.box-search_logo_hide {
+ display: none;
+}
+.box-search_logo img {
+ width:120px;
+ height:45px;
+}
+.box-search_logo_disabled {
+ background: none;
+ border: 1px solid #EDF0EF;
+}
+.box-search_logo_disabled dt.box-search_logo_hover, .box-search_logo_disabled dt a {
+ background: none;
+ cursor: default;
+}
+
+/*box-search_form*/
+.box-search_form {
+ padding:3px 0px 5px 113px;
+}
+.box-search_form .input {
+ border: 1px solid #d9d9d9;
+ border-top: 1px solid #bfbfbf;
+ margin-right: 13px;
+ position: relative;
+ z-index:5;
+}
+.box-search_form .input input {
+ border:none;
+ background:#fff;
+ width:518px;
+ float:left;
+ overflow:hidden;
+ height:20px;
+ font-size: 14px;
+ line-height:20px\9;
+ padding:4px 0 3px 10px;
+}
+.box-search_form input, .box-search_form button:focus {
+ outline:none;
+}
+.box-search_form .input label {
+ position: absolute;
+ left: 10px;
+ top: 6px;
+ font-size: 14px;
+ color: #D7D8D9;
+ white-space: nowrap;
+}
+.box-search_form .box-search_focus {
+ border: 1px solid #4d90fe;
+}
+.btn-search {
+ white-space:nowrap;
+ line-height:29px;
+ overflow: hidden;
+ _float: left;
+ *margin:0;/*fix non-IE'problem because of vertical-align*/
+}
+.btn-search_l, .btn-search_r {
+ width:3px;
+ height:29px;
+ background:url(../img/bg-search-btn-side.png?__sprite) no-repeat;
+ vertical-align:inherit;
+ float: left;
+}
+.btn-search_r {
+ background:url(../img/bg-search-btn-side.png?__sprite) no-repeat;
+ background-position:-3px 0;
+}
+.btn-search_c {
+ background:url(../img/bg-search-btn.png?__sprite) repeat-x;
+ vertical-align:top;
+ border:none;
+ color:#fff;
+ height:29px;
+ text-align:center;
+ width:66px;
+ font-weight: bold;
+ font-size: 15px;
+ cursor: pointer;
+ float: left;
+}
+.btn-search_ico {
+ display: block;
+ margin: 0 auto;
+ width: 17px;
+ height: 17px;
+ background: url(../img/i-search.png?__sprite) no-repeat;
+ line-height: 29px;
+}
+.btn-search_hover .btn-search_l {
+ background:url(../img/bg-search-btn-side-hover.png?__sprite) no-repeat;
+}
+.btn-search_hover .btn-search_r {
+ background:url(../img/bg-search-btn-side-hover.png?__sprite) no-repeat;
+ background-position:-3px 0;
+}
+.btn-search_hover .btn-search_c {
+ background:url(../img/bg-search-btn-hover.png?__sprite) repeat-x;
+}
+.btn-search_hover .btn-search_ico {
+ background: url(../img/i-search-hover.png?__sprite) no-repeat;
+}
+.btn-search_click .btn-search_l {
+ background:url(../img/bg-search-btn-side-click.png?__sprite) no-repeat;
+}
+.btn-search_click .btn-search_r {
+ background:url(../img/bg-search-btn-side-click.png?__sprite) no-repeat;
+ background-position:-3px 0;
+}
+.btn-search_click .btn-search_c {
+ background:url(../img/bg-search-btn-click.png?__sprite) repeat-x;
+}
+.btn-search_click .btn-search_ico {
+ background: url(../img/i-search-click.png?__sprite) no-repeat;
+}
+.box-search_form .radios {
+ padding-top:4px;
+ width:480px;/*for IE9*/
+}
+.box-search_form .radios label {
+ display:block;
+ padding-left:15px;
+ text-indent:-15px;
+ float:left;
+ margin-right:18px;
+ color:#666;
+ font-size: 13px;
+}
+.box-search_form .radios input {
+ vertical-align:top;
+ width:13px;
+ height:13px;
+ margin-right:5px;
+ vertical-align:bottom;
+ position:relative;
+ top:-1px;
+ overflow:hidden;
+}
+
+/*set hot search words & search button*/
+.box-search_hsrch {
+ width: 617px;
+ margin-left: 160px;
+ overflow: hidden;
+ padding-top: 2px;
+ color: #919191;
+ white-space: nowrap;
+ _margin-top:-14px;
+}
+.hsrch_title {
+ font-weight: bold;
+ margin-right: 8px;
+ /*padding-left: 10px;*/
+ color: #919191;
+}
+.hsrch_word span {
+ display: inline-block;
+ margin-right: 16px;
+}
+.hsrch_word a{
+ color: #919191;
+}
+.hsrch_word a:hover {
+ color: #00B075;
+ text-decoration: underline;
+}
+
+/*size setting*/
+.box-search-m .box-search_logo img {
+ width:107px;
+ height:40px;
+}
+.box-search-m .box-search_logo_wrap {
+ width: 142px;
+ height: 62px;
+ margin-top: -14px;
+}
+.box-search-m .box-search_logo dt a {
+ background-position: right -62px;
+}
+.box-search-m .box-search_logos_show dt a {
+ background-position: right -87px;
+}
+.box-search-m .box-search_tab {
+ margin-left: 148px;
+}
+.box-search-m .box-search_hsrch {
+ margin-left: 148px;
+}
+.box-search-s .box-search_logo img {
+ width:85px;
+ height:32px;
+}
+.box-search-s .box-search_logo_wrap {
+ width: 120px;
+ height: 54px;
+ margin-top: -9px;
+}
+.box-search-s .box-search_logo dt a {
+ background-position: right -67px;
+}
+.box-search-s .box-search_logos_show dt a {
+ background-position: right -93px;
+}
+.box-search-s .box-search_tab {
+ margin-left: 126px;
+}
+.box-search-s .box-search_hsrch {
+ margin-left: 126px;
+}
+
+/**************************** 深色换肤搜索框优化 *******************************/
+.skin-type-dark .box-search_logo{border-width:0px;}
+.skin-type-dark .box-search_tab a{color: #ffffff;}
+body.skin-type-dark .box-search_tab a.cur{color: #ffffff;}
+.skin-type-dark .box-search_tab a:hover{background: #595959;background: rgba(0,0,0,0.6);}
+.skin-type-dark #searchGroupRadios label{color: #ffffff;}
+.skin-type-dark .box-search_logo_disabled dt.box-search_logo_hover, .skin-type-dark .box-search_logo_disabled dt a{background: 0;}
+.box-search_logo_disabled, .box-search_logos_show{border: 0;}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/ltr/ltr.more.css
new file mode 100755
index 000000000..726cceec8
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/ltr/ltr.more.css
@@ -0,0 +1,22 @@
+
+/*sug has url*/
+.sug-url {
+ height:45px;
+ border-bottom:1px solid #e1e1e1;
+}
+.sug-url a {
+ display: block;
+ text-decoration: none;
+ color: #0000EE;
+}
+.sug-url .sug-hl {
+ height: 25px;
+ text-decoration: underline;
+ font-weight:bold;
+ font-size:14px;
+}
+.sug-url .sug-frm {
+ line-height: 16px;
+ font-size: 12px;
+ color: green;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/ltr/ltr.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/ltr/ltr.tpl
new file mode 100755
index 000000000..b9832c01b
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/ltr/ltr.tpl
@@ -0,0 +1,77 @@
+
+
+
+ <%foreach $sBoxTag as $value%>
+ <%if $value.catagory != 'more'%>
+ <%if empty($value.hide)%>
+ <%if $value@first%>
+ <%$value.title%>
+ <%else%>
+
+ <%$value.title%>
+ <%/if%>
+ <%/if%>
+ <%else%>
+
+
+ <%$value.title%>
+
+
+ <%/if%>
+ <%/foreach%>
+
+
+
+
+ <%$sBoxCount = 0%>
+ <%if !empty($smarty.cookies['searchEngine']) && $smarty.cookies['searchEngine'] < $sBoxTag[0].engine|@count%>
+ <%$engineNum = $smarty.cookies['searchEngine']%>
+ <%else%>
+ <%$engineNum = 0%>
+ <%/if%>
+ <%foreach $sBoxTag[0].engine as $value%><%if !empty($value.hide)%><%$sBoxCount = $sBoxCount + 1%><%/if%><%/foreach%>
+
+
+ <%foreach $sBoxTag[0].engine as $value%>
+ <%if !empty($value.tn[0].param)%><%foreach $value.tn as $tn%><%if $tn.param == $root.urlparam.tn%><%$value.hide = 'true'%><%/if%><%/foreach%><%/if%><%if $value@index != $engineNum%><%$value.hide = 'true'%><%/if%><%if empty($value.hide)%>
+
+ <%break%>
+ <%/if%><%/foreach%>
+
+
+
+
+
+
+
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/rtl/rtl.css
new file mode 100755
index 000000000..07d961883
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/rtl/rtl.css
@@ -0,0 +1,448 @@
+/*.box-search_form .input div{ float: left;}*/ /*为啥加?会导致ps sug出现问题*/
+
+/*============box_search=============*/
+.box-search {
+ margin: 20px auto 0;
+ width: 780px;
+}
+.box-search_inner {
+ height:68px;
+}
+/*box-search_tab*/
+.box-search_tab {
+ white-space: nowrap;
+ margin-right: 161px;
+ position: relative;
+ z-index: 8;
+ clear: both;
+}
+.box-search_tab a {
+ /*font-size: 12px;*/
+ float:right;
+ padding: 4px 12px 3px;
+ margin-right: -1px;
+ text-decoration: none;
+ letter-spacing: normal;
+ position: relative;
+ z-index: 1;
+}
+.box-search_tab a:hover {
+ text-decoration: none;
+ background: #dcdcde;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -o-border-radius: 2px;
+ border-radius: 2px;
+}
+/*.box-search_more {
+ line-height:normal;
+ position: absolute;
+ float:right;
+ cursor:pointer;
+ z-index:8;
+ top: -8px;
+ left: -7px;
+ border: 1px solid #edf0ef;
+ border-bottom: 0 none;
+}
+.box-search_more dt {
+ position: relative;
+ margin-top: 6px;
+}
+.box-search_more a:hover {
+ background: transparent;
+ -moz-border-radius: 0px;
+ -webkit-border-radius: 0px;
+ -o-border-radius: 0px;
+ border-radius: 0px;
+}
+.box-search_more dt a {
+ margin: 0;
+ padding: 4px 9px 3px 17px;
+ color: #4c4c4c;
+ text-align: right;
+ display: block;
+ float: none;
+ line-height: 14px;
+ width: 30px;
+ overflow: hidden;
+}
+.box-search_more dt a:focus {
+ outline: none;
+}
+.box-search_more_hover {
+ background-color: #dcdcde;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -o-border-radius: 2px;
+ border-radius: 2px;
+}
+.box-search_more .arrow, .box-search_more .arrow_bg {
+ position: absolute;
+ height: 0;
+ width: 0;
+ border: 3px dashed transparent;
+}
+.box-search_more .arrow {
+ border-top-color: #4ac29a;
+ border-top-style: solid;
+ top: 10px;
+ right: 42px;
+}
+.box-search_more .arrow_bg {
+ border-top-color: #edf0ef;
+ border-top-style: solid;
+ margin: -5px -3px 0 0;
+ _display: none;
+}
+.box-search_more_hover .arrow_bg {
+ border-top-color: #dcdcde;
+}
+.box-search_more_show .arrow {
+ border-top-color: transparent;
+ border-top-style: dashed;
+ border-bottom-color: #4ac29a;
+ border-bottom-style: solid;
+ top: 12px;
+}
+.box-search_more_show .arrow_bg {
+ border-top-color: transparent;
+ border-top-style: dashed;
+ border-bottom-color: #fff;
+ border-bottom-style: solid;
+ margin-top: -1px;
+}
+.box-search_more_show .box-search_more_hover .arrow_bg {
+ border-bottom-color: #f5f7f7;
+}
+.box-search_more_show {
+ border:1px solid #e3e4e6;
+ background: #fff;
+ left: auto;
+ right: 472px;
+}
+.box-search_more_show dt {
+ margin-top: 0px;
+ padding-top: 6px;
+}
+.box-search_more_show dt a {
+ background-position:left -351px !important;
+}
+.box-search_more_show .box-search_more_hover {
+ background-color: #f5f7f7;
+ -moz-border-radius: 0px;
+ -webkit-border-radius: 0px;
+ -o-border-radius: 0px;
+ border-radius: 0px;
+}
+.box-search_more_show dd {
+ line-height: 31px;
+}
+.box-search_more_show dd a {
+ padding:0 9px 0 15px;
+ display:block;
+ float:none;
+ color: #666;
+ text-align: right;
+ margin:0;
+ overflow: hidden;
+}
+.box-search_more_hide {
+ display: none;
+}*/
+.box-search_tab a:focus {
+ outline:none;
+} /*clear FF's focusborder*/
+.box-search_tab a.cur {
+ color:#00b075; /*font-weight:bold;*/
+ cursor:default;
+ text-decoration: none;
+ font-weight: bold;
+}
+.box-search_sep {
+ display: block;
+ float: right;
+ height: 6px;
+ line-height: 6px;
+ margin-top: 8px;
+ border-left: 1px solid #b3b3b3;
+ position: relative;
+ z-index: 0;
+ margin-right: -1px;
+}
+/*box-search_logo*/
+.box-search_logo_wrap {
+ position: relative;
+ width: 155px;
+ height: 67px;
+ margin:-16px 0 0 5px;
+ float: right;
+ z-index: 6;
+}
+.box-search_logo {
+ position: absolute;
+ right: 0;
+ overflow:hidden;
+ vertical-align:bottom;
+ text-align:center;
+}
+.box-search_logo a {
+ padding-left: 18px;
+ display: block;
+}
+.box-search_logo a:focus {
+ outline: none;
+}
+.box-search_logo dt , .box-search_logo dd {
+ padding: 10px 7px 10px 8px;
+ /*cursor: pointer;*/
+}
+.box-search_logo dt a {
+ background: url(/widget/img/bg.png) -10px -61px no-repeat;
+}
+dt.box-search_logo_hover {
+ background-color: #e3e4e6;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -o-border-radius: 2px;
+ border-radius: 2px;
+}
+.box-search_logos_show .box-search_logo_hover {
+ background-color: #f5f7f7;
+ -moz-border-radius: 0px;
+ -webkit-border-radius: 0px;
+ -o-border-radius: 0px;
+ border-radius: 0px;
+}
+.box-search_logos_show {
+ background-color: #fff;
+ border: 1px solid #e3e4e6
+}
+.box-search_logos_show dt a {
+ background-position: -10px -390px;
+}
+.box-search_logo_hide {
+ display: none;
+}
+.box-search_logo img {
+ width:120px;
+ height:45px;
+}
+.box-search_logo_disabled {
+ background: none;
+ border: 1px solid #EDF0EF;
+}
+.box-search_logo_disabled dt.box-search_logo_hover, .box-search_logo_disabled dt a {
+ background: none;
+ cursor: default;
+}
+
+/*box-search_form*/
+.box-search_form {
+ padding:3px 113px 5px 0px;
+}
+.box-search_form .input {
+ background-color: #fff;
+ border: 1px solid #d9d9d9;
+ border-top: 1px solid #bfbfbf;
+ margin-left: 13px;
+ position: relative;
+ z-index:5;
+}
+.box-search_form .input input {
+ border:none;
+ background:#fff;
+ width:491px;
+ float:right;
+ overflow:hidden;
+ height:20px;
+ font-size: 14px;
+ line-height:20px\9;
+ padding:4px 9px 3px 0px;
+ *width: 488px;
+ *float: none;
+ /*fix ie10 bug*/
+ margin-right: 1px;
+}
+.box-search_form input, .box-search_form button:focus {
+ outline:none;
+}
+.box-search_form .input label {
+ position: absolute;
+ right: 10px;
+ top: 6px;
+ font-size: 14px;
+ color: #D7D8D9;
+ white-space: nowrap;
+}
+.box-search_form .box-search_focus {
+ border: 1px solid #4d90fe;
+}
+.btn-search {
+ white-space:nowrap;
+ line-height:29px;
+ overflow: hidden;
+ _float: left;
+ *margin:0;/*fix non-IE'problem because of vertical-align*/
+}
+.btn-search_l, .btn-search_r {
+ width:3px;
+ height:29px;
+ background:url(../img/bg-search-btn-side.png?__sprite) no-repeat;
+ vertical-align:inherit;
+ float: left;
+}
+.btn-search_r {
+ background:url(../img/bg-search-btn-side.png?__sprite) no-repeat;
+ background-position:-3px 0;
+}
+.btn-search_c {
+ background:url(../img/bg-search-btn.png?__sprite) repeat-x;
+ vertical-align:top;
+ border:none;
+ color:#fff;
+ height:29px;
+ text-align:center;
+ width:66px;
+ font-weight: bold;
+ font-size: 15px;
+ cursor: pointer;
+ float: left;
+}
+.btn-search_ico {
+ display: block;
+ margin: 0 auto;
+ width: 17px;
+ height: 17px;
+ background: url(../img/i-search.png?__sprite) no-repeat;
+ line-height: 29px;
+}
+.btn-search_hover .btn-search_l {
+ background:url(../img/bg-search-btn-side-hover.png?__sprite) no-repeat;
+}
+.btn-search_hover .btn-search_r {
+ background:url(../img/bg-search-btn-side-hover.png?__sprite) no-repeat;
+ background-position:-3px 0;
+}
+.btn-search_hover .btn-search_c {
+ background:url(../img/bg-search-btn-hover.png?__sprite) repeat-x;
+}
+.btn-search_hover .btn-search_ico {
+ background: url(../img/i-search-hover.png?__sprite) no-repeat;
+}
+.btn-search_click .btn-search_l {
+ background:url(../img/bg-search-btn-side-click.png?__sprite) no-repeat;
+}
+.btn-search_click .btn-search_r {
+ background:url(../img/bg-search-btn-side-click.png?__sprite) no-repeat;
+ background-position:-3px 0;
+}
+.btn-search_click .btn-search_c {
+ background:url(../img/bg-search-btn-click.png?__sprite) repeat-x;
+}
+.btn-search_click .btn-search_ico {
+ background: url(../img/i-search-click.png?__sprite) no-repeat;
+}
+.box-search_form .radios {
+ padding-top:4px;
+ width:480px;/*for IE9*/
+}
+.box-search_form .radios label {
+ display:block;
+ padding-right:15px;
+ text-indent:-15px;
+ float:right;
+ margin-left:18px;
+ color:#666;
+ font-size: 13px;
+}
+.box-search_form .radios input {
+ vertical-align:top;
+ width:13px;
+ height:13px;
+ margin-left:5px;
+ vertical-align:bottom;
+ position:relative;
+ top:-1px;
+ overflow:hidden;
+}
+/*set hot search words & search button*/
+.box-search_hsrch {
+ width: 620px;
+ margin-right: 160px;
+ overflow: hidden;
+ padding-top: 2px;
+ color: #919191;
+ white-space: nowrap;
+ _margin-top:-14px;
+}
+.hsrch_title {
+ font-weight: bold;
+ margin-left: 8px;
+ /*padding-right: 10px;*/
+ color: #919191;
+}
+.hsrch_word span {
+ display: inline-block;
+ margin-left: 15px;
+}
+.hsrch_word a{
+ color: #919191;
+ text-align: right;
+}
+.hsrch_word a:hover {
+ color: #00B075;
+ text-decoration: underline;
+}
+/*size setting*/
+.box-search-m .box-search_logo img {
+ width:107px;
+ height:40px;
+}
+.box-search-m .box-search_logo_wrap {
+ width: 142px;
+ height: 62px;
+ margin-top: -14px;
+}
+.box-search-m .box-search_logo dt a {
+ background-position: -10px -62px;
+}
+.box-search-m .box-search_logos_show dt a {
+ background-position: -10px -87px;
+}
+.box-search-m .box-search_tab {
+ margin-right: 148px;
+}
+.box-search-m .box-search_hsrch {
+ margin-right: 148px;
+}
+.box-search-s .box-search_logo img {
+ width:85px;
+ height:32px;
+}
+.box-search-s .box-search_logo_wrap {
+ width: 120px;
+ height: 54px;
+ margin-top: -9px;
+}
+.box-search-s .box-search_logo dt a {
+ background-position: -10px -67px;
+}
+.box-search-s .box-search_logos_show dt a {
+ background-position: -10px -93px;
+}
+.box-search-s .box-search_tab {
+ margin-right: 126px;
+}
+.box-search-s .box-search_hsrch {
+ margin-right: 126px;
+}
+
+/**************************** 深色换肤搜索框优化 *******************************/
+.skin-type-dark .box-search_logo{border-width:0px;}
+.skin-type-dark .box-search_tab a{color: #ffffff;}
+body.skin-type-dark .box-search_tab a.cur{color: #ffffff;}
+.skin-type-dark .box-search_tab a:hover{background: #595959;background: rgba(0,0,0,0.6);}
+.skin-type-dark #searchGroupRadios label{color: #ffffff;}
+.skin-type-dark .box-search_logo_disabled dt.box-search_logo_hover, .skin-type-dark .box-search_logo_disabled dt a{background: 0;}
+.box-search_logo_disabled, .box-search_logos_show{border: 0;}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/rtl/rtl.more.css
new file mode 100755
index 000000000..3f240b972
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/rtl/rtl.more.css
@@ -0,0 +1,69 @@
+/*------------------------suggest------------------------*/
+/*提示层外框*/
+.sug-search {
+ position:absolute;
+ top: 28px;
+ *top: 30px;
+ left: -1px;
+ border:1px solid #e3e4e6;
+ border-top: 0 none;
+ background:#fff;
+ width:528px;
+ color:#454545;
+ z-index:999;
+ white-space:nowrap;
+ overflow:hidden;
+}
+/*ie6 shim*/
+.sug-shim {
+ position:absolute;
+ top:-1px;
+ left:-1px;
+ z-index:-1;
+ filter:alpha(opacity="0");
+ width:430px;
+ height:250px;
+}
+/*列表外框*/
+.sug-search ol {
+ font:bold 12px/23px Tahoma,arial,helvetica,clean,sans-serif;
+ cursor:default;
+}
+/*列表项*/
+.sug-search li {
+ padding: 3px 10px;
+ cursor: pointer;
+}
+.sug-search li b {
+ font: inherit;
+ display: inline;
+}
+/*选中样式*/
+.sug-search .sug-select {
+ background: #f5f7f7;
+}
+/*头部*/
+.sug-search .top {
+ font-weight:normal;
+ color:#999;
+ height:21px;
+ line-height:21px;
+ background:#eee;
+ padding:0 2px;
+}
+/*底部*/
+.sug-search .bot {
+ position:relative;
+ height:19px;
+ line-height:19px;
+ font-weight:normal;
+ border-top:1px solid #666;
+}
+/*高亮查询词*/
+.sug-search .sug-query {
+ font-weight:normal;
+}
+.sug-search font {
+ font-weight:normal !important;
+ color:#333 !important;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/rtl/rtl.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/rtl/rtl.tpl
new file mode 100755
index 000000000..a7abd2e07
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/rtl/rtl.tpl
@@ -0,0 +1,83 @@
+
+
+
+ <%foreach $sBoxTag as $value%>
+ <%if $value.catagory != 'more'%>
+ <%if empty($value.hide)%>
+ <%if $value@first%>
+ <%$value.title%>
+ <%else%>
+
+ <%$value.title%>
+ <%/if%>
+ <%/if%>
+ <%else%>
+
+
+
+ <%$value.title%>
+
+
+
+
+ <%/if%>
+ <%/foreach%>
+
+
+
+
+ <%$sBoxCount = 0%>
+ <%if !empty($smarty.cookies['searchEngine']) && $smarty.cookies['searchEngine'] < $sBoxTag[0].engine|@count%>
+ <%$engineNum = $smarty.cookies['searchEngine']%>
+ <%else%>
+ <%$engineNum = 0%>
+ <%/if%>
+ <%foreach $sBoxTag[0].engine as $value%><%if !empty($value.hide)%><%$sBoxCount = $sBoxCount + 1%><%/if%><%/foreach%>
+
+
+ <%foreach $sBoxTag[0].engine as $value%>
+ <%if !empty($value.tn[0].param)%><%foreach $value.tn as $tn%><%if $tn.param == $root.urlparam.tn%><%$value.hide = 'true'%><%/if%><%/foreach%><%/if%><%if $value@index != $engineNum%><%$value.hide = 'true'%><%/if%><%if empty($value.hide)%>
+
+ <%break%>
+ <%/if%><%/foreach%>
+
+
+
+
+
+
+
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/search-box-4ps-cookie-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/search-box-4ps-cookie-async.js
new file mode 100755
index 000000000..b52b7f154
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/search-box-4ps-cookie-async.js
@@ -0,0 +1,590 @@
+/*
+* Search box group
+*/
+
+var $ = require("common:widget/ui/jquery/jquery.js"),
+ UT = require("common:widget/ui/ut/ut.js"),
+ helper = require("common:widget/ui/helper/helper.js");
+require("common:widget/ui/suggest/suggest.js");
+
+Gl.searchGroup = function(o) {
+ var _conf = conf.searchGroup,
+ type = o.type || "index",
+ logoPath = _conf.conf[type].logoPath,
+
+ logo = $("#" + (o.logoId || "searchGroupLogo")),
+ logoGroup = $("#" + (o.logoGroupId || "searchGroupLogos")),
+ tabs = $("#" + (o.tabsId || "searchGroupTabs")),
+ form = $("#" + (o.formId || "searchGroupForm")),
+ input = $("#" + (o.inputId || "searchGroupInput")),
+ label = $("#" + (o.labelId || "searchGroupLabel")),
+ radios = $("#" + (o.radiosId || "searchGroupRadios")),
+ btn = $("#" + (o.btnId || "searchGroupBtn")),
+ // more = $("#" + (o.moreId || "searchGroupMore")),
+ moreTab = $("#" + (o.moreTabId || "searchGroupMoreTab")),
+ params = $("#" + (o.paramsId || "searchGroupParams")),
+ radioName = o.radioName || "searchGroupRadio",
+ btnWrap = btn.parent(),
+ inputWrap = input.parent(),
+ defaultN = _conf.conf[type].curN || 0,
+ curTab = $("a:eq(" + defaultN + ")", tabs),
+ tabsChildren = $("a", tabs),
+ //render data when init sug
+ defaultData = _conf.sug[_conf.list[curTab.attr("data-t")].engine[defaultN].id],
+ //record which form was selected in tabs
+ storeForm = {},
+ engineCookie = $.cookie("searchEngine"),
+
+ //reset the form about action and params
+ resetForm = function(data, n) {
+ var ret = [];
+ var theLogoPath = $(document.body).hasClass("skin-type-dark")?(_conf.conf[type].logoPath+"dark/"):_conf.conf[type].logoPath;
+ form.attr("action", data[n].action);
+ input.attr("name", data[n].q);
+ logo.attr("src", theLogoPath + data[n].logo + ".png");
+ logo.attr("alt", data[n].name);
+ logo.parent().attr("title", data[n].name);
+ logo.parent().attr("data-n", n);
+ logo.attr("data-id", data[n].id);
+
+ $("dd", logoGroup).remove();
+ logoGroup.append(function () {
+ ret = [];
+ $.each(data, function(key, val) {
+ ret.push(' ');
+ });
+ return ret.join("");
+ });
+ // fix: show errors when click radios on IE
+ setTimeout(function() {
+ radios.html(function() {
+ ret = [];
+ $.each(data,function(key, val) {
+ ret.push(' ' + val.name + ' ');
+ });
+ return ret.join("");
+ });
+ $("#searchGroupRadio_" + n).attr("checked", "checked");
+ }, 0);
+
+ params.html(function() {
+ ret = [];
+ $.each(data[n].params, function(key, val) {
+ ret.push(' ');
+ });
+ return ret.join("");
+ });
+
+ if (data.length <= 1) {
+ logoGroup.addClass("box-search_logo_disabled");
+ } else {
+ logoGroup.removeClass("box-search_logo_disabled");
+ }
+ /*logoGroup.children().on("mouseenter", function() {
+ $(this).addClass("box-search_logo_hover");
+ });
+ logoGroup.children().on("mouseleave", function() {
+ $(this).removeClass("box-search_logo_hover");
+ });*/
+ },
+
+ resetSug = function(data, n) {
+
+ data = _conf.sug[data[n].id];
+ $.each(data, function(key, val) {
+ sug.o[key] = val;
+ });
+ //fix more prams
+ !data.templ && (sug.o.templ = false);
+ !data.callbackFn && (sug.o.callbackFn = false);
+ !data.callbackDataKey && (sug.o.callbackDataKey = false);
+ !data.callbackName && (sug.o.callbackName = false);
+ !data.callbackDataNum && (sug.o.callbackDataNum = false);
+ !data.customUrl && (sug.o.customUrl = false);
+
+ !data.customUrl && (sug.o.customUrl = false);
+ !data.charset && (sug.o.charset = undefined);
+ sug.reset(true);
+ },
+
+ // toggle for baidu sug
+ resetBaiduSug = function (data, n) {
+
+ if (!baidu_sug) {
+ return;
+ }
+
+ data = data ? data[n].baiduSug : false;
+ if (data) {
+ baidu_sug.setMode(data.mod);
+ baidu_sug.toggle(true);
+ } else {
+ baidu_sug.toggle(false);
+ }
+ },
+
+ switchTab = function(tab) {
+ tab = $(tab);
+ curTab.removeClass("cur");
+ tab.addClass("cur");
+ curTab = tab;
+
+ var t = tab.attr("data-t"),
+
+ list = _conf.list,
+ engines = list[t].engine,
+ engLen = engines.length;
+
+ //if the last element is null, remove it
+ if($.isEmptyObject(engines[engLen-1])){
+ engines.length = engLen - 1;
+ };
+ //record current form(add the current type to storeForm as a key)
+ storeForm[t] || (storeForm[t] = 0);
+
+ //reset form
+ resetForm(engines, storeForm[t]);
+
+ //reset suggest
+ resetSug(engines, storeForm[t]);
+
+ // reset baidu sug
+ resetBaiduSug(engines, storeForm[t]);
+
+ //reset hot word
+ label.text(list[t].hotWords);
+ /*
+ setTimeout(function() {
+ input.select();
+ }, 16);
+ */
+ //keep the cursor in end
+ /*setTimeout(function() {
+ setCursorPos(input[0], input.val().length);
+ }, 16); */
+ },
+
+ showMore = function() {
+ var more = $("dd", moreTab),
+ list = _conf.more,
+ ret = [];
+ if ($("dd", moreTab).length === 0) {
+ $.each(list, function() {
+ ret.push('' + this.name + ' ');
+ });
+ moreTab.append(ret.join(""));
+ moreTab.children().on("mouseenter", function() {
+ $(this).addClass("box-search_more_hover");
+ });
+ moreTab.children().on("mouseleave", function() {
+ $(this).removeClass("box-search_more_hover");
+ });
+ }
+ if(moreTab.hasClass("box-search_more_show")) {
+ moreTab.removeClass("box-search_more_show");
+ more.each(function () {
+ $(this).addClass("box-search_more_hide");
+ });
+ }
+ else {
+ moreTab.addClass("box-search_more_show");
+ more.each(function () {
+ $(this).removeClass("box-search_more_hide");
+ });
+ }
+ },
+
+ showLogo = function () {
+ var n = logo.parent().attr("data-n"),
+ logoList = $("dd", logoGroup);
+ if (logoGroup.hasClass("box-search_logos_show")) {
+ logoGroup.removeClass("box-search_logos_show");
+ logoList.each(function () {
+ $(this).addClass("box-search_logo_hide");
+ });
+ }
+ else {
+ logoGroup.addClass("box-search_logos_show");
+ logoList.each(function (key) {
+ key != n && $(this).removeClass("box-search_logo_hide");
+ });
+ }
+ },
+
+ //disable selection for input elements
+ disableSelection = function(el) {
+ if (typeof el.onselectstart != "undefined") { //IE
+ el.onselectstart = function() {
+ return false;
+ }
+ } else if (typeof el.style.MozUserSelect != "undefined") { //FF
+ el.style.MozUserSelect = "none";
+ } else { //Opera
+ el.onmousedown = function() {
+ return false;
+ }
+ }
+ },
+
+ setCursorPos = function(obj, pos) {
+ if (obj.setSelectionRange) {
+ obj.focus();
+ obj.setSelectionRange(pos, pos);
+ } else if (obj.createTextRange) {
+ var range = obj.createTextRange();
+ range.collapse(true);
+ range.moveEnd('character', pos);
+ range.moveStart('character', pos);
+ range.select();
+ }
+ },
+
+ //sug instantiation
+ sug = Gl.suggest(input[0], {
+ classNameWrap: "sug-search",
+ classNameQuery: "sug-query",
+ classNameSelect: "sug-select",
+ //classNameClose: "sug-close",
+ delay: _conf.conf[type].delay,
+ n: _conf.conf[type].n,
+ autoFocus: false,
+ requestQuery: defaultData.requestQuery,
+ requestParas: defaultData.requestParas,
+ url: defaultData.url,
+ callbackFn: defaultData.callbackFn,
+ callbackDataKey: defaultData.callbackDataKey,
+ onCheckForm: function(form) {
+
+ if( !(/hao123/.test(logo.attr("data-id"))) ) return;
+
+ if( !$(form).find("input[name='haobd']").get(0) ) {
+ $(form).append(" ");
+ }
+ },
+ onSearchDirect: function(li, q, prefix) {
+ var img = new Image(),
+ enco = encodeURIComponent,
+ collect = [],
+ _type = curTab.attr("data-t"),
+ url = "http://search.hao123.co.th/r/cl/i18n.gif?fm=se&st=3&rsv_sugtype=cr&lang=th-TH",
+ href = $( $(li).find("a").get(0) ).attr("href"),
+ title = $( $(li).find("a .sug-hl").get(0) ).text(),
+
+ conf = {
+ url: href,
+ q: q,
+ title: title,
+ prefixsug: prefix,
+ haobd: $.cookie("BAIDUID"),
+ t: +new Date
+ };
+
+
+ img.src = url + "&" + $.param(conf); // PS的统计
+
+ // 我们的统计
+ if (_conf.conf.sort) {
+ UT.send({
+ type: "click",
+ position: "search",
+ engine: _conf.list[_type].engine[storeForm[_type]].id.toLowerCase(),
+ value: enco(q),
+ url: href,
+ element: "sug",
+ sort: _conf.conf.sort,
+ modId:"search"
+ });
+ } else {
+ UT.send({
+ type: "click",
+ position: "search",
+ engine: _conf.list[_type].engine[storeForm[_type]].id.toLowerCase(),
+ value: enco(q),
+ url: href,
+ element: "sug",
+ modId:"search"
+ });
+ }
+ },
+ onMouseSelect: function() {
+ input.select();
+ var _type = curTab.attr("data-t");
+ if (_conf.conf.sort) {
+ UT.send({
+ type: "click",
+ position: "search",
+ engine: _conf.list[_type].engine[storeForm[_type]].id.toLowerCase(),
+ value: encodeURIComponent(input.val()),
+ element: "sug",
+ sort: _conf.conf.sort,
+ modId:"search"
+ });
+ } else {
+ UT.send({
+ type: "click",
+ position: "search",
+ engine: _conf.list[_type].engine[storeForm[_type]].id.toLowerCase(),
+ value: encodeURIComponent(input.val()),
+ element: "sug",
+ modId:"search"
+ });
+ }
+ },
+ templ: defaultData.templ
+ });
+
+ //clear the input's value after refresh
+ input.val("");
+
+ //some browsers may keep form's status after refresh
+ $("[name = radioName]:first").attr("checked", true);
+
+ //record the default form'n
+ storeForm[curTab.attr("data-t")] = 0;
+
+ // reset Baidu sug
+ resetBaiduSug(_conf.list[curTab.attr('data-t')].engine, defaultN);
+
+ // Switch to the engine which recorded in cookie
+ if (engineCookie && !isNaN(engineCookie) && engineCookie != storeForm[curTab.attr("data-t")] && engineCookie < _conf.list[curTab.attr("data-t")].engine.length) {
+ $("#searchGroupRadio_" + engineCookie).attr("checked","checked");
+ storeForm[curTab.attr("data-t")] = engineCookie;
+ resetForm(_conf.list[curTab.attr("data-t")].engine, engineCookie);
+ //reset suggest
+ resetSug(_conf.list[curTab.attr("data-t")].engine, engineCookie);
+ //reset baidu sug
+ resetBaiduSug(_conf.list[curTab.attr("data-t")].engine, engineCookie);
+ }
+
+ //select text in input after submit
+ form.on("submit", function() {
+ // input.select();
+ var t = curTab.attr("data-t"),
+ _action = _conf.list[t].engine[storeForm[t]].action,
+ _url = _conf.list[t].engine[storeForm[t]].url,
+ isBlank = false;
+ var radioEl = $("input", radios);
+ for(var i = 0; i < radioEl.length; i++) {
+ if(radioEl.eq(i).attr("checked")) {
+ var checkedRadio = radioEl.eq(i);
+ }
+ }
+ /*if(t == "shopping" && checkedRadio.attr("id") == "searchGroupRadio_0") {
+ form[0].acceptCharset = document.charset = "big5";
+ }
+ else {
+ form[0].acceptCharset = document.charset = "utf-8";
+ }*/
+
+ // set input's value to the hot word if it was blank
+ if($.trim(input.val()) === "") {
+ if($.trim(label.text()) === ""){
+ var action = _action && _url ? _url : _action;
+ form.attr("action", action);
+ } else {
+ input.val(label.text());
+ input.css("color", "#fff");
+ isBlank = true;
+ }
+ } else {
+ if(/hao123/.test(logo.attr("data-id"))) {
+ if(!form.find("input[name='haobd']").get(0)) {
+ form.append(" ");
+ }
+ }
+ form.attr("action", _action);
+ }
+
+ // set charset to big5 while the engine is ruten
+ if(t == "shopping" && /ruten.png/.test(logo.attr("src"))) {
+ form[0].acceptCharset = document.charset = "big5";
+ }
+ else {
+ form[0].acceptCharset = document.charset = "utf-8";
+ }
+ if (_conf.conf.sort) {
+ UT.send({
+ type: "click",
+ position: "search",
+ engine: _conf.list[t].engine[storeForm[t]].id.toLowerCase(),
+ value: encodeURIComponent(input.val()),
+ element: "input",
+ sort: _conf.conf.sort,
+ modId:"search"
+ });
+ } else {
+ UT.send({
+ type: "click",
+ position: "search",
+ engine: _conf.list[t].engine[storeForm[t]].id.toLowerCase(),
+ value: encodeURIComponent(input.val()),
+ element: "input",
+ modId:"search"
+ });
+ }
+ //reset input after search
+ if(isBlank) {
+ setTimeout(function() {
+ input.val("");
+ input.removeAttr("style");
+ }, 16);
+ } else {
+ input.select();
+ }
+ //fix action
+ if(/#\{([^}]*)\}/mg.test(_action)) {
+ form.attr("action", helper.replaceTpl(_action, {q: encodeURIComponent(input.val())}));
+ input.attr("disabled", true);
+ setTimeout(function() {
+ input.attr("disabled", false);
+ input.select();
+ }, 16);
+ }
+ //no action while engine is hao123 and input val is blank
+ /*if(/hao123.png/.test(logo.attr("src")) && input.val() === "") {
+ return false;
+ }*/
+ });
+
+ //disableSelection
+ disableSelection(tabs[0]);
+ disableSelection(radios[0]);
+
+ btn.on("mousedown", function() {
+ btnWrap.addClass("btn-search_click");
+ });
+ btn.on("mouseup", function() {
+ btnWrap.removeClass("btn-search_click");
+ });
+ btn.on("mouseout", function() {
+ btnWrap.removeClass("btn-search_click");
+ });
+ btn.on("mouseenter", function() {
+ btnWrap.addClass("btn-search_hover");
+ });
+ btn.on("mouseleave", function() {
+ btnWrap.removeClass("btn-search_hover");
+ });
+ input.on("focus", function() {
+ inputWrap.addClass("box-search_focus");
+ label.hide();
+ });
+ input.on("blur", function() {
+ inputWrap.removeClass("box-search_focus");
+ $.trim(input.val()) === "" && label.show();
+ });
+ /*logoGroup.children().on("mouseenter", function() {
+ $(this).addClass("box-search_logo_hover");
+ });
+ logoGroup.children().on("mouseleave", function() {
+ $(this).removeClass("box-search_logo_hover");
+ }); */
+ moreTab.children().on("mouseenter", function() {
+ $(this).addClass("box-search_more_hover");
+ });
+ moreTab.children().on("mouseleave", function() {
+ $(this).removeClass("box-search_more_hover");
+ });
+
+ tabs.on("mousedown", function(e) {
+ var el = e.target;
+ el.tagName === "SPAN" && (el = el.parentNode);
+ //el.tagName !== "DT" && !hasClass(el, "cur") && !hasClass(el, "more") && switchTab(el);
+ el.getAttribute("data-t") && switchTab(el);
+ form.acceptCharset = document.charset = "utf-8";
+ });
+
+ moreTab.on("mousedown", function(e) {
+ var el = e.target;
+ if(el.parentNode.tagName === "DD") {
+ setTimeout(showMore, 200);
+ }else {
+ showMore();
+ }
+ });
+
+ $(document).on("mousedown", function(e) {
+ var el = e.target;
+ // logoGroup.hasClass("box-search_logos_show") && el !== logoGroup[0] && !jQuery.contains(logoGroup[0], el) && showLogo();
+ moreTab.hasClass("box-search_more_show") && el !== moreTab[0] && !jQuery.contains(moreTab[0], el) && showMore();
+ // more.css("display") === "block" && el !== moreTab[0] && !jQuery.contains(moreTab[0], el) && !jQuery.contains(more[0], el) && showMore();
+ });
+
+ /*logoGroup.on("click", function(e) {
+ var el = e.target,
+ t = curTab.attr("data-t"),
+ n = storeForm[t],
+ _n;
+ if (el.tagName === "IMG") {
+ _n = ~~$(el).parent().attr("data-n");
+ } else if (el.tagName === "A") {
+ _n = ~~$(el).attr("data-n");
+ } else {
+ _n = ~~$(el).children().attr("data-n");
+ }
+ //input.select();
+ //keep the cursor in end
+ form[0].acceptCharset = document.charset = "utf-8";
+ //setTimeout(function() {
+ // setCursorPos(input[0], input.val().length);
+ //}, 16);
+
+
+
+ if(_n !== n) {
+ storeForm[t] = _n;
+ resetForm(_conf.list[t].engine, _n);
+
+ //reset suggest
+ resetSug(_conf.list[t].engine, _n);
+ }
+ showLogo();
+ });*/
+ // bind radio
+ $("input", radios).live("click", function (e) {
+ var t = curTab.attr("data-t"),
+ n = storeForm[t],
+ _n = $(this).val();
+ //input.select();
+ //keep the cursor in end
+ $(this).attr("checked", "checked");
+
+ setTimeout(function() {
+ // setCursorPos(input[0], input.val().length);
+ }, 16);
+
+ //el.tagName === "LABEL" && (el = el.getElementsByTagName("input")[0]);
+ if(_n !== n) {
+ if (t === "web") {
+ $.cookie("searchEngine", _n, {expires: 2000});
+ }
+ storeForm[t] = _n;
+
+ resetForm(_conf.list[t].engine, _n);
+
+ //reset suggest
+ resetSug(_conf.list[t].engine, _n);
+
+ //reset baidu sug
+ resetBaiduSug(_conf.list[t].engine, _n);
+ }
+ UT.send({
+ type: "click",
+ ac: "b",
+ position: "sRadio",
+ engine: _conf.list[t].engine[_n].id.toLowerCase(),
+ sort: _conf.conf.sort,
+ modId:"search"
+ });
+ });
+
+ //focus the input when init
+
+ //to let lv2 page NOT to auto focus SEARCH INPUT! by NE
+ if(o.autoFocus == null){
+ o.autoFocus = true; //default TRUE!
+ }
+ if(o.autoFocus) {
+ input.focus();
+ }
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/search-box-4ps-cookie.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/search-box-4ps-cookie.tpl
new file mode 100755
index 000000000..4e0e04f6a
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/search-box-4ps-cookie.tpl
@@ -0,0 +1,39 @@
+
+<%assign var="sBoxTag" value=$body.searchBox.sBoxTag%>
+<%assign var="hSearchWords" value=$body.searchBox.hotSearchWords%>
+<%assign var="sBtnWords" value=$body.searchBox.searchBtnWords%>
+<%widget name="common:widget/search-box-4ps-cookie/`$head.dir`/`$head.dir`.tpl"%>
+<%* 搜索框 --- 首屏模块 inline css*%>
+<%style%>
+ <%if $head.dir=='ltr'%>
+ @import url('/widget/search-box-4ps-cookie/ltr/ltr.css?__inline');
+ <%else%>
+ @import url('/widget/search-box-4ps-cookie/rtl/rtl.css?__inline');
+ <%/if%>
+<%/style%>
+<%if isset($sysInfo.country)%>
+<%widget name="common:widget/search-box-4ps-cookie/`$sysInfo.country`/`$sysInfo.country`.tpl"%>
+<%/if%>
+<%script%>
+ require.async(["common:widget/ui/jquery/jquery.js", "common:widget/search-box-4ps-cookie/search-box-4ps-cookie-async.js"], function ($) {
+ var autoFocusSearch = true;
+ <%if $body.extAppMod%>
+ autoFocusSearch = false; //if app show DO NOT autoFocus
+ <%/if%>
+ <%if !empty($body.searchBox.sugUrl)%>
+ $.ajax({
+ url: "<%$body.searchBox.sugUrl%>",
+ dataType: "script",
+ cache: true,
+ success: function () {
+ baidu_sug.setMode('baidu');
+ baidu_sug.toggle(false);
+ Gl.searchGroup({type: conf.pageType, autoFocus: autoFocusSearch});
+ }
+ });
+ <%else%>
+ baidu_sug = false;
+ Gl.searchGroup({type: conf.pageType, autoFocus: autoFocusSearch});
+ <%/if%>
+ });
+<%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/th/th.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/th/th.tpl
new file mode 100755
index 000000000..c88211c00
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-cookie/th/th.tpl
@@ -0,0 +1,292 @@
+
+<%if !empty($body.searchBox.tplUrl)%>
+ <%widget name="common:widget/search-box-4ps-cookie/`$sysInfo.country`/`$body.searchBox.tplUrl`/`$body.searchBox.tplUrl`.tpl"%>
+<%else%>
+<%script%>
+<%*注意:不能写JS注释*%>
+require.async('common:widget/ui/jquery/jquery.js', function () {
+conf.searchGroup = {
+ conf:{
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/th/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/th/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ }
+ <%if isset($body.searchBox.sort)%>, sort: "<%$body.searchBox.sort%>"<%/if%>
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if !empty($engine.tn[0].param)%><%foreach $engine.tn as $tn%><%if $tn.param == $root.urlparam.tn%><%$engine.hide = 'true'%><%/if%><%/foreach%><%/if%>
+ <%if empty($engine.hide)%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+ sug: {
+ "hao123": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: null,
+ callbackFn: "window.bdsug.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod": "thai",
+ "cb": "window.bdsug.sug",
+ "haobd": jQuery.cookie("BAIDUID")
+ },
+ templ: false
+ },
+ "google_th": {
+ requestQuery: "q",
+ url: null,
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "hp",
+ "hl": "th",
+ "authuser": "0"
+ },
+ templ: false
+ },
+ "yahoo_web": {
+ autoCompleteData: false,
+ requestQuery: "command",
+ url: "http://sugg.us.search.yahoo.net/gossip-us-sayt/",
+ callbackFn: "fxsearch",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjsonp"
+ }
+ },
+ "google_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.co.th/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "th",
+ "client": "img",
+ "ds": "i",
+ "cp": "4"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "youtube": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "google.sbox.p0 && google.sbox.p0",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "youtube",
+ "hl": "th",
+ "gl": "us",
+ "gs_nf": "1",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_video": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.co.th/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "video-hp",
+ "hl": "th",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "mthai": {
+ url: null
+ },
+ "4shared": {
+ requestQuery: "search",
+ url: "http://dc413.4shared.com/network/search-suggest.jsp",
+ callbackFn: "ajaxSuggestions.jsonpCallback",
+ callbackDataKey: "suggestions",
+ requestParas: {
+ "format": "jsonp"
+ },
+ customUrl: function(para) {
+ return this.o.url + "?search=" + btoa(this.q) + "&format=jsonp";
+ }
+ },
+ "filestube": {
+ requestQuery: "q",
+ url: "http://149.13.65.144:8087",
+ callbackFn: "filestube123",
+ callbackDataKey: "r",
+ charset: "utf-8",
+ requestParas: {
+ "callback": "filestube123",
+ "t": +new Date
+ },
+ customUrl: function(para) {
+ return this.o.url + "/" + encodeURIComponent(this.q) + "?" + para.substr(1);
+ }
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.co.th/maps/suggest",
+ callbackFn: "_xdc_._bgnkibby8",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "2",
+ "hl": "th",
+ "gl": "th",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "ll": "21.902278,101.469727",
+ "spn": "5.706298,39.506836",
+ "auth": "ac0dbe60:A6KQ3ztz8bQ13_rnpShsJPs6jOU",
+ "src": "1",
+ "num": "5",
+ "numps": "5",
+ "callback": "_xdc_._bgnkibby8"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for(; i - ' + detail + '' : "";
+
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "longdo_map": {
+ requestQuery: "key",
+ url: "http://search2.longdo.com/BWTSearch/HeadSearch",
+ callbackFn: "processJSONSuggest",
+ requestParas: {
+ "ds": "poi,poi2,poi3,s_pg",
+ "json": "1",
+ "num": "20",
+ "anyorder": "1",
+ "count": "19"
+ },
+ customUrl: function(para) {
+ return this.o.url + "?" + para.substr(1) + "&" + this.o.requestQuery + '=' + encodeURIComponent(this.q);
+ },
+ templ: function(data) {
+ var _data = data,
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length;
+
+ for(; i' + _data[i].d + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "longdo_dict": {
+ requestQuery: "key",
+ url: "http://search.longdo.com/BWTSearch/HeadSearch",
+ callbackFn: "processJSONSuggest",
+ requestParas: {
+ "json": "1",
+ "ds": "head",
+ "num": "20",
+ "count": "7"
+ },
+ customUrl: function(para) {
+ return this.o.url + "?" + para.substr(1) + "&" + this.o.requestQuery + '=' + encodeURIComponent(this.q);
+ },
+ templ: function(data) {
+ var _data = data,
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length;
+
+ for(; i' + _data[i].d + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_translate": {
+ url: null
+ },
+ "wiki": {
+ autoCompleteData: false,
+ requestQuery: "search",
+ url: "http://th.wikipedia.org/w/api.php",
+ callbackFn: "wikipedia.th",
+ callbackDataKey: "1",
+ requestParas: {
+ "action": "opensearch",
+ "namespace": "0",
+ "suggest": "",
+ "callback": "wikipedia.th"
+ }
+ }
+ }
+}
+});
+<%/strip%>
+<%/script%>
+<%/if%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-noradio/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-noradio/ltr/ltr.css
new file mode 100755
index 000000000..3672b5404
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-noradio/ltr/ltr.css
@@ -0,0 +1,17 @@
+/* for PS */
+body .sg_tri input,
+body .sg_v_tri input {
+ width: 509px !important;
+}
+.sg_btn,
+.sg_v_btn {
+ position: absolute;
+}
+/*fix label*/
+body .box-search_form .radios label {
+ padding-left: 22px;
+}
+.w960 .sg_tri input,
+.w960 .sg_v_tri input {
+ width: 430px !important;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-noradio/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-noradio/rtl/rtl.css
new file mode 100755
index 000000000..b047e0475
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-noradio/rtl/rtl.css
@@ -0,0 +1,18 @@
+/* for PS */
+body .sg_tri input,
+body .sg_v_tri input {
+ width: 482px !important;
+}
+.sg_btn,
+.sg_v_btn {
+ position: absolute;
+}
+
+/*fix label*/
+body .box-search_form .radios label {
+ padding-right: 22px;
+}
+.w960 .sg_tri input,
+.w960 .sg_v_tri input {
+ width: 403px !important;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-noradio/search-box-4ps-noradio.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-noradio/search-box-4ps-noradio.tpl
new file mode 100755
index 000000000..cbdecde83
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps-noradio/search-box-4ps-noradio.tpl
@@ -0,0 +1,11 @@
+
+<%if $head.dir=='ltr'%>
+ <%style%>
+ @import url('/widget/search-box-4ps-noradio/ltr/ltr.css?__inline');
+ <%/style%>
+<%else%>
+ <%style%>
+ @import url('/widget/search-box-4ps-noradio/rtl/rtl.css?__inline');
+ <%/style%>
+<%/if%>
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/ar/ar.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/ar/ar.tpl
new file mode 100755
index 000000000..2e2b5a379
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/ar/ar.tpl
@@ -0,0 +1,343 @@
+
+<%if !empty($body.searchBox.tplUrl)%>
+ <%widget name="common:widget/search-box-4ps/`$sysInfo.country`/`$body.searchBox.tplUrl`/`$body.searchBox.tplUrl`.tpl"%>
+<%else%>
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+require.async('common:widget/ui/jquery/jquery.js', function () {
+conf.searchGroup = {
+ conf: {
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/ar/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/ar/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ }
+ <%if isset($body.searchBox.sort)%>, sort: "<%$body.searchBox.sort%>"<%/if%>
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ <%if !empty($engine.otherSug)%>otherSug:{mod: "<%$engine.otherSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+ sug: {
+ "hao123": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://search.hao123.com.eg/r/su",
+ callbackFn: "window.bdsug.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod": "eg",
+ "cb": "window.bdsug.sug"
+ },
+ templ: function(data) {
+ var _data = data['s'] || [],
+ q = data['q'],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com.eg/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "hp",
+ "hl": "ar-EG",
+ "authuser": "0"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo": {
+ requestQuery: "command",
+ url: "http://sugg.us.search.yahoo.net/gossip-us-ura",
+ callbackFn: "YUI.Env.DataSource.callbacks.yui_3_3_0_1_1312871021408973",
+ callbackDataKey: "r",
+ requestParas: {
+ "output": "yjsonp",
+ "callback": "YUI.Env.DataSource.callbacks.yui_3_3_0_1_1312871021408973"
+ },
+ templ: function(data) {
+ var _data = data["r"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "ps_video": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://search.hao123.com.eg/r/su",
+ callbackFn: "window.bdsug.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod": "video_eg",
+ "cb": "window.bdsug.sug"
+ },
+ templ: function(data) {
+ var _data = data['s'] || [],
+ q = data['q'],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "youtube": {
+ requestQuery: "q",
+ url: "http://suggestqueries.google.com/complete/search",
+ callbackFn: "window.yt.www.suggest.handleResponse",
+ callbackDataNum: 1,
+ requestParas: {
+ "hl": "ar",
+ "ds": "yt",
+ "client": "youtube",
+ "hjson": "t",
+ "jsonp": "window.yt.www.suggest.handleResponse",
+ "cp": "2"
+ },
+
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_video": {
+ requestQuery: "command",
+ url: "http://gossip-ss.us.search.yahoo.com/gossip-us_ss/",
+ callbackFn: "fxsearch",
+ callbackDataNum: 1,
+ requestParas: {
+ "nresults": 8,
+ "output": "fxjsonp"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.com.eg/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "ar",
+ "client": "img",
+ "sugexp": "gsihc"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "hao123_images": {
+ requestQuery: "wd",
+ url: "http://10.247.1.38:8333/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod" : "image_eg"
+ },
+ templ: function(data) {
+ var _data = data["s"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_images": {
+ requestQuery: "command",
+ url: "http://gossip-ss.us.search.yahoo.com/gossip-us_ss",
+ callbackFn: "YUI.Env.DataSource.callbacks.yui_3_5_1_1_1354169017899_293",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjsonp",
+ "nresults": 10,
+ "callback": "{callback}",
+ "callback": "YUI.Env.DataSource.callbacks.yui_3_5_1_1_1354169017899_293",
+ "pubid": 103,
+ "queryfirst": 1
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.com.eg/maps/suggest",
+ callbackFn: "_xdc_._bgnkibby8",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "2",
+ "hl": "ar",
+ "gl": "ar",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "ll": "21.902278,101.469727",
+ "spn": "5.706298,39.506836",
+ "auth": "ac0dbe60:A6KQ3ztz8bQ13_rnpShsJPs6jOU",
+ "src": "1",
+ "num": "5",
+ "numps": "5",
+ "callback": "_xdc_._bgnkibby8"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for (; i < len; i++) {
+ try {
+ detail = _data[i][9][0][0] || _data[i][9][0] || _data[i][9] || "";
+ } catch (e) {
+ detail = ""
+ }
+
+ /*detail = detail ? ' - ' + detail + ' ' : "";*/
+
+ ret.push('' + _data[i][0] + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "wikimapia": {
+ url: null
+ },
+ "wiki_ar": {
+ requestQuery: "search",
+ url: "http://ar.wikipedia.org/w/api.php",
+ callbackFn: "wikipedia.ar",
+ callbackDataNum: 1,
+ requestParas: {
+ "action": "opensearch",
+ "namespace": "0",
+ "suggest": "",
+ "callback": "wikipedia.ar"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_translate": {
+ url: null
+ },
+ "filmes": {
+ requestQuery: "wds",
+ url: "http://ar.hao123.com/movie/sug",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ },
+ templ: function(data) {
+ var _data = data["s"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ }
+ }
+}
+});
+<%/strip%>
+<%/script%>
+<%/if%>
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/bg.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/bg.png
new file mode 100755
index 000000000..4e04de967
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/bg.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/br/br.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/br/br.tpl
new file mode 100755
index 000000000..27a6a51d9
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/br/br.tpl
@@ -0,0 +1,349 @@
+
+<%if !empty($body.searchBox.tplUrl)%>
+ <%widget name="common:widget/search-box-4ps/`$sysInfo.country`/`$body.searchBox.tplUrl`/`$body.searchBox.tplUrl`.tpl"%>
+<%else%>
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+require.async('common:widget/ui/jquery/jquery.js', function () {
+conf.searchGroup = {
+ conf:{
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/br/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/br/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ }
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ <%if !empty($engine.otherSug)%>otherSug:{mod: "<%$engine.otherSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+ sug: {
+ "hao123": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://search.hao123.com.br/r/su",
+ callbackFn: "window.bdsug.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod": "br",
+ "cb": "window.bdsug.sug"
+ },
+ templ: function(data) {
+ var _data = data['s'] || [],
+ q = data['q'],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_br": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com.br/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "hp",
+ "hl": "pt-BR",
+ "authuser": "0"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_web": {
+ autoCompleteData: false,
+ requestQuery: "command",
+ url: "http://sugg.br.search.yahoo.net/gossip-br-sayt/",
+ callbackFn: "fxsearch",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjsonp"
+ }
+ },
+ "4shared": {
+ requestQuery: "search",
+ url: "http://dc413.4shared.com/network/search-suggest.jsp",
+ callbackFn: "ajaxSuggestions.jsonpCallback",
+ callbackDataKey: "suggestions",
+ requestParas: {
+ "format": "jsonp"
+ },
+ customUrl: function(para) {
+ return this.o.url + "?search=" + btoa(this.q) + "&format=jsonp";
+ }
+ },
+ "ps_video": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://search.hao123.com.br/r/su",
+ callbackFn: "window.bdsug.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod": "video_br",
+ "cb": "window.bdsug.sug"
+ },
+ templ: function(data) {
+ var _data = data['s'] || [],
+ q = data['q'],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "youtube": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "youtube",
+ "hl": "pt",
+ "gl": "br",
+ "gs_nf": "1",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_video": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com.br/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "video-hp",
+ "hl": "pt-BR",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "kboing": {
+ url: null
+ },
+ "google_dict": {
+ url: null
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.com.br/maps/suggest",
+ callbackFn: "_xdc_._bgnkibby8",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "100",
+ "hl": "pt-BR",
+ "gl": "br",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "ll": "-14.239424,-53.186502",
+ "spn": "24.779743,86.572266",
+ "auth": "ac0dbe60:A6KQ3ztz8bQ13_rnpShsJPs6jOU",
+ "src": "1",
+ "num": "10",
+ "callback": "_xdc_._bgnkibby8"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for(; i - ' + detail + '' : "";
+
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.com.br/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "img",
+ "ds": "i",
+ "hl": "pt-BR"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "hao123_images": {
+ requestQuery: "wd",
+ url: "http://sugimg.hao123.com.br/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod" : "image_brazil"
+ },
+ templ: function(data) {
+ var _data = data["s"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "postbar": {
+ url: null
+ },
+ "filmes": {
+ requestQuery: "wds",
+ url: "http://br.hao123.com/movie/sug",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ }
+ },
+ "americanas": {
+ requestQuery: "q",
+ url: "http://busca.americanas.com.br/autocomplete/search.php",
+ callbackFn: "window.americanas",
+ callbackDataKey: "sugestoes",
+ requestParas: {
+ "prod" : "image_brazil",
+ "type": "1",
+ "numsugestoes": "12",
+ "numprods": "0",
+ "callback":"window.americanas"
+ },
+ templ: function(data, q) {
+ var _data = data["sugestoes"] || [],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i].consulta.replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "walmart": {
+ url: null
+ },
+ "netshoes": {
+ url: null
+ },
+ "buscape": {
+ url: null
+ },
+ "zoom": {
+ requestQuery: "q",
+ url: "http://s.zst.com.br/static/autocomplete-index-r/.js",
+ callbackFn: "zoomAutoCompleteBlackBoard.notify",
+ callbackDataKey: "completions",
+ customUrl: function(para) {
+ var str = this.q.split("").join("/") + ".js?_=" + +new Date;
+ return this.o.url.replace(".js", str);
+ },
+ templ: function(data) {
+ var _data = data["completions"] || [],
+ ret = [],
+ i = 0,
+ q = data["key"],
+ tmp = "",
+ len = _data.length;
+ var isStr = function(value){
+ return typeof value === 'string';
+ };
+ for(; i' + tmp.replace(q, '' + q + ' ') + '');
+ }
+ return '' + ret.join("") + ' ';
+ }
+ }
+ }
+}
+});
+<%/strip%>
+<%/script%>
+<%/if%>
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/img/bg-search-btn-click.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/img/bg-search-btn-click.png
new file mode 100755
index 000000000..7828b5d56
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/img/bg-search-btn-click.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/img/bg-search-btn-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/img/bg-search-btn-hover.png
new file mode 100755
index 000000000..d11e540ed
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/img/bg-search-btn-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/img/bg-search-btn-side-click.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/img/bg-search-btn-side-click.png
new file mode 100755
index 000000000..b66706676
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/img/bg-search-btn-side-click.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/img/bg-search-btn-side-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/img/bg-search-btn-side-hover.png
new file mode 100755
index 000000000..693ac8896
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/img/bg-search-btn-side-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/img/bg-search-btn-side.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/img/bg-search-btn-side.png
new file mode 100755
index 000000000..d2b3c4f93
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/img/bg-search-btn-side.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/img/bg-search-btn.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/img/bg-search-btn.png
new file mode 100755
index 000000000..e0d576570
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/img/bg-search-btn.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/img/i-search-click.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/img/i-search-click.png
new file mode 100755
index 000000000..31d004952
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/img/i-search-click.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/img/i-search-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/img/i-search-hover.png
new file mode 100755
index 000000000..a01e36716
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/img/i-search-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/img/i-search.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/img/i-search.png
new file mode 100755
index 000000000..b3a7a12cd
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/img/i-search.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/ltr/ltr.more.css
new file mode 100755
index 000000000..726cceec8
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/ltr/ltr.more.css
@@ -0,0 +1,22 @@
+
+/*sug has url*/
+.sug-url {
+ height:45px;
+ border-bottom:1px solid #e1e1e1;
+}
+.sug-url a {
+ display: block;
+ text-decoration: none;
+ color: #0000EE;
+}
+.sug-url .sug-hl {
+ height: 25px;
+ text-decoration: underline;
+ font-weight:bold;
+ font-size:14px;
+}
+.sug-url .sug-frm {
+ line-height: 16px;
+ font-size: 12px;
+ color: green;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/ltr/ltr.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/ltr/ltr.tpl
new file mode 100755
index 000000000..419c3e429
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/ltr/ltr.tpl
@@ -0,0 +1,76 @@
+
+
+
+ <%foreach $sBoxTag as $value%>
+ <%if $value.catagory != 'more'%>
+ <%if empty($body.searchboxTab[$value.catagory])%>
+ <%if $value@first%>
+ <%$value.title%>
+ <%else%>
+
+ <%$value.title%>
+ <%/if%>
+ <%/if%>
+ <%else%>
+
+
+ <%$value.title%>
+
+
+ <%/if%>
+ <%/foreach%>
+
+
+
+
+ <%$sBoxCount = 0%>
+ <%foreach $sBoxTag[0].engine as $value%><%if !empty($body.searchboxEngine[$value.id])%><%$sBoxCount = $sBoxCount + 1%><%/if%><%/foreach%>
+
+
+ <%foreach $sBoxTag[0].engine as $value%>
+ <%if empty($body.searchboxEngine[$value.id])%>
+
+ <%break%>
+ <%/if%><%/foreach%>
+
+
+
+
+
+
+
+<%script%>
+ conf.emptyQuerySug = <%json_encode($body.emptyQuerySug)%>;
+<%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/ltr/ltr_inline.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/ltr/ltr_inline.css
new file mode 100755
index 000000000..835b2429e
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/ltr/ltr_inline.css
@@ -0,0 +1,455 @@
+/*============box_search=============*/
+.box-search_keyboard {
+ padding: 1px;
+}
+.box-search {
+ margin: 20px auto 0;
+ width: 777px;
+}
+.box-search_inner {
+ height:68px;
+}
+/*box-search_tab*/
+.box-search_tab {
+ white-space: nowrap;
+ margin-left: 161px;
+ position: relative;
+ z-index: 8;
+ clear: both;
+}
+.box-search_tab a {
+ /*font-size: 12px;*/
+ float:left;
+ padding: 4px 12px 3px;
+ margin-left: -1px;
+ text-decoration: none;
+ letter-spacing: normal;
+ position: relative;
+ z-index: 1;
+}
+.box-search_tab a:hover {
+ text-decoration: none;
+ background: #dcdcde;
+ border-radius: 2px;
+}
+/*.box-search_more {
+ line-height:normal;
+ position: absolute;
+ float:right;
+ cursor:pointer;
+ z-index:8;
+ top: -8px;
+ right: -8px;
+ border: 1px solid #edf0ef;
+ border-bottom: 0 none;
+}
+.box-search_more dt {
+ margin-top: 6px;
+}
+.box-search_more a:hover {
+ background: transparent;
+ -moz-border-radius: 0px;
+ -webkit-border-radius: 0px;
+ -o-border-radius: 0px;
+ border-radius: 0px;
+}
+.box-search_more dt a {
+ margin: 0;
+ padding: 4px 17px 3px 9px;
+ color: #4c4c4c;
+ text-align: right;
+ display: block;
+ float: none;
+ line-height: 14px;
+ background:url(../bg.png) right -337px no-repeat transparent !important;
+}
+.box-search_more dt a:focus {
+ outline: none;
+}
+.box-search_more_hover {
+ background-color: #dcdcde;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -o-border-radius: 2px;
+ border-radius: 2px;
+}
+.box-search_more_show {
+ border:1px solid #e3e4e6;
+ background: #fff;
+}
+.box-search_more_show dt {
+ margin-top: 0px;
+ padding-top: 6px;
+}
+.box-search_more_show dt a {
+ background-position:right -351px !important;
+}
+.box-search_more_show .box-search_more_hover {
+ background-color: #f5f7f7;
+ -moz-border-radius: 0px;
+ -webkit-border-radius: 0px;
+ -o-border-radius: 0px;
+ border-radius: 0px;
+}
+.box-search_more_show dd {
+ line-height: 31px;
+}
+.box-search_more_show dd a {
+ padding:0 15px 0 9px;
+ display:block;
+ float:none;
+ color: #666;
+ text-align: right;
+ margin:0;
+}
+.box-search_more_hide {
+ display: none;
+}*/
+.box-search_tab a:focus {
+ outline:none;
+} /*clear FF's focusborder*/
+.box-search_tab a.cur {
+ color:#00b075; /*font-weight:bold;*/
+ cursor:default;
+ text-decoration: none;
+ font-weight: bold;
+}
+.box-search_sep {
+ display: block;
+ float: left;
+ height: 6px;
+ line-height: 6px;
+ margin-top: 8px;
+ border-left: 1px solid #b3b3b3;
+ position: relative;
+ z-index: 0;
+ margin-left: -1px;
+}
+/*box-search_logo*/
+.box-search_logo_wrap {
+ position: relative;
+ width: 155px;
+ height: 67px;
+ margin:-16px 5px 0 0;
+ float: left;
+ z-index: 6;
+}
+.box-search_logo {
+ position: absolute;
+ overflow:hidden;
+ vertical-align:bottom;
+ text-align:center;
+}
+.box-search_logo a {
+ padding-right: 18px;
+ display: block;
+}
+.box-search_logo a:focus {
+ outline: none;
+}
+.box-search_logo dt , .box-search_logo dd {
+ padding: 10px 8px 10px 7px;
+ /*cursor: pointer;*/
+}
+.box-search_logo dt a {
+ background: url(/widget/img/bg.png) right -61px no-repeat;
+}
+dt.box-search_logo_hover {
+ background-color: #e3e4e6;
+ border-radius: 2px;
+}
+.box-search_logos_show .box-search_logo_hover {
+ background-color: #f5f7f7;
+ border-radius: 0px;
+}
+.box-search_logos_show {
+ background-color: #fff;
+ border: 1px solid #e3e4e6
+}
+.box-search_logos_show dt a {
+ background-position: right -390px;
+}
+.box-search_logo_hide {
+ display: none;
+}
+.box-search_logo img {
+ width:120px;
+ height:45px;
+}
+.box-search_logo_disabled {
+ background: none;
+ border: 1px solid #EDF0EF;
+}
+.box-search_logo_disabled dt.box-search_logo_hover, .box-search_logo_disabled dt a {
+ background: none;
+ cursor: default;
+}
+
+/*box-search_form*/
+.box-search_form {
+ padding:3px 0px 5px 113px;
+}
+.box-search_form .input {
+ border: 1px solid #d9d9d9;
+ border-top: 1px solid #bfbfbf;
+ margin-right: 13px;
+ position: relative;
+ z-index:5;
+}
+.box-search_form .input input {
+ border:none;
+ background:#fff;
+ width:518px;
+ float:left;
+ overflow:hidden;
+ height:20px;
+ font-size: 14px;
+ line-height:20px\9;
+ padding:4px 0 3px 10px;
+}
+.box-search_form input, .box-search_form button:focus {
+ outline:none;
+}
+.box-search_form .input label {
+ position: absolute;
+ left: 10px;
+ top: 6px;
+ font-size: 14px;
+ color: #D7D8D9;
+ white-space: nowrap;
+}
+.box-search_form .box-search_focus {
+ border: 1px solid #4d90fe;
+}
+.btn-search {
+ white-space:nowrap;
+ line-height:27px;
+ overflow: hidden;
+ _float: left;
+ *margin:0;/*fix non-IE'problem because of vertical-align*/
+
+
+ /*--css3--*/
+ width: 70px;
+ border-radius: 2px;
+ border: 1px solid #3079ED;
+ background-color: #4787ED;
+ background-image: linear-gradient(-180deg, #4D8FFD 0%, #4787ED 100%);
+}
+
+.btn-search_l, .btn-search_r {
+ display: none !important;
+}
+/*button*/
+.btn-search_c {
+ /*background:url(../img/bg-search-btn.png?__sprite) repeat-x;*/
+ vertical-align:top;
+ border:none;
+ color:#fff;
+ height:27px;
+ text-align:center;
+ width:70px;
+ font-weight: bold;
+ font-size: 15px;
+ cursor: pointer;
+ float: left;
+ background: none;
+}
+
+.btn-search_ico {
+ display: block;
+ margin: 0 auto;
+ width: 17px;
+ height: 17px;
+ background: transparent url(../img/i-search.png?__sprite) no-repeat;
+ line-height: 27px;
+}
+
+.btn-search_hover{
+ border-color: #2F5BB7;
+ background-color: #357AE8;
+ background-image: linear-gradient(-180deg, #4C8FFD 0%, #357AE8 100%);
+}
+
+.btn-search_click{
+ border-color: #2B79E6;
+ background-color: #357AE8;
+ background-image: linear-gradient(-180deg, #4A8DFB 0%, #357AE8 100%);
+ box-shadow: inset 0px 2px 3px 0px rgba(0,0,0,0.50);
+}
+
+/*.btn-search_hover .btn-search_l {
+ background:url(../img/bg-search-btn-side-hover.png?__sprite) no-repeat;
+}
+.btn-search_hover .btn-search_r {
+ background:url(../img/bg-search-btn-side-hover.png?__sprite) no-repeat;
+ background-position:-3px 0;
+}
+.btn-search_hover .btn-search_c {
+ background:url(../img/bg-search-btn-hover.png?__sprite) repeat-x;
+}
+.btn-search_hover .btn-search_ico {
+ background: url(../img/i-search-hover.png?__sprite) no-repeat;
+}
+.btn-search_click .btn-search_l {
+ background:url(../img/bg-search-btn-side-click.png?__sprite) no-repeat;
+}
+.btn-search_click .btn-search_r {
+ background:url(../img/bg-search-btn-side-click.png?__sprite) no-repeat;
+ background-position:-3px 0;
+}
+.btn-search_click .btn-search_c {
+ background:url(../img/bg-search-btn-click.png?__sprite) repeat-x;
+}
+.btn-search_click .btn-search_ico {
+ background: url(../img/i-search-click.png?__sprite) no-repeat;
+}*/
+
+
+
+
+.box-search_form .radios {
+ padding-top:4px;
+ width:480px;/*for IE9*/
+}
+.box-search_form .radios label {
+ display:block;
+ padding-left:15px;
+ text-indent:-15px;
+ float:left;
+ margin-right:18px;
+ color:#666;
+ font-size: 13px;
+ white-space: nowrap;
+}
+.box-search_form .radios input {
+ vertical-align:top;
+ width:13px;
+ height:13px;
+ margin-right:5px;
+ vertical-align:bottom;
+ position:relative;
+ top:-1px;
+ overflow:hidden;
+}
+
+/*set hot search words & search button*/
+.box-search_hsrch {
+ width: 617px;
+ margin-left: 160px;
+ overflow: hidden;
+ padding-top: 2px;
+ color: #919191;
+ white-space: nowrap;
+ _margin-top:-14px;
+}
+.hsrch_title {
+ font-weight: bold;
+ margin-right: 8px;
+ /*padding-left: 10px;*/
+ color: #919191;
+}
+.hsrch_word span {
+ display: inline-block;
+ margin-right: 16px;
+}
+.hsrch_word a{
+ color: #919191;
+}
+.hsrch_word a:hover {
+ color: #00B075;
+ text-decoration: underline;
+}
+
+
+/*size setting*/
+.box-search-m .box-search_logo img {
+ width:107px;
+ height:40px;
+}
+.box-search-m .box-search_logo_wrap {
+ width: 142px;
+ height: 62px;
+ margin-top: -14px;
+}
+.box-search-m .box-search_logo dt a {
+ background-position: right -62px;
+}
+.box-search-m .box-search_logos_show dt a {
+ background-position: right -87px;
+}
+.box-search-m .box-search_tab {
+ margin-left: 148px;
+}
+.box-search-m .box-search_hsrch {
+ margin-left: 148px;
+}
+.box-search-s .box-search_logo img {
+ width:85px;
+ height:32px;
+}
+.box-search-s .box-search_logo_wrap {
+ width: 120px;
+ height: 54px;
+ margin-top: -9px;
+}
+.box-search-s .box-search_logo dt a {
+ background-position: right -67px;
+}
+.box-search-s .box-search_logos_show dt a {
+ background-position: right -93px;
+}
+.box-search-s .box-search_tab {
+ margin-left: 126px;
+}
+.box-search-s .box-search_hsrch {
+ margin-left: 126px;
+}
+
+/**************************** 深色换肤搜索框优化 *******************************/
+.skin-type-dark .box-search_logo{border-width:0px;}
+.skin-type-dark .box-search_tab a{color: #ffffff;}
+body.skin-type-dark .box-search_tab a.cur{color: #ffffff;}
+.skin-type-dark .box-search_tab a:hover{background: #595959;background: rgba(0,0,0,0.6);}
+.skin-type-dark #searchGroupRadios label{color: #ffffff;}
+.skin-type-dark .box-search_logo_disabled dt.box-search_logo_hover, .skin-type-dark .box-search_logo_disabled dt a{background: 0;}
+.box-search_logo_disabled, .box-search_logos_show{border: 0;}
+
+
+/*fi chrome radio white background box bug*/
+/*chrome 22-28*/
+@media \\0 screen {
+ body .box-search_form .radios label span {
+ display: inline-block;
+ text-indent: 0;
+ border-radius: 100px;
+ margin-right: 5px;
+ width: 14px;
+ height: 14px;
+ overflow: hidden;
+ vertical-align: -3px;
+ }
+ body .box-search_form .radios input {
+ margin-right: 0;
+ vertical-align: top;
+ position: static;
+ }
+}
+/*chrome 29+*/
+@media screen and (-webkit-min-device-pixel-ratio:0) {
+ body .box-search_form .radios label span {
+ display: inline-block;
+ text-indent: 0;
+ border-radius: 100px;
+ margin-right: 5px;
+ width: 14px;
+ height: 14px;
+ overflow: hidden;
+ vertical-align: -3px;
+ }
+ body .box-search_form .radios input {
+ margin-right: 0;
+ vertical-align: top;
+ position: static;
+ }
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/rtl/rtl.more.css
new file mode 100755
index 000000000..3f240b972
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/rtl/rtl.more.css
@@ -0,0 +1,69 @@
+/*------------------------suggest------------------------*/
+/*提示层外框*/
+.sug-search {
+ position:absolute;
+ top: 28px;
+ *top: 30px;
+ left: -1px;
+ border:1px solid #e3e4e6;
+ border-top: 0 none;
+ background:#fff;
+ width:528px;
+ color:#454545;
+ z-index:999;
+ white-space:nowrap;
+ overflow:hidden;
+}
+/*ie6 shim*/
+.sug-shim {
+ position:absolute;
+ top:-1px;
+ left:-1px;
+ z-index:-1;
+ filter:alpha(opacity="0");
+ width:430px;
+ height:250px;
+}
+/*列表外框*/
+.sug-search ol {
+ font:bold 12px/23px Tahoma,arial,helvetica,clean,sans-serif;
+ cursor:default;
+}
+/*列表项*/
+.sug-search li {
+ padding: 3px 10px;
+ cursor: pointer;
+}
+.sug-search li b {
+ font: inherit;
+ display: inline;
+}
+/*选中样式*/
+.sug-search .sug-select {
+ background: #f5f7f7;
+}
+/*头部*/
+.sug-search .top {
+ font-weight:normal;
+ color:#999;
+ height:21px;
+ line-height:21px;
+ background:#eee;
+ padding:0 2px;
+}
+/*底部*/
+.sug-search .bot {
+ position:relative;
+ height:19px;
+ line-height:19px;
+ font-weight:normal;
+ border-top:1px solid #666;
+}
+/*高亮查询词*/
+.sug-search .sug-query {
+ font-weight:normal;
+}
+.sug-search font {
+ font-weight:normal !important;
+ color:#333 !important;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/rtl/rtl.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/rtl/rtl.tpl
new file mode 100755
index 000000000..32c9f23e6
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/rtl/rtl.tpl
@@ -0,0 +1,82 @@
+
+
+
+ <%foreach $sBoxTag as $value%>
+ <%if $value.catagory != 'more'%>
+ <%if empty($body.searchboxTab[$value.catagory])%>
+ <%if $value@first%>
+ <%$value.title%>
+ <%else%>
+
+ <%$value.title%>
+ <%/if%>
+ <%/if%>
+ <%else%>
+
+
+
+ <%$value.title%>
+
+
+
+
+ <%/if%>
+ <%/foreach%>
+
+
+
+
+ <%$sBoxCount = 0%>
+ <%foreach $sBoxTag[0].engine as $value%><%if !empty($body.searchboxEngine[$value.id])%><%$sBoxCount = $sBoxCount + 1%><%/if%><%/foreach%>
+
+
+ <%foreach $sBoxTag[0].engine as $value%>
+ <%if empty($body.searchboxEngine[$value.id])%>
+
+ <%break%>
+ <%/if%><%/foreach%>
+
+
+
+
+
+
+
+<%script%>
+ conf.emptyQuerySug = <%json_encode($body.emptyQuerySug)%>;
+<%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/rtl/rtl_inline.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/rtl/rtl_inline.css
new file mode 100755
index 000000000..bcfd2bf45
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/rtl/rtl_inline.css
@@ -0,0 +1,497 @@
+/*.box-search_form .input div{ float: left;}*/ /*为啥加?会导致ps sug出现问题*/
+.box-search_keyboard {
+ padding: 1px;
+}
+/*============box_search=============*/
+.box-search {
+ margin: 20px auto 0;
+ width: 780px;
+}
+.box-search_inner {
+ height:68px;
+}
+/*box-search_tab*/
+.box-search_tab {
+ white-space: nowrap;
+ margin-right: 161px;
+ position: relative;
+ z-index: 8;
+ clear: both;
+}
+.box-search_tab a {
+ /*font-size: 12px;*/
+ float:right;
+ padding: 4px 12px 3px;
+ margin-right: -1px;
+ text-decoration: none;
+ letter-spacing: normal;
+ position: relative;
+ z-index: 1;
+}
+.box-search_tab a:hover {
+ text-decoration: none;
+ background: #dcdcde;
+ border-radius: 2px;
+}
+/*.box-search_more {
+ line-height:normal;
+ position: absolute;
+ float:right;
+ cursor:pointer;
+ z-index:8;
+ top: -8px;
+ left: -7px;
+ border: 1px solid #edf0ef;
+ border-bottom: 0 none;
+}
+.box-search_more dt {
+ position: relative;
+ margin-top: 6px;
+}
+.box-search_more a:hover {
+ background: transparent;
+ -moz-border-radius: 0px;
+ -webkit-border-radius: 0px;
+ -o-border-radius: 0px;
+ border-radius: 0px;
+}
+.box-search_more dt a {
+ margin: 0;
+ padding: 4px 9px 3px 17px;
+ color: #4c4c4c;
+ text-align: right;
+ display: block;
+ float: none;
+ line-height: 14px;
+ width: 30px;
+ overflow: hidden;
+}
+.box-search_more dt a:focus {
+ outline: none;
+}
+.box-search_more_hover {
+ background-color: #dcdcde;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -o-border-radius: 2px;
+ border-radius: 2px;
+}
+.box-search_more .arrow, .box-search_more .arrow_bg {
+ position: absolute;
+ height: 0;
+ width: 0;
+ border: 3px dashed transparent;
+}
+.box-search_more .arrow {
+ border-top-color: #4ac29a;
+ border-top-style: solid;
+ top: 10px;
+ right: 42px;
+}
+.box-search_more .arrow_bg {
+ border-top-color: #edf0ef;
+ border-top-style: solid;
+ margin: -5px -3px 0 0;
+ _display: none;
+}
+.box-search_more_hover .arrow_bg {
+ border-top-color: #dcdcde;
+}
+.box-search_more_show .arrow {
+ border-top-color: transparent;
+ border-top-style: dashed;
+ border-bottom-color: #4ac29a;
+ border-bottom-style: solid;
+ top: 12px;
+}
+.box-search_more_show .arrow_bg {
+ border-top-color: transparent;
+ border-top-style: dashed;
+ border-bottom-color: #fff;
+ border-bottom-style: solid;
+ margin-top: -1px;
+}
+.box-search_more_show .box-search_more_hover .arrow_bg {
+ border-bottom-color: #f5f7f7;
+}
+.box-search_more_show {
+ border:1px solid #e3e4e6;
+ background: #fff;
+ left: auto;
+ right: 472px;
+}
+.box-search_more_show dt {
+ margin-top: 0px;
+ padding-top: 6px;
+}
+.box-search_more_show dt a {
+ background-position:left -351px !important;
+}
+.box-search_more_show .box-search_more_hover {
+ background-color: #f5f7f7;
+ -moz-border-radius: 0px;
+ -webkit-border-radius: 0px;
+ -o-border-radius: 0px;
+ border-radius: 0px;
+}
+.box-search_more_show dd {
+ line-height: 31px;
+}
+.box-search_more_show dd a {
+ padding:0 9px 0 15px;
+ display:block;
+ float:none;
+ color: #666;
+ text-align: right;
+ margin:0;
+ overflow: hidden;
+}
+.box-search_more_hide {
+ display: none;
+}*/
+.box-search_tab a:focus {
+ outline:none;
+} /*clear FF's focusborder*/
+.box-search_tab a.cur {
+ color:#00b075; /*font-weight:bold;*/
+ cursor:default;
+ text-decoration: none;
+ font-weight: bold;
+}
+.box-search_sep {
+ display: block;
+ float: right;
+ height: 6px;
+ line-height: 6px;
+ margin-top: 8px;
+ border-left: 1px solid #b3b3b3;
+ position: relative;
+ z-index: 0;
+ margin-right: -1px;
+}
+/*box-search_logo*/
+.box-search_logo_wrap {
+ position: relative;
+ width: 155px;
+ height: 67px;
+ margin:-16px 0 0 5px;
+ float: right;
+ z-index: 6;
+}
+.box-search_logo {
+ position: absolute;
+ right: 0;
+ overflow:hidden;
+ vertical-align:bottom;
+ text-align:center;
+}
+.box-search_logo a {
+ padding-left: 18px;
+ display: block;
+}
+.box-search_logo a:focus {
+ outline: none;
+}
+.box-search_logo dt , .box-search_logo dd {
+ padding: 10px 7px 10px 8px;
+ /*cursor: pointer;*/
+}
+.box-search_logo dt a {
+ background: url(/widget/img/bg.png) -10px -61px no-repeat;
+}
+dt.box-search_logo_hover {
+ background-color: #e3e4e6;
+ border-radius: 2px;
+}
+.box-search_logos_show .box-search_logo_hover {
+ background-color: #f5f7f7;
+ border-radius: 0px;
+}
+.box-search_logos_show {
+ background-color: #fff;
+ border: 1px solid #e3e4e6
+}
+.box-search_logos_show dt a {
+ background-position: -10px -390px;
+}
+.box-search_logo_hide {
+ display: none;
+}
+.box-search_logo img {
+ width:120px;
+ height:45px;
+}
+.box-search_logo_disabled {
+ background: none;
+ border: 1px solid #EDF0EF;
+}
+.box-search_logo_disabled dt.box-search_logo_hover, .box-search_logo_disabled dt a {
+ background: none;
+ cursor: default;
+}
+
+/*box-search_form*/
+.box-search_form {
+ padding:3px 113px 5px 0px;
+}
+.box-search_form .input {
+ background-color: #fff;
+ border: 1px solid #d9d9d9;
+ border-top: 1px solid #bfbfbf;
+ margin-left: 13px;
+ position: relative;
+ z-index:5;
+}
+.box-search_form .input input {
+ border:none;
+ background:#fff;
+ width:491px;
+ float:right;
+ overflow:hidden;
+ height:20px;
+ font-size: 14px;
+ line-height:20px\9;
+ padding:4px 9px 3px 0px;
+ *width: 488px;
+ *float: none;
+ /*fix ie10 bug*/
+ margin-right: 1px;
+}
+.box-search_form input, .box-search_form button:focus {
+ outline:none;
+}
+.box-search_form .input label {
+ position: absolute;
+ right: 10px;
+ top: 6px;
+ font-size: 14px;
+ color: #D7D8D9;
+ white-space: nowrap;
+}
+.box-search_form .box-search_focus {
+ border: 1px solid #4d90fe;
+}
+.btn-search {
+ white-space:nowrap;
+ line-height:27px;
+ overflow: hidden;
+ _float: left;
+ *margin:0;/*fix non-IE'problem because of vertical-align*/
+
+
+ /*--css3--*/
+ width: 70px;
+ border-radius: 2px;
+ border: 1px solid #3079ED;
+ background-color: #4787ED;
+ background-image: linear-gradient(-180deg, #4D8FFD 0%, #4787ED 100%);
+}
+.btn-search_l, .btn-search_r {
+ display: none !important;
+}
+
+.btn-search_c {
+ /*background:url(../img/bg-search-btn.png?__sprite) repeat-x;*/
+ vertical-align:top;
+ border:none;
+ color:#fff;
+ height:27px;
+ text-align:center;
+ width:70px;
+ font-weight: bold;
+ font-size: 15px;
+ cursor: pointer;
+ float: left;
+ background: none;
+}
+.btn-search_ico {
+ display: block;
+ margin: 0 auto;
+ width: 17px;
+ height: 17px;
+ background: url(../img/i-search.png?__sprite) no-repeat;
+ line-height: 27px;
+}
+
+.btn-search_hover{
+ border-color: #2F5BB7;
+ background-color: #357AE8;
+ background-image: linear-gradient(-180deg, #4C8FFD 0%, #357AE8 100%);
+}
+
+.btn-search_click{
+ border-color: #2B79E6;
+ background-color: #357AE8;
+ background-image: linear-gradient(-180deg, #4A8DFB 0%, #357AE8 100%);
+ box-shadow: inset 0px 2px 3px 0px rgba(0,0,0,0.50);
+}
+/*
+.btn-search_hover .btn-search_l {
+ background:url(../img/bg-search-btn-side-hover.png?__sprite) no-repeat;
+}
+.btn-search_hover .btn-search_r {
+ background:url(../img/bg-search-btn-side-hover.png?__sprite) no-repeat;
+ background-position:-3px 0;
+}
+.btn-search_hover .btn-search_c {
+ background:url(../img/bg-search-btn-hover.png?__sprite) repeat-x;
+}
+.btn-search_hover .btn-search_ico {
+ background: url(../img/i-search-hover.png?__sprite) no-repeat;
+}
+.btn-search_click .btn-search_l {
+ background:url(../img/bg-search-btn-side-click.png?__sprite) no-repeat;
+}
+.btn-search_click .btn-search_r {
+ background:url(../img/bg-search-btn-side-click.png?__sprite) no-repeat;
+ background-position:-3px 0;
+}
+.btn-search_click .btn-search_c {
+ background:url(../img/bg-search-btn-click.png?__sprite) repeat-x;
+}
+.btn-search_click .btn-search_ico {
+ background: url(../img/i-search-click.png?__sprite) no-repeat;
+}*/
+.box-search_form .radios {
+ padding-top:4px;
+ width:480px;/*for IE9*/
+}
+.box-search_form .radios label {
+ display:block;
+ padding-right:15px;
+ text-indent:-15px;
+ float:right;
+ margin-left:18px;
+ color:#666;
+ font-size: 13px;
+ white-space: nowrap;
+}
+.box-search_form .radios input {
+ vertical-align:top;
+ width:13px;
+ height:13px;
+ margin-left:5px;
+ vertical-align:bottom;
+ position:relative;
+ top:-1px;
+ overflow:hidden;
+}
+
+/*set hot search words & search button*/
+.box-search_hsrch {
+ width: 620px;
+ margin-right: 160px;
+ overflow: hidden;
+ padding-top: 2px;
+ color: #919191;
+ white-space: nowrap;
+ _margin-top:-14px;
+}
+.hsrch_title {
+ font-weight: bold;
+ margin-left: 8px;
+ /*padding-right: 10px;*/
+ color: #919191;
+}
+.hsrch_word span {
+ display: inline-block;
+ margin-left: 15px;
+}
+.hsrch_word a{
+ color: #919191;
+ text-align: right;
+}
+.hsrch_word a:hover {
+ color: #00B075;
+ text-decoration: underline;
+}
+/*size setting*/
+.box-search-m .box-search_logo img {
+ width:107px;
+ height:40px;
+}
+.box-search-m .box-search_logo_wrap {
+ width: 142px;
+ height: 62px;
+ margin-top: -14px;
+}
+.box-search-m .box-search_logo dt a {
+ background-position: -10px -62px;
+}
+.box-search-m .box-search_logos_show dt a {
+ background-position: -10px -87px;
+}
+.box-search-m .box-search_tab {
+ margin-right: 148px;
+}
+.box-search-m .box-search_hsrch {
+ margin-right: 148px;
+}
+.box-search-s .box-search_logo img {
+ width:85px;
+ height:32px;
+}
+.box-search-s .box-search_logo_wrap {
+ width: 120px;
+ height: 54px;
+ margin-top: -9px;
+}
+.box-search-s .box-search_logo dt a {
+ background-position: -10px -67px;
+}
+.box-search-s .box-search_logos_show dt a {
+ background-position: -10px -93px;
+}
+.box-search-s .box-search_tab {
+ margin-right: 126px;
+}
+.box-search-s .box-search_hsrch {
+ margin-right: 126px;
+}
+
+/**************************** 深色换肤搜索框优化 *******************************/
+.skin-type-dark .box-search_logo{border-width:0px;}
+.skin-type-dark .box-search_tab a{color: #ffffff;}
+body.skin-type-dark .box-search_tab a.cur{color: #ffffff;}
+.skin-type-dark .box-search_tab a:hover{background: #595959;background: rgba(0,0,0,0.6);}
+.skin-type-dark #searchGroupRadios label{color: #ffffff;}
+.skin-type-dark .box-search_logo_disabled dt.box-search_logo_hover, .skin-type-dark .box-search_logo_disabled dt a{background: 0;}
+.box-search_logo_disabled, .box-search_logos_show{border: 0;}
+
+/*fi chrome radio white background box bug*/
+/*chrome 22-28*/
+@media \\0 screen {
+ body .box-search_form .radios label span {
+ display: inline-block;
+ text-indent: 0;
+ border-radius: 100px;
+ margin-left: 5px;
+ width: 14px;
+ height: 14px;
+ overflow: hidden;
+ vertical-align: -3px;
+ }
+ body .box-search_form .radios input {
+ margin-left: 0;
+ vertical-align: top;
+ position: static;
+ }
+}
+/*chrome 29+*/
+@media screen and (-webkit-min-device-pixel-ratio:0) {
+ body .box-search_form .radios label span {
+ display: inline-block;
+ text-indent: 0;
+ border-radius: 100px;
+ margin-left: 5px;
+ width: 14px;
+ height: 14px;
+ overflow: hidden;
+ vertical-align: -3px;
+ }
+ body .box-search_form .radios input {
+ margin-left: 0;
+ vertical-align: top;
+ position: static;
+ }
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/search-box-4ps-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/search-box-4ps-async.js
new file mode 100755
index 000000000..01af0356c
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/search-box-4ps-async.js
@@ -0,0 +1,962 @@
+/*
+* Search box group
+*/
+
+var $ = require("common:widget/ui/jquery/jquery.js"),
+ UT = require("common:widget/ui/ut/ut.js"),
+ helper = require("common:widget/ui/helper/helper.js");
+require("common:widget/ui/suggest/suggest.js");
+
+Gl.searchGroup = function(o) {
+ var _conf = conf.searchGroup,
+ type = o.type || "index",
+ logoPath = _conf.conf[type].logoPath,
+
+ emptySug = conf.emptyQuerySug,
+ eptNew = emptySug && emptySug.newTip,
+ eptTpl = '#{n} #{q}#{newTle} ',
+ eptTipStu = false, // record empty sug tips open and close status
+ $sugTip, // empty sug tips
+ $sugNum, // empty sug number
+
+ logo = $("#" + (o.logoId || "searchGroupLogo")),
+ logoGroup = $("#" + (o.logoGroupId || "searchGroupLogos")),
+ tabs = $("#" + (o.tabsId || "searchGroupTabs")),
+ form = $("#" + (o.formId || "searchGroupForm")),
+ input = $("#" + (o.inputId || "searchGroupInput")),
+ label = $("#" + (o.labelId || "searchGroupLabel")),
+ radios = $("#" + (o.radiosId || "searchGroupRadios")),
+ btn = $("#" + (o.btnId || "searchGroupBtn")),
+ // more = $("#" + (o.moreId || "searchGroupMore")),
+ moreTab = $("#" + (o.moreTabId || "searchGroupMoreTab")),
+ params = $("#" + (o.paramsId || "searchGroupParams")),
+ radioName = o.radioName || "searchGroupRadio",
+ btnWrap = btn.parent(),
+ inputWrap = input.parent(),
+ defaultN = _conf.conf[type].curN || 0,
+ curTab = $("a:eq(" + defaultN + ")", tabs),
+ tabsChildren = $("a", tabs),
+ //render data when init sug
+ defaultData = _conf.sug[_conf.list[curTab.attr("data-t")].engine[defaultN].id],
+ //record which form was selected in tabs
+ storeForm = {},
+ logoHash = {
+ 'yahoo': 'yahoo',
+ 'google': 'google',
+ 'baidu': 'baidu',
+ 'defau': 'defau'
+ },
+ $bd = $(document.body),
+ getCurLogo = function(attr) {
+ var tmpObj = null;
+ attr = attr.toLowerCase();
+ for(var i in logoHash) {
+ if(attr.search(i) > -1) {
+ tmpObj = logoHash[i];
+ break;
+ }
+ }
+ if(tmpObj === 'yahoo' && conf.country === 'jp') {
+ tmpObj = 'yahoo_jp';
+ }
+ return (tmpObj || 'defau');
+ },
+ //smallLogoPath = "/resource/fe/headerTest/search/#{logo}.png",
+
+ //reset the form about action and params
+ resetForm = function(data, n) {
+ var ret = [];
+ var theLogoPath = $bd.hasClass("skin-type-dark")?(_conf.conf[type].logoPath+"dark/"):_conf.conf[type].logoPath;
+ var isFixed = $bd.hasClass("header-fixed-up");
+ var logoGroupDt = $("dt", logoGroup).clone();
+
+ // Fixed bug in IE8
+ logoGroup.html('');
+ logoGroup.append(logoGroupDt);
+ // rebinding logo element
+ logo = $("#" + (o.logoId || "searchGroupLogo"), logoGroupDt);
+
+ form.attr("action", data[n].action);
+ input.attr("name", data[n].q);
+ if(isFixed) {
+ logo.attr("src", "/resource/fe/headerTest/search/" + getCurLogo(data[n].logo) + ".png");
+ } else {
+ logo.attr("src", theLogoPath + data[n].logo + ".png");
+ }
+ logo.attr("alt", data[n].name);
+ logo.parent().attr("title", data[n].name);
+ logo.parent().attr("data-n", n);
+ logo.attr("data-id", data[n].id);
+
+ $("dd", logoGroup).remove();
+ logoGroup.append(function () {
+ ret = [];
+ $.each(data, function(key, val) {
+ if(isFixed) {
+ ret.push(''+ val.name + ' ');
+ } else {
+ ret.push(' ');
+ }
+ });
+ return ret.join("");
+ });
+ // fix: show errors when click radios on IE
+ setTimeout(function() {
+ radios.html(function() {
+ ret = [];
+ $.each(data,function(key, val) {
+ ret.push(' ' + val.name + ' ');
+ });
+ return ret.join("");
+ });
+ $("#searchGroupRadio_" + n).attr("checked", "checked");
+ }, 0);
+
+ params.html(function() {
+ ret = [];
+ $.each(data[n].params, function(key, val) {
+ ret.push(' ');
+ });
+ return ret.join("");
+ });
+
+ if (data.length <= 1) {
+ logoGroup.addClass("box-search_logo_disabled");
+ } else {
+ logoGroup.removeClass("box-search_logo_disabled");
+ }
+ logoGroup.children().on("mouseenter", function() {
+ $bd.hasClass("header-fixed-up") && $(this).addClass("box-search_logo_hover");
+ });
+ logoGroup.children().on("mouseleave", function() {
+ $bd.hasClass("header-fixed-up") && $(this).removeClass("box-search_logo_hover");
+ });
+
+ if(emptySug) {
+ resetEmptySugTip();
+ }
+ },
+
+ resetSug = function(data, n) {
+
+ data = _conf.sug[data[n].id];
+ $.each(data, function(key, val) {
+ sug.o[key] = val;
+ });
+ //fix more prams
+ !data.templ && (sug.o.templ = false);
+ !data.callbackFn && (sug.o.callbackFn = false);
+ !data.callbackDataKey && (sug.o.callbackDataKey = false);
+ !data.callbackName && (sug.o.callbackName = false);
+ !data.callbackDataNum && (sug.o.callbackDataNum = false);
+ !data.customUrl && (sug.o.customUrl = false);
+
+ !data.customUrl && (sug.o.customUrl = false);
+ !data.charset && (sug.o.charset = undefined);
+ sug.reset(true);
+ },
+
+ // toggle for baidu sug
+ resetBaiduSug = function (data, n) {
+
+ if (!baidu_sug) {
+ return;
+ }
+
+ data = data ? data[n].baiduSug : false;
+
+ if (data) {
+ baidu_sug.setMode(data.mod);
+ baidu_sug.toggle(true);
+ } else {
+ baidu_sug.toggle(false);
+ }
+ },
+
+ // toggle for PS video sug
+ resetBaiduVideoSug = function(data, n) {
+ if(!window["baidu_video_sug"]) {
+ return;
+ }
+
+ data = data ? data[n].otherSug : false;
+
+ if (data) {
+ baidu_video_sug.setMode(data.mod);
+ baidu_video_sug.toggle(true);
+ } else {
+ baidu_video_sug.toggle(false);
+ }
+ },
+
+ switchTab = function(tab, sugStay) {
+ tab = $(tab);
+ curTab.removeClass("cur");
+ tab.addClass("cur");
+ curTab = tab;
+
+ var t = tab.attr("data-t"),
+
+ list = _conf.list,
+ engines = list[t].engine,
+ engLen = engines.length;
+ //ps sug gut add tab changed name
+ tabCategoryName = t;
+ //if the last element is null, remove it
+ if($.isEmptyObject(engines[engLen-1])){
+ engines.length = engLen - 1;
+ };
+ //record current form(add the current type to storeForm as a key)
+ storeForm[t] || (storeForm[t] = 0);
+
+ //reset form
+ resetForm(engines, storeForm[t]);
+
+ //reset suggest
+ !sugStay && resetSug(engines, storeForm[t]);
+
+ // reset PS video sug
+ !sugStay && resetBaiduVideoSug(engines, storeForm[t]);
+
+ // reset baidu sug
+ !sugStay && resetBaiduSug(engines, storeForm[t]);
+
+ //reset hot word
+ label.text(list[t].hotWords);
+ /*
+ setTimeout(function() {
+ input.select();
+ }, 16);
+ */
+ //keep the cursor in end
+ /*setTimeout(function() {
+ setCursorPos(input[0], input.val().length);
+ }, 16); */
+ },
+
+ emptySugShow = function(config, engineId) {
+ var _tpl = '';
+ $.each(config.data, function(inx, val) {
+ inx = inx + 1;
+ _tpl += helper.replaceTpl(eptTpl, {
+ "q":val.value,
+ "cls":"hl_"+ inx,
+ "n": inx,
+ "newTle": (val.isNew ? eptNew : "")
+ })
+ });
+ _tpl += " ";
+ form.find(".sug-search").html(_tpl).show();
+ changeEptTipStatus(true);
+
+ if(!$.store("search_" + engineId)) {
+ $.store("search_" + engineId, config.version, {expires: 5});
+ $sugNum.hide();
+ }
+ //form.addClass("ept-sug_show");
+ },
+ /**
+ *
+ * @used when form reset
+ * @purpose reset tip condition
+ * @return
+ */
+ resetEmptySugTip = function() {
+ var curEngine = logo.attr("data-id"),
+ newNum = 0,
+ data = emptySug[curEngine],
+ storeVal = $.store("search_" + curEngine);
+ if(data) {
+ $sugTip.show();
+ $.each(data.data, function(i, val) {
+ if(val.isNew) {
+ newNum++;
+ }
+ });
+ if(!storeVal || (newNum && (storeVal !== data.version))) {
+ $sugNum.html(newNum).show();
+ } else {
+ $sugNum.hide();
+ }
+ } else {
+ $sugTip.hide();
+ $sugNum.hide();
+ }
+ },
+ /**
+ * @description switch tip btn open and close status
+ * @param {boolean} status true is open, false|undefined is close
+ * @return
+ */
+ changeEptTipStatus = function(status) {
+ if(status) {
+ $sugTip.addClass('sug-tip_open');
+ } else {
+ $sugTip.removeClass('sug-tip_open');
+ }
+ eptTipStu = status;
+ },
+
+ showMore = function() {
+ var more = $("dd", moreTab),
+ list = _conf.more,
+ ret = [];
+ if ($("dd", moreTab).length === 0) {
+ $.each(list, function() {
+ ret.push('' + this.name + ' ');
+ });
+ moreTab.append(ret.join(""));
+ moreTab.children().on("mouseenter", function() {
+ $(this).addClass("box-search_more_hover");
+ });
+ moreTab.children().on("mouseleave", function() {
+ $(this).removeClass("box-search_more_hover");
+ });
+ }
+ if(moreTab.hasClass("box-search_more_show")) {
+ moreTab.removeClass("box-search_more_show");
+ more.each(function () {
+ $(this).addClass("box-search_more_hide");
+ });
+ }
+ else {
+ moreTab.addClass("box-search_more_show");
+ more.each(function () {
+ $(this).removeClass("box-search_more_hide");
+ });
+ }
+ },
+
+ showLogo = function () {
+ var n = logo.parent().attr("data-n"),
+ logoList = $("dd", logoGroup);
+ var isFix = $bd.hasClass("header-fixed-up"),
+ logLen = logoList.length;
+ if (logoGroup.hasClass("box-search_logos_show")) {
+ logoGroup.removeClass("box-search_logos_show");
+ logoList.each(function () {
+ $(this).addClass("box-search_logo_hide").removeClass("box-search_logo_first box-search_logo_last");
+ });
+ }
+ else {
+ logoGroup.addClass("box-search_logos_show");
+ logoList.each(function (key) {
+ var $that = $(this);
+ key != n && $that.removeClass("box-search_logo_hide");
+ if (isFix && (logLen > 1) && (key != n)) {
+ if(n == 0) {
+ if(key === 1) {
+ $that.addClass("box-search_logo_first");
+ }
+ if(key === logLen-1) {
+ $that.addClass("box-search_logo_last");
+ }
+ } else if(n == logLen-1) {
+ if(key === 0) {
+ $that.addClass("box-search_logo_first");
+ }
+ if(key === logLen-2) {
+ $that.addClass("box-search_logo_last");
+ }
+ } else {
+ if(key === 0) {
+ $that.addClass("box-search_logo_first");
+ }
+ if(key === logLen-1) {
+ $that.addClass("box-search_logo_last");
+ }
+ }
+ }
+ });
+ }
+ },
+
+ //disable selection for input elements
+ disableSelection = function(el) {
+ if (typeof el.onselectstart != "undefined") { //IE
+ el.onselectstart = function() {
+ return false;
+ }
+ } else if (typeof el.style.MozUserSelect != "undefined") { //FF
+ el.style.MozUserSelect = "none";
+ } else { //Opera
+ el.onmousedown = function() {
+ return false;
+ }
+ }
+ },
+
+ setCursorPos = function(obj, pos) {
+ if (obj.setSelectionRange) {
+ obj.focus();
+ obj.setSelectionRange(pos, pos);
+ } else if (obj.createTextRange) {
+ var range = obj.createTextRange();
+ range.collapse(true);
+ range.moveEnd('character', pos);
+ range.moveStart('character', pos);
+ range.select();
+ }
+ },
+
+ //sug instantiation
+ sug = Gl.suggest(input[0], {
+ classNameWrap: "sug-search",
+ classNameQuery: "sug-query",
+ classNameSelect: "sug-select",
+ //classNameClose: "sug-close",
+ delay: _conf.conf[type].delay,
+ n: _conf.conf[type].n,
+ autoFocus: false,
+ requestQuery: defaultData.requestQuery,
+ requestParas: defaultData.requestParas,
+ url: defaultData.url,
+ callbackFn: defaultData.callbackFn,
+ callbackDataKey: defaultData.callbackDataKey,
+ onQueryChange: function(val) {
+ var da = emptySug && emptySug[logo.attr("data-id")];
+ if (da) {
+ if (!val) {
+ emptySugShow(da, logo.attr("data-id"));
+ } else {
+ changeEptTipStatus();
+ }
+ }
+ },
+ onKeyEsc: function() {
+ var da = emptySug && emptySug[logo.attr("data-id")];
+ if (da) {
+ changeEptTipStatus();
+ }
+ },
+ onCheckForm: function(form) {
+
+ if( !(/^hao123$/.test(logo.attr("data-id"))) ) return;
+
+ if( !$(form).find("input[name='haobd']").get(0) ) {
+ $(form).append(" ");
+ }
+ },
+ onSearchDirect: function(li, q, prefix) {
+ var img = new Image(),
+ enco = encodeURIComponent,
+ collect = [],
+ _type = curTab.attr("data-t"),
+ url = "http://search.hao123.co.th/r/cl/i18n.gif?fm=se&st=3&rsv_sugtype=cr&lang=th-TH",
+ href = $( $(li).find("a").get(0) ).attr("href"),
+ title = $( $(li).find("a .sug-hl").get(0) ).text(),
+
+ conf = {
+ url: href,
+ q: q,
+ title: title,
+ prefixsug: prefix,
+ haobd: $.cookie("BAIDUID"),
+ t: +new Date
+ };
+
+
+ img.src = url + "&" + $.param(conf); // PS的统计
+
+ var utObj = {
+ type: "click",
+ position: "search",
+ engine: _conf.list[_type].engine[storeForm[_type]].id.toLowerCase(),
+ value: enco(q),
+ url: href,
+ element: "sug",
+ modId: "search",
+ tab: _type
+ };
+ if ($bd.hasClass("header-fixed-up")) {
+ utObj.sort = "header";
+ }
+ UT.send(utObj);
+ // 我们的统计
+ /*if (_conf.conf.sort) {
+ UT.send({
+ type: "click",
+ position: "search",
+ engine: _conf.list[_type].engine[storeForm[_type]].id.toLowerCase(),
+ value: enco(q),
+ url: href,
+ element: "sug",
+ sort: _conf.conf.sort,
+ modId:"search"
+ });
+ } else {
+ UT.send({
+ type: "click",
+ position: "search",
+ engine: _conf.list[_type].engine[storeForm[_type]].id.toLowerCase(),
+ value: enco(q),
+ url: href,
+ element: "sug",
+ modId:"search"
+ });
+ }*/
+ },
+ onMouseSelect: function(li) {
+ var t = curTab.attr("data-t"),
+ _action = _conf.list[t].engine[storeForm[t]].action;
+ //fix action
+ if(/#\{([^}]*)\}/mg.test(_action)) {
+ form.attr("action", helper.replaceTpl(_action, {q: encodeURIComponent(input.val())}));
+ input.attr("disabled", true);
+ setTimeout(function() {
+ input.attr("disabled", false);
+ }, 16);
+ }
+ input.select();
+
+ var _type = curTab.attr("data-t");
+ var utObj = {
+ type: "click",
+ position: "search",
+ engine: _conf.list[_type].engine[storeForm[_type]].id.toLowerCase(),
+ value: encodeURIComponent(input.val()),
+ element: "sug",
+ modId: "search",
+ tab: _type
+ };
+ if ($(li).hasClass("ept-sug-li")) {
+ utObj["element"] = "ept-sug";
+ }
+ if ($bd.hasClass("header-fixed-up")) {
+ utObj.sort = "header";
+ }
+ UT.send(utObj);
+ /*if (_conf.conf.sort) {
+ UT.send({
+ type: "click",
+ position: "search",
+ engine: _conf.list[_type].engine[storeForm[_type]].id.toLowerCase(),
+ value: encodeURIComponent(input.val()),
+ element: "sug",
+ sort: _conf.conf.sort,
+ modId:"search"
+ });
+ } else {
+ UT.send({
+ type: "click",
+ position: "search",
+ engine: _conf.list[_type].engine[storeForm[_type]].id.toLowerCase(),
+ value: encodeURIComponent(input.val()),
+ element: "sug",
+ modId:"search"
+ });
+ }*/
+ },
+ templ: defaultData.templ
+ });
+
+ if(emptySug) {
+ var cssStyl;
+ if(conf.dir === "rtl") {
+ cssStyl = '.box-search .sug-tip{cursor:pointer;position:absolute;left:27px;}'
+ + '.header-fixed-up .box-search .sug-tip{left:55px;}'
+ + '.box-search .sug-tip i{position:absolute;left:10px;top:10px;'
+ + 'width:0;height:0;border-top:6px solid #999;border-right:6px'
+ + ' solid transparent;border-left:6px solid transparent;font-size:'
+ + '0;line-height:0;}.box-search .sug-tip .sug-tip-new{width:18px;'
+ + 'height:18px;line-height:18px;position:absolute;text-align:'
+ + 'center;left:7px;top:-9px;font-size:12px;border-radius:10px;'
+ + 'background:#f66f2e;color:#fff;}.box-search .sug-tip_open i{border'
+ + '-bottom:6px solid #999;border-top:6px solid transparent;top:4px;}'
+ + '.box-search .ept-sug-li .num{display:block;float:right;width:16px;'
+ + 'height:16px;line-height:16px;color:#fff;font-size:12px;'
+ + 'background-color:#b2b2b2;text-align:center;'
+ + 'margin:7px 0 0 10px;}.box-search .ept-sug-li .new{padding-right:5px;'
+ + 'font-size:12px;color:#f00;}.box-search .sug-search .hl_1 .num'
+ + '{background-color:#ff4e17;}.box-search .sug-search .hl_2 .num'
+ + '{background-color:#ff7013;}.box-search .sug-search .hl_3 .num'
+ + '{background-color:#ff9b18;}.box-search .ept-sug-li{white-'
+ + 'space:nowrap;overflow:hidden;height:30px;font-size:13px;'
+ + 'line-height:30px;font-weight:normal;padding:0 8px;}'
+ + '#searchGroupInput::-ms-clear{display:none}';
+ } else {
+ cssStyl = '.box-search .sug-tip{cursor:pointer;position:absolute;right:0;}'
+ + '.header-fixed-up .box-search .sug-tip{right:28px;}'
+ + '.box-search .sug-tip i{position:absolute;right:10px;top:10px;'
+ + 'width:0;height:0;border-top:6px solid #999;border-right:6px'
+ + ' solid transparent;border-left:6px solid transparent;font-size:'
+ + '0;line-height:0;}.box-search .sug-tip .sug-tip-new{width:18px;'
+ + 'height:18px;line-height:18px;position:absolute;text-align:'
+ + 'center;right:7px;top:-9px;font-size:12px;border-radius:10px;'
+ + 'background:#f66f2e;color:#fff;}.box-search .sug-tip_open i{border'
+ + '-bottom:6px solid #999;border-top:6px solid transparent;top:4px;}'
+ + '.box-search .ept-sug-li .num{display:block;float:left;width:16px;'
+ + 'height:16px;line-height:16px;color:#fff;font-size:12px;'
+ + 'background-color:#b2b2b2;text-align:center;'
+ + 'margin:7px 10px 0 0;}.box-search .ept-sug-li .new{padding-left:5px;'
+ + 'font-size:12px;color:#f00;}.box-search .sug-search .hl_1 .num'
+ + '{background-color:#ff4e17;}.box-search .sug-search .hl_2 .num'
+ + '{background-color:#ff7013;}.box-search .sug-search .hl_3 .num'
+ + '{background-color:#ff9b18;}.box-search .ept-sug-li{white-'
+ + 'space:nowrap;overflow:hidden;height:30px;font-size:13px;'
+ + 'line-height:30px;font-weight:normal;padding:0 8px;}'
+ + '#searchGroupInput::-ms-clear{display:none}';
+ }
+ input.after('1 ');
+ $sugTip = form.find(".sug-tip");
+ $sugNum = $sugTip.find(".sug-tip-new");
+
+ require.loadCss({
+ content: cssStyl
+ });
+
+ resetEmptySugTip(); // fix when first engine has empty sug
+
+ $sugTip.on("click", function() {
+ var curEngine = logo.attr("data-id");
+
+ if(eptTipStu) {
+ form.find(".sug-search").hide();
+ changeEptTipStatus();
+ } else {
+ emptySugShow(emptySug[curEngine], curEngine);
+ }
+ input.focus();
+ });
+
+ input.on("click", function() {
+ var curId = logo.attr("data-id");
+ if(!$.trim($(this).val()) && emptySug[curId]) {
+ emptySugShow(emptySug[curId], curId);
+ }
+ });
+ input.on("blur", function() {
+ if(emptySug[logo.attr("data-id")]) {
+ $sugTip.removeClass('sug-tip_open');
+ form.find(".sug-search").hide();
+ }
+ });
+ $(document).on("mousedown", function(e) {
+ var $curObj = $(e.target),
+ aimTarget = $curObj.closest(input).length || $curObj.closest($sugTip).length || $curObj.closest(btnWrap).length || 0;
+ if(!aimTarget) {
+ eptTipStu = false;
+ }
+ });
+ }
+
+ //ps sug gut add tab
+ window.tabCategoryName = curTab.attr("data-t");
+ //clear the input's value after refresh
+ input.val("");
+
+ //some browsers may keep form's status after refresh
+ $("[name = radioName]:first").attr("checked", true);
+
+ //record the default form'n
+ storeForm[curTab.attr("data-t")] = 0;
+
+ //select text in input after submit
+ form.on("submit", function() {
+ // input.select();
+ var t = curTab.attr("data-t"),
+ _action = _conf.list[t].engine[storeForm[t]].action,
+ _url = _conf.list[t].engine[storeForm[t]].url,
+ isBlank = false;
+ var radioEl = $("input", radios);
+ for(var i = 0; i < radioEl.length; i++) {
+ if(radioEl.eq(i).attr("checked")) {
+ var checkedRadio = radioEl.eq(i);
+ }
+ }
+ /*if(t == "shopping" && checkedRadio.attr("id") == "searchGroupRadio_0") {
+ form[0].acceptCharset = document.charset = "big5";
+ }
+ else {
+ form[0].acceptCharset = document.charset = "utf-8";
+ }*/
+
+ // set input's value to the hot word if it was blank
+ if($.trim(input.val()) === "") {
+ if($.trim(label.text()) === ""){
+ var action = _action && _url ? _url : _action;
+ form.attr("action", action);
+ } else {
+ input.val(label.text());
+ input.css("color", "#fff");
+ isBlank = true;
+ }
+ } else {
+ if(/^hao123$/.test(logo.attr("data-id"))) {
+ if(!form.find("input[name='haobd']").get(0)) {
+ form.append(" ");
+ }
+ }
+ form.attr("action", _action);
+ }
+
+ // set charset to big5 while the engine is ruten
+ if(t == "shopping" && /ruten.png/.test(logo.attr("src"))) {
+ form[0].acceptCharset = document.charset = "big5";
+ }
+ else {
+ form[0].acceptCharset = document.charset = "utf-8";
+ }
+ var utObj = {
+ type: "click",
+ position: "search",
+ engine: _conf.list[t].engine[storeForm[t]].id.toLowerCase(),
+ value: encodeURIComponent(input.val()),
+ element: "input",
+ modId:"search",
+ tab: t
+ };
+ if ($bd.hasClass("header-fixed-up")) {
+ utObj.sort = "header";
+ }
+ UT.send(utObj);
+ /*if (_conf.conf.sort) {
+ UT.send({
+ type: "click",
+ position: "search",
+ engine: _conf.list[t].engine[storeForm[t]].id.toLowerCase(),
+ value: encodeURIComponent(input.val()),
+ element: "input",
+ sort: _conf.conf.sort,
+ modId:"search"
+ });
+ } else {
+ UT.send({
+ type: "click",
+ position: "search",
+ engine: _conf.list[t].engine[storeForm[t]].id.toLowerCase(),
+ value: encodeURIComponent(input.val()),
+ element: "input",
+ modId:"search"
+ });
+ } */
+ //reset input after search
+ if(isBlank) {
+ setTimeout(function() {
+ input.val("");
+ input.removeAttr("style");
+ }, 16);
+ } else {
+ input.select();
+ }
+ //fix action
+ if(/#\{([^}]*)\}/mg.test(_action)) {
+ form.attr("action", helper.replaceTpl(_action, {q: encodeURIComponent(input.val())}));
+ input.attr("disabled", true);
+ setTimeout(function() {
+ input.attr("disabled", false);
+ input.select();
+ }, 16);
+ }
+ //no action while engine is hao123 and input val is blank
+ /*if(/hao123.png/.test(logo.attr("src")) && input.val() === "") {
+ return false;
+ }*/
+ });
+
+ //disableSelection
+ disableSelection(tabs[0]);
+ disableSelection(radios[0]);
+
+ resetBaiduVideoSug(_conf.list[curTab.attr('data-t')].engine, defaultN);
+
+ resetBaiduSug(_conf.list[curTab.attr('data-t')].engine, defaultN);
+
+ btn.on("mousedown", function() {
+ btnWrap.addClass("btn-search_click");
+ });
+ btn.on("mouseup", function() {
+ btnWrap.removeClass("btn-search_click");
+ });
+ btn.on("mouseout", function() {
+ btnWrap.removeClass("btn-search_click");
+ });
+ btn.on("mouseenter", function() {
+ btnWrap.addClass("btn-search_hover");
+ });
+ btn.on("mouseleave", function() {
+ btnWrap.removeClass("btn-search_hover");
+ });
+ input.on("focus", function() {
+ inputWrap.addClass("box-search_focus");
+ label.hide();
+ });
+ input.on("blur", function() {
+ inputWrap.removeClass("box-search_focus");
+ $.trim(input.val()) === "" && label.show();
+ });
+ logoGroup.children().on("mouseenter", function() {
+ $bd.hasClass("header-fixed-up") && $(this).addClass("box-search_logo_hover");
+ });
+ logoGroup.children().on("mouseleave", function() {
+ $bd.hasClass("header-fixed-up") && $(this).removeClass("box-search_logo_hover");
+ });
+ moreTab.children().on("mouseenter", function() {
+ $(this).addClass("box-search_more_hover");
+ });
+ moreTab.children().on("mouseleave", function() {
+ $(this).removeClass("box-search_more_hover");
+ });
+
+ tabs.on("mousedown", function(e) {
+ var el = e.target,
+ tabTo;
+ el.tagName === "SPAN" && (el = el.parentNode);
+ //el.tagName !== "DT" && !hasClass(el, "cur") && !hasClass(el, "more") && switchTab(el);
+ tabTo = el.getAttribute("data-t");
+ if(tabTo) {
+ switchTab(el);
+ UT.send({
+ type: "click",
+ position: "switchTab",
+ modId: "search",
+ sort: tabTo
+ });
+ }
+ form.acceptCharset = document.charset = "utf-8";
+ });
+
+ conf.pageType !=="lv2" && window["PDC"] && PDC.mark("c_sxvi");
+
+ moreTab.on("mousedown", function(e) {
+ var el = e.target;
+ if(el.parentNode.tagName === "DD") {
+ setTimeout(showMore, 200);
+ }else {
+ showMore();
+ }
+ });
+
+ $(document).on("mousedown", function(e) {
+ var el = e.target;
+ $bd.hasClass("header-fixed-up") && logoGroup.hasClass("box-search_logos_show") && el !== logoGroup[0] && !$.contains(logoGroup[0], el) && showLogo();
+ moreTab.hasClass("box-search_more_show") && el !== moreTab[0] && !$.contains(moreTab[0], el) && showMore();
+ // more.css("display") === "block" && el !== moreTab[0] && !$.contains(moreTab[0], el) && !$.contains(more[0], el) && showMore();
+ });
+
+ logoGroup.on("click", function(e) {
+ var el = e.target,
+ $el = $(el),
+ $ta = el.tagName,
+ t = curTab.attr("data-t"),
+ n = storeForm[t],
+ _n;
+ if(!$bd.hasClass("header-fixed-up")) return;
+ if ($ta === "IMG"||$ta === "SPAN") {
+ _n = ~~$el.parent().attr("data-n");
+ } else if ($ta === "A"||$ta === "DT") {
+ _n = ~~$el.attr("data-n");
+ }else {
+ _n = ~~$el.children().attr("data-n");
+ }
+ //input.select();
+ //keep the cursor in end
+ form[0].acceptCharset = document.charset = "utf-8";
+ //setTimeout(function() {
+ // setCursorPos(input[0], input.val().length);
+ //}, 16);
+
+
+
+ if(_n !== n) {
+ storeForm[t] = _n;
+ resetForm(_conf.list[t].engine, _n);
+
+ //reset suggest
+ resetSug(_conf.list[t].engine, _n);
+
+ //reset PS video sug
+ resetBaiduVideoSug(_conf.list[t].engine, _n);
+
+ resetBaiduSug(_conf.list[t].engine, _n);
+ }
+ showLogo();
+ });
+ // bind radio
+ $("input", radios).live("click", function (e) {
+ var t = curTab.attr("data-t"),
+ n = storeForm[t],
+ _n = $(this).val();
+ //input.select();
+ //keep the cursor in end
+ $(this).attr("checked", "checked");
+
+ setTimeout(function() {
+ // setCursorPos(input[0], input.val().length);
+ }, 16);
+
+ //el.tagName === "LABEL" && (el = el.getElementsByTagName("input")[0]);
+ if(_n !== n) {
+ storeForm[t] = _n;
+
+ resetForm(_conf.list[t].engine, _n);
+
+ //reset suggest
+ resetSug(_conf.list[t].engine, _n);
+
+ //reset PS video sug
+ resetBaiduVideoSug(_conf.list[t].engine, _n);
+
+ //reset baidu sug
+ resetBaiduSug(_conf.list[t].engine, _n);
+ }
+ var utObj = {
+ type: "click",
+ ac: "b",
+ position: "sRadio",
+ engine: _conf.list[t].engine[_n].id.toLowerCase(),
+ modId:"search"
+ };
+ if ($bd.hasClass("header-fixed-up")) {
+ utObj.sort = "header";
+ }
+ UT.send(utObj);
+ /*UT.send({
+ type: "click",
+ ac: "b",
+ position: "sRadio",
+ engine: _conf.list[t].engine[_n].id.toLowerCase(),
+ sort: _conf.conf.sort,
+ modId:"search"
+ });*/
+ });
+
+ //focus the input when init
+
+ //to let lv2 page NOT to auto focus SEARCH INPUT! by NE
+ if(o.autoFocus == null){
+ o.autoFocus = true; //default TRUE!
+ }
+ if(o.autoFocus) {
+ input.focus();
+ }
+
+ /*for header when fixed & width = 40px*/ // TODO
+ var $window = $(window),
+ recordTab = null, // 吸顶时刻如果tab不是web的话记录当前tab
+ restoreTo = function() { // 吸顶变正常时恢复之前的tab
+ if(recordTab) {
+ switchTab(recordTab);
+ } else {
+ switchTab($("a[data-t='web']", tabs), true);
+ logoGroup.removeClass("box-search_logos_show");
+ }
+ },
+ transTo = function() { // 正常变吸顶时切到web的tab
+ if (curTab.attr("data-t") != "web") {
+ recordTab = curTab;
+ switchTab($("a[data-t='web']", tabs));
+ } else {
+ recordTab = null;
+ switchTab($("a[data-t='web']", tabs), true);
+ logoGroup.removeClass("box-search_logos_show");
+ }
+ };
+
+ $window.on("headerFixed.transTo", function() {
+ transTo();
+ });
+ $window.on("headerFixed.restore", function() {
+ restoreTo();
+ });
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/search-box-4ps.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/search-box-4ps.tpl
new file mode 100755
index 000000000..133ad9fd5
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/search-box-4ps.tpl
@@ -0,0 +1,100 @@
+<%* 搜索引擎根据TN号显隐*%>
+<%foreach $body.searchBox.sBoxTag as $value%>
+ <%foreach $value.engine as $engine%>
+ <%if !empty($engine.tn[0].param)%>
+ <%foreach $engine.tn as $tn%>
+ <%if $tn.param == $root.urlparam.tn%>
+ <%$body.searchboxEngine[$engine.id] = 'true'%>
+ <%/if%>
+ <%/foreach%>
+ <%/if%>
+ <%/foreach%>
+<%/foreach%>
+
+<%assign var="sBoxTag" value=$body.searchBox.sBoxTag%>
+<%assign var="hSearchWords" value=$body.searchBox.hotSearchWords%>
+<%assign var="sBtnWords" value=$body.searchBox.searchBtnWords%>
+<%* 搜索框 --- 首屏模块 inline css*%>
+<%style%>
+ <%if $head.dir=='ltr'%>
+ @import url('/widget/search-box-4ps/ltr/ltr_inline.css?__inline');
+ <%else%>
+ @import url('/widget/search-box-4ps/rtl/rtl_inline.css?__inline');
+ <%/if%>
+<%/style%>
+
+<%widget name="common:widget/search-box-4ps/`$head.dir`/`$head.dir`.tpl"%>
+<%if isset($sysInfo.country)%>
+<%widget name="common:widget/search-box-4ps/`$sysInfo.country`/`$sysInfo.country`.tpl"%>
+<%/if%>
+<%script%>
+ require.async(["common:widget/ui/jquery/jquery.js", "common:widget/search-box-4ps/search-box-4ps-async.js"], function ($) {
+ var autoFocusSearch = true;
+ <%if $body.extAppMod%>
+ autoFocusSearch = false; //if app show DO NOT autoFocus
+ <%/if%>
+ <%if !empty($body.searchBox.sugUrl)%>
+ var head = document.getElementsByTagName("head")[0];
+ var requestScript = function(url, onsuccess, onerror, timeout) {
+
+ var script = document.createElement('script');
+ if (onerror) {
+ var tid = setTimeout(function() {
+ script.onload = script.onreadystatechange = script.onerror = null;
+ timeout();
+ }, 5000);
+
+ script.onerror = function() {
+ clearTimeout(tid);
+ onerror();
+ };
+
+ script.onload = script.onreadystatechange = function() {
+ if ( !script.readyState || /loaded|complete/.test( script.readyState ) ) {
+ script.onload = script.onreadystatechange = null;
+ script = undefined;
+ clearTimeout(tid);
+ onsuccess();
+ }
+ }
+ }
+ script.type = 'text/javascript';
+ script.src = url;
+ head.appendChild(script);
+ };
+
+ requestScript("<%$body.searchBox.sugUrl%>", function() {
+ baidu_sug.setMode('baidu');
+ baidu_sug.toggle(false);
+ Gl.searchGroup({
+ type: conf.pageType,
+ autoFocus: autoFocusSearch
+ });
+ UT && UT.send && UT.send({type: "others", modId: "search", position: "success"});
+ }, function() {
+ baidu_sug = false;
+ Gl.searchGroup({
+ type: conf.pageType,
+ autoFocus: autoFocusSearch
+ });
+ UT && UT.send && UT.send({type: "others", modId: "search", position: "error"});
+ }, function() {
+ baidu_sug = false;
+ Gl.searchGroup({
+ type: conf.pageType,
+ autoFocus: autoFocusSearch
+ });
+ UT && UT.send && UT.send({type: "others", modId: "search", position: "timeout"});
+ });
+ <%else%>
+ baidu_sug = false;
+ Gl.searchGroup({type: conf.pageType, autoFocus: autoFocusSearch});
+ <%/if%>
+
+ <%if !empty($body.searchBox.sugMoreUrl)%>
+ setTimeout(function() {
+ window["require"] && require.async("<%$body.searchBox.sugMoreUrl%>");
+ }, 1e3);
+ <%/if%>
+ });
+<%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/th/th.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/th/th.tpl
new file mode 100755
index 000000000..574fecd9e
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/th/th.tpl
@@ -0,0 +1,405 @@
+
+<%if !empty($body.searchBox.tplUrl)%>
+ <%widget name="common:widget/search-box-4ps/`$sysInfo.country`/`$body.searchBox.tplUrl`/`$body.searchBox.tplUrl`.tpl"%>
+<%else%>
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+require.async('common:widget/ui/jquery/jquery.js', function () {
+conf.searchGroup = {
+ conf:{
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/th/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/th/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ }
+ <%if isset($body.searchBox.sort)%>, sort: "<%$body.searchBox.sort%>"<%/if%>
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ <%if !empty($engine.otherSug)%>otherSug:{mod: "<%$engine.otherSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+ sug: {
+ "hao123": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://www.baidu.co.th/r/su",
+ callbackFn: "window.bdsug.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod": "thai",
+ "cb": "window.bdsug.sug"
+ },
+ templ: function(data) {
+ var _data = data['s'] || [],
+ q = data['q'],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_th": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.co.th/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "hp",
+ "hl": "th-TH",
+ "authuser": "0"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_web": {
+ autoCompleteData: false,
+ requestQuery: "command",
+ url: "http://sugg.us.search.yahoo.net/gossip-us-sayt/",
+ callbackFn: "fxsearch",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjsonp"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.co.th/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "th",
+ "client": "img",
+ "ds": "i",
+ "cp": "4"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "hao123_images": {
+ requestQuery: "wd",
+ url: "http://sugimg.hao123.co.th/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod": "image_thai"
+ },
+ templ: function(data) {
+ var _data = data["s"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "ps_video": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://www.baidu.co.th/r/su",
+ callbackFn: "window.bdsug.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod": "video_thai",
+ "cb": "window.bdsug.sug"
+ },
+ templ: function(data) {
+ var _data = data['s'] || [],
+ q = data['q'],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "youtube": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "youtube",
+ "hl": "th",
+ "gl": "us",
+ "gs_nf": "1",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_video": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.co.th/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "video-hp",
+ "hl": "th",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "mthai": {
+ url: null
+ },
+ "4shared": {
+ requestQuery: "search",
+ url: "http://dc413.4shared.com/network/search-suggest.jsp",
+ callbackFn: "ajaxSuggestions.jsonpCallback",
+ callbackDataKey: "suggestions",
+ requestParas: {
+ "format": "jsonp"
+ },
+ customUrl: function(para) {
+ return this.o.url + "?search=" + btoa(this.q) + "&format=jsonp";
+ },
+ templ: function(data) {
+ var _data = data["suggestions"] || [],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "filestube": {
+ requestQuery: "q",
+ url: "http://149.13.65.144:8087",
+ callbackFn: "filestube123",
+ callbackDataKey: "r",
+ charset: "utf-8",
+ requestParas: {
+ "callback": "filestube123",
+ "t": +new Date
+ },
+ customUrl: function(para) {
+ return this.o.url + "/" + encodeURIComponent(this.q) + "?" + para.substr(1);
+ }
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.co.th/maps/suggest",
+ callbackFn: "_xdc_._bgnkibby8",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "2",
+ "hl": "th",
+ "gl": "th",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "ll": "21.902278,101.469727",
+ "spn": "5.706298,39.506836",
+ "auth": "ac0dbe60:A6KQ3ztz8bQ13_rnpShsJPs6jOU",
+ "src": "1",
+ "num": "5",
+ "numps": "5",
+ "callback": "_xdc_._bgnkibby8"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for(; i - ' + detail + '' : "";*/
+
+ ret.push('' + _data[i][0] + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "longdo_map": {
+ requestQuery: "key",
+ url: "http://search2.longdo.com/BWTSearch/HeadSearch",
+ callbackFn: "processJSONSuggest",
+ requestParas: {
+ "ds": "poi,poi2,poi3,s_pg",
+ "json": "1",
+ "num": "20",
+ "anyorder": "1",
+ "count": "19"
+ },
+ customUrl: function(para) {
+ return this.o.url + "?" + para.substr(1) + "&" + this.o.requestQuery + '=' + encodeURIComponent(this.q);
+ },
+ templ: function(data) {
+ var _data = data,
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length;
+
+ for(; i' + _data[i].d + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "longdo_dict": {
+ requestQuery: "key",
+ url: "http://search.longdo.com/BWTSearch/HeadSearch",
+ callbackFn: "processJSONSuggest",
+ requestParas: {
+ "json": "1",
+ "ds": "head",
+ "num": "20",
+ "count": "7"
+ },
+ customUrl: function(para) {
+ return this.o.url + "?" + para.substr(1) + "&" + this.o.requestQuery + '=' + encodeURIComponent(this.q);
+ },
+ templ: function(data) {
+ var _data = data,
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length;
+
+ for(; i' + _data[i].d + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_translate": {
+ url: null
+ },
+ "wiki": {
+ autoCompleteData: false,
+ requestQuery: "search",
+ url: "http://th.wikipedia.org/w/api.php",
+ callbackFn: "wikipedia.th",
+ callbackDataKey: "1",
+ requestParas: {
+ "action": "opensearch",
+ "namespace": "0",
+ "suggest": "",
+ "callback": "wikipedia.th"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "filmes": {
+ requestQuery: "wds",
+ url: "http://th.hao123.com/video/sug",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {},
+ templ: function(data) {
+ var _data = data["s"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ }
+ }
+}
+});
+<%/strip%>
+<%/script%>
+<%/if%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/tw/tw.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/tw/tw.tpl
new file mode 100755
index 000000000..cb6796f0f
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-4ps/tw/tw.tpl
@@ -0,0 +1,335 @@
+
+<%if !empty($body.searchBox.tplUrl)%>
+ <%widget name="common:widget/search-box-4ps/`$sysInfo.country`/`$body.searchBox.tplUrl`/`$body.searchBox.tplUrl`.tpl"%>
+<%else%>
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+require.async('common:widget/ui/jquery/jquery.js', function () {
+conf.searchGroup = {
+ conf:{
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/tw/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/tw/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ }
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+
+ sug: {
+ "google_web": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com.tw/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "hp",
+ "hl": "zh-TW"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_web": {
+ autoCompleteData: false,
+ requestQuery: "command",
+ url: "http://sugg.tw.search.yahoo.net/gossip-tw/",
+ callbackFn: "fxsearch",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjsonp"
+ }
+ },
+ "baidu": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://suggestion.baidu.com/su",
+ callbackFn: "window.bdsug.sug",
+ callbackDataKey: "s",
+ charset:"gbk",
+ requestParas: {
+ "cb": "window.bdsug.sug"
+ }
+ },
+ "google_news": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com.tw/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "serp",
+ "hl": "zh-TW",
+ "gs_nf": "1",
+ "ds": "n"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_news": {
+ autoCompleteData: false,
+ requestQuery: "command",
+ url: "http://sugg.tw.search.yahoo.net/gossip-tw-ura",
+ callbackFn: "fxsearch",
+ callbackDataKey: "1",
+ requestParas: {
+ "output": "fxjsonp",
+ "droprotated": "1",
+ "pubid": "184"
+ }
+ },
+ "baidu_news": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://nssug.baidu.com/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ charset:"gbk",
+ requestParas: {
+ "prod": "news"
+ }
+ },
+ "youtube": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "youtube",
+ "hl": "zh-TW",
+ "gl": "tw",
+ "gs_nf": "1",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_video": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com.tw/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "video-hp",
+ "hl": "zh-TW",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "baidu_video": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://nssug.baidu.com/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ charset:"gbk",
+ requestParas: {
+ "prod": "video"
+ }
+ },
+ "yahoo_images": {
+ autoCompleteData: false,
+ requestQuery: "command",
+ url: "http://sugg.tw.search.yahoo.net/gossip-tw",
+ callbackFn: "fxsearch",
+ callbackDataKey: "1",
+ requestParas: {
+ "output": "fxjsonp",
+ "pubid": "183"
+ }
+ },
+ "google_images": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com.tw/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "zh-TW",
+ "client": "img",
+ "gs_nf": "1",
+ "ds": "i"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "baidu_images": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://nssug.baidu.com/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ charset:"gbk",
+ requestParas: {
+ "prod": "image"
+ }
+ },
+ "facebook": {
+ url: null
+ },
+ "wiki": {
+ autoCompleteData: false,
+ requestQuery: "search",
+ url: "http://zh.wikipedia.org/w/api.php",
+ callbackFn: "wikipedia.zh",
+ callbackDataKey: "1",
+ requestParas: {
+ "action": "opensearch",
+ "namespace": "0",
+ "suggest": "",
+ "callback": "wikipedia.zh"
+ }
+ },
+ "baidu_baike": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://nssug.baidu.com/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ charset:"gbk",
+ requestParas: {
+ "prod": "baike"
+ }
+ },
+ "google_dict": {
+ url: null
+ },
+ "yahoo_dict": {
+ autoCompleteData: false,
+ requestQuery: "command",
+ url: "http://sugg.tw.search.yahoo.net/gossip-tw-pub_sayt",
+ callbackFn: "fxsearch",
+ callbackDataKey: "1",
+ requestParas: {
+ "output": "fxjsonp",
+ "pubid": "560"
+ }
+ },
+ "baidu_dict": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://dictsug.baidu.com/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ charset:"gbk",
+ requestParas: {
+ }
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.com.tw/maps/suggest",
+ callbackFn: "googleMapCallback",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "1",
+ "hl": "zh-TW",
+ "gl": "tw",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "vpsrc": "1",
+ "src": "1",
+ "num": "10",
+ "numps": "3",
+ "callback": "googleMapCallback"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for(; i - ' + detail + '' : "";
+
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_map": {
+ url: null
+ }
+ }
+}
+});
+<%/strip%>
+<%/script%>
+<%/if%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-flat/4ps/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-flat/4ps/ltr/ltr.css
new file mode 100755
index 000000000..b265cc30d
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-flat/4ps/ltr/ltr.css
@@ -0,0 +1,17 @@
+/* for PS */
+body .sg_tri input,
+body .sg_v_tri input {
+ width: 509px !important;
+}
+.sg_btn,
+.sg_v_btn {
+ position: absolute;
+}
+/*fix label*/
+body .box-search_form .radios label {
+ padding-left: 22px;
+}
+.w960 .sg_tri input,
+.w960 .sg_v_tri input {
+ width: 430px !important;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-flat/4ps/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-flat/4ps/rtl/rtl.css
new file mode 100755
index 000000000..b047e0475
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-flat/4ps/rtl/rtl.css
@@ -0,0 +1,18 @@
+/* for PS */
+body .sg_tri input,
+body .sg_v_tri input {
+ width: 482px !important;
+}
+.sg_btn,
+.sg_v_btn {
+ position: absolute;
+}
+
+/*fix label*/
+body .box-search_form .radios label {
+ padding-right: 22px;
+}
+.w960 .sg_tri input,
+.w960 .sg_v_tri input {
+ width: 403px !important;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-flat/flow/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-flat/flow/ltr/ltr.css
new file mode 100755
index 000000000..a0ab9343c
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-flat/flow/ltr/ltr.css
@@ -0,0 +1,20 @@
+.w960 .box-search .box-search_wrap .box-search_form .input input {
+ width: 460px;
+}
+.w960 .l-wrap .box-search {
+ width: 750px;
+ margin-left: 22px;
+}
+/* sug */
+.w960 .box-search .sug-search,
+.w960 .box-search .baidu_sug,
+.w960 .box-search .baidu_video_sug {
+ width: 469px;
+}
+/* hotSearchWords */
+.w960 .box-search_hsrch {
+ width: 562px;
+}
+.w1120 .box-search_hsrch {
+ width: 640px;
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-flat/flow/ltr/ltr.flow.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-flat/flow/ltr/ltr.flow.css
new file mode 100755
index 000000000..e69de29bb
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-flat/flow/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-flat/flow/rtl/rtl.css
new file mode 100755
index 000000000..970a6adcc
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-flat/flow/rtl/rtl.css
@@ -0,0 +1,20 @@
+.w960 .box-search .box-search_wrap .box-search_form .input input {
+ width: 433px;
+}
+.w960 .l-wrap .box-search {
+ width: 740px;
+ margin-right: 22px;
+}
+/* sug */
+.w960 .box-search .sug-search,
+.w960 .box-search .baidu_sug,
+.w960 .box-search .baidu_video_sug {
+ width: 469px;
+}
+/* hotSearchWords */
+.w960 .box-search_hsrch {
+ width: 562px;
+}
+.w1120 .box-search_hsrch {
+ width: 640px;
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-flat/flow/rtl/rtl.flow.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-flat/flow/rtl/rtl.flow.css
new file mode 100755
index 000000000..e69de29bb
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-flat/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-flat/ltr/ltr.css
new file mode 100755
index 000000000..9cc75261f
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-flat/ltr/ltr.css
@@ -0,0 +1,115 @@
+.l-wrap .box-search_hsrch {
+ margin-left: 166px;
+}
+.l-wrap .hsrch_word a:hover{
+ color: #1c81e5;
+}
+body .l-wrap .box-search {
+ width: 834px;
+ margin-left: 103px;
+ margin-top: 15px;
+}
+.box-search .box-search_inner {
+ height: 68px;
+}
+.box-search .box-search_logo_wrap {
+ margin-right: 0;
+}
+.box-search .box-search_wrap .box-search_form .input {
+ border-right-width: 0;
+ margin-right: 0;
+ margin-left: 6px;
+}
+body .box-search .box-search_tab {
+ margin-left: 168px;
+}
+.box-search .box-search_wrap .box-search_form .input input {
+ height: 26px;
+ width: 539px;
+}
+body .btn-search_c {
+ height: 35px;
+}
+body .btn-search_c,
+body .btn-search {
+ line-height: 35px;
+ width: 90px;
+}
+body .btn-search {
+ border-width: 0;
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+ background-color: #2085E9;
+ background-image: linear-gradient(#258BEF, #248AEE, #2287EC, #2085e9, #1e83e7, #1C81E5);
+}
+.box-search .box-search_logo dt,
+.box-search .box-search_logo dd {
+ padding: 10px 12px 10px 14px;
+}
+/*.box-search .box-search_logos_show dt,
+.box-search .box-search_logos_show dd {
+ padding: 10px 11px 10px 13px;
+}
+.box-search .box-search_logos_show dt {
+ padding-top: 9px;
+}*/
+.box-search .box-search_logo_disabled dt,
+.box-search .box-search_logo_disabled dd {
+ padding: 10px 12px 10px 14px !important;
+}
+.box-search .box-search_logo a {
+ padding-right: 15px;
+}
+.box-search .box-search_logo_wrap {
+ width: 161px;
+ height: 65px;
+ margin-top: -13px;
+}
+/*.box-search .box-search_form .box-search_focus {
+ border-color: #4CA6FF;
+}*/
+
+/* search tab */
+.box-search .box-search_tab a:hover,
+.box-search .box-search_tab a.cur {
+ color: #1C81E5;
+}
+
+/* .box-search .box-search_tab a:hover + s {
+ visibility: hidden;
+}
+*/
+.box-search .box-search_logos_show {
+ border: 1px solid #E5E6E7;
+}
+.box-search .box-search_logo_disabled {
+ border: 0 !important;
+}
+.box-search .box-search_tab a:hover,
+.box-search dt.box-search_logo_hover,
+.box-search .box-search_logos_show .box-search_logo_hover,
+body .sug-search .sug-select {
+ background-color: #f2f2f2;
+ background-color: rgba(0, 0, 0, 0.05);
+}
+.box-search .box-search_logo_disabled .box-search_logo_hover {
+ background-color: transparent !important;
+}
+
+/* sug */
+body .box-search .sug-search,
+body .box-search .baidu_sug,
+body .box-search .baidu_video_sug {
+ top: 34px;
+ width: 548px;
+}
+body .box-search .baidu_sug,
+body .box-search .baidu_video_sug {
+ top: 0;
+ margin-top: 34px;
+ border-top: 0;
+}
+body .box-search .sug-search,
+body .box-search_logo {
+ overflow: visible;
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-flat/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-flat/ltr/ltr.more.css
new file mode 100755
index 000000000..553839de7
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-flat/ltr/ltr.more.css
@@ -0,0 +1,42 @@
+/*from inline css*/
+.box-search .box-search_logos_show dt,
+.box-search .box-search_logos_show dd {
+ padding: 10px 11px 10px 13px;
+}
+.box-search .box-search_logos_show dt {
+ padding-top: 9px;
+}
+.box-search .box-search_form .box-search_focus {
+ border-color: #4CA6FF;
+}
+
+
+
+body .btn-search_hover {
+ background-color: #1E7DDC;
+ background-image: linear-gradient(#258bef, #2488eb, #2182e3, #1e7cda, #1b77d2, #1973cd);
+}
+body .btn-search_click {
+ background-color: #2080df;
+ background-image: linear-gradient(#1872cc, #1a75d0, #1d7bd8, #2081e1, #2386e9, #258aee);
+ box-shadow: none;
+}
+
+/* dark skin */
+.skin-type-dark .box-search .box-search_tab a:hover,
+.skin-type-dark .box-search dt.box-search_logo_hover,
+.skin-type-dark .box-search .box-search_logos_show .box-search_logo_hover {
+ background-color: #0D0D0D;
+ background-color: rgba(0, 0, 0, 0.3);
+}
+.skin-type-dark .box-search .box-search_tab a:hover,
+.skin-type-dark .box-search .box-search_tab a.cur {
+ color: #ffffff;
+}
+.skin-type-dark .box-search .box-search_logos_show {
+ border: 1px solid #0D0D0D;
+ border-color: rgba(0, 0, 0, 0.3);
+}
+.skin-type-dark .box-search_logo_disabled .box-search_logo_hover {
+ background-color: transparent !important;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-flat/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-flat/rtl/rtl.css
new file mode 100755
index 000000000..aeab3ba76
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-flat/rtl/rtl.css
@@ -0,0 +1,120 @@
+.l-wrap .box-search_hsrch {
+ margin-right: 171px;
+}
+.l-wrap .hsrch_word a:hover{
+ color: #1c81e5;
+}
+body .l-wrap .box-search {
+ width: 834px;
+ margin-right: 98px;
+ margin-top: 15px;
+}
+
+/* .box-search .box-search_inner {
+ height: 58px;
+}
+*/
+body .box-search_logo_wrap {
+ margin-top: -14px;
+}
+.box-search .box-search_wrap .box-search_form .input {
+ border-left-width: 0;
+ margin-left: 0;
+ margin-right: 6px;
+}
+body .box-search .box-search_tab {
+ margin-right: 168px;
+}
+.box-search .box-search_wrap .box-search_form .input input {
+ height: 26px;
+ width: 512px;
+}
+body .btn-search_c {
+ height: 35px;
+}
+body .btn-search_c,
+body .btn-search {
+ line-height: 35px;
+ width: 90px;
+}
+body .btn-search {
+ border-width: 0;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ background-color: #2085E9;
+ background-image: linear-gradient(#258BEF, #248AEE, #2287EC, #2085e9, #1e83e7, #1C81E5);
+}
+.box-search .box-search_logo dt,
+.box-search .box-search_logo dd {
+ padding: 10px 14px 10px 12px;
+}
+/*.box-search .box-search_logos_show dt,
+.box-search .box-search_logos_show dd {
+ padding: 10px 13px 10px 11px;
+}
+.box-search .box-search_logos_show dt {
+ padding-top: 9px;
+}*/
+.box-search .box-search_logo_disabled dt,
+.box-search .box-search_logo_disabled dd {
+ padding: 10px 14px 10px 12px !important;
+}
+.box-search .box-search_logo a {
+ padding-left: 15px;
+}
+.box-search .box-search_logo_wrap {
+ width: 161px;
+ height: 65px;
+ margin-top: -13px;
+}
+/*.box-search .box-search_form .box-search_focus {
+ border-color: #4CA6FF;
+}*/
+
+/* search tab */
+.box-search .box-search_tab a:hover,
+.box-search .box-search_tab a.cur {
+ color: #1C81E5;
+}
+
+/* .box-search .box-search_tab a:hover + s {
+ visibility: hidden;
+}
+*/
+.box-search .box-search_logos_show {
+ border: 1px solid #E5E6E7;
+}
+.box-search .box-search_logo_disabled {
+ border: 0 !important;
+}
+.box-search .box-search_tab a:hover,
+.box-search dt.box-search_logo_hover,
+.box-search .box-search_logos_show .box-search_logo_hover,
+body .sug-search .sug-select {
+ background-color: #f2f2f2;
+ background-color: rgba(0, 0, 0, 0.05);
+}
+.box-search .box-search_logo_disabled .box-search_logo_hover {
+ background-color: transparent !important;
+}
+
+/* sug */
+body .box-search .sug-search,
+body .box-search .baidu_sug,
+body .box-search .baidu_video_sug {
+ top: 34px;
+ width: 548px;
+}
+body .box-search .baidu_sug,
+body .box-search .baidu_video_sug {
+ top: 0;
+ margin-top: 34px;
+ border-top: 0;
+}
+body .box-search .sug-search,
+body .box-search_logo {
+ overflow: visible;
+}
+body .box-search .sug-search {
+ left: 0;
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-flat/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-flat/rtl/rtl.more.css
new file mode 100755
index 000000000..78bedeccd
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-flat/rtl/rtl.more.css
@@ -0,0 +1,42 @@
+/*from inline css*/
+.box-search .box-search_logos_show dt,
+.box-search .box-search_logos_show dd {
+ padding: 10px 13px 10px 11px;
+}
+.box-search .box-search_logos_show dt {
+ padding-top: 9px;
+}
+.box-search .box-search_form .box-search_focus {
+ border-color: #4CA6FF;
+}
+
+
+
+body .btn-search_hover {
+ background-color: #1E7DDC;
+ background-image: linear-gradient(#258bef, #2488eb, #2182e3, #1e7cda, #1b77d2, #1973cd);
+}
+body .btn-search_click {
+ background-color: #2080df;
+ background-image: linear-gradient(#1872cc, #1a75d0, #1d7bd8, #2081e1, #2386e9, #258aee);
+ box-shadow: none;
+}
+
+/* dark skin */
+.skin-type-dark .box-search .box-search_tab a:hover,
+.skin-type-dark .box-search dt.box-search_logo_hover,
+.skin-type-dark .box-search .box-search_logos_show .box-search_logo_hover {
+ background-color: #0D0D0D;
+ background-color: rgba(0, 0, 0, 0.3);
+}
+.skin-type-dark .box-search .box-search_tab a:hover,
+.skin-type-dark .box-search .box-search_tab a.cur {
+ color: #ffffff;
+}
+.skin-type-dark .box-search .box-search_logos_show {
+ border: 1px solid #0D0D0D;
+ border-color: rgba(0, 0, 0, 0.3);
+}
+.skin-type-dark .box-search_logo_disabled .box-search_logo_hover {
+ background-color: transparent !important;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-flat/search-box-flat.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-flat/search-box-flat.tpl
new file mode 100755
index 000000000..2c8a36276
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-flat/search-box-flat.tpl
@@ -0,0 +1,42 @@
+
+<%if $head.dir=='ltr'%>
+ <%style%>
+ @import url('/widget/search-box-flat/ltr/ltr.css?__inline');
+ <%/style%>
+ <%require name="common:widget/search-box-flat/ltr/ltr.more.css"%>
+
+ <%if !empty($head.flowLayout) %>
+ <%style%>
+ @import url('/widget/search-box-flat/flow/ltr/ltr.css?__inline');
+ <%/style%>
+ <%require name="common:widget/search-box-flat/flow/ltr/ltr.flow.css"%>
+ <%/if%>
+
+ <%if $body.searchBox.widget == "search-box-4ps" %>
+ <%style%>
+ @import url('/widget/search-box-flat/4ps/ltr/ltr.css?__inline');
+ <%/style%>
+ <%/if%>
+<%else%>
+ <%style%>
+ @import url('/widget/search-box-flat/rtl/rtl.css?__inline');
+ <%/style%>
+ <%require name="common:widget/search-box-flat/rtl/rtl.more.css"%>
+
+ <%if !empty($head.flowLayout) %>
+ <%style%>
+ @import url('/widget/search-box-flat/flow/rtl/rtl.css?__inline');
+ <%/style%>
+ <%require name="common:widget/search-box-flat/flow/rtl/rtl.flow.css"%>
+ <%/if%>
+
+ <%if $body.searchBox.widget == "search-box-4ps" %>
+ <%style%>
+ @import url('/widget/search-box-flat/4ps/rtl/rtl.css?__inline');
+ <%/style%>
+ <%/if%>
+<%/if%>
+<%*阿泰葡不使用4ps模版但使用ps搜索时的样式*%>
+<%if $body.searchBox.widget != "search-box-4ps" && !empty($body.searchBox.sugUrl)%>
+ <%widget name="common:widget/search-box-4ps-noradio/search-box-4ps-noradio.tpl"%>
+<%/if%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/ar/ar.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/ar/ar.tpl
new file mode 100755
index 000000000..fe7486ac1
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/ar/ar.tpl
@@ -0,0 +1,313 @@
+
+<%if !empty($body.searchBox.tplUrl)%>
+ <%widget name="common:widget/search-box-4ps/`$sysInfo.country`/`$body.searchBox.tplUrl`/`$body.searchBox.tplUrl`.tpl"%>
+<%else%>
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+require.async('common:widget/ui/jquery/jquery.js', function () {
+conf.searchGroup = {
+ conf: {
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/ar/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/ar/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ }
+ <%if isset($body.searchBox.sort)%>, sort: "<%$body.searchBox.sort%>"<%/if%>
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ <%if !empty($engine.otherSug)%>otherSug:{mod: "<%$engine.otherSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+ sug: {
+ "hao123": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: null,
+ callbackFn: "window.bdsug.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod": "eg",
+ "cb": "window.bdsug.sug",
+ "haobd": jQuery.cookie("BAIDUID")
+ },
+ templ: false
+ },
+ "google": {
+ requestQuery: "q",
+ url: null,
+ callbackFn: "window.google.ac.h",
+ callbackDataNum: 1,
+ requestParas: {
+ "client": "hp",
+ "hl": "ar",
+ "authuser": "0"
+ },
+ templ: false
+ },
+ "yahoo": {
+ requestQuery: "command",
+ url: "http://sugg.us.search.yahoo.net/gossip-us-ura",
+ callbackFn: "YUI.Env.DataSource.callbacks.yui_3_3_0_1_1312871021408973",
+ callbackDataKey: "r",
+ requestParas: {
+ "output": "yjsonp",
+ "callback": "YUI.Env.DataSource.callbacks.yui_3_3_0_1_1312871021408973"
+ },
+ templ: function(data) {
+ var _data = data["r"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "ps_video": {
+ requestQuery: "wd",
+ url: null,
+ callbackFn: "ps_video",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod" : "video_eg",
+ "sid": "",
+ "cb":"ps_video",
+ },
+ templ: false
+ },
+ "youtube": {
+ requestQuery: "q",
+ url: "http://suggestqueries.google.com/complete/search",
+ callbackFn: "window.yt.www.suggest.handleResponse",
+ callbackDataNum: 1,
+ requestParas: {
+ "hl": "ar",
+ "ds": "yt",
+ "client": "youtube",
+ "hjson": "t",
+ "jsonp": "window.yt.www.suggest.handleResponse",
+ "cp": "2"
+ },
+
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_video": {
+ requestQuery: "command",
+ url: "http://gossip-ss.us.search.yahoo.com/gossip-us_ss/",
+ callbackFn: "fxsearch",
+ callbackDataNum: 1,
+ requestParas: {
+ "nresults": 8,
+ "output": "fxjsonp"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.com.eg/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "ar",
+ "client": "img",
+ "sugexp": "gsihc"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "hao123_images": {
+ requestQuery: "wd",
+ url: "http://10.247.1.38:8333/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod" : "image_eg"
+ },
+ templ: function(data) {
+ var _data = data["s"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_images": {
+ requestQuery: "command",
+ url: "http://gossip-ss.us.search.yahoo.com/gossip-us_ss",
+ callbackFn: "YUI.Env.DataSource.callbacks.yui_3_5_1_1_1354169017899_293",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjsonp",
+ "nresults": 10,
+ "callback": "{callback}",
+ "callback": "YUI.Env.DataSource.callbacks.yui_3_5_1_1_1354169017899_293",
+ "pubid": 103,
+ "queryfirst": 1
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.com.eg/maps/suggest",
+ callbackFn: "_xdc_._bgnkibby8",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "2",
+ "hl": "ar",
+ "gl": "ar",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "ll": "21.902278,101.469727",
+ "spn": "5.706298,39.506836",
+ "auth": "ac0dbe60:A6KQ3ztz8bQ13_rnpShsJPs6jOU",
+ "src": "1",
+ "num": "5",
+ "numps": "5",
+ "callback": "_xdc_._bgnkibby8"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for (; i < len; i++) {
+ try {
+ detail = _data[i][9][0][0] || _data[i][9][0] || _data[i][9] || "";
+ } catch (e) {
+ detail = ""
+ }
+
+ /*detail = detail ? ' - ' + detail + ' ' : "";*/
+
+ ret.push('' + _data[i][0] + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "wikimapia": {
+ url: null
+ },
+ "wiki_ar": {
+ requestQuery: "search",
+ url: "http://ar.wikipedia.org/w/api.php",
+ callbackFn: "wikipedia.ar",
+ callbackDataNum: 1,
+ requestParas: {
+ "action": "opensearch",
+ "namespace": "0",
+ "suggest": "",
+ "callback": "wikipedia.ar"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_translate": {
+ url: null
+ },
+ "filmes": {
+ requestQuery: "wds",
+ url: "http://ar.hao123.com/movie/sug",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ },
+ templ: function(data) {
+ var _data = data["s"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ }
+ }
+}
+});
+<%/strip%>
+<%/script%>
+<%/if%>
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/bg.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/bg.png
new file mode 100755
index 000000000..4e04de967
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/bg.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/br/br.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/br/br.tpl
new file mode 100755
index 000000000..c05874121
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/br/br.tpl
@@ -0,0 +1,321 @@
+
+<%if !empty($body.searchBox.tplUrl)%>
+ <%widget name="common:widget/search-box-4ps/`$sysInfo.country`/`$body.searchBox.tplUrl`/`$body.searchBox.tplUrl`.tpl"%>
+<%else%>
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+require.async('common:widget/ui/jquery/jquery.js', function () {
+conf.searchGroup = {
+ conf:{
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/br/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/br/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ }
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ <%if !empty($engine.otherSug)%>otherSug:{mod: "<%$engine.otherSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>",
+ placeholder: "<%$engine.placeholder%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+ sug: {
+ "hao123": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: null,
+ callbackFn: "window.bdsug.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod": "br",
+ "cb": "window.bdsug.sug",
+ "haobd": jQuery.cookie("BAIDUID")
+ },
+ templ: false
+ },
+ "google_br": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: null,
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "pt-BR",
+ "sugexp": "lemsnc",
+ "xhr": "f"
+ },
+ templ: false
+ },
+ "yahoo_web": {
+ autoCompleteData: false,
+ requestQuery: "command",
+ url: "http://sugg.br.search.yahoo.net/gossip-br-sayt/",
+ callbackFn: "fxsearch",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjsonp"
+ }
+ },
+ "4shared": {
+ requestQuery: "search",
+ url: "http://dc413.4shared.com/network/search-suggest.jsp",
+ callbackFn: "ajaxSuggestions.jsonpCallback",
+ callbackDataKey: "suggestions",
+ requestParas: {
+ "format": "jsonp"
+ },
+ customUrl: function(para) {
+ return this.o.url + "?search=" + btoa(this.q) + "&format=jsonp";
+ }
+ },
+ "ps_video": {
+ requestQuery: "wd",
+ url: null,
+ callbackFn: "ps_video",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod" : "video_br",
+ "sid": "",
+ "cb":"ps_video",
+ },
+ templ: false
+ },
+ "youtube": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "youtube",
+ "hl": "pt",
+ "gl": "br",
+ "gs_nf": "1",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_video": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com.br/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "video-hp",
+ "hl": "pt-BR",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "kboing": {
+ url: null
+ },
+ "google_dict": {
+ url: null
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.com.br/maps/suggest",
+ callbackFn: "_xdc_._bgnkibby8",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "100",
+ "hl": "pt-BR",
+ "gl": "br",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "ll": "-14.239424,-53.186502",
+ "spn": "24.779743,86.572266",
+ "auth": "ac0dbe60:A6KQ3ztz8bQ13_rnpShsJPs6jOU",
+ "src": "1",
+ "num": "10",
+ "callback": "_xdc_._bgnkibby8"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for(; i - ' + detail + '' : "";
+
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.com.br/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "img",
+ "ds": "i",
+ "hl": "pt-BR"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "hao123_images": {
+ requestQuery: "wd",
+ url: "http://sugimg.hao123.com.br/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod" : "image_brazil"
+ },
+ templ: function(data) {
+ var _data = data["s"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "postbar": {
+ url: null
+ },
+ "filmes": {
+ requestQuery: "wds",
+ url: "http://br.hao123.com/movie/sug",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ }
+ },
+ "americanas": {
+ requestQuery: "q",
+ url: "http://busca.americanas.com.br/autocomplete/search.php",
+ callbackFn: "window.americanas",
+ callbackDataKey: "sugestoes",
+ requestParas: {
+ "prod" : "image_brazil",
+ "type": "1",
+ "numsugestoes": "12",
+ "numprods": "0",
+ "callback":"window.americanas"
+ },
+ templ: function(data, q) {
+ var _data = data["sugestoes"] || [],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i].consulta.replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "walmart": {
+ url: null
+ },
+ "netshoes": {
+ url: null
+ },
+ "buscape": {
+ url: null
+ },
+ "zoom": {
+ requestQuery: "q",
+ url: "http://s.zst.com.br/static/autocomplete-index-r/.js",
+ callbackFn: "zoomAutoCompleteBlackBoard.notify",
+ callbackDataKey: "completions",
+ customUrl: function(para) {
+ var str = this.q.split("").join("/") + ".js?_=" + +new Date;
+ return this.o.url.replace(".js", str);
+ },
+ templ: function(data) {
+ var _data = data["completions"] || [],
+ ret = [],
+ i = 0,
+ q = data["key"],
+ tmp = "",
+ len = _data.length;
+ var isStr = function(value){
+ return typeof value === 'string';
+ };
+ for(; i' + tmp.replace(q, '' + q + ' ') + '');
+ }
+ return '' + ret.join("") + ' ';
+ }
+ }
+ }
+}
+});
+<%/strip%>
+<%/script%>
+<%/if%>
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/img/bg-search-btn-click.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/img/bg-search-btn-click.png
new file mode 100755
index 000000000..7828b5d56
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/img/bg-search-btn-click.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/img/bg-search-btn-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/img/bg-search-btn-hover.png
new file mode 100755
index 000000000..d11e540ed
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/img/bg-search-btn-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/img/bg-search-btn-side-click.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/img/bg-search-btn-side-click.png
new file mode 100755
index 000000000..b66706676
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/img/bg-search-btn-side-click.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/img/bg-search-btn-side-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/img/bg-search-btn-side-hover.png
new file mode 100755
index 000000000..693ac8896
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/img/bg-search-btn-side-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/img/bg-search-btn-side.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/img/bg-search-btn-side.png
new file mode 100755
index 000000000..d2b3c4f93
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/img/bg-search-btn-side.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/img/bg-search-btn.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/img/bg-search-btn.png
new file mode 100755
index 000000000..e0d576570
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/img/bg-search-btn.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/img/i-search-click.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/img/i-search-click.png
new file mode 100755
index 000000000..31d004952
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/img/i-search-click.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/img/i-search-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/img/i-search-hover.png
new file mode 100755
index 000000000..a01e36716
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/img/i-search-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/img/i-search.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/img/i-search.png
new file mode 100755
index 000000000..b3a7a12cd
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/img/i-search.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/ltr/ltr.more.css
new file mode 100755
index 000000000..726cceec8
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/ltr/ltr.more.css
@@ -0,0 +1,22 @@
+
+/*sug has url*/
+.sug-url {
+ height:45px;
+ border-bottom:1px solid #e1e1e1;
+}
+.sug-url a {
+ display: block;
+ text-decoration: none;
+ color: #0000EE;
+}
+.sug-url .sug-hl {
+ height: 25px;
+ text-decoration: underline;
+ font-weight:bold;
+ font-size:14px;
+}
+.sug-url .sug-frm {
+ line-height: 16px;
+ font-size: 12px;
+ color: green;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/ltr/ltr.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/ltr/ltr.tpl
new file mode 100755
index 000000000..1b0529e31
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/ltr/ltr.tpl
@@ -0,0 +1,80 @@
+
+
+
+ <%foreach $sBoxTag as $value%>
+ <%if $value.catagory != 'more'%>
+ <%if empty($body.searchboxTab[$value.catagory])%>
+ <%if $value@first%>
+ <%$value.title%>
+ <%else%>
+
+ <%$value.title%>
+ <%/if%>
+ <%/if%>
+ <%else%>
+
+
+ <%$value.title%>
+
+
+ <%/if%>
+ <%/foreach%>
+
+
+
+
+ <%$sBoxCount = 0%>
+ <%foreach $sBoxTag[0].engine as $value%><%if !empty($body.searchboxEngine[$value.id])%><%$sBoxCount = $sBoxCount + 1%><%/if%><%/foreach%>
+
+
+ <%foreach $sBoxTag[0].engine as $value%>
+ <%if empty($body.searchboxEngine[$value.id])%>
+
+ <%break%>
+ <%/if%><%/foreach%>
+
+
+
+
+
+
+
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/ltr/ltr_inline.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/ltr/ltr_inline.css
new file mode 100755
index 000000000..ab6a96d20
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/ltr/ltr_inline.css
@@ -0,0 +1,469 @@
+/*============box_search=============*/
+/*box-search_logo*/
+/*.box-search_logo_wrap {
+ position: relative;
+ width: 155px;
+ height: 67px;
+ margin:-16px 5px 0 0;
+ float: left;
+ z-index: 6;
+}
+.box-search_logo {
+ position: absolute;
+ overflow:hidden;
+ vertical-align:bottom;
+ text-align:center;
+}
+.box-search_logo a {
+ padding-right: 18px;
+ display: block;
+}
+.box-search_logo a:focus {
+ outline: none;
+}
+.box-search_logo dt , .box-search_logo dd {
+ padding: 10px 8px 10px 7px;
+}
+.box-search_logo dt a {
+ background: url(/widget/img/bg.png) right -61px no-repeat;
+}
+dt.box-search_logo_hover {
+ background-color: #e3e4e6;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -o-border-radius: 2px;
+ border-radius: 2px;
+}
+.box-search_logos_show .box-search_logo_hover {
+ background-color: #f5f7f7;
+ -moz-border-radius: 0px;
+ -webkit-border-radius: 0px;
+ -o-border-radius: 0px;
+ border-radius: 0px;
+}
+.box-search_logos_show {
+ background-color: #fff;
+ border: 1px solid #e3e4e6
+}
+.box-search_logos_show dt a {
+ background-position: right -390px;
+}
+.box-search_logo_hide {
+ display: none;
+}
+.box-search_logo img {
+ width:120px;
+ height:45px;
+}
+.box-search_logo_disabled {
+ background: none;
+ border: 1px solid #EDF0EF;
+}
+.box-search_logo_disabled dt.box-search_logo_hover, .box-search_logo_disabled dt a {
+ background: none;
+ cursor: default;
+}*/
+
+/*box-search_form*/
+.box-search .box-search_form .radios {
+ padding-top:4px;
+ width:480px;/*for IE9*/
+ padding: 6px 0 0 10px;
+}
+.box-search .box-search_form .radios label {
+ display:block;
+ padding-left:15px;
+ text-indent:-15px;
+ float:left;
+ margin-right:18px;
+ color:#666;
+ font-size: 13px;
+ white-space: nowrap;
+}
+.box-search .box-search_form .radios input {
+ vertical-align:top;
+ width:13px;
+ height:13px;
+ margin-right:5px;
+ vertical-align:bottom;
+ position:relative;
+ top:-3px;
+ left: 1px;
+ overflow:hidden;
+}
+
+/*fi chrome radio white background box bug*/
+/*chrome 22-28*/
+@media \\0 screen {
+ body .box-search_form .radios label span {
+ display: inline-block;
+ text-indent: 0;
+ border-radius: 100px;
+ margin-right: 5px;
+ width: 14px;
+ height: 14px;
+ overflow: hidden;
+ vertical-align: -3px;
+ }
+ body .box-search_form .radios input {
+ margin-right: 0;
+ vertical-align: top;
+ position: static;
+ }
+}
+/*chrome 29+*/
+@media screen and (-webkit-min-device-pixel-ratio:0) {
+ body .box-search_form .radios label span {
+ display: inline-block;
+ text-indent: 0;
+ border-radius: 100px;
+ margin-right: 5px;
+ width: 14px;
+ height: 14px;
+ overflow: hidden;
+ vertical-align: -3px;
+ }
+ body .box-search_form .radios input {
+ margin-right: 0;
+ vertical-align: top;
+ position: static;
+ }
+}
+
+/*============box_search=============*/
+.box-search {
+ margin: 0;
+ padding-left: 20px;
+ width: 700px;
+}
+.box-search .box-search_keyboard {
+ padding: 1px;
+}
+
+/*box-search_tab*/
+.box-search .box-search_tab {
+ white-space: nowrap;
+ position: relative;
+ z-index: 8;
+ clear: both;
+ margin: 0;
+}
+.box-search .box-search_tab a {
+ /*font-size: 12px;*/
+ float:left;
+ padding: 4px 12px 3px;
+ margin-left: -1px;
+ text-decoration: none;
+ letter-spacing: normal;
+ position: relative;
+ z-index: 1;
+}
+.box-search .box-search_tab a:hover {
+ text-decoration: none;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -o-border-radius: 2px;
+ border-radius: 2px;
+ color: #1C81E5;
+ background-color: #f2f2f2;
+ background-color: rgba(0, 0, 0, 0.05);
+}
+.box-search .box-search_tab a:focus {
+ outline:none;
+} /*clear FF's focusborder*/
+.box-search .box-search_tab a.cur {
+ color: #1C81E5;
+ cursor:default;
+ text-decoration: none;
+ font-weight: bold;
+}
+.box-search .box-search_sep {
+ display: block;
+ float: left;
+ height: 6px;
+ line-height: 6px;
+ margin-top: 8px;
+ border-left: 1px solid #b3b3b3;
+ position: relative;
+ z-index: 0;
+ margin-left: -1px;
+}
+/*box-search_wrap*/
+.box-search .box-search_inner {
+ height:68px;
+}
+/*box-search_form*/
+.box-search .box-search_form {
+ padding:3px 0px 5px 0px;
+}
+.box-search .box-search_form .input {
+ position: relative;
+ z-index:101;
+ border: 3px solid #2186eb;
+ border-right-width: 0;
+ margin: 0 0 0 6px;
+}
+
+/*box-search_logo*/
+.box-search .box-search_logo_wrap {
+ position: relative;
+ width: 122px;
+ height: 40px;
+ float: left;
+ z-index: 6;
+ margin: 0;
+ border-right: 1px solid #e6e6e6;
+}
+.box-search .box-search_logo {
+ position: absolute;
+ overflow:hidden;
+ vertical-align:bottom;
+ text-align:center;
+}
+.box-search .box-search_logo dt , .box-search_logo dd {
+ padding: 4px 10px 4px 8px;
+ cursor: pointer;
+}
+.box-search .box-search_logo dt {
+ border: none;
+ border-bottom: 1px solid #2186eb;
+ border-right: 1px solid #e6e6e6;
+}
+.box-search .box-search_logo dd {
+ border: 1px solid #e3e4e6;
+ border-top: 0;
+}
+.box-search .box-search_logo a {
+ padding-right: 21px;
+ display: block;
+}
+.box-search .box-search_logo a:focus {
+ outline: none;
+}
+.box-search .box-search_logo dt a {
+ background: url(../img/more_trigger.png?__sprite) no-repeat right center;
+}
+.box-search dt.box-search_logo_hover {
+ background-color: #e3e4e6;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -o-border-radius: 2px;
+ border-radius: 2px;
+}
+
+.box-search .box-search_logos_show {
+ background-color: #fff;
+ border:none;
+}
+.box-search .box-search_logos_show .box-search_logo_hover {
+ background-color: #f5f7f7;
+ -moz-border-radius: 0px;
+ -webkit-border-radius: 0px;
+ -o-border-radius: 0px;
+ border-radius: 0px;
+}
+.box-search .box-search_logos_show dt a {
+ background: url(../img/more_trigger-hover.png?__sprite) no-repeat right center;
+}
+.box-search .box-search_logos_show dd{
+ width: 103px;
+}
+.box-search .box-search_logo_hide {
+ display: none;
+}
+.box-search .box-search_logo img {
+ width: 83px;
+ height: 32px;
+}
+.box-search .box-search_logo_disabled {
+ background: none;
+ border: none;
+}
+.box-search .box-search_logo_disabled dt.box-search_logo_hover, .box-search_logo_disabled dt a {
+ background: none;
+ cursor: default;
+}
+.box-search .box-search_logo_disabled .box-search_logo_hover {
+ background-color: transparent!important;
+}
+.box-search .box-search_form .input input {
+ border:none;
+ background:#fff;
+ width:542px!important;
+ float:left;
+ overflow:hidden;
+ height:32px;
+ font-size: 14px;
+ line-height:32px\9;
+ padding:4px 0 4px 10px;
+ margin-right: 30px;
+}
+.box-search .box-search_form input, .box-search_form button:focus {
+ outline:none;
+}
+.box-search .box-search_form .input label {
+ position: absolute;
+ left: 10px;
+ top: 6px;
+ font-size: 14px;
+ color: #D7D8D9;
+ white-space: nowrap;
+}
+
+/*btn-search*/
+.box-search .btn-search {
+ white-space:nowrap;
+ line-height:46px;
+ overflow: hidden;
+ _float: left;
+ *margin:0;/*fix non-IE'problem because of vertical-align*/
+ /*background:url(../img/bg-search-btn-hover.png?__sprite) repeat-x;*/
+ /*--css3--*/
+ width: 90px;
+ border-radius: 2px;
+ height: 46px;
+ border-width: 0;
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+ background-color: #2085E9;
+ background-image: -webkit-linear-gradient(#258BEF, #248AEE, #2287EC, #2085e9, #1e83e7, #1C81E5);
+ background-image: -moz-linear-gradient(#258BEF, #248AEE, #2287EC, #2085e9, #1e83e7, #1C81E5);
+ background-image: -o-linear-gradient(#258BEF, #248AEE, #2287EC, #2085e9, #1e83e7, #1C81E5);
+ background-image: linear-gradient(#258BEF, #248AEE, #2287EC, #2085e9, #1e83e7, #1C81E5);
+}
+.box-search .btn-search_l, .btn-search_r {
+ display: none !important;
+}
+.box-search .btn-search_c {
+ /*background:url(../img/bg-search-btn.png?__sprite) repeat-x;*/
+ vertical-align:top;
+ border:none;
+ color:#fff;
+ height:27px;
+ text-align:center;
+ width:70px;
+ font-weight: bold;
+ font-size: 15px;
+ cursor: pointer;
+ float: left;
+ background: none;
+ height: 46px;
+ line-height: 46px;
+ width: 90px;
+}
+.box-search .btn-search_ico {
+ display: block;
+ margin: 0 auto;
+ width: 17px;
+ height: 17px;
+ background: url(../img/i-search.png?__sprite) no-repeat;
+ line-height: 27px;
+}
+.box-search .btn-search_hover {
+ background-color: #1E7DDC;
+ background-image: -webkit-linear-gradient(#258bef, #2488eb, #2182e3, #1e7cda, #1b77d2, #1973cd);
+ background-image: -moz-linear-gradient(#258bef, #2488eb, #2182e3, #1e7cda, #1b77d2, #1973cd);
+ background-image: -o-linear-gradient(#258bef, #2488eb, #2182e3, #1e7cda, #1b77d2, #1973cd);
+ background-image: linear-gradient(#258bef, #2488eb, #2182e3, #1e7cda, #1b77d2, #1973cd);
+}
+.box-search .btn-search_click {
+ background-color: #2080df;
+ background-image: -webkit-linear-gradient(#1872cc, #1a75d0, #1d7bd8, #2081e1, #2386e9, #258aee);
+ background-image: -moz-linear-gradient(#1872cc, #1a75d0, #1d7bd8, #2081e1, #2386e9, #258aee);
+ background-image: -o-linear-gradient(#1872cc, #1a75d0, #1d7bd8, #2081e1, #2386e9, #258aee);
+ background-image: linear-gradient(#1872cc, #1a75d0, #1d7bd8, #2081e1, #2386e9, #258aee);
+ -moz-box-shadow: none;
+ -webkit-box-shadow: none;
+ -o-box-shadow: none;
+ box-shadow: none;
+}
+
+/*sug*/
+.box-search .baidu_sug{
+ top: 14px!important;
+ width: 673px!important;
+ left: -2px!important;
+ border-top-width: 0!important;
+}
+.box-search .sug-search{
+ top: 41px!important;
+ width: 673px!important;
+ left: -3px!important;
+ position: absolute;
+}
+.box-search .sg_tri .sg_btn i{
+ top: 16px!important;
+}
+.box-search .sg_tri .sg_up i {
+ top: 10px!important;
+}
+.box-search .baidu_video_sug{
+ margin: 0!important;
+ top: 41px!important;
+ left: -3px!important;
+ border-top-width: 0!important;
+ width: 673px!important;
+}
+.box-search .sg_v_tri .sg_v_btn.sg_v_up i{
+ top: 10px!important;
+}
+.box-search .sg_v_tri .sg_v_btn i{
+ top: 16px!important;
+}
+
+/*flow 960*/
+.w960 .box-search .box-search_wrap .box-search_form .input input {
+ width: 462px!important;
+}
+.w960 .l-wrap .box-search {
+ width: 620px;
+}
+.w960 .box-search .sug-search,
+.w960 .box-search .baidu_sug,
+.w960 .baidu_video_sug {
+ width: 593px!important;
+}
+
+/*sug has url*/
+.box-search .sug-url {
+ height:45px;
+ border-bottom:1px solid #e1e1e1;
+}
+.box-search .sug-url a {
+ display: block;
+ text-decoration: none;
+ color: #0000EE;
+}
+.box-search .sug-url .sug-hl {
+ height: 25px;
+ text-decoration: underline;
+ font-weight:bold;
+ font-size:14px;
+}
+.box-search .sug-url .sug-frm {
+ line-height: 16px;
+ font-size: 12px;
+ color: green;
+}
+
+
+
+.box-search dt.box-search_logo_hover,
+.box-search .box-search_logos_show .box-search_logo_hover,
+body .sug-search .sug-select {
+ background-color: #f2f2f2;
+ background-color: rgba(0, 0, 0, 0.05);
+}
+body .box-search .sug-search,
+body .box-search_logo {
+ overflow: visible;
+}
+.box-search_logo_hide {
+ display: none;
+}
+.box-search_logo_wrap{
+ display: none!important;
+}
+.box-search .search-box_placeholder{
+ line-height: 30px!important;
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/rtl/rtl.more.css
new file mode 100755
index 000000000..3f240b972
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/rtl/rtl.more.css
@@ -0,0 +1,69 @@
+/*------------------------suggest------------------------*/
+/*提示层外框*/
+.sug-search {
+ position:absolute;
+ top: 28px;
+ *top: 30px;
+ left: -1px;
+ border:1px solid #e3e4e6;
+ border-top: 0 none;
+ background:#fff;
+ width:528px;
+ color:#454545;
+ z-index:999;
+ white-space:nowrap;
+ overflow:hidden;
+}
+/*ie6 shim*/
+.sug-shim {
+ position:absolute;
+ top:-1px;
+ left:-1px;
+ z-index:-1;
+ filter:alpha(opacity="0");
+ width:430px;
+ height:250px;
+}
+/*列表外框*/
+.sug-search ol {
+ font:bold 12px/23px Tahoma,arial,helvetica,clean,sans-serif;
+ cursor:default;
+}
+/*列表项*/
+.sug-search li {
+ padding: 3px 10px;
+ cursor: pointer;
+}
+.sug-search li b {
+ font: inherit;
+ display: inline;
+}
+/*选中样式*/
+.sug-search .sug-select {
+ background: #f5f7f7;
+}
+/*头部*/
+.sug-search .top {
+ font-weight:normal;
+ color:#999;
+ height:21px;
+ line-height:21px;
+ background:#eee;
+ padding:0 2px;
+}
+/*底部*/
+.sug-search .bot {
+ position:relative;
+ height:19px;
+ line-height:19px;
+ font-weight:normal;
+ border-top:1px solid #666;
+}
+/*高亮查询词*/
+.sug-search .sug-query {
+ font-weight:normal;
+}
+.sug-search font {
+ font-weight:normal !important;
+ color:#333 !important;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/rtl/rtl.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/rtl/rtl.tpl
new file mode 100755
index 000000000..2352189e8
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/rtl/rtl.tpl
@@ -0,0 +1,80 @@
+
+
+
+ <%foreach $sBoxTag as $value%>
+ <%if $value.catagory != 'more'%>
+ <%if empty($body.searchboxTab[$value.catagory])%>
+ <%if $value@first%>
+ <%$value.title%>
+ <%else%>
+
+ <%$value.title%>
+ <%/if%>
+ <%/if%>
+ <%else%>
+
+
+
+ <%$value.title%>
+
+
+
+
+ <%/if%>
+ <%/foreach%>
+
+
+
+
+ <%$sBoxCount = 0%>
+ <%foreach $sBoxTag[0].engine as $value%><%if !empty($body.searchboxEngine[$value.id])%><%$sBoxCount = $sBoxCount + 1%><%/if%><%/foreach%>
+
+
+ <%foreach $sBoxTag[0].engine as $value%>
+ <%if empty($body.searchboxEngine[$value.id])%>
+
+ <%break%>
+ <%/if%><%/foreach%>
+
+
+
+
+
+
+
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/rtl/rtl_inline.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/rtl/rtl_inline.css
new file mode 100755
index 000000000..581552bad
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/rtl/rtl_inline.css
@@ -0,0 +1,520 @@
+/*.box-search_form .input div{ float: left;}*/ /*为啥加?会导致ps sug出现问题*/
+.box-search_keyboard {
+ padding: 1px;
+}
+/*============box_search=============*/
+.box-search {
+ margin: 20px auto 0;
+ width: 780px;
+}
+.box-search_inner {
+ height:68px;
+}
+/*box-search_tab*/
+.box-search_tab {
+ white-space: nowrap;
+ margin-right: 161px;
+ position: relative;
+ z-index: 8;
+ clear: both;
+}
+.box-search_tab a {
+ /*font-size: 12px;*/
+ float:right;
+ padding: 4px 12px 3px;
+ margin-right: -1px;
+ text-decoration: none;
+ letter-spacing: normal;
+ position: relative;
+ z-index: 1;
+}
+.box-search_tab a:hover {
+ text-decoration: none;
+ background: #dcdcde;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -o-border-radius: 2px;
+ border-radius: 2px;
+}
+/*.box-search_more {
+ line-height:normal;
+ position: absolute;
+ float:right;
+ cursor:pointer;
+ z-index:8;
+ top: -8px;
+ left: -7px;
+ border: 1px solid #edf0ef;
+ border-bottom: 0 none;
+}
+.box-search_more dt {
+ position: relative;
+ margin-top: 6px;
+}
+.box-search_more a:hover {
+ background: transparent;
+ -moz-border-radius: 0px;
+ -webkit-border-radius: 0px;
+ -o-border-radius: 0px;
+ border-radius: 0px;
+}
+.box-search_more dt a {
+ margin: 0;
+ padding: 4px 9px 3px 17px;
+ color: #4c4c4c;
+ text-align: right;
+ display: block;
+ float: none;
+ line-height: 14px;
+ width: 30px;
+ overflow: hidden;
+}
+.box-search_more dt a:focus {
+ outline: none;
+}
+.box-search_more_hover {
+ background-color: #dcdcde;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -o-border-radius: 2px;
+ border-radius: 2px;
+}
+.box-search_more .arrow, .box-search_more .arrow_bg {
+ position: absolute;
+ height: 0;
+ width: 0;
+ border: 3px dashed transparent;
+}
+.box-search_more .arrow {
+ border-top-color: #4ac29a;
+ border-top-style: solid;
+ top: 10px;
+ right: 42px;
+}
+.box-search_more .arrow_bg {
+ border-top-color: #edf0ef;
+ border-top-style: solid;
+ margin: -5px -3px 0 0;
+ _display: none;
+}
+.box-search_more_hover .arrow_bg {
+ border-top-color: #dcdcde;
+}
+.box-search_more_show .arrow {
+ border-top-color: transparent;
+ border-top-style: dashed;
+ border-bottom-color: #4ac29a;
+ border-bottom-style: solid;
+ top: 12px;
+}
+.box-search_more_show .arrow_bg {
+ border-top-color: transparent;
+ border-top-style: dashed;
+ border-bottom-color: #fff;
+ border-bottom-style: solid;
+ margin-top: -1px;
+}
+.box-search_more_show .box-search_more_hover .arrow_bg {
+ border-bottom-color: #f5f7f7;
+}
+.box-search_more_show {
+ border:1px solid #e3e4e6;
+ background: #fff;
+ left: auto;
+ right: 472px;
+}
+.box-search_more_show dt {
+ margin-top: 0px;
+ padding-top: 6px;
+}
+.box-search_more_show dt a {
+ background-position:left -351px !important;
+}
+.box-search_more_show .box-search_more_hover {
+ background-color: #f5f7f7;
+ -moz-border-radius: 0px;
+ -webkit-border-radius: 0px;
+ -o-border-radius: 0px;
+ border-radius: 0px;
+}
+.box-search_more_show dd {
+ line-height: 31px;
+}
+.box-search_more_show dd a {
+ padding:0 9px 0 15px;
+ display:block;
+ float:none;
+ color: #666;
+ text-align: right;
+ margin:0;
+ overflow: hidden;
+}
+.box-search_more_hide {
+ display: none;
+}*/
+.box-search_tab a:focus {
+ outline:none;
+} /*clear FF's focusborder*/
+.box-search_tab a.cur {
+ color:#00b075; /*font-weight:bold;*/
+ cursor:default;
+ text-decoration: none;
+ font-weight: bold;
+}
+.box-search_sep {
+ display: block;
+ float: right;
+ height: 6px;
+ line-height: 6px;
+ margin-top: 8px;
+ border-left: 1px solid #b3b3b3;
+ position: relative;
+ z-index: 0;
+ margin-right: -1px;
+}
+/*box-search_logo*/
+.box-search_logo_wrap {
+ position: relative;
+ width: 155px;
+ height: 67px;
+ margin:-16px 0 0 5px;
+ float: right;
+ z-index: 6;
+}
+.box-search_logo {
+ position: absolute;
+ right: 0;
+ overflow:hidden;
+ vertical-align:bottom;
+ text-align:center;
+}
+.box-search_logo a {
+ padding-left: 18px;
+ display: block;
+}
+.box-search_logo a:focus {
+ outline: none;
+}
+.box-search_logo dt , .box-search_logo dd {
+ padding: 10px 7px 10px 8px;
+ /*cursor: pointer;*/
+}
+.box-search_logo dt a {
+ background: url(/widget/img/bg.png) -10px -61px no-repeat;
+}
+dt.box-search_logo_hover {
+ background-color: #e3e4e6;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -o-border-radius: 2px;
+ border-radius: 2px;
+}
+.box-search_logos_show .box-search_logo_hover {
+ background-color: #f5f7f7;
+ -moz-border-radius: 0px;
+ -webkit-border-radius: 0px;
+ -o-border-radius: 0px;
+ border-radius: 0px;
+}
+.box-search_logos_show {
+ background-color: #fff;
+ border: 1px solid #e3e4e6
+}
+.box-search_logos_show dt a {
+ background-position: -10px -390px;
+}
+.box-search_logo_hide {
+ display: none;
+}
+.box-search_logo img {
+ width:120px;
+ height:45px;
+}
+.box-search_logo_disabled {
+ background: none;
+ border: 1px solid #EDF0EF;
+}
+.box-search_logo_disabled dt.box-search_logo_hover, .box-search_logo_disabled dt a {
+ background: none;
+ cursor: default;
+}
+
+/*box-search_form*/
+.box-search_form {
+ padding:3px 113px 5px 0px;
+}
+.box-search_form .input {
+ background-color: #fff;
+ border: 1px solid #d9d9d9;
+ border-top: 1px solid #bfbfbf;
+ margin-left: 13px;
+ position: relative;
+ z-index:5;
+}
+.box-search_form .input input {
+ border:none;
+ background:#fff;
+ width:491px;
+ float:right;
+ overflow:hidden;
+ height:20px;
+ font-size: 14px;
+ line-height:20px\9;
+ padding:4px 9px 3px 0px;
+ *width: 488px;
+ *float: none;
+ /*fix ie10 bug*/
+ margin-right: 1px;
+}
+.box-search_form input, .box-search_form button:focus {
+ outline:none;
+}
+.box-search_form .input label {
+ position: absolute;
+ right: 10px;
+ top: 6px;
+ font-size: 14px;
+ color: #D7D8D9;
+ white-space: nowrap;
+}
+.box-search_form .box-search_focus {
+ border: 1px solid #4d90fe;
+}
+.btn-search {
+ white-space:nowrap;
+ line-height:27px;
+ overflow: hidden;
+ _float: left;
+ *margin:0;/*fix non-IE'problem because of vertical-align*/
+
+
+ /*--css3--*/
+ width: 70px;
+ border-radius: 2px;
+ border: 1px solid #3079ED;
+ background-color: #4787ED;
+ background-image: -o-linear-gradient(-90deg, #4D8FFD 0%, #4787ED 100%);
+ background-image: -moz-linear-gradient(-90deg, #4D8FFD 0%, #4787ED 100%);
+ background-image: -webkit-linear-gradient(-90deg, #4D8FFD 0%, #4787ED 100%);
+ background-image: -ms-linear-gradient(-90deg, #4D8FFD 0%, #4787ED 100%);
+ background-image: linear-gradient(-180deg, #4D8FFD 0%, #4787ED 100%);
+}
+.btn-search_l, .btn-search_r {
+ display: none !important;
+}
+
+.btn-search_c {
+ /*background:url(../img/bg-search-btn.png?__sprite) repeat-x;*/
+ vertical-align:top;
+ border:none;
+ color:#fff;
+ height:27px;
+ text-align:center;
+ width:70px;
+ font-weight: bold;
+ font-size: 15px;
+ cursor: pointer;
+ float: left;
+ background: none;
+}
+.btn-search_ico {
+ display: block;
+ margin: 0 auto;
+ width: 17px;
+ height: 17px;
+ background: url(../img/i-search.png?__sprite) no-repeat;
+ line-height: 27px;
+}
+
+.btn-search_hover{
+ border-color: #2F5BB7;
+ background-color: #357AE8;
+ background-image: -o-linear-gradient(-90deg, #4C8FFD 0%, #357AE8 100%);
+ background-image: -moz-linear-gradient(-90deg, #4C8FFD 0%, #357AE8 100%);
+ background-image: -webkit-linear-gradient(-90deg, #4C8FFD 0%, #357AE8 100%);
+ background-image: -ms-linear-gradient(-90deg, #4C8FFD 0%, #357AE8 100%);
+ background-image: linear-gradient(-180deg, #4C8FFD 0%, #357AE8 100%);
+}
+
+.btn-search_click{
+ border-color: #2B79E6;
+ background-color: #357AE8;
+ background-image: -o-linear-gradient(-90deg, #4A8DFB 0%, #357AE8 100%);
+ background-image: -moz-linear-gradient(-90deg, #4A8DFB 0%, #357AE8 100%);
+ background-image: -webkit-linear-gradient(-90deg, #4A8DFB 0%, #357AE8 100%);
+ background-image: -ms-linear-gradient(-90deg, #4A8DFB 0%, #357AE8 100%);
+ background-image: linear-gradient(-180deg, #4A8DFB 0%, #357AE8 100%);
+ -moz-box-shadow: inset 0px 2px 3px 0px rgba(0,0,0,0.50);
+ -webkit-box-shadow: inset 0px 2px 3px 0px rgba(0,0,0,0.50);
+ box-shadow: inset 0px 2px 3px 0px rgba(0,0,0,0.50);
+}
+/*
+.btn-search_hover .btn-search_l {
+ background:url(../img/bg-search-btn-side-hover.png?__sprite) no-repeat;
+}
+.btn-search_hover .btn-search_r {
+ background:url(../img/bg-search-btn-side-hover.png?__sprite) no-repeat;
+ background-position:-3px 0;
+}
+.btn-search_hover .btn-search_c {
+ background:url(../img/bg-search-btn-hover.png?__sprite) repeat-x;
+}
+.btn-search_hover .btn-search_ico {
+ background: url(../img/i-search-hover.png?__sprite) no-repeat;
+}
+.btn-search_click .btn-search_l {
+ background:url(../img/bg-search-btn-side-click.png?__sprite) no-repeat;
+}
+.btn-search_click .btn-search_r {
+ background:url(../img/bg-search-btn-side-click.png?__sprite) no-repeat;
+ background-position:-3px 0;
+}
+.btn-search_click .btn-search_c {
+ background:url(../img/bg-search-btn-click.png?__sprite) repeat-x;
+}
+.btn-search_click .btn-search_ico {
+ background: url(../img/i-search-click.png?__sprite) no-repeat;
+}*/
+.box-search_form .radios {
+ padding-top:4px;
+ width:480px;/*for IE9*/
+}
+.box-search_form .radios label {
+ display:block;
+ padding-right:15px;
+ text-indent:-15px;
+ float:right;
+ margin-left:18px;
+ color:#666;
+ font-size: 13px;
+ white-space: nowrap;
+}
+.box-search_form .radios input {
+ vertical-align:top;
+ width:13px;
+ height:13px;
+ margin-left:5px;
+ vertical-align:bottom;
+ position:relative;
+ top:-1px;
+ overflow:hidden;
+}
+
+/*set hot search words & search button*/
+.box-search_hsrch {
+ width: 620px;
+ margin-right: 160px;
+ overflow: hidden;
+ padding-top: 2px;
+ color: #919191;
+ white-space: nowrap;
+ _margin-top:-14px;
+}
+.hsrch_title {
+ font-weight: bold;
+ margin-left: 8px;
+ /*padding-right: 10px;*/
+ color: #919191;
+}
+.hsrch_word span {
+ display: inline-block;
+ margin-left: 15px;
+}
+.hsrch_word a{
+ color: #919191;
+ text-align: right;
+}
+.hsrch_word a:hover {
+ color: #00B075;
+ text-decoration: underline;
+}
+/*size setting*/
+.box-search-m .box-search_logo img {
+ width:107px;
+ height:40px;
+}
+.box-search-m .box-search_logo_wrap {
+ width: 142px;
+ height: 62px;
+ margin-top: -14px;
+}
+.box-search-m .box-search_logo dt a {
+ background-position: -10px -62px;
+}
+.box-search-m .box-search_logos_show dt a {
+ background-position: -10px -87px;
+}
+.box-search-m .box-search_tab {
+ margin-right: 148px;
+}
+.box-search-m .box-search_hsrch {
+ margin-right: 148px;
+}
+.box-search-s .box-search_logo img {
+ width:85px;
+ height:32px;
+}
+.box-search-s .box-search_logo_wrap {
+ width: 120px;
+ height: 54px;
+ margin-top: -9px;
+}
+.box-search-s .box-search_logo dt a {
+ background-position: -10px -67px;
+}
+.box-search-s .box-search_logos_show dt a {
+ background-position: -10px -93px;
+}
+.box-search-s .box-search_tab {
+ margin-right: 126px;
+}
+.box-search-s .box-search_hsrch {
+ margin-right: 126px;
+}
+
+/**************************** 深色换肤搜索框优化 *******************************/
+.skin-type-dark .box-search_logo{border-width:0px;}
+.skin-type-dark .box-search_tab a{color: #ffffff;}
+body.skin-type-dark .box-search_tab a.cur{color: #ffffff;}
+.skin-type-dark .box-search_tab a:hover{background: #595959;background: rgba(0,0,0,0.6);}
+.skin-type-dark #searchGroupRadios label{color: #ffffff;}
+.skin-type-dark .box-search_logo_disabled dt.box-search_logo_hover, .skin-type-dark .box-search_logo_disabled dt a{background: 0;}
+.box-search_logo_disabled, .box-search_logos_show{border: 0;}
+
+/*fi chrome radio white background box bug*/
+/*chrome 22-28*/
+@media \\0 screen {
+ body .box-search_form .radios label span {
+ display: inline-block;
+ text-indent: 0;
+ border-radius: 100px;
+ margin-left: 5px;
+ width: 14px;
+ height: 14px;
+ overflow: hidden;
+ vertical-align: -3px;
+ }
+ body .box-search_form .radios input {
+ margin-left: 0;
+ vertical-align: top;
+ position: static;
+ }
+}
+/*chrome 29+*/
+@media screen and (-webkit-min-device-pixel-ratio:0) {
+ body .box-search_form .radios label span {
+ display: inline-block;
+ text-indent: 0;
+ border-radius: 100px;
+ margin-left: 5px;
+ width: 14px;
+ height: 14px;
+ overflow: hidden;
+ vertical-align: -3px;
+ }
+ body .box-search_form .radios input {
+ margin-left: 0;
+ vertical-align: top;
+ position: static;
+ }
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/search-box-head-radio-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/search-box-head-radio-async.js
new file mode 100755
index 000000000..a79307279
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/search-box-head-radio-async.js
@@ -0,0 +1,764 @@
+/*
+* Search box group
+*/
+
+var $ = require("common:widget/ui/jquery/jquery.js"),
+ UT = require("common:widget/ui/ut/ut.js"),
+ helper = require("common:widget/ui/helper/helper.js");
+require("common:widget/ui/suggest/suggest.js");
+
+Gl.searchGroup = function(o) {
+ var _conf = conf.searchGroup,
+ type = o.type || "index",
+ logoPath = _conf.conf[type].logoPath,
+
+ logo = $("#" + (o.logoId || "searchGroupLogo")),
+ logoGroup = $("#" + (o.logoGroupId || "searchGroupLogos")),
+ tabs = $("#" + (o.tabsId || "searchGroupTabs")),
+ form = $("#" + (o.formId || "searchGroupForm")),
+ input = $("#" + (o.inputId || "searchGroupInput")),
+ label = $("#" + (o.labelId || "searchGroupLabel")),
+ radios = $("#" + (o.radiosId || "searchGroupRadios")),
+ btn = $("#" + (o.btnId || "searchGroupBtn")),
+ // more = $("#" + (o.moreId || "searchGroupMore")),
+ moreTab = $("#" + (o.moreTabId || "searchGroupMoreTab")),
+ params = $("#" + (o.paramsId || "searchGroupParams")),
+ radioName = o.radioName || "searchGroupRadio",
+ btnWrap = btn.parent(),
+ inputWrap = input.parent(),
+ defaultN = _conf.conf[type].curN || 0,
+ curTab = $("a:eq(" + defaultN + ")", tabs),
+ tabsChildren = $("a", tabs),
+ //render data when init sug
+ defaultData = _conf.sug[_conf.list[curTab.attr("data-t")].engine[defaultN].id],
+ //record which form was selected in tabs
+ storeForm = {},
+ logoHash = {
+ 'yahoo': 'yahoo',
+ 'google': 'google',
+ 'baidu': 'baidu',
+ 'defau': 'defau'
+ },
+ $bd = $(document.body),
+ getCurLogo = function(attr) {
+ var tmpObj = null;
+ attr = attr.toLowerCase();
+ for(var i in logoHash) {
+ if(attr.search(i) > -1) {
+ tmpObj = logoHash[i];
+ break;
+ }
+ }
+ if(tmpObj === 'yahoo' && conf.country === 'jp') {
+ tmpObj = 'yahoo_jp';
+ }
+ return (tmpObj || 'defau');
+ },
+ //smallLogoPath = "/resource/fe/headerTest/search/#{logo}.png",
+
+ //reset the form about action and params
+ resetForm = function(data, n) {
+ var ret = [];
+ var theLogoPath = $bd.hasClass("skin-type-dark")?(_conf.conf[type].logoPath+"dark/"):_conf.conf[type].logoPath;
+ var isFixed = $bd.hasClass("header-fixed-up");
+ var logoGroupDt = $("dt", logoGroup).clone();
+
+ // Fixed bug in IE8
+ logoGroup.html('');
+ logoGroup.append(logoGroupDt);
+ // rebinding logo element
+ logo = $("#" + (o.logoId || "searchGroupLogo"), logoGroupDt);
+
+ form.attr("action", data[n].action);
+ input.attr("name", data[n].q);
+ if(isFixed) {
+ logo.attr("src", "/resource/fe/headerTest/search/" + getCurLogo(data[n].logo) + ".png");
+ } else {
+ logo.attr("src", theLogoPath + data[n].logo + ".png");
+ }
+ logo.attr("alt", data[n].name);
+ logo.parent().attr("title", data[n].name);
+ logo.parent().attr("data-n", n);
+ logo.attr("data-id", data[n].id);
+
+ $("dd", logoGroup).remove();
+ logoGroup.append(function () {
+ ret = [];
+ $.each(data, function(key, val) {
+ if(isFixed) {
+ ret.push(''+ val.name + ' ');
+ } else {
+ ret.push(' ');
+ }
+ });
+ return ret.join("");
+ });
+ // fix: show errors when click radios on IE
+ setTimeout(function() {
+ radios.html(function() {
+ ret = [];
+ $.each(data,function(key, val) {
+ ret.push(' ' + val.name + ' ');
+ });
+ return ret.join("");
+ });
+ $("#searchGroupRadio_" + n).attr("checked", "checked");
+ }, 0);
+
+ params.html(function() {
+ ret = [];
+ $.each(data[n].params, function(key, val) {
+ ret.push(' ');
+ });
+ return ret.join("");
+ });
+
+ if (data.length <= 1) {
+ logoGroup.addClass("box-search_logo_disabled");
+ } else {
+ logoGroup.removeClass("box-search_logo_disabled");
+ }
+ logoGroup.children().on("mouseenter", function() {
+ $bd.hasClass("header-fixed-up") && $(this).addClass("box-search_logo_hover");
+ });
+ logoGroup.children().on("mouseleave", function() {
+ $bd.hasClass("header-fixed-up") && $(this).removeClass("box-search_logo_hover");
+ });
+ },
+
+ resetSug = function(data, n) {
+
+ data = _conf.sug[data[n].id];
+ $.each(data, function(key, val) {
+ sug.o[key] = val;
+ });
+ //fix more prams
+ !data.templ && (sug.o.templ = false);
+ !data.callbackFn && (sug.o.callbackFn = false);
+ !data.callbackDataKey && (sug.o.callbackDataKey = false);
+ !data.callbackName && (sug.o.callbackName = false);
+ !data.callbackDataNum && (sug.o.callbackDataNum = false);
+ !data.customUrl && (sug.o.customUrl = false);
+
+ !data.customUrl && (sug.o.customUrl = false);
+ !data.charset && (sug.o.charset = undefined);
+ sug.reset(true);
+ },
+
+ // toggle for baidu sug
+ resetBaiduSug = function (data, n) {
+
+ if (!baidu_sug) {
+ return;
+ }
+
+ data = data ? data[n].baiduSug : false;
+
+ if (data) {
+ baidu_sug.setMode(data.mod);
+ baidu_sug.toggle(true);
+ } else {
+ baidu_sug.toggle(false);
+ }
+ },
+
+ // toggle for PS video sug
+ resetBaiduVideoSug = function(data, n) {
+ if(!window["baidu_video_sug"]) {
+ return;
+ }
+
+ data = data ? data[n].otherSug : false;
+
+ if (data) {
+ baidu_video_sug.setMode(data.mod);
+ baidu_video_sug.toggle(true);
+ } else {
+ baidu_video_sug.toggle(false);
+ }
+ },
+
+ switchTab = function(tab, sugStay) {
+ tab = $(tab);
+ curTab.removeClass("cur");
+ tab.addClass("cur");
+ curTab = tab;
+
+ var t = tab.attr("data-t"),
+
+ list = _conf.list,
+ engines = list[t].engine,
+ engLen = engines.length;
+ //ps sug gut add tab changed name
+ tabCategoryName = t;
+ //if the last element is null, remove it
+ if($.isEmptyObject(engines[engLen-1])){
+ engines.length = engLen - 1;
+ };
+ //record current form(add the current type to storeForm as a key)
+ storeForm[t] || (storeForm[t] = 0);
+
+ //reset form
+ resetForm(engines, storeForm[t]);
+
+ //reset suggest
+ !sugStay && resetSug(engines, storeForm[t]);
+
+ // reset PS video sug
+ !sugStay && resetBaiduVideoSug(engines, storeForm[t]);
+
+ // reset baidu sug
+ !sugStay && resetBaiduSug(engines, storeForm[t]);
+
+ //reset hot word
+ label.text(list[t].hotWords);
+ /*
+ setTimeout(function() {
+ input.select();
+ }, 16);
+ */
+ //keep the cursor in end
+ /*setTimeout(function() {
+ setCursorPos(input[0], input.val().length);
+ }, 16); */
+ },
+
+ showMore = function() {
+ var more = $("dd", moreTab),
+ list = _conf.more,
+ ret = [];
+ if ($("dd", moreTab).length === 0) {
+ $.each(list, function() {
+ ret.push('' + this.name + ' ');
+ });
+ moreTab.append(ret.join(""));
+ moreTab.children().on("mouseenter", function() {
+ $(this).addClass("box-search_more_hover");
+ });
+ moreTab.children().on("mouseleave", function() {
+ $(this).removeClass("box-search_more_hover");
+ });
+ }
+ if(moreTab.hasClass("box-search_more_show")) {
+ moreTab.removeClass("box-search_more_show");
+ more.each(function () {
+ $(this).addClass("box-search_more_hide");
+ });
+ }
+ else {
+ moreTab.addClass("box-search_more_show");
+ more.each(function () {
+ $(this).removeClass("box-search_more_hide");
+ });
+ }
+ },
+
+ showLogo = function () {
+ var n = logo.parent().attr("data-n"),
+ logoList = $("dd", logoGroup);
+ var isFix = $bd.hasClass("header-fixed-up"),
+ logLen = logoList.length;
+ if (logoGroup.hasClass("box-search_logos_show")) {
+ logoGroup.removeClass("box-search_logos_show");
+ logoList.each(function () {
+ $(this).addClass("box-search_logo_hide").removeClass("box-search_logo_first box-search_logo_last");
+ });
+ }
+ else {
+ logoGroup.addClass("box-search_logos_show");
+ logoList.each(function (key) {
+ var $that = $(this);
+ key != n && $that.removeClass("box-search_logo_hide");
+ if (isFix && (logLen > 1) && (key != n)) {
+ if(n == 0) {
+ if(key === 1) {
+ $that.addClass("box-search_logo_first");
+ }
+ if(key === logLen-1) {
+ $that.addClass("box-search_logo_last");
+ }
+ } else if(n == logLen-1) {
+ if(key === 0) {
+ $that.addClass("box-search_logo_first");
+ }
+ if(key === logLen-2) {
+ $that.addClass("box-search_logo_last");
+ }
+ } else {
+ if(key === 0) {
+ $that.addClass("box-search_logo_first");
+ }
+ if(key === logLen-1) {
+ $that.addClass("box-search_logo_last");
+ }
+ }
+ }
+ });
+ }
+ },
+
+ //disable selection for input elements
+ disableSelection = function(el) {
+ if (typeof el.onselectstart != "undefined") { //IE
+ el.onselectstart = function() {
+ return false;
+ }
+ } else if (typeof el.style.MozUserSelect != "undefined") { //FF
+ el.style.MozUserSelect = "none";
+ } else { //Opera
+ el.onmousedown = function() {
+ return false;
+ }
+ }
+ },
+
+ setCursorPos = function(obj, pos) {
+ if (obj.setSelectionRange) {
+ obj.focus();
+ obj.setSelectionRange(pos, pos);
+ } else if (obj.createTextRange) {
+ var range = obj.createTextRange();
+ range.collapse(true);
+ range.moveEnd('character', pos);
+ range.moveStart('character', pos);
+ range.select();
+ }
+ },
+ //sug instantiation
+ sug = Gl.suggest(input[0], {
+ classNameWrap: "sug-search",
+ classNameQuery: "sug-query",
+ classNameSelect: "sug-select",
+ //classNameClose: "sug-close",
+ delay: _conf.conf[type].delay,
+ n: _conf.conf[type].n,
+ autoFocus: false,
+ requestQuery: defaultData.requestQuery,
+ requestParas: defaultData.requestParas,
+ url: defaultData.url,
+ callbackFn: defaultData.callbackFn,
+ callbackDataKey: defaultData.callbackDataKey,
+ onCheckForm: function(form) {
+
+ if( !(/^hao123$/.test(logo.attr("data-id"))) ) return;
+
+ if( !$(form).find("input[name='haobd']").get(0) ) {
+ $(form).append(" ");
+ }
+ },
+ onSearchDirect: function(li, q, prefix) {
+ var img = new Image(),
+ enco = encodeURIComponent,
+ collect = [],
+ _type = curTab.attr("data-t"),
+ url = "http://search.hao123.co.th/r/cl/i18n.gif?fm=se&st=3&rsv_sugtype=cr&lang=th-TH",
+ href = $( $(li).find("a").get(0) ).attr("href"),
+ title = $( $(li).find("a .sug-hl").get(0) ).text(),
+
+ conf = {
+ url: href,
+ q: q,
+ title: title,
+ prefixsug: prefix,
+ haobd: $.cookie("BAIDUID"),
+ t: +new Date
+ };
+
+
+ img.src = url + "&" + $.param(conf); // PS的统计
+
+ var utObj = {
+ type: "click",
+ position: "search",
+ engine: _conf.list[_type].engine[storeForm[_type]].id.toLowerCase(),
+ value: enco(q),
+ url: href,
+ element: "sug",
+ modId: "search",
+ tab: _type
+ };
+ if ($bd.hasClass("header-fixed-up")) {
+ utObj.sort = "header";
+ }
+ UT.send(utObj);
+ // 我们的统计
+ /*if (_conf.conf.sort) {
+ UT.send({
+ type: "click",
+ position: "search",
+ engine: _conf.list[_type].engine[storeForm[_type]].id.toLowerCase(),
+ value: enco(q),
+ url: href,
+ element: "sug",
+ sort: _conf.conf.sort,
+ modId:"search"
+ });
+ } else {
+ UT.send({
+ type: "click",
+ position: "search",
+ engine: _conf.list[_type].engine[storeForm[_type]].id.toLowerCase(),
+ value: enco(q),
+ url: href,
+ element: "sug",
+ modId:"search"
+ });
+ }*/
+ },
+ onMouseSelect: function() {
+ var t = curTab.attr("data-t"),
+ _action = _conf.list[t].engine[storeForm[t]].action;
+ //fix action
+ if(/#\{([^}]*)\}/mg.test(_action)) {
+ form.attr("action", helper.replaceTpl(_action, {q: encodeURIComponent(input.val())}));
+ input.attr("disabled", true);
+ setTimeout(function() {
+ input.attr("disabled", false);
+ }, 16);
+ }
+ input.select();
+ var _type = curTab.attr("data-t");
+ var utObj = {
+ type: "click",
+ position: "search",
+ engine: _conf.list[_type].engine[storeForm[_type]].id.toLowerCase(),
+ value: encodeURIComponent(input.val()),
+ element: "sug",
+ modId:"search",
+ tab: _type
+ };
+ if ($bd.hasClass("header-fixed-up")) {
+ utObj.sort = "header";
+ }
+ UT.send(utObj);
+ /*if (_conf.conf.sort) {
+ UT.send({
+ type: "click",
+ position: "search",
+ engine: _conf.list[_type].engine[storeForm[_type]].id.toLowerCase(),
+ value: encodeURIComponent(input.val()),
+ element: "sug",
+ sort: _conf.conf.sort,
+ modId:"search"
+ });
+ } else {
+ UT.send({
+ type: "click",
+ position: "search",
+ engine: _conf.list[_type].engine[storeForm[_type]].id.toLowerCase(),
+ value: encodeURIComponent(input.val()),
+ element: "sug",
+ modId:"search"
+ });
+ }*/
+ },
+ templ: defaultData.templ
+ });
+
+ //ps sug gut add tab
+ window.tabCategoryName = curTab.attr("data-t");
+ //clear the input's value after refresh
+ input.val("");
+
+ //some browsers may keep form's status after refresh
+ $("[name = radioName]:first").attr("checked", true);
+
+ //record the default form'n
+ storeForm[curTab.attr("data-t")] = 0;
+ //select text in input after submit
+ form.on("submit", function() {
+ // input.select();
+ var t = curTab.attr("data-t"),
+ _action = _conf.list[t].engine[storeForm[t]].action,
+ _url = _conf.list[t].engine[storeForm[t]].url,
+ isBlank = false;
+ var radioEl = $("input", radios);
+ for(var i = 0; i < radioEl.length; i++) {
+ if(radioEl.eq(i).attr("checked")) {
+ var checkedRadio = radioEl.eq(i);
+ }
+ }
+ /*if(t == "shopping" && checkedRadio.attr("id") == "searchGroupRadio_0") {
+ form[0].acceptCharset = document.charset = "big5";
+ }
+ else {
+ form[0].acceptCharset = document.charset = "utf-8";
+ }*/
+
+ // set input's value to the hot word if it was blank
+ if($.trim(input.val()) === "") {
+ if($.trim(label.text()) === ""){
+ var action = _action && _url ? _url : _action;
+ form.attr("action", action);
+ } else {
+ input.val(label.text());
+ input.css("color", "#fff");
+ isBlank = true;
+ }
+ } else {
+ if(/^hao123$/.test(logo.attr("data-id"))) {
+ if(!form.find("input[name='haobd']").get(0)) {
+ form.append(" ");
+ }
+ }
+ form.attr("action", _action);
+ }
+
+ // set charset to big5 while the engine is ruten
+ if(t == "shopping" && /ruten.png/.test(logo.attr("src"))) {
+ form[0].acceptCharset = document.charset = "big5";
+ }
+ else {
+ form[0].acceptCharset = document.charset = "utf-8";
+ }
+ var utObj = {
+ type: "click",
+ position: "search",
+ engine: _conf.list[t].engine[storeForm[t]].id.toLowerCase(),
+ value: encodeURIComponent(input.val()),
+ element: "input",
+ modId:"search",
+ tab: t
+ };
+ if ($bd.hasClass("header-fixed-up")) {
+ utObj.sort = "header";
+ }
+ UT.send(utObj);
+ /*if (_conf.conf.sort) {
+ UT.send({
+ type: "click",
+ position: "search",
+ engine: _conf.list[t].engine[storeForm[t]].id.toLowerCase(),
+ value: encodeURIComponent(input.val()),
+ element: "input",
+ sort: _conf.conf.sort,
+ modId:"search"
+ });
+ } else {
+ UT.send({
+ type: "click",
+ position: "search",
+ engine: _conf.list[t].engine[storeForm[t]].id.toLowerCase(),
+ value: encodeURIComponent(input.val()),
+ element: "input",
+ modId:"search"
+ });
+ } */
+ //reset input after search
+ if(isBlank) {
+ setTimeout(function() {
+ input.val("");
+ input.removeAttr("style");
+ }, 16);
+ } else {
+ input.select();
+ }
+ //fix action
+ if(/#\{([^}]*)\}/mg.test(_action)) {
+ form.attr("action", helper.replaceTpl(_action, {q: encodeURIComponent(input.val())}));
+ input.attr("disabled", true);
+ setTimeout(function() {
+ input.attr("disabled", false);
+ input.select();
+ }, 16);
+ }
+ //no action while engine is hao123 and input val is blank
+ /*if(/hao123.png/.test(logo.attr("src")) && input.val() === "") {
+ return false;
+ }*/
+ });
+
+ //disableSelection
+ disableSelection(tabs[0]);
+ disableSelection(radios[0]);
+
+ resetBaiduVideoSug(_conf.list[curTab.attr('data-t')].engine, defaultN);
+
+ resetBaiduSug(_conf.list[curTab.attr('data-t')].engine, defaultN);
+
+ btn.on("mousedown", function() {
+ btnWrap.addClass("btn-search_click");
+ });
+ btn.on("mouseup", function() {
+ btnWrap.removeClass("btn-search_click");
+ });
+ btn.on("mouseout", function() {
+ btnWrap.removeClass("btn-search_click");
+ });
+ btn.on("mouseenter", function() {
+ btnWrap.addClass("btn-search_hover");
+ });
+ btn.on("mouseleave", function() {
+ btnWrap.removeClass("btn-search_hover");
+ });
+ input.on("focus", function() {
+ inputWrap.addClass("box-search_focus");
+ label.hide();
+ });
+ input.on("blur", function() {
+ inputWrap.removeClass("box-search_focus");
+ $.trim(input.val()) === "" && label.show();
+ });
+ logoGroup.children().on("mouseenter", function() {
+ $bd.hasClass("header-fixed-up") && $(this).addClass("box-search_logo_hover");
+ });
+ logoGroup.children().on("mouseleave", function() {
+ $bd.hasClass("header-fixed-up") && $(this).removeClass("box-search_logo_hover");
+ });
+ moreTab.children().on("mouseenter", function() {
+ $(this).addClass("box-search_more_hover");
+ });
+ moreTab.children().on("mouseleave", function() {
+ $(this).removeClass("box-search_more_hover");
+ });
+
+ tabs.on("mousedown", function(e) {
+ var el = e.target;
+ el.tagName === "SPAN" && (el = el.parentNode);
+ //el.tagName !== "DT" && !hasClass(el, "cur") && !hasClass(el, "more") && switchTab(el);
+ el.getAttribute("data-t") && switchTab(el);
+ form.acceptCharset = document.charset = "utf-8";
+ });
+
+ conf.pageType !=="lv2" && window["PDC"] && PDC.mark("c_sxvi");
+
+ moreTab.on("mousedown", function(e) {
+ var el = e.target;
+ if(el.parentNode.tagName === "DD") {
+ setTimeout(showMore, 200);
+ }else {
+ showMore();
+ }
+ });
+
+ $(document).on("mousedown", function(e) {
+ var el = e.target;
+ $bd.hasClass("header-fixed-up") && logoGroup.hasClass("box-search_logos_show") && el !== logoGroup[0] && !jQuery.contains(logoGroup[0], el) && showLogo();
+ moreTab.hasClass("box-search_more_show") && el !== moreTab[0] && !jQuery.contains(moreTab[0], el) && showMore();
+ // more.css("display") === "block" && el !== moreTab[0] && !jQuery.contains(moreTab[0], el) && !jQuery.contains(more[0], el) && showMore();
+ });
+
+ logoGroup.on("click", function(e) {
+ var el = e.target,
+ $el = $(el),
+ $ta = el.tagName,
+ t = curTab.attr("data-t"),
+ n = storeForm[t],
+ _n;
+ if(!$bd.hasClass("header-fixed-up")) return;
+ if ($ta === "IMG"||$ta === "SPAN") {
+ _n = ~~$el.parent().attr("data-n");
+ } else if ($ta === "A"||$ta === "DT") {
+ _n = ~~$el.attr("data-n");
+ }else {
+ _n = ~~$el.children().attr("data-n");
+ }
+ //input.select();
+ //keep the cursor in end
+ form[0].acceptCharset = document.charset = "utf-8";
+ //setTimeout(function() {
+ // setCursorPos(input[0], input.val().length);
+ //}, 16);
+
+
+
+ if(_n !== n) {
+ storeForm[t] = _n;
+ resetForm(_conf.list[t].engine, _n);
+ //reset suggest
+ resetSug(_conf.list[t].engine, _n);
+
+ //reset PS video sug
+ resetBaiduVideoSug(_conf.list[t].engine, _n);
+
+ resetBaiduSug(_conf.list[t].engine, _n);
+ }
+ showLogo();
+ });
+ // bind radio
+ $("input", radios).live("click", function (e) {
+ var t = curTab.attr("data-t"),
+ n = storeForm[t],
+ _n = $(this).val();
+ //input.select();
+ //keep the cursor in end
+ $(this).attr("checked", "checked");
+
+ setTimeout(function() {
+ // setCursorPos(input[0], input.val().length);
+ }, 16);
+
+ //el.tagName === "LABEL" && (el = el.getElementsByTagName("input")[0]);
+ if(_n !== n) {
+ storeForm[t] = _n;
+
+ resetForm(_conf.list[t].engine, _n);
+ //reset suggest
+ resetSug(_conf.list[t].engine, _n);
+
+ //reset PS video sug
+ resetBaiduVideoSug(_conf.list[t].engine, _n);
+
+ //reset baidu sug
+ resetBaiduSug(_conf.list[t].engine, _n);
+ }
+ var utObj = {
+ type: "click",
+ ac: "b",
+ position: "sRadio",
+ engine: _conf.list[t].engine[_n].id.toLowerCase(),
+ modId:"search"
+ };
+ if ($bd.hasClass("header-fixed-up")) {
+ utObj.sort = "header";
+ }
+ UT.send(utObj);
+ /*UT.send({
+ type: "click",
+ ac: "b",
+ position: "sRadio",
+ engine: _conf.list[t].engine[_n].id.toLowerCase(),
+ sort: _conf.conf.sort,
+ modId:"search"
+ });*/
+ });
+
+ //focus the input when init
+
+ //to let lv2 page NOT to auto focus SEARCH INPUT! by NE
+ if(o.autoFocus == null){
+ o.autoFocus = true; //default TRUE!
+ }
+ if(o.autoFocus) {
+ input.focus();
+ }
+
+ /*for header when fixed & width = 40px*/ // TODO
+ var $window = $(window),
+ recordTab = null, // 吸顶时刻如果tab不是web的话记录当前tab
+ restoreTo = function() { // 吸顶变正常时恢复之前的tab
+ if(recordTab) {
+ switchTab(recordTab);
+ } else {
+ switchTab($("a[data-t='web']", tabs), true);
+ logoGroup.removeClass("box-search_logos_show");
+ }
+ },
+ transTo = function() { // 正常变吸顶时切到web的tab
+ if (curTab.attr("data-t") != "web") {
+ recordTab = curTab;
+ switchTab($("a[data-t='web']", tabs));
+ } else {
+ recordTab = null;
+ switchTab($("a[data-t='web']", tabs), true);
+ logoGroup.removeClass("box-search_logos_show");
+ }
+ };
+
+ $window.on("headerFixed.transTo", function() {
+ transTo();
+ });
+ $window.on("headerFixed.restore", function() {
+ restoreTo();
+ });
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/search-box-head-radio.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/search-box-head-radio.tpl
new file mode 100755
index 000000000..951df7778
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/search-box-head-radio.tpl
@@ -0,0 +1,100 @@
+<%* 搜索引擎根据TN号显隐*%>
+<%foreach $body.searchBox.sBoxTag as $value%>
+ <%foreach $value.engine as $engine%>
+ <%if !empty($engine.tn[0].param)%>
+ <%foreach $engine.tn as $tn%>
+ <%if $tn.param == $root.urlparam.tn%>
+ <%$body.searchboxEngine[$engine.id] = 'true'%>
+ <%/if%>
+ <%/foreach%>
+ <%/if%>
+ <%/foreach%>
+<%/foreach%>
+
+<%assign var="sBoxTag" value=$body.searchBox.sBoxTag%>
+<%assign var="hSearchWords" value=$body.searchBox.hotSearchWords%>
+<%assign var="sBtnWords" value=$body.searchBox.searchBtnWords%>
+<%* 搜索框 --- 首屏模块 inline css*%>
+<%style%>
+ <%if $head.dir=='ltr'%>
+ @import url('/widget/search-box-head-radio/ltr/ltr_inline.css?__inline');
+ <%else%>
+ @import url('/widget/search-box-head-radio/rtl/rtl_inline.css?__inline');
+ <%/if%>
+<%/style%>
+
+<%widget name="common:widget/search-box-head-radio/`$head.dir`/`$head.dir`.tpl"%>
+<%if isset($sysInfo.country)%>
+<%widget name="common:widget/search-box-head-radio/`$sysInfo.country`/`$sysInfo.country`.tpl"%>
+<%/if%>
+<%script%>
+ require.async(["common:widget/ui/jquery/jquery.js", "common:widget/search-box-head-radio/search-box-head-radio-async.js"], function ($) {
+ var autoFocusSearch = true;
+ <%if $body.extAppMod%>
+ autoFocusSearch = false; //if app show DO NOT autoFocus
+ <%/if%>
+ <%if !empty($body.searchBox.sugUrl)%>
+ var head = document.getElementsByTagName("head")[0];
+ var requestScript = function(url, onsuccess, onerror, timeout) {
+
+ var script = document.createElement('script');
+ if (onerror) {
+ var tid = setTimeout(function() {
+ script.onload = script.onreadystatechange = script.onerror = null;
+ timeout();
+ }, 5000);
+
+ script.onerror = function() {
+ clearTimeout(tid);
+ onerror();
+ };
+
+ script.onload = script.onreadystatechange = function() {
+ if ( !script.readyState || /loaded|complete/.test( script.readyState ) ) {
+ script.onload = script.onreadystatechange = null;
+ script = undefined;
+ clearTimeout(tid);
+ onsuccess();
+ }
+ }
+ }
+ script.type = 'text/javascript';
+ script.src = url;
+ head.appendChild(script);
+ };
+
+ requestScript("<%$body.searchBox.sugUrl%>", function() {
+ baidu_sug.setMode('baidu');
+ baidu_sug.toggle(false);
+ Gl.searchGroup({
+ type: conf.pageType,
+ autoFocus: autoFocusSearch
+ });
+ UT && UT.send && UT.send({type: "others", modId: "search", position: "success"});
+ }, function() {
+ baidu_sug = false;
+ Gl.searchGroup({
+ type: conf.pageType,
+ autoFocus: autoFocusSearch
+ });
+ UT && UT.send && UT.send({type: "others", modId: "search", position: "error"});
+ }, function() {
+ baidu_sug = false;
+ Gl.searchGroup({
+ type: conf.pageType,
+ autoFocus: autoFocusSearch
+ });
+ UT && UT.send && UT.send({type: "others", modId: "search", position: "timeout"});
+ });
+ <%else%>
+ baidu_sug = false;
+ Gl.searchGroup({type: conf.pageType, autoFocus: autoFocusSearch});
+ <%/if%>
+
+ <%if !empty($body.searchBox.sugMoreUrl)%>
+ setTimeout(function() {
+ window["require"] && require.async("<%$body.searchBox.sugMoreUrl%>");
+ }, 1e3);
+ <%/if%>
+ });
+<%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/th/th.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/th/th.tpl
new file mode 100755
index 000000000..7b8b96d85
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/th/th.tpl
@@ -0,0 +1,375 @@
+
+<%if !empty($body.searchBox.tplUrl)%>
+ <%widget name="common:widget/search-box-4ps/`$sysInfo.country`/`$body.searchBox.tplUrl`/`$body.searchBox.tplUrl`.tpl"%>
+<%else%>
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+require.async('common:widget/ui/jquery/jquery.js', function () {
+conf.searchGroup = {
+ conf:{
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/th/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/th/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ }
+ <%if isset($body.searchBox.sort)%>, sort: "<%$body.searchBox.sort%>"<%/if%>
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ <%if !empty($engine.otherSug)%>otherSug:{mod: "<%$engine.otherSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+ sug: {
+ "hao123": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: null,
+ callbackFn: "window.bdsug.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod": "thai",
+ "cb": "window.bdsug.sug",
+ "haobd": jQuery.cookie("BAIDUID")
+ },
+ templ: false
+ },
+ "google_th": {
+ requestQuery: "q",
+ url: null,
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "hp",
+ "hl": "th",
+ "authuser": "0"
+ },
+ templ: false
+ },
+ "yahoo_web": {
+ autoCompleteData: false,
+ requestQuery: "command",
+ url: "http://sugg.us.search.yahoo.net/gossip-us-sayt/",
+ callbackFn: "fxsearch",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjsonp"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.co.th/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "th",
+ "client": "img",
+ "ds": "i",
+ "cp": "4"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "hao123_images": {
+ requestQuery: "wd",
+ url: "http://sugimg.hao123.co.th/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod": "image_thai"
+ },
+ templ: function(data) {
+ var _data = data["s"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "ps_video": {
+ requestQuery: "wd",
+ url: null,
+ callbackFn: "ps_video",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod" : "video_thai",
+ "sid": "",
+ "cb":"ps_video",
+ },
+ templ: false
+ },
+ "youtube": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "youtube",
+ "hl": "th",
+ "gl": "us",
+ "gs_nf": "1",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_video": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.co.th/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "video-hp",
+ "hl": "th",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "mthai": {
+ url: null
+ },
+ "4shared": {
+ requestQuery: "search",
+ url: "http://dc413.4shared.com/network/search-suggest.jsp",
+ callbackFn: "ajaxSuggestions.jsonpCallback",
+ callbackDataKey: "suggestions",
+ requestParas: {
+ "format": "jsonp"
+ },
+ customUrl: function(para) {
+ return this.o.url + "?search=" + btoa(this.q) + "&format=jsonp";
+ },
+ templ: function(data) {
+ var _data = data["suggestions"] || [],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "filestube": {
+ requestQuery: "q",
+ url: "http://149.13.65.144:8087",
+ callbackFn: "filestube123",
+ callbackDataKey: "r",
+ charset: "utf-8",
+ requestParas: {
+ "callback": "filestube123",
+ "t": +new Date
+ },
+ customUrl: function(para) {
+ return this.o.url + "/" + encodeURIComponent(this.q) + "?" + para.substr(1);
+ }
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.co.th/maps/suggest",
+ callbackFn: "_xdc_._bgnkibby8",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "2",
+ "hl": "th",
+ "gl": "th",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "ll": "21.902278,101.469727",
+ "spn": "5.706298,39.506836",
+ "auth": "ac0dbe60:A6KQ3ztz8bQ13_rnpShsJPs6jOU",
+ "src": "1",
+ "num": "5",
+ "numps": "5",
+ "callback": "_xdc_._bgnkibby8"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for(; i - ' + detail + '' : "";*/
+
+ ret.push('' + _data[i][0] + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "longdo_map": {
+ requestQuery: "key",
+ url: "http://search2.longdo.com/BWTSearch/HeadSearch",
+ callbackFn: "processJSONSuggest",
+ requestParas: {
+ "ds": "poi,poi2,poi3,s_pg",
+ "json": "1",
+ "num": "20",
+ "anyorder": "1",
+ "count": "19"
+ },
+ customUrl: function(para) {
+ return this.o.url + "?" + para.substr(1) + "&" + this.o.requestQuery + '=' + encodeURIComponent(this.q);
+ },
+ templ: function(data) {
+ var _data = data,
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length;
+
+ for(; i' + _data[i].d + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "longdo_dict": {
+ requestQuery: "key",
+ url: "http://search.longdo.com/BWTSearch/HeadSearch",
+ callbackFn: "processJSONSuggest",
+ requestParas: {
+ "json": "1",
+ "ds": "head",
+ "num": "20",
+ "count": "7"
+ },
+ customUrl: function(para) {
+ return this.o.url + "?" + para.substr(1) + "&" + this.o.requestQuery + '=' + encodeURIComponent(this.q);
+ },
+ templ: function(data) {
+ var _data = data,
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length;
+
+ for(; i' + _data[i].d + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_translate": {
+ url: null
+ },
+ "wiki": {
+ autoCompleteData: false,
+ requestQuery: "search",
+ url: "http://th.wikipedia.org/w/api.php",
+ callbackFn: "wikipedia.th",
+ callbackDataKey: "1",
+ requestParas: {
+ "action": "opensearch",
+ "namespace": "0",
+ "suggest": "",
+ "callback": "wikipedia.th"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "filmes": {
+ requestQuery: "wds",
+ url: "http://th.hao123.com/video/sug",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {},
+ templ: function(data) {
+ var _data = data["s"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ }
+ }
+}
+});
+<%/strip%>
+<%/script%>
+<%/if%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/tw/tw.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/tw/tw.tpl
new file mode 100755
index 000000000..cb6796f0f
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head-radio/tw/tw.tpl
@@ -0,0 +1,335 @@
+
+<%if !empty($body.searchBox.tplUrl)%>
+ <%widget name="common:widget/search-box-4ps/`$sysInfo.country`/`$body.searchBox.tplUrl`/`$body.searchBox.tplUrl`.tpl"%>
+<%else%>
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+require.async('common:widget/ui/jquery/jquery.js', function () {
+conf.searchGroup = {
+ conf:{
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/tw/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/tw/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ }
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+
+ sug: {
+ "google_web": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com.tw/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "hp",
+ "hl": "zh-TW"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_web": {
+ autoCompleteData: false,
+ requestQuery: "command",
+ url: "http://sugg.tw.search.yahoo.net/gossip-tw/",
+ callbackFn: "fxsearch",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjsonp"
+ }
+ },
+ "baidu": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://suggestion.baidu.com/su",
+ callbackFn: "window.bdsug.sug",
+ callbackDataKey: "s",
+ charset:"gbk",
+ requestParas: {
+ "cb": "window.bdsug.sug"
+ }
+ },
+ "google_news": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com.tw/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "serp",
+ "hl": "zh-TW",
+ "gs_nf": "1",
+ "ds": "n"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_news": {
+ autoCompleteData: false,
+ requestQuery: "command",
+ url: "http://sugg.tw.search.yahoo.net/gossip-tw-ura",
+ callbackFn: "fxsearch",
+ callbackDataKey: "1",
+ requestParas: {
+ "output": "fxjsonp",
+ "droprotated": "1",
+ "pubid": "184"
+ }
+ },
+ "baidu_news": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://nssug.baidu.com/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ charset:"gbk",
+ requestParas: {
+ "prod": "news"
+ }
+ },
+ "youtube": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "youtube",
+ "hl": "zh-TW",
+ "gl": "tw",
+ "gs_nf": "1",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_video": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com.tw/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "video-hp",
+ "hl": "zh-TW",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "baidu_video": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://nssug.baidu.com/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ charset:"gbk",
+ requestParas: {
+ "prod": "video"
+ }
+ },
+ "yahoo_images": {
+ autoCompleteData: false,
+ requestQuery: "command",
+ url: "http://sugg.tw.search.yahoo.net/gossip-tw",
+ callbackFn: "fxsearch",
+ callbackDataKey: "1",
+ requestParas: {
+ "output": "fxjsonp",
+ "pubid": "183"
+ }
+ },
+ "google_images": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com.tw/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "zh-TW",
+ "client": "img",
+ "gs_nf": "1",
+ "ds": "i"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "baidu_images": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://nssug.baidu.com/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ charset:"gbk",
+ requestParas: {
+ "prod": "image"
+ }
+ },
+ "facebook": {
+ url: null
+ },
+ "wiki": {
+ autoCompleteData: false,
+ requestQuery: "search",
+ url: "http://zh.wikipedia.org/w/api.php",
+ callbackFn: "wikipedia.zh",
+ callbackDataKey: "1",
+ requestParas: {
+ "action": "opensearch",
+ "namespace": "0",
+ "suggest": "",
+ "callback": "wikipedia.zh"
+ }
+ },
+ "baidu_baike": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://nssug.baidu.com/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ charset:"gbk",
+ requestParas: {
+ "prod": "baike"
+ }
+ },
+ "google_dict": {
+ url: null
+ },
+ "yahoo_dict": {
+ autoCompleteData: false,
+ requestQuery: "command",
+ url: "http://sugg.tw.search.yahoo.net/gossip-tw-pub_sayt",
+ callbackFn: "fxsearch",
+ callbackDataKey: "1",
+ requestParas: {
+ "output": "fxjsonp",
+ "pubid": "560"
+ }
+ },
+ "baidu_dict": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://dictsug.baidu.com/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ charset:"gbk",
+ requestParas: {
+ }
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.com.tw/maps/suggest",
+ callbackFn: "googleMapCallback",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "1",
+ "hl": "zh-TW",
+ "gl": "tw",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "vpsrc": "1",
+ "src": "1",
+ "num": "10",
+ "numps": "3",
+ "callback": "googleMapCallback"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for(; i - ' + detail + '' : "";
+
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_map": {
+ url: null
+ }
+ }
+}
+});
+<%/strip%>
+<%/script%>
+<%/if%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/ae/ae.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/ae/ae.tpl
new file mode 100755
index 000000000..9a172407e
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/ae/ae.tpl
@@ -0,0 +1,244 @@
+
+<%if !empty($body.searchBox.tplUrl)%>
+ <%widget name="common:widget/search-box/`$sysInfo.country`/`$body.searchBox.tplUrl`/`$body.searchBox.tplUrl`.tpl"%>
+<%else%>
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+conf.searchGroup = {
+ conf: {
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/ae/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 8
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/ae/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 8
+ }
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+ sug: {
+ "google": {
+ requestQuery: "q",
+ url: "http://clients1.google.ae/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataNum: 1,
+ requestParas: {
+ "client": "hp",
+ "hl": "ar",
+ "authuser": "0"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0] + ' ')
+ }
+
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo": {
+ requestQuery: "command",
+ url: "http://sugg.us.search.yahoo.net/gossip-us-ura",
+ callbackFn: "YUI.Env.DataSource.callbacks.yui_3_3_0_1_1312871021408973",
+ callbackDataKey: "r",
+ requestParas: {
+ "output": "yjsonp",
+ "callback": "YUI.Env.DataSource.callbacks.yui_3_3_0_1_1312871021408973"
+ },
+ templ: function(data) {
+ var _data = data["r"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "youtube": {
+ requestQuery: "q",
+ url: "http://suggestqueries.google.com/complete/search",
+ callbackFn: "window.yt.www.suggest.handleResponse",
+ callbackDataNum: 1,
+ requestParas: {
+ "hl": "ar",
+ "ds": "yt",
+ "client": "youtube",
+ "hjson": "t",
+ "jsonp": "window.yt.www.suggest.handleResponse",
+ "cp": "2"
+ },
+
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_video": {
+ requestQuery: "command",
+ url: "http://gossip-ss.us.search.yahoo.com/gossip-us_ss/",
+ callbackFn: "fxsearch",
+ callbackDataNum: 1,
+ requestParas: {
+ "nresults": 8,
+ "output": "fxjsonp"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i].replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.ae/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "ar",
+ "client": "img",
+ "sugexp": "gsihc"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_images": {
+ requestQuery: "command",
+ url: "http://gossip-ss.us.search.yahoo.com/gossip-us_ss",
+ callbackFn: "YUI.Env.DataSource.callbacks.yui_3_5_1_1_1354169017899_293",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjsonp",
+ "nresults": 10,
+ "callback": "{callback}",
+ "callback": "YUI.Env.DataSource.callbacks.yui_3_5_1_1_1354169017899_293",
+ "pubid": 103,
+ "queryfirst": 1
+ }
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.ae/maps/suggest",
+ callbackFn: "_xdc_._bgnkibby8",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "2",
+ "hl": "ar",
+ "gl": "ar",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "ll": "21.902278,101.469727",
+ "spn": "5.706298,39.506836",
+ "auth": "ac0dbe60:A6KQ3ztz8bQ13_rnpShsJPs6jOU",
+ "src": "1",
+ "num": "5",
+ "numps": "5",
+ "callback": "_xdc_._bgnkibby8"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for (; i < len; i++) {
+ try {
+ detail = _data[i][9][0][0] || _data[i][9][0] || _data[i][9] || "";
+ } catch (e) {
+ detail = ""
+ }
+
+ detail = detail ? ' - ' + detail + ' ' : "";
+
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "wikimapia": {
+ url: null
+ },
+ "wiki_ar": {
+ requestQuery: "search",
+ url: "http://ar.wikipedia.org/w/api.php",
+ callbackFn: "wikipedia.ar",
+ callbackDataNum: 1,
+ requestParas: {
+ "action": "opensearch",
+ "namespace": "0",
+ "suggest": "",
+ "callback": "wikipedia.ar"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i].replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_translate": {
+ url: null
+ }
+ }
+}
+<%/strip%>
+<%/script%>
+<%/if%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/ar/ar.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/ar/ar.tpl
new file mode 100755
index 000000000..517336887
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/ar/ar.tpl
@@ -0,0 +1,312 @@
+<%if !empty($body.searchBox.tplUrl)%>
+ <%widget name="common:widget/search-box/`$sysInfo.country`/`$body.searchBox.tplUrl`/`$body.searchBox.tplUrl`.tpl"%>
+<%else%>
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+require.async('common:widget/ui/jquery/jquery.js', function () {
+conf.searchGroup = {
+ conf: {
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/ar/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/ar/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ }
+ <%if isset($body.searchBox.sort)%>, sort: "<%$body.searchBox.sort%>"<%/if%>
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ <%if !empty($engine.otherSug)%>otherSug:{mod: "<%$engine.otherSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+ sug: {
+ "hao123": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: null,
+ callbackFn: "window.bdsug.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod": "eg",
+ "cb": "window.bdsug.sug",
+ "haobd": jQuery.cookie("BAIDUID")
+ },
+ templ: false
+ },
+ "google": {
+ requestQuery: "q",
+ url: null,
+ callbackFn: "window.google.ac.h",
+ callbackDataNum: 1,
+ requestParas: {
+ "client": "hp",
+ "hl": "ar",
+ "authuser": "0"
+ },
+ templ: false
+ },
+ "yahoo": {
+ requestQuery: "command",
+ url: "http://sugg.us.search.yahoo.net/gossip-us-ura",
+ callbackFn: "YUI.Env.DataSource.callbacks.yui_3_3_0_1_1312871021408973",
+ callbackDataKey: "r",
+ requestParas: {
+ "output": "yjsonp",
+ "callback": "YUI.Env.DataSource.callbacks.yui_3_3_0_1_1312871021408973"
+ },
+ templ: function(data) {
+ var _data = data["r"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "ps_video": {
+ requestQuery: "wd",
+ url: null,
+ callbackFn: "ps_video",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod" : "video_eg",
+ "sid": "",
+ "cb":"ps_video",
+ },
+ templ: false
+ },
+ "youtube": {
+ requestQuery: "q",
+ url: "http://suggestqueries.google.com/complete/search",
+ callbackFn: "window.yt.www.suggest.handleResponse",
+ callbackDataNum: 1,
+ requestParas: {
+ "hl": "ar",
+ "ds": "yt",
+ "client": "youtube",
+ "hjson": "t",
+ "jsonp": "window.yt.www.suggest.handleResponse",
+ "cp": "2"
+ },
+
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_video": {
+ requestQuery: "command",
+ url: "http://gossip-ss.us.search.yahoo.com/gossip-us_ss/",
+ callbackFn: "fxsearch",
+ callbackDataNum: 1,
+ requestParas: {
+ "nresults": 8,
+ "output": "fxjsonp"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.com.eg/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "ar",
+ "client": "img",
+ "sugexp": "gsihc"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "hao123_images": {
+ requestQuery: "wd",
+ url: "http://10.247.1.38:8333/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod" : "image_eg"
+ },
+ templ: function(data) {
+ var _data = data["s"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_images": {
+ requestQuery: "command",
+ url: "http://gossip-ss.us.search.yahoo.com/gossip-us_ss",
+ callbackFn: "YUI.Env.DataSource.callbacks.yui_3_5_1_1_1354169017899_293",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjsonp",
+ "nresults": 10,
+ "callback": "{callback}",
+ "callback": "YUI.Env.DataSource.callbacks.yui_3_5_1_1_1354169017899_293",
+ "pubid": 103,
+ "queryfirst": 1
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.com.eg/maps/suggest",
+ callbackFn: "_xdc_._bgnkibby8",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "2",
+ "hl": "ar",
+ "gl": "ar",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "ll": "21.902278,101.469727",
+ "spn": "5.706298,39.506836",
+ "auth": "ac0dbe60:A6KQ3ztz8bQ13_rnpShsJPs6jOU",
+ "src": "1",
+ "num": "5",
+ "numps": "5",
+ "callback": "_xdc_._bgnkibby8"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for (; i < len; i++) {
+ try {
+ detail = _data[i][9][0][0] || _data[i][9][0] || _data[i][9] || "";
+ } catch (e) {
+ detail = ""
+ }
+
+ /*detail = detail ? ' - ' + detail + ' ' : "";*/
+
+ ret.push('' + _data[i][0] + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "wikimapia": {
+ url: null
+ },
+ "wiki_ar": {
+ requestQuery: "search",
+ url: "http://ar.wikipedia.org/w/api.php",
+ callbackFn: "wikipedia.ar",
+ callbackDataNum: 1,
+ requestParas: {
+ "action": "opensearch",
+ "namespace": "0",
+ "suggest": "",
+ "callback": "wikipedia.ar"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_translate": {
+ url: null
+ },
+ "filmes": {
+ requestQuery: "wds",
+ url: "http://ar.hao123.com/movie/sug",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ },
+ templ: function(data) {
+ var _data = data["s"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ }
+ }
+}
+});
+<%/strip%>
+<%/script%>
+<%/if%>
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/br/br.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/br/br.tpl
new file mode 100755
index 000000000..3707fb3e0
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/br/br.tpl
@@ -0,0 +1,319 @@
+<%if !empty($body.searchBox.tplUrl)%>
+ <%widget name="common:widget/search-box/`$sysInfo.country`/`$body.searchBox.tplUrl`/`$body.searchBox.tplUrl`.tpl"%>
+<%else%>
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+require.async('common:widget/ui/jquery/jquery.js', function () {
+conf.searchGroup = {
+ conf:{
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/br/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/br/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ }
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ <%if !empty($engine.otherSug)%>otherSug:{mod: "<%$engine.otherSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+ sug: {
+ "hao123": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: null,
+ callbackFn: "window.bdsug.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod": "br",
+ "cb": "window.bdsug.sug",
+ "haobd": jQuery.cookie("BAIDUID")
+ },
+ templ: false
+ },
+ "google_br": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: null,
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "pt-BR",
+ "sugexp": "lemsnc",
+ "xhr": "f"
+ },
+ templ: false
+ },
+ "yahoo_web": {
+ autoCompleteData: false,
+ requestQuery: "command",
+ url: "http://sugg.br.search.yahoo.net/gossip-br-sayt/",
+ callbackFn: "fxsearch",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjsonp"
+ }
+ },
+ "4shared": {
+ requestQuery: "search",
+ url: "http://dc413.4shared.com/network/search-suggest.jsp",
+ callbackFn: "ajaxSuggestions.jsonpCallback",
+ callbackDataKey: "suggestions",
+ requestParas: {
+ "format": "jsonp"
+ },
+ customUrl: function(para) {
+ return this.o.url + "?search=" + btoa(this.q) + "&format=jsonp";
+ }
+ },
+ "ps_video": {
+ requestQuery: "wd",
+ url: null,
+ callbackFn: "ps_video",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod" : "video_br",
+ "sid": "",
+ "cb":"ps_video",
+ },
+ templ: false
+ },
+ "youtube": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "youtube",
+ "hl": "pt",
+ "gl": "br",
+ "gs_nf": "1",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_video": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com.br/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "video-hp",
+ "hl": "pt-BR",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "kboing": {
+ url: null
+ },
+ "google_dict": {
+ url: null
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.com.br/maps/suggest",
+ callbackFn: "_xdc_._bgnkibby8",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "100",
+ "hl": "pt-BR",
+ "gl": "br",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "ll": "-14.239424,-53.186502",
+ "spn": "24.779743,86.572266",
+ "auth": "ac0dbe60:A6KQ3ztz8bQ13_rnpShsJPs6jOU",
+ "src": "1",
+ "num": "10",
+ "callback": "_xdc_._bgnkibby8"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for(; i - ' + detail + '' : "";
+
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.com.br/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "img",
+ "ds": "i",
+ "hl": "pt-BR"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "hao123_images": {
+ requestQuery: "wd",
+ url: "http://sugimg.hao123.com.br/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod" : "image_brazil"
+ },
+ templ: function(data) {
+ var _data = data["s"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "postbar": {
+ url: null
+ },
+ "filmes": {
+ requestQuery: "wds",
+ url: "http://br.hao123.com/movie/sug",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ }
+ },
+ "americanas": {
+ requestQuery: "q",
+ url: "http://busca.americanas.com.br/autocomplete/search.php",
+ callbackFn: "window.americanas",
+ callbackDataKey: "sugestoes",
+ requestParas: {
+ "prod" : "image_brazil",
+ "type": "1",
+ "numsugestoes": "12",
+ "numprods": "0",
+ "callback":"window.americanas"
+ },
+ templ: function(data, q) {
+ var _data = data["sugestoes"] || [],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i].consulta.replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "walmart": {
+ url: null
+ },
+ "netshoes": {
+ url: null
+ },
+ "buscape": {
+ url: null
+ },
+ "zoom": {
+ requestQuery: "q",
+ url: "http://s.zst.com.br/static/autocomplete-index-r/.js",
+ callbackFn: "zoomAutoCompleteBlackBoard.notify",
+ callbackDataKey: "completions",
+ customUrl: function(para) {
+ var str = this.q.split("").join("/") + ".js?_=" + +new Date;
+ return this.o.url.replace(".js", str);
+ },
+ templ: function(data) {
+ var _data = data["completions"] || [],
+ ret = [],
+ i = 0,
+ q = data["key"],
+ tmp = "",
+ len = _data.length;
+ var isStr = function(value){
+ return typeof value === 'string';
+ };
+ for(; i' + tmp.replace(q, '' + q + ' ') + '');
+ }
+ return '' + ret.join("") + ' ';
+ }
+ }
+ }
+}
+});
+<%/strip%>
+<%/script%>
+<%/if%>
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/br/minilogo/minilogo.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/br/minilogo/minilogo.tpl
new file mode 100755
index 000000000..bdfe503c2
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/br/minilogo/minilogo.tpl
@@ -0,0 +1,316 @@
+
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+conf.searchGroup = {
+ conf:{
+ index: {
+ logoPath: "/resource/fe/br/minilogo/search_logo/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ },
+ lv2: {
+ logoPath: "/resource/fe/br/minilogo/search_logo/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ }
+ },
+ list: {
+
+ "web": {
+ "hotWords": "<%$body.searchBox.sBoxTag[0].hotWords%>",
+ "engine": [{
+ name: "Google Brasil",
+ logo: "google_br",
+ url: "http://www.google.com.br/",
+ action: "http://www.google.com.br/search",
+ params: {
+ "hl": "pt-BR"
+ },
+ q: "q",
+
+ sug: {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com.br/s",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "pt-BR",
+ "sugexp": "lemsnc",
+ "xhr": "f"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ }
+ }, {
+ name: "Yahoo",
+ logo: "yahoo_web",
+ url: "http://br.yahoo.com/",
+ action: "http://br.search.yahoo.com/search",
+ params: {
+ },
+ q: "p",
+ sug: {
+ autoCompleteData: false,
+ requestQuery: "command",
+ url: "http://sugg.br.search.yahoo.net/gossip-br-sayt/",
+ callbackFn: "fxsearch",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjsonp"
+ }
+ }
+ }
+ ]
+ },
+
+ "downloads": {
+ "hotWords": "<%$body.searchBox.sBoxTag[1].hotWords%>",
+ "engine": [{
+ name: "4shared",
+ logo: "4shared",
+ url: "http://www.4shared.com/",
+ action: "http://search.4shared.com/q/1/#{q}",
+ params: {
+ },
+ q: "q",
+ sug: {
+ requestQuery: "search",
+ url: "http://dc413.4shared.com/network/search-suggest.jsp",
+ callbackFn: "ajaxSuggestions.jsonpCallback",
+ callbackDataKey: "suggestions",
+ requestParas: {
+ "format": "jsonp"
+ },
+ customUrl: function(para) {
+ return this.o.url + "?search=" + btoa(this.q) + "&format=jsonp";
+ }
+ }
+ }]
+ },
+
+ "video": {
+ "hotWords": "<%$body.searchBox.sBoxTag[2].hotWords%>",
+ "engine": [{
+ name: "YouTube",
+ logo: "youtube",
+ url: "http://www.youtube.com/?gl=BR&hl=pt",
+ action: "http://www.youtube.com/results",
+ params: {
+ },
+ q: "search_query",
+ sug: {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "google.sbox.p0 && google.sbox.p0",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "youtube",
+ "hl": "pt",
+ "gl": "br",
+ "gs_nf": "1",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ }
+ },{
+ name: "Google Vídeos",
+ logo: "google_video",
+ url: "http://www.google.com.br/videohp?hl=pt-BR",
+ action: "http://www.google.com.br/search?",
+ params: {
+ "tbm": "vid",
+ "hl": "pt-BR"
+ },
+ q: "q",
+ sug: {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com.br/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "video-hp",
+ "hl": "pt-BR",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ }
+ }]
+ },
+ "music": {
+ "hotWords": "<%$body.searchBox.sBoxTag[3].hotWords%>",
+ "engine": [{
+ name: "kboing",
+ logo: "kboing",
+ url: "http://www.kboing.com.br/",
+ action: "http://www.kboing.com.br/searchmusic.php?",
+ params: {
+ "tb": "musica"
+ },
+ q: "q",
+ sug: {
+ url: null
+ }
+
+ }]
+ },
+ "translator": {
+ "hotWords": "<%$body.searchBox.sBoxTag[4].hotWords%>",
+ "engine": [{
+ name: "Google Tradutor",
+ logo: "google_dict",
+ url: "http://translate.google.com.br/?hl=pt-BR&tab=nT",
+ action: "http://translate.google.com.br/",
+ params: {
+ hl: "pt-BR"
+ },
+ q: "q",
+ sug: {
+ url: null
+ }
+ }]
+ },
+
+ "map": {
+ "hotWords": "<%$body.searchBox.sBoxTag[5].hotWords%>",
+ "engine": [{
+ name: "Google Mapas",
+ logo: "google_map",
+ url: "http://maps.google.com.br/maps?hl=pt-BR&tab=Tl",
+ action: "http://maps.google.com.br/maps",
+ params: {
+ "hl": "pt-BR"
+ },
+ q: "q",
+ sug: {
+ requestQuery: "q",
+ url: "http://maps.google.com.br/maps/suggest",
+ callbackFn: "_xdc_._bgnkibby8",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "100",
+ "hl": "pt-BR",
+ "gl": "br",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "ll": "-14.239424,-53.186502",
+ "spn": "24.779743,86.572266",
+ "auth": "ac0dbe60:A6KQ3ztz8bQ13_rnpShsJPs6jOU",
+ "src": "1",
+ "num": "10",
+ "callback": "_xdc_._bgnkibby8"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for(; i - ' + detail + '' : "";
+
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ }
+ }]
+ },
+
+ "images": {
+ "hotWords": "<%$body.searchBox.sBoxTag[6].hotWords%>",
+ "engine": [{
+ name: "Google Imagens",
+ logo: "google_images",
+ url: "http://www.google.com.br/imghp?hl=pt-BR&tab=wi",
+ action: "http://www.google.com.br/search?",
+ params: {
+ "tbm": "isch",
+ "hl": "pt-BR"
+ },
+ q: "q",
+ sug: {
+ requestQuery: "q",
+ url: "http://clients1.google.com.br/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "img",
+ "ds": "i",
+ "hl": "pt-BR"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ }
+ }]
+ },
+
+ "post": {
+ "hotWords": "<%$body.searchBox.sBoxTag[7].hotWords%>",
+ "engine": [{
+ name: "Postbar",
+ logo: "postbar",
+ url: "http://br.tieba.com",
+ action: "http://br.tieba.com/frs/index?",
+ params: {
+ },
+ q: "kw",
+ sug: {
+ url: null
+ }
+ }]
+ }
+ }
+}
+<%/strip%>
+<%/script%>
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/en/en.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/en/en.tpl
new file mode 100755
index 000000000..b09cfcea8
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/en/en.tpl
@@ -0,0 +1,178 @@
+
+<%if !empty($body.searchBox.tplUrl)%>
+ <%widget name="common:widget/search-box/`$sysInfo.country`/`$body.searchBox.tplUrl`/`$body.searchBox.tplUrl`.tpl"%>
+<%else%>
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+conf.searchGroup = {
+ conf:{
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/en/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/en/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ }
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+ sug: {
+ "google_web": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "hp",
+ "hl": "en"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_images": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "en",
+ "client": "img",
+ "gs_nf": "1",
+ "ds": "i"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.com/maps/suggest",
+ callbackFn: "googleMapCallback",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "1",
+ "hl": "en",
+ "gl": "",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "vpsrc": "1",
+ "src": "1",
+ "num": "10",
+ "numps": "3",
+ "callback": "googleMapCallback"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for(; i - ' + detail + '' : "";
+
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "youtube": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "youtube",
+ "hl": "en",
+ "gl": "US",
+ "gs_nf": "1",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_news": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "serp",
+ "hl": "en",
+ "gs_nf": "1",
+ "ds": "n"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ }
+ }
+}
+<%strip%>
+<%/script%>
+<%/if%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/id/id.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/id/id.tpl
new file mode 100755
index 000000000..26f6ddbeb
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/id/id.tpl
@@ -0,0 +1,193 @@
+
+<%if !empty($body.searchBox.tplUrl)%>
+ <%widget name="common:widget/search-box/`$sysInfo.country`/`$body.searchBox.tplUrl`/`$body.searchBox.tplUrl`.tpl"%>
+<%else%>
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+conf.searchGroup = {
+ conf:{
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/id/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/id/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ }
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+ sug: {
+ "google": {
+ requestQuery: "q",
+ url: "http://clients1.google.co.id/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "serp",
+ "hl": "id"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.co.id/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "img",
+ "ds": "i",
+ "hl": "id"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.co.id/maps/suggest",
+ callbackFn: "googleMapCallback",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "1",
+ "hl": "id",
+ "gl": "id",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "vpsrc": "1",
+ "src": "1",
+ "num": "10",
+ "numps": "3",
+ "callback": "googleMapCallback"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for(; i - ' + detail + '' : "";
+
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "youtube": {
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "youtubeCallback",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "id",
+ "client": "youtube",
+ "gl": "id",
+ "ds": "yt",
+ "callback": "youtubeCallback",
+ "cp": "1"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "4shared": {
+ requestQuery: "search",
+ url: "http://dc446.4shared.com/network/search-suggest.jsp",
+ callbackFn: "ajaxSuggestions.jsonpCallback",
+ callbackDataKey: "suggestions",
+ requestParas: {
+ "format": "jsonp"
+ },
+ customUrl: function(para) {
+ return this.o.url + "?search=" + btoa(this.q) + "&format=jsonp";
+ }
+ },
+ "google_dict": {
+ url: null
+ },
+ "yahoo_web": {
+ autoCompleteData: false,
+ requestQuery: "command",
+ url: "http://sugg.id.search.yahoo.com/gossip-id-sayt/",
+ callbackFn: "fxsearch",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjsonp"
+ }
+ },
+ "wiki": {
+ autoCompleteData: false,
+ requestQuery: "search",
+ url: "http://id.wikipedia.org/w/api.php",
+ callbackFn: "wikipedia.id",
+ callbackDataKey: "1",
+ requestParas: {
+ "action": "opensearch",
+ "namespace": "0",
+ "suggest": "",
+ "callback": "wikipedia.id",
+ "format":"json"
+ }
+ },
+ "google_news": {
+ url: null
+ }
+ }
+}
+<%/strip%>
+<%/script%>
+<%/if%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/bg-search-btn-click.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/bg-search-btn-click.png
new file mode 100755
index 000000000..7828b5d56
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/bg-search-btn-click.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/bg-search-btn-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/bg-search-btn-hover.png
new file mode 100755
index 000000000..d11e540ed
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/bg-search-btn-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/bg-search-btn-side-click.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/bg-search-btn-side-click.png
new file mode 100755
index 000000000..b66706676
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/bg-search-btn-side-click.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/bg-search-btn-side-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/bg-search-btn-side-hover.png
new file mode 100755
index 000000000..693ac8896
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/bg-search-btn-side-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/bg-search-btn-side.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/bg-search-btn-side.png
new file mode 100755
index 000000000..d2b3c4f93
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/bg-search-btn-side.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/bg-search-btn.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/bg-search-btn.png
new file mode 100755
index 000000000..e0d576570
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/bg-search-btn.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/i-close-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/i-close-hover.png
new file mode 100755
index 000000000..c6f540558
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/i-close-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/i-close.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/i-close.png
new file mode 100755
index 000000000..159ed3112
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/i-close.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/i-custom-hide.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/i-custom-hide.png
new file mode 100755
index 000000000..608993755
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/i-custom-hide.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/i-custom-show.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/i-custom-show.png
new file mode 100755
index 000000000..b21b98c98
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/i-custom-show.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/i-search-click.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/i-search-click.png
new file mode 100755
index 000000000..31d004952
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/i-search-click.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/i-search-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/i-search-hover.png
new file mode 100755
index 000000000..a01e36716
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/i-search-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/i-search.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/i-search.png
new file mode 100755
index 000000000..b3a7a12cd
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/i-search.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/more_trigger-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/more_trigger-hover.png
new file mode 100755
index 000000000..cd547fd4b
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/more_trigger-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/more_trigger.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/more_trigger.png
new file mode 100755
index 000000000..46f160b21
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/img/more_trigger.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/jp/jp.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/jp/jp.tpl
new file mode 100755
index 000000000..bd7645ecd
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/jp/jp.tpl
@@ -0,0 +1,355 @@
+
+<%if !empty($body.searchBox.tplUrl)%>
+ <%widget name="common:widget/search-box/`$sysInfo.country`/`$body.searchBox.tplUrl`/`$body.searchBox.tplUrl`.tpl"%>
+<%else%>
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+conf.searchGroup = {
+ conf:{
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/jp/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/jp/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ },
+ tn: {
+ timeStamp: "<%$sysInfo.baiduidCt%>",
+ serverTime: "<%$sysInfo.serverTime%>",
+ isInList:<%if !empty($root.urlparam.tn) && !empty($head.confTn) && in_array($root.urlparam.tn,explode("|", $head.confTn))%>1<%else%>0<%/if%>,
+ timeInterval: 1209600
+ }
+
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+
+ sug: {
+ "google_jp": {
+ requestQuery: "q",
+ url: "http://clients1.google.co.jp/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "serp",
+ "hl": "ja"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_jp": {
+ requestQuery: "p",
+ url: "http://suggest.search.yahooapis.jp/SuggestSearchService/V3/webassistSearch",
+ callbackFn: "yahooSuggest",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjson",
+ "src": "srch",
+ "ei": "UTF-8",
+ "appid": "GEI3l.2xg673b7_tjztd7mGq8if5tIPm86vXPjoW7cwqM6jdkuEfO73_xNbz8QA-",
+ "n": 11,
+ "callback": "yahooSuggest"
+ }
+ },
+ "baidu_jp": {
+ requestQuery: "wd",
+ url: "http://sug.baidu.jp/su?",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ }
+ },
+ "google_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.co.jp/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "img",
+ "ds": "i",
+ "hl": "ja"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_images": {
+ requestQuery: "query",
+ url: "http://suggest.search.yahooapis.jp/SuggestSearchService/V3/webassistSearch",
+ callbackFn: "yahooImgSuggest",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "json",
+ "src": "isrch",
+ "ei": "UTF-8",
+ "appid": "GEI3l.2xg673b7_tjztd7mGq8if5tIPm86vXPjoW7cwqM6jdkuEfO73_xNbz8QA-",
+ "resulsts": 10,
+ "callback": "yahooImgSuggest"
+ }
+ },
+ "baidu_images": {
+ requestQuery: "wd",
+ url: "http://image.baidu.jp/su?",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ }
+ },
+ "youtube": {
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "youtubeCallback",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "ja",
+ "client": "youtube",
+ "gl": "jp",
+ "ds": "yt",
+ "callback": "youtubeCallback",
+ "cp": "1"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_video": {
+ requestQuery: "query",
+ url: "http://suggest.search.yahooapis.jp/SuggestSearchService/V3/webassistSearch",
+ callbackFn: "yahooVideoSuggest",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "json",
+ "src": "vsrch",
+ "ei": "UTF-8",
+ "appid": "GEI3l.2xg673b7_tjztd7mGq8if5tIPm86vXPjoW7cwqM6jdkuEfO73_xNbz8QA-",
+ "resulsts": 10,
+ "callback": "yahooVideoSuggest"
+ }
+ },
+ "baidu_video": {
+ requestQuery: "wd",
+ url: "http://video.baidu.jp/su?",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ }
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.co.jp/maps/suggest",
+ callbackFn: "googleMapCallback",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "1",
+ "hl": "ja",
+ "gl": "jp",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "vpsrc": "1",
+ "src": "1",
+ "num": "10",
+ "numps": "3",
+ "callback": "googleMapCallback"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for(; i - ' + detail + '' : "";
+
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_news": {
+ requestQuery: "q",
+ url: "http://clients1.google.co.jp/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "serp",
+ "ds": "n",
+ "hl": "ja"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_dict": {
+ url: null
+ },
+ "yahoo_dict": {
+ requestQuery: "query",
+ url: "http://suggest.search.yahooapis.jp/SuggestSearchService/V3/webassistSearch",
+ callbackFn: "yahooDictSuggest",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "json",
+ ".src": "dic_all",
+ "appid": "GEI3l.2xg673b7_tjztd7mGq8if5tIPm86vXPjoW7cwqM6jdkuEfO73_xNbz8QA-",
+ "crumb": "QKHAOjMgzamLb0jiQkkwyVvZN_UvDCDclNTtYF_zmIZt96JRlxPpz5OweLONIHfY82xzaoagN2EPsJ.006TjkYwNEmA-",
+ "resulsts": 10,
+ "callback": "yahooDictSuggest"
+ }
+ },
+ "yahoo_chiebukuro": {
+ url: null
+ },
+ "yahoo_auctions": {
+ requestQuery: "query",
+ url: "http://suggest.search.yahooapis.jp/SuggestSearchService/V3/webassistSearch",
+ callbackFn: "yahooSuggest",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "json",
+ ".src": "auc",
+ "appid": "Hy5EaxCxg66QNDm0cEojk3JOZS470WbaRqWtIpaQ4Tc7s8v6IK8AO45lFd3bwAwJzlZc",
+ "resulsts": 10,
+ "callback": "yahooSuggest"
+ }
+ },
+ "amazon_shopping": {
+ requestQuery: "q",
+ url: "http://completion.amazon.co.jp/search/complete",
+ callbackFn: "amazonShoppingCallback",
+ callbackDataKey: 1,
+ requestParas: {
+ "method": "completion",
+ "search-alias" : "aps",
+ "mkt": 6,
+ "callback": "amazonShoppingCallback"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "rakuten_shopping": {
+ requestQuery: "q",
+ url: "http://api.suggest.search.rakuten.co.jp/suggest",
+ callbackFn: "rakutenShoppingCallback",
+ callbackDataKey: "result",
+ requestParas: {
+ "cl": "dir",
+ "rid": "1252328571",
+ "sid": "1",
+ "oe": "euc-jp",
+ "cb": "rakutenShoppingCallback"
+ },
+ templ: function(data) {
+ var _data = data["result"] || [],
+ q = _data["input"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_shopping": {
+ requestQuery: "p",
+ url: "http://suggest.shop.yahooapis.jp/Shopping/Suggest/V1/suggester",
+ callbackFn: "getJsonData",
+ callbackDataNum: 1,
+ requestParas: {
+ "callback":"getJsonData",
+ "output": "json",
+ "start": "1",
+ "result": "10",
+ ".src": "shp",
+ "brand": "0",
+ "da": "0",
+ "prod": "0",
+ "appid": "dj0zaiZpPWIyYVBwSXI3bmdqYSZzPWNvbnN1bWVyc2VjcmV0Jng9YWU-"
+ },
+ templ: function(data) {
+ var _data = data[1][0].keyword || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i].replace(q, '' + q + ' ') + '');
+ }
+ return '' + ret.join("") + ' ';
+ }
+ }
+ }
+};
+<%/strip%>
+<%/script%>
+<%/if%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/jp/with-google/with-google.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/jp/with-google/with-google.tpl
new file mode 100755
index 000000000..5479a9f75
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/jp/with-google/with-google.tpl
@@ -0,0 +1,276 @@
+
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+conf.searchGroup = {
+ conf:{
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/jp/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/jp/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ },
+ tn: {
+ timeStamp: "<%$sysInfo.baiduidCt%>",
+ serverTime: "<%$sysInfo.serverTime%>",
+ isInList:<%if !empty($root.urlparam.tn) && !empty($head.confTn) && in_array($root.urlparam.tn,explode("|", $head.confTn))%>1<%else%>0<%/if%>,
+ timeInterval: 1209600
+ }
+
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+
+ sug: {
+ "google_jp": {
+ requestQuery: "q",
+ url: "http://clients1.google.co.jp/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "serp",
+ "hl": "ja"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_jp": {
+ requestQuery: "p",
+ url: "http://suggest.search.yahooapis.jp/SuggestSearchService/V3/webassistSearch",
+ callbackFn: "yahooSuggest",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjson",
+ "src": "srch",
+ "ei": "UTF-8",
+ "appid": "GEI3l.2xg673b7_tjztd7mGq8if5tIPm86vXPjoW7cwqM6jdkuEfO73_xNbz8QA-",
+ "n": 11,
+ "callback": "yahooSuggest"
+ }
+ },
+ "baidu_jp": {
+ requestQuery: "wd",
+ url: "http://sug.baidu.jp/su?",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ }
+ },
+ "google_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.co.jp/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "img",
+ "ds": "i",
+ "hl": "ja"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_images": {
+ requestQuery: "query",
+ url: "http://suggest.search.yahooapis.jp/SuggestSearchService/V3/webassistSearch",
+ callbackFn: "yahooImgSuggest",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "json",
+ "src": "isrch",
+ "ei": "UTF-8",
+ "appid": "GEI3l.2xg673b7_tjztd7mGq8if5tIPm86vXPjoW7cwqM6jdkuEfO73_xNbz8QA-",
+ "resulsts": 10,
+ "callback": "yahooImgSuggest"
+ }
+ },
+ "baidu_images": {
+ requestQuery: "wd",
+ url: "http://image.baidu.jp/su?",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ }
+ },
+ "youtube": {
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "youtubeCallback",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "ja",
+ "client": "youtube",
+ "gl": "jp",
+ "ds": "yt",
+ "callback": "youtubeCallback",
+ "cp": "1"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_video": {
+ requestQuery: "query",
+ url: "http://suggest.search.yahooapis.jp/SuggestSearchService/V3/webassistSearch",
+ callbackFn: "yahooVideoSuggest",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "json",
+ "src": "vsrch",
+ "ei": "UTF-8",
+ "appid": "GEI3l.2xg673b7_tjztd7mGq8if5tIPm86vXPjoW7cwqM6jdkuEfO73_xNbz8QA-",
+ "resulsts": 10,
+ "callback": "yahooVideoSuggest"
+ }
+ },
+ "baidu_video": {
+ requestQuery: "wd",
+ url: "http://video.baidu.jp/su?",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ }
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.co.jp/maps/suggest",
+ callbackFn: "googleMapCallback",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "1",
+ "hl": "ja",
+ "gl": "jp",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "vpsrc": "1",
+ "src": "1",
+ "num": "10",
+ "numps": "3",
+ "callback": "googleMapCallback"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for(; i - ' + detail + '' : "";
+
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_news": {
+ requestQuery: "q",
+ url: "http://clients1.google.co.jp/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "serp",
+ "ds": "n",
+ "hl": "ja"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_dict": {
+ url: null
+ },
+ "yahoo_dict": {
+ requestQuery: "query",
+ url: "http://suggest.search.yahooapis.jp/SuggestSearchService/V3/webassistSearch",
+ callbackFn: "yahooDictSuggest",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "json",
+ ".src": "dic_all",
+ "appid": "GEI3l.2xg673b7_tjztd7mGq8if5tIPm86vXPjoW7cwqM6jdkuEfO73_xNbz8QA-",
+ "crumb": "QKHAOjMgzamLb0jiQkkwyVvZN_UvDCDclNTtYF_zmIZt96JRlxPpz5OweLONIHfY82xzaoagN2EPsJ.006TjkYwNEmA-",
+ "resulsts": 10,
+ "callback": "yahooDictSuggest"
+ }
+ },
+ "yahoo_chiebukuro": {
+ url: null
+ },
+ "yahoo_auctions": {
+ requestQuery: "query",
+ url: "http://suggest.search.yahooapis.jp/SuggestSearchService/V3/webassistSearch",
+ callbackFn: "yahooSuggest",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "json",
+ ".src": "auc",
+ "appid": "Hy5EaxCxg66QNDm0cEojk3JOZS470WbaRqWtIpaQ4Tc7s8v6IK8AO45lFd3bwAwJzlZc",
+ "resulsts": 10,
+ "callback": "yahooSuggest"
+ }
+ }
+ }
+}
+<%strip%>
+<%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/ltr/ltr.more.css
new file mode 100755
index 000000000..e69de29bb
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/ltr/ltr.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/ltr/ltr.tpl
new file mode 100755
index 000000000..994cf73df
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/ltr/ltr.tpl
@@ -0,0 +1,106 @@
+
+
+
+ <%foreach $sBoxTag as $value%>
+ <%if $value.catagory != 'more'%>
+ <%if empty($body.searchboxTab[$value.catagory])%>
+ <%if $value@first%>
+ <%$value.title%>
+ <%else%>
+
+ <%$value.title%>
+ <%/if%>
+ <%/if%>
+ <%else%>
+
+
+ <%$value.title%>
+
+
+ <%/if%>
+ <%/foreach%>
+
+
+
+
+
+ <%if !empty($hSearchWords.title)%>
+ <%if !empty($hSearchWords.showPersonalHotSearchWords)%>
+
+ <%/if%>
+
<%$hSearchWords.title%>:
+
+ <%if empty($hSearchWords.showPersonalHotSearchWords)%>
+ <%foreach $hSearchWords.words as $val%>
+ <%if !empty($val.url)%>
+ <%$val.name%>
+ <%else%>
+ <%$val.name%>
+ <%/if%>
+ <%/foreach%>
+ <%/if%>
+
+ <%/if%>
+
+
+
+
+<%script%>
+ conf.hSearchWords = <%json_encode($hSearchWords)%>;
+<%/script%>
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/ltr/ltr_inline.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/ltr/ltr_inline.css
new file mode 100755
index 000000000..c9fb9be04
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/ltr/ltr_inline.css
@@ -0,0 +1,303 @@
+/*============box_search=============*/
+.box-search {
+ margin: 0;
+ padding-left: 20px;
+ width: 700px;
+}
+.box-search_keyboard {
+ padding: 1px;
+}
+
+/*box-search_tab*/
+.box-search_tab {
+ white-space: nowrap;
+ position: relative;
+ z-index: 8;
+ clear: both;
+ margin: 0;
+}
+.box-search_tab a {
+ /*font-size: 12px;*/
+ float:left;
+ padding: 4px 12px 3px;
+ margin-left: -1px;
+ text-decoration: none;
+ letter-spacing: normal;
+ position: relative;
+ z-index: 1;
+}
+.box-search_tab a:hover {
+ text-decoration: none;
+ border-radius: 2px;
+ color: #1C81E5;
+ background-color: #f2f2f2;
+ background-color: rgba(0, 0, 0, 0.05);
+}
+.box-search_tab a:focus {
+ outline:none;
+} /*clear FF's focusborder*/
+.box-search_tab a.cur {
+ color: #1C81E5;
+ cursor:default;
+ text-decoration: none;
+ font-weight: bold;
+}
+.box-search_sep {
+ display: block;
+ float: left;
+ height: 6px;
+ line-height: 6px;
+ margin-top: 8px;
+ border-left: 1px solid #b3b3b3;
+ position: relative;
+ z-index: 0;
+ margin-left: -1px;
+}
+/*box-search_wrap*/
+.box-search .box-search_inner {
+ height:68px;
+}
+/*box-search_form*/
+.box-search_form {
+ padding:3px 0px 5px 0px;
+}
+.box-search_form .input {
+ position: relative;
+ z-index:101;
+ border: 3px solid #2186eb;
+ border-right-width: 0;
+ margin: 0 0 0 6px;
+}
+
+/*box-search_logo*/
+.box-search_logo_wrap {
+ position: relative;
+ width: 122px;
+ height: 40px;
+ float: left;
+ z-index: 6;
+ margin: 0;
+ border-right: 1px solid #e6e6e6;
+}
+.box-search_logo {
+ position: absolute;
+ overflow:hidden;
+ vertical-align:bottom;
+ text-align:center;
+}
+.box-search_logo dt , .box-search_logo dd {
+ padding: 4px 10px 4px 8px;
+ cursor: pointer;
+}
+.box-search_logo dt {
+ border: none;
+ border-bottom: 1px solid #2186eb;
+ border-right: 1px solid #e6e6e6;
+}
+.box-search_logo dd {
+ border: 1px solid #e3e4e6;
+ border-top: 0;
+}
+.box-search_logo a {
+ padding-right: 21px;
+ display: block;
+}
+.box-search_logo a:focus {
+ outline: none;
+}
+.box-search_logo dt a {
+ background: url(../img/more_trigger.png?__sprite) no-repeat right center;
+}
+dt.box-search_logo_hover {
+ background-color: #e3e4e6;
+ border-radius: 2px;
+}
+
+.box-search_logos_show {
+ background-color: #fff;
+ border:none;
+}
+.box-search_logos_show .box-search_logo_hover {
+ background-color: #f5f7f7;
+ border-radius: 0px;
+}
+.box-search_logos_show dt a {
+ background: url(../img/more_trigger-hover.png?__sprite) no-repeat right center;
+}
+.box-search_logos_show dd{
+ width: 103px;
+}
+.box-search_logo_hide {
+ display: none;
+}
+.box-search_logo img {
+ width: 83px;
+ height: 32px;
+}
+.box-search_logo_disabled {
+ background: none;
+ border: none;
+}
+.box-search_logo_disabled dt.box-search_logo_hover, .box-search_logo_disabled dt a {
+ background: none;
+ cursor: default;
+}
+.box-search .box-search_logo_disabled .box-search_logo_hover {
+ background-color: transparent!important;
+}
+.box-search_form .input input {
+ border:none;
+ background:#fff;
+ width:419px!important;
+ float:left;
+ overflow:hidden;
+ height:32px;
+ font-size: 14px;
+ line-height:32px\9;
+ padding:4px 0 4px 10px;
+ margin-right: 30px;
+}
+.box-search_form input, .box-search_form button:focus {
+ outline:none;
+}
+.box-search_form .input label {
+ position: absolute;
+ left: 10px;
+ top: 6px;
+ font-size: 14px;
+ color: #D7D8D9;
+ white-space: nowrap;
+}
+
+/*btn-search*/
+.btn-search {
+ white-space:nowrap;
+ line-height:46px;
+ overflow: hidden;
+ _float: left;
+ *margin:0;/*fix non-IE'problem because of vertical-align*/
+ /*background:url(../img/bg-search-btn-hover.png?__sprite) repeat-x;*/
+ /*--css3--*/
+ width: 90px;
+ border-radius: 2px;
+ height: 46px;
+ border-width: 0;
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+ background-color: #2085E9;
+ background-image: linear-gradient(#258BEF, #248AEE, #2287EC, #2085e9, #1e83e7, #1C81E5);
+}
+.btn-search_l, .btn-search_r {
+ display: none !important;
+}
+.btn-search_c {
+ /*background:url(../img/bg-search-btn.png?__sprite) repeat-x;*/
+ vertical-align:top;
+ border:none;
+ color:#fff;
+ height:27px;
+ text-align:center;
+ width:70px;
+ font-weight: bold;
+ font-size: 15px;
+ cursor: pointer;
+ float: left;
+ background: none;
+ height: 46px;
+ line-height: 46px;
+ width: 90px;
+}
+.btn-search_ico {
+ display: block;
+ margin: 0 auto;
+ width: 17px;
+ height: 17px;
+ background: url(../img/i-search.png?__sprite) no-repeat;
+ line-height: 27px;
+}
+.btn-search_hover {
+ background-color: #1E7DDC;
+ background-image: linear-gradient(#258bef, #2488eb, #2182e3, #1e7cda, #1b77d2, #1973cd);
+}
+.btn-search_click {
+ background-color: #2080df;
+ background-image: linear-gradient(#1872cc, #1a75d0, #1d7bd8, #2081e1, #2386e9, #258aee);
+ box-shadow: none;
+}
+
+/*sug*/
+.baidu_sug,
+.baidu_video_sug{
+ top: 14px!important;
+ width: 548px!important;
+ left: 123px!important;
+ border-top-width: 0!important;
+}
+.sug-search{
+ top: 41px!important;
+ width: 548px!important;
+ left: 122px!important;
+ position: absolute;
+}
+.sg_tri .sg_btn i,
+.sg_v_tri .sg_v_btn i{
+ top: 16px!important;
+}
+.sg_tri .sg_up i,
+.sg_v_tri .sg_v_up i {
+ top: 10px!important;
+}
+
+
+/*flow 960*/
+.w960 .box-search .box-search_wrap .box-search_form .input input {
+ width: 340px!important;
+}
+.w960 .l-wrap .box-search {
+ width: 620px;
+}
+.w960 .box-search .sug-search,
+.w960 .box-search .baidu_sug,
+.w960 .box-search .baidu_video_sug {
+ width: 469px!important;
+}
+
+
+
+/*sug has url*/
+.sug-url {
+ height:45px;
+ border-bottom:1px solid #e1e1e1;
+}
+.sug-url a {
+ display: block;
+ text-decoration: none;
+ color: #0000EE;
+}
+.sug-url .sug-hl {
+ height: 25px;
+ text-decoration: underline;
+ font-weight:bold;
+ font-size:14px;
+}
+.sug-url .sug-frm {
+ line-height: 16px;
+ font-size: 12px;
+ color: green;
+}
+
+
+
+.box-search dt.box-search_logo_hover,
+.box-search .box-search_logos_show .box-search_logo_hover,
+body .sug-search .sug-select {
+ background-color: #f2f2f2;
+ background-color: rgba(0, 0, 0, 0.05);
+}
+body .box-search .sug-search,
+body .box-search_logo {
+ overflow: visible;
+}
+.box-search_logo_hide {
+ display: none;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/ma/ma.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/ma/ma.tpl
new file mode 100755
index 000000000..b83de0df3
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/ma/ma.tpl
@@ -0,0 +1,246 @@
+
+<%if !empty($body.searchBox.tplUrl)%>
+ <%widget name="common:widget/search-box/`$sysInfo.country`/`$body.searchBox.tplUrl`/`$body.searchBox.tplUrl`.tpl"%>
+<%else%>
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+conf.searchGroup = {
+ conf: {
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/ma/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 8
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/ma/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 8
+ }
+ <%if isset($body.searchBox.sort)%>, sort: "<%$body.searchBox.sort%>"<%/if%>
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+ sug: {
+ "google": {
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataNum: 1,
+ requestParas: {
+ "client": "hp",
+ "hl": "ar",
+ "authuser": "0"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0] + ' ')
+ }
+
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo": {
+ requestQuery: "command",
+ url: "http://sugg.us.search.yahoo.net/gossip-us-ura",
+ callbackFn: "YUI.Env.DataSource.callbacks.yui_3_3_0_1_1312871021408973",
+ callbackDataKey: "r",
+ requestParas: {
+ "output": "yjsonp",
+ "callback": "YUI.Env.DataSource.callbacks.yui_3_3_0_1_1312871021408973"
+ },
+ templ: function(data) {
+ var _data = data["r"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "youtube": {
+ requestQuery: "q",
+ url: "http://suggestqueries.google.com/complete/search",
+ callbackFn: "window.yt.www.suggest.handleResponse",
+ callbackDataNum: 1,
+ requestParas: {
+ "hl": "ar",
+ "ds": "yt",
+ "client": "youtube",
+ "hjson": "t",
+ "jsonp": "window.yt.www.suggest.handleResponse",
+ "cp": "2"
+ },
+
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_video": {
+ requestQuery: "command",
+ url: "http://gossip-ss.us.search.yahoo.com/gossip-us_ss/",
+ callbackFn: "fxsearch",
+ callbackDataNum: 1,
+ requestParas: {
+ "nresults": 8,
+ "output": "fxjsonp"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i].replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.com.eg/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "ar",
+ "client": "img",
+ "sugexp": "gsihc"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_images": {
+ requestQuery: "command",
+ url: "http://gossip-ss.us.search.yahoo.com/gossip-us_ss",
+ callbackFn: "YUI.Env.DataSource.callbacks.yui_3_5_1_1_1354169017899_293",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjsonp",
+ "nresults": 10,
+ "callback": "{callback}",
+ "callback": "YUI.Env.DataSource.callbacks.yui_3_5_1_1_1354169017899_293",
+ "pubid": 103,
+ "queryfirst": 1
+ }
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.com.eg/maps/suggest",
+ callbackFn: "_xdc_._bgnkibby8",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "2",
+ "hl": "ar",
+ "gl": "ar",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "ll": "21.902278,101.469727",
+ "spn": "5.706298,39.506836",
+ "auth": "ac0dbe60:A6KQ3ztz8bQ13_rnpShsJPs6jOU",
+ "src": "1",
+ "num": "5",
+ "numps": "5",
+ "callback": "_xdc_._bgnkibby8"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for (; i < len; i++) {
+ try {
+ detail = _data[i][9][0][0] || _data[i][9][0] || _data[i][9] || "";
+ } catch (e) {
+ detail = ""
+ }
+
+ detail = detail ? ' - ' + detail + ' ' : "";
+
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "wikimapia": {
+ url: null
+ },
+ "wiki": {
+ requestQuery: "search",
+ url: "http://ar.wikipedia.org/w/api.php",
+ callbackFn: "wikipedia.ar",
+ callbackDataNum: 1,
+ requestParas: {
+ "action": "opensearch",
+ "namespace": "0",
+ "suggest": "",
+ "callback": "wikipedia.ar"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i].replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_translate": {
+ url: null
+ }
+ }
+}
+<%/strip%>
+<%/script%>
+<%/if%>
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/rtl/rtl.more.css
new file mode 100755
index 000000000..6a8805d0b
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/rtl/rtl.more.css
@@ -0,0 +1,76 @@
+/*------------------------suggest------------------------*/
+/*提示层外框*/
+.sug-search {
+ position:absolute;
+ top: 28px;
+ *top: 30px;
+ left: -1px;
+ border:1px solid #e3e4e6;
+ border-top: 0 none;
+ background:#fff;
+ width:528px;
+ color:#454545;
+ z-index:999;
+ white-space:nowrap;
+ overflow:hidden;
+}
+/*ie6 shim*/
+.sug-shim {
+ position:absolute;
+ top:-1px;
+ left:-1px;
+ z-index:-1;
+ filter:alpha(opacity="0");
+ width:430px;
+ height:250px;
+}
+/*列表外框*/
+.sug-search ol {
+ font:bold 12px/23px Tahoma,arial,helvetica,clean,sans-serif;
+ cursor:default;
+}
+/*列表项*/
+.sug-search li {
+ padding: 3px 10px;
+ cursor: pointer;
+}
+.sug-search li b {
+ font: inherit;
+ display: inline;
+}
+/*选中样式*/
+.sug-search .sug-select {
+ background: #f5f7f7;
+}
+/*头部*/
+.sug-search .top {
+ font-weight:normal;
+ color:#999;
+ height:21px;
+ line-height:21px;
+ background:#eee;
+ padding:0 2px;
+}
+/*底部*/
+.sug-search .bot {
+ position:relative;
+ height:19px;
+ line-height:19px;
+ font-weight:normal;
+ border-top:1px solid #666;
+}
+/*高亮查询词*/
+.sug-search .sug-query {
+ font-weight:normal;
+}
+.sug-search font {
+ font-weight:normal !important;
+ color:#333 !important;
+}
+
+/**************************** 深色换肤搜索框优化 *******************************/
+.skin-type-dark .box-search_logo{border-width:0px; border-color: #5a5a5a;}
+.skin-type-dark dt.box-search_logo_hover{background-color: #737373;}
+.skin-type-dark .box-search_logos_show{background-color: #8c8c8c;}
+.skin-type-dark .box-search_logos_show .box-search_logo_hover{background-color: #737373;}
+.skin-type-dark .box-search_tab a{color: #ffffff;}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/rtl/rtl.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/rtl/rtl.tpl
new file mode 100755
index 000000000..8b5c95e03
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/rtl/rtl.tpl
@@ -0,0 +1,104 @@
+
+
+
+ <%foreach $sBoxTag as $value%>
+ <%if $value.catagory != 'more'%>
+ <%if empty($body.searchboxTab[$value.catagory])%>
+ <%if $value@first%>
+ <%$value.title%>
+ <%else%>
+
+ <%$value.title%>
+ <%/if%>
+ <%/if%>
+ <%else%>
+
+
+
+ <%$value.title%>
+
+
+
+
+ <%/if%>
+ <%/foreach%>
+
+
+
+
+ <%$sBoxCount = 0%>
+ <%foreach $sBoxTag[0].engine as $value%><%if !empty($body.searchboxEngine[$value.id])%><%$sBoxCount = $sBoxCount + 1%><%/if%><%/foreach%>
+
+
+ <%foreach $sBoxTag[0].engine as $value%>
+ <%if empty($body.searchboxEngine[$value.id])%>
+
+
+ <%break%>
+ <%/if%><%/foreach%>
+
+ <%$logoIndex = 0%>
+ <%foreach $sBoxTag[0].engine as $value%>
+ <%if empty($body.searchboxEngine[$value.id])%>
+
+
+
+
+
+ <%$logoIndex = $logoIndex + 1%>
+ <%/if%><%/foreach%>
+
+
+
+
+
+ <%if !empty($hSearchWords.title)%>
+
<%$hSearchWords.title%>:
+
+ <%foreach $hSearchWords.words as $val%>
+ <%if !empty($val.url)%>
+ <%$val.name%>
+ <%else%>
+ <%$val.name%>
+ <%/if%>
+ <%/foreach%>
+
+ <%/if%>
+
+
+
+
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/rtl/rtl_inline.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/rtl/rtl_inline.css
new file mode 100755
index 000000000..61b57cc85
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/rtl/rtl_inline.css
@@ -0,0 +1,467 @@
+/*.box-search_form .input div{ float: left;}*/ /*为啥加?会导致ps sug出现问题*/
+.box-search_keyboard {
+ padding: 1px;
+}
+/*============box_search=============*/
+.box-search {
+ margin: 20px auto 0;
+ width: 780px;
+}
+.box-search_inner {
+ height:68px;
+}
+/*box-search_tab*/
+.box-search_tab {
+ white-space: nowrap;
+ margin-right: 161px;
+ position: relative;
+ z-index: 8;
+ clear: both;
+}
+.box-search_tab a {
+ /*font-size: 12px;*/
+ float:right;
+ padding: 4px 12px 3px;
+ margin-right: -1px;
+ text-decoration: none;
+ letter-spacing: normal;
+ position: relative;
+ z-index: 1;
+}
+.box-search_tab a:hover {
+ text-decoration: none;
+ background: #dcdcde;
+ border-radius: 2px;
+}
+/*.box-search_more {
+ line-height:normal;
+ position: absolute;
+ float:right;
+ cursor:pointer;
+ z-index:8;
+ top: -8px;
+ left: -7px;
+ border: 1px solid #edf0ef;
+ border-bottom: 0 none;
+}
+.box-search_more dt {
+ position: relative;
+ margin-top: 6px;
+}
+.box-search_more a:hover {
+ background: transparent;
+ -moz-border-radius: 0px;
+ -webkit-border-radius: 0px;
+ -o-border-radius: 0px;
+ border-radius: 0px;
+}
+.box-search_more dt a {
+ margin: 0;
+ padding: 4px 9px 3px 17px;
+ color: #4c4c4c;
+ text-align: right;
+ display: block;
+ float: none;
+ line-height: 14px;
+ width: 30px;
+ overflow: hidden;
+}
+.box-search_more dt a:focus {
+ outline: none;
+}
+.box-search_more_hover {
+ background-color: #dcdcde;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ -o-border-radius: 2px;
+ border-radius: 2px;
+}
+.box-search_more .arrow, .box-search_more .arrow_bg {
+ position: absolute;
+ height: 0;
+ width: 0;
+ border: 3px dashed transparent;
+}
+.box-search_more .arrow {
+ border-top-color: #4ac29a;
+ border-top-style: solid;
+ top: 10px;
+ right: 42px;
+}
+.box-search_more .arrow_bg {
+ border-top-color: #edf0ef;
+ border-top-style: solid;
+ margin: -5px -3px 0 0;
+ _display: none;
+}
+.box-search_more_hover .arrow_bg {
+ border-top-color: #dcdcde;
+}
+.box-search_more_show .arrow {
+ border-top-color: transparent;
+ border-top-style: dashed;
+ border-bottom-color: #4ac29a;
+ border-bottom-style: solid;
+ top: 12px;
+}
+.box-search_more_show .arrow_bg {
+ border-top-color: transparent;
+ border-top-style: dashed;
+ border-bottom-color: #fff;
+ border-bottom-style: solid;
+ margin-top: -1px;
+}
+.box-search_more_show .box-search_more_hover .arrow_bg {
+ border-bottom-color: #f5f7f7;
+}
+.box-search_more_show {
+ border:1px solid #e3e4e6;
+ background: #fff;
+ left: auto;
+ right: 472px;
+}
+.box-search_more_show dt {
+ margin-top: 0px;
+ padding-top: 6px;
+}
+.box-search_more_show dt a {
+ background-position:left -351px !important;
+}
+.box-search_more_show .box-search_more_hover {
+ background-color: #f5f7f7;
+ -moz-border-radius: 0px;
+ -webkit-border-radius: 0px;
+ -o-border-radius: 0px;
+ border-radius: 0px;
+}
+.box-search_more_show dd {
+ line-height: 31px;
+}
+.box-search_more_show dd a {
+ padding:0 9px 0 15px;
+ display:block;
+ float:none;
+ color: #666;
+ text-align: right;
+ margin:0;
+ overflow: hidden;
+}
+.box-search_more_hide {
+ display: none;
+}*/
+.box-search_tab a:focus {
+ outline:none;
+} /*clear FF's focusborder*/
+.box-search_tab a.cur {
+ color:#00b075; /*font-weight:bold;*/
+ cursor:default;
+ text-decoration: none;
+ font-weight: bold;
+}
+.box-search_sep {
+ display: block;
+ float: right;
+ height: 6px;
+ line-height: 6px;
+ margin-top: 8px;
+ border-left: 1px solid #b3b3b3;
+ position: relative;
+ z-index: 0;
+ margin-right: -1px;
+}
+/*box-search_logo*/
+.box-search_logo_wrap {
+ position: relative;
+ width: 155px;
+ height: 67px;
+ margin:-16px 0 0 5px;
+ float: right;
+ z-index: 6;
+}
+.box-search_logo {
+ position: absolute;
+ right: 0;
+ overflow:hidden;
+ vertical-align:bottom;
+ text-align:center;
+}
+.box-search_logo a {
+ padding-left: 18px;
+ display: block;
+}
+.box-search_logo a:focus {
+ outline: none;
+}
+.box-search_logo dt , .box-search_logo dd {
+ padding: 10px 7px 10px 8px;
+ cursor: pointer;
+}
+.box-search_logo dt a {
+ background: url(/widget/img/bg.png) -10px -61px no-repeat;
+}
+dt.box-search_logo_hover {
+ background-color: #e3e4e6;
+ border-radius: 2px;
+}
+.box-search_logos_show .box-search_logo_hover {
+ background-color: #f5f7f7;
+ border-radius: 0px;
+}
+.box-search_logos_show {
+ background-color: #fff;
+ border: 1px solid #e3e4e6
+}
+.box-search_logos_show dt a {
+ background-position: -10px -87px;
+}
+.box-search_logo_hide {
+ display: none;
+}
+.box-search_logo img {
+ width:120px;
+ height:45px;
+}
+.box-search_logo_disabled {
+ background: none;
+ border: 1px solid #EDF0EF;
+}
+.box-search_logo_disabled dt.box-search_logo_hover, .box-search_logo_disabled dt a {
+ background: none;
+ cursor: default;
+}
+
+/*box-search_form*/
+.box-search_form {
+ padding:3px 113px 5px 0px;
+}
+.box-search_form .input {
+ background-color: #fff;
+ border: 1px solid #d9d9d9;
+ border-top: 1px solid #bfbfbf;
+ margin-left: 13px;
+ position: relative;
+ z-index:5;
+ /*for IE9*/
+ padding-right: 1px\9\0;
+}
+.box-search_form .input input {
+ border:none;
+ background:#fff;
+ width:491px;
+ float:right;
+ overflow:hidden;
+ height:20px;
+ font-size: 14px;
+ line-height:20px\9;
+ padding:4px 9px 3px 0px;
+ *width: 488px;
+ *float: none;
+ /*fix ie10 bug*/
+ margin-right: 1px;
+}
+.box-search_form input, .box-search_form button:focus {
+ outline:none;
+}
+.box-search_form .input label {
+ position: absolute;
+ right: 10px;
+ top: 6px;
+ font-size: 14px;
+ color: #D7D8D9;
+ white-space: nowrap;
+}
+.box-search_form .box-search_focus {
+ border: 1px solid #4d90fe;
+}
+.btn-search {
+ white-space:nowrap;
+ line-height:27px;
+ overflow: hidden;
+ _float: left;
+ *margin:0;/*fix non-IE'problem because of vertical-align*/
+ /*background:url(../img/bg-search-btn-hover.png?__sprite) repeat-x;*/
+
+
+ /*--css3--*/
+ width: 70px;
+ border-radius: 2px;
+ border: 1px solid #3079ED;
+ background-color: #4787ED;
+ background-image: linear-gradient(-180deg, #4D8FFD 0%, #4787ED 100%);
+}
+.btn-search_l, .btn-search_r {
+ display: none !important;
+}
+.btn-search_c {
+ /*background:url(../img/bg-search-btn.png?__sprite) repeat-x;*/
+ vertical-align:top;
+ border:none;
+ color:#fff;
+ height:27px;
+ text-align:center;
+ width:70px;
+ font-weight: bold;
+ font-size: 15px;
+ cursor: pointer;
+ float: left;
+ background: none;
+}
+.btn-search_ico {
+ display: block;
+ margin: 0 auto;
+ width: 17px;
+ height: 17px;
+ background: url(../img/i-search.png?__sprite) no-repeat;
+ line-height: 27px;
+}
+.btn-search_hover{
+ border-color: #2F5BB7;
+ background-color: #357AE8;
+ background-image: linear-gradient(-180deg, #4C8FFD 0%, #357AE8 100%);
+}
+
+.btn-search_click{
+ border-color: #2B79E6;
+ background-color: #357AE8;
+ background-image: linear-gradient(-180deg, #4A8DFB 0%, #357AE8 100%);
+ box-shadow: inset 0px 2px 3px 0px rgba(0,0,0,0.50);
+}
+/*
+.btn-search_hover .btn-search_l {
+ background:url(../img/bg-search-btn-side-hover.png?__sprite) no-repeat;
+}
+.btn-search_hover .btn-search_r {
+ background:url(../img/bg-search-btn-side-hover.png?__sprite) no-repeat;
+ background-position:-3px 0;
+}
+.btn-search_hover .btn-search_c {
+ background:url(../img/bg-search-btn-hover.png?__sprite) repeat-x;
+}
+.btn-search_hover .btn-search_ico {
+ background: url(../img/i-search-hover.png?__sprite) no-repeat;
+}
+.btn-search_click .btn-search_l {
+ background:url(../img/bg-search-btn-side-click.png?__sprite) no-repeat;
+}
+.btn-search_click .btn-search_r {
+ background:url(../img/bg-search-btn-side-click.png?__sprite) no-repeat;
+ background-position:-3px 0;
+}
+.btn-search_click .btn-search_c {
+ background:url(../img/bg-search-btn-click.png?__sprite) repeat-x;
+}
+.btn-search_click .btn-search_ico {
+ background: url(../img/i-search-click.png?__sprite) no-repeat;
+}*/
+.box-search_form .radios {
+ padding-top:4px;
+ width:480px;/*for IE9*/
+}
+.box-search_form .radios label {
+ display:block;
+ padding-right:15px;
+ text-indent:-15px;
+ float:right;
+ margin-left:18px;
+ color:#666;
+ font-size: 13px;
+ white-space: nowrap;
+}
+.box-search_form .radios input {
+ vertical-align:top;
+ width:13px;
+ height:13px;
+ margin-left:5px;
+ vertical-align:bottom;
+ position:relative;
+ top:-1px;
+ overflow:hidden;
+}
+
+/*set hot search words & search button*/
+.box-search_hsrch {
+ width: 620px;
+ margin-right: 160px;
+ overflow: hidden;
+ padding-top: 2px;
+ color: #919191;
+ white-space: nowrap;
+ _margin-top:-14px;
+}
+.hsrch_title {
+ font-weight: bold;
+ margin-left: 8px;
+ /*padding-right: 10px;*/
+ color: #919191;
+}
+.hsrch_word span {
+ display: inline-block;
+ margin-left: 15px;
+}
+.hsrch_word a{
+ color: #919191;
+ text-align: right;
+}
+.hsrch_word a:hover {
+ color: #00B075;
+ text-decoration: underline;
+}
+/*size setting*/
+.box-search-m .box-search_logo img {
+ width:107px;
+ height:40px;
+}
+.box-search-m .box-search_logo_wrap {
+ width: 142px;
+ height: 62px;
+ margin-top: -14px;
+}
+.box-search-m .box-search_logo dt a {
+ background-position: -10px -62px;
+}
+.box-search-m .box-search_logos_show dt a {
+ background-position: -10px -87px;
+}
+.box-search-m .box-search_tab {
+ margin-right: 148px;
+}
+.box-search-m .box-search_hsrch {
+ margin-right: 148px;
+}
+.box-search-s .box-search_logo img {
+ width:85px;
+ height:32px;
+}
+.box-search-s .box-search_logo_wrap {
+ width: 120px;
+ height: 54px;
+ margin-top: -9px;
+}
+.box-search-s .box-search_logo dt a {
+ background-position: -10px -67px;
+}
+.box-search-s .box-search_logos_show dt a {
+ background-position: -10px -93px;
+}
+.box-search-s .box-search_tab {
+ margin-right: 126px;
+}
+.box-search-s .box-search_hsrch {
+ margin-right: 126px;
+}
+
+/**************************** 深色换肤搜索框优化 *******************************/
+.skin-type-dark .box-search_logo{border-width: 0px;}
+.skin-type-dark dt.box-search_logo_hover{background: #737373;background: rgba(0,0,0,0.6);}
+.skin-type-dark .box-search_logos_show{background: #8c8c8c;background: rgba(0,0,0,0.6);}
+.skin-type-dark .box-search_logo_disabled{background: transparent;background: rgba(0,0,0,0);}
+.skin-type-dark .box-search_logos_show .box-search_logo_hover{background: #737373;background: rgba(0,0,0,0.6);}
+.skin-type-dark .box-search_tab a{color: #ffffff;}
+body.skin-type-dark .box-search_tab a.cur{color: #ffffff;}
+.skin-type-dark .box-search_tab a:hover{background-color: #595959;background: rgba(0,0,0,0.6);}
+.skin-type-dark .hsrch_title{color: #bbbbbb;}
+.skin-type-dark .hsrch_word a{color: #bbbbbb;}
+.skin-type-dark .box-search_sep{border-left-color: #bbbbbb;}
+.skin-type-dark span.hsrch_word a:hover{color: #eeeeee;}
+.skin-type-dark .box-search_logo_disabled dt.box-search_logo_hover, .skin-type-dark .box-search_logo_disabled dt a{background: 0;}
+.box-search_logo_disabled, .box-search_logos_show{border: 0;}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/sa/sa.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/sa/sa.tpl
new file mode 100755
index 000000000..3a3922a66
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/sa/sa.tpl
@@ -0,0 +1,274 @@
+
+<%if !empty($body.searchBox.tplUrl)%>
+ <%widget name="common:widget/search-box/`$sysInfo.country`/`$body.searchBox.tplUrl`/`$body.searchBox.tplUrl`.tpl"%>
+<%else%>
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+conf.searchGroup = {
+ conf: {
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/sa/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 8
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/sa/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 8
+ }
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+ sug: {
+ "google": {
+ requestQuery: "q",
+ url: "http://clients1.google.com.sa/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataNum: 1,
+ requestParas: {
+ "client": "hp",
+ "hl": "ar",
+ "authuser": "0"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0] + ' ')
+ }
+
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo": {
+ requestQuery: "command",
+ url: "http://sugg.us.search.yahoo.net/gossip-us-ura",
+ callbackFn: "YUI.Env.DataSource.callbacks.yui_3_3_0_1_1312871021408973",
+ callbackDataKey: "r",
+ requestParas: {
+ "output": "yjsonp",
+ "callback": "YUI.Env.DataSource.callbacks.yui_3_3_0_1_1312871021408973"
+ },
+ templ: function(data) {
+ var _data = data["r"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "youtube": {
+ requestQuery: "q",
+ url: "http://suggestqueries.google.com/complete/search",
+ callbackFn: "window.yt.www.suggest.handleResponse",
+ callbackDataNum: 1,
+ requestParas: {
+ "hl": "ar",
+ "ds": "yt",
+ "client": "youtube",
+ "hjson": "t",
+ "jsonp": "window.yt.www.suggest.handleResponse",
+ "cp": "2"
+ },
+
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_video": {
+ requestQuery: "command",
+ url: "http://gossip-ss.us.search.yahoo.com/gossip-us_ss/",
+ callbackFn: "fxsearch",
+ callbackDataNum: 1,
+ requestParas: {
+ "nresults": 8,
+ "output": "fxjsonp"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.com.sa/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "ar",
+ "client": "img",
+ "sugexp": "gsihc"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_images": {
+ requestQuery: "command",
+ url: "http://gossip-ss.us.search.yahoo.com/gossip-us_ss",
+ callbackFn: "YUI.Env.DataSource.callbacks.yui_3_5_1_1_1354169017899_293",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjsonp",
+ "nresults": 10,
+ "callback": "{callback}",
+ "callback": "YUI.Env.DataSource.callbacks.yui_3_5_1_1_1354169017899_293",
+ "pubid": 103,
+ "queryfirst": 1
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.com.sa/maps/suggest",
+ callbackFn: "_xdc_._bgnkibby8",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "2",
+ "hl": "ar",
+ "gl": "ar",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "ll": "21.902278,101.469727",
+ "spn": "5.706298,39.506836",
+ "auth": "ac0dbe60:A6KQ3ztz8bQ13_rnpShsJPs6jOU",
+ "src": "1",
+ "num": "5",
+ "numps": "5",
+ "callback": "_xdc_._bgnkibby8"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for (; i < len; i++) {
+ try {
+ detail = _data[i][9][0][0] || _data[i][9][0] || _data[i][9] || "";
+ } catch (e) {
+ detail = ""
+ }
+
+ /*detail = detail ? ' - ' + detail + ' ' : "";*/
+
+ ret.push('' + _data[i][0] + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "wikimapia": {
+ url: null
+ },
+ "wiki_ar": {
+ requestQuery: "search",
+ url: "http://ar.wikipedia.org/w/api.php",
+ callbackFn: "wikipedia.ar",
+ callbackDataNum: 1,
+ requestParas: {
+ "action": "opensearch",
+ "namespace": "0",
+ "suggest": "",
+ "callback": "wikipedia.ar"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_translate": {
+ url: null
+ },
+ "filmes": {
+ requestQuery: "wds",
+ url: "http://sa.hao123.com/movie/sug",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ },
+ templ: function(data) {
+ var _data = data["s"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ }
+ }
+}
+<%/strip%>
+<%/script%>
+<%/if%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/search-box-head-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/search-box-head-async.js
new file mode 100755
index 000000000..5019f50ae
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/search-box-head-async.js
@@ -0,0 +1,1003 @@
+/*
+* Search box group
+*/
+
+var $ = require("common:widget/ui/jquery/jquery.js"),
+ UT = require("common:widget/ui/ut/ut.js"),
+ helper = require("common:widget/ui/helper/helper.js"),
+ hex_md5 = require('common:widget/ui/md5/md5.js'),
+ bubble = require('common:widget/ui/bubble/src/bubble.js');
+require("common:widget/ui/suggest/suggest.js");
+require('common:widget/ui/jquery/jquery.cookie.js');
+
+
+Gl.searchGroup = function(o) {
+
+ var _conf = conf.searchGroup,
+ type = o.type || "index",
+ logoPath = _conf.conf[type].logoPath,
+
+ logo = $("#" + (o.logoId || "searchGroupLogo")),
+ logoGroup = $("#" + (o.logoGroupId || "searchGroupLogos")),
+ tabs = $("#" + (o.tabsId || "searchGroupTabs")),
+ form = $("#" + (o.formId || "searchGroupForm")),
+ input = $("#" + (o.inputId || "searchGroupInput")),
+ label = $("#" + (o.labelId || "searchGroupLabel")),
+ // radios = $("#" + (o.radiosId || "searchGroupRadios")),
+ btn = $("#" + (o.btnId || "searchGroupBtn")),
+ // more = $("#" + (o.moreId || "searchGroupMore")),
+ moreTab = $("#" + (o.moreTabId || "searchGroupMoreTab")),
+ params = $("#" + (o.paramsId || "searchGroupParams")),
+ // radioName = o.radioName || "searchGroupRadio",
+
+ hSeWords = $("#hotSearchWords"),
+ webEngine = $("#searchGroupWebEngine"),
+
+ btnWrap = btn.parent(),
+ inputWrap = input.parent(),
+ defaultN = _conf.conf[type].curN || 0,
+ curTab = $("a:eq(" + defaultN + ")", tabs),
+ tabsChildren = $("a", tabs),
+ //render data when init sug
+ defaultData = _conf.sug[_conf.list[curTab.attr("data-t")].engine[defaultN].id],
+ //record which form was selected in tabs
+ storeForm = {},
+ onceTime = true,
+ logoHash = {
+ 'yahoo': 'yahoo',
+ 'google': 'google',
+ 'baidu': 'baidu',
+ 'defau': 'defau'
+ },
+ $bd = $(document.body),
+ //自定义推荐的热搜词
+ hSeWordsWithUrlTpl = '#{name} ',
+ hSeWordsWithOutUrlTpl = '#{name} ',
+ deleteHswordTimer = null,
+
+ getCurLogo = function(attr) {
+ var tmpObj = null;
+ attr = attr.toLowerCase();
+ for(var i in logoHash) {
+ if(attr.search(i) > -1) {
+ tmpObj = logoHash[i];
+ break;
+ }
+ }
+ if(tmpObj === 'yahoo' && conf.country === 'jp') {
+ tmpObj = 'yahoo_jp';
+ }
+ return (tmpObj || 'defau');
+ },
+ //smallLogoPath = "/resource/fe/headerTest/search/#{logo}.png",
+
+ //reset the form about action and params
+ resetForm = function(data, n) {
+ var ret = [];
+ var theLogoPath = $bd.hasClass("skin-type-dark")?(_conf.conf[type].logoPath+"dark/"):_conf.conf[type].logoPath;
+ var logoGroupDt = $("dt", logoGroup).clone();
+ var isFixed = $bd.hasClass("header-fixed-up");
+ // Fixed bug in IE8
+ logoGroup.html('');
+ logoGroup.append(logoGroupDt);
+ // rebinding logo element
+ logo = $("#" + (o.logoId || "searchGroupLogo"), logoGroupDt);
+
+ form.attr("action", data[n].action);
+ input.attr("name", data[n].q);
+ if(isFixed) {
+ logo.attr("src", "/resource/fe/headerTest/search/" + getCurLogo(data[n].logo) + ".png");
+ } else {
+ logo.attr("src", theLogoPath + data[n].logo + ".png");
+ }
+ logo.attr("alt", data[n].name);
+ logo.parent().attr("title", data[n].name);
+ logo.parent().attr("data-n", n);
+ logo.attr("data-id", data[n].id);
+
+ // $("dd", logoGroup).remove();
+
+ logoGroup.append(function () {
+ ret = [];
+ $.each(data, function(key, val) {
+ if(isFixed) {
+ ret.push(''+ val.name + ' ');
+ } else {
+ ret.push(' ');
+ }
+ });
+ return ret.join("");
+ });
+ // fix: show errors when click radios on IE
+ /*setTimeout(function() {
+ radios.html(function() {
+ ret = [];
+ $.each(data,function(key, val) {
+ ret.push(' ' + val.name + ' ');
+ });
+ return ret.join("");
+ });
+ }, 0);*/
+
+ params.html(function() {
+ ret = [];
+ $.each(data[n].params, function(key, val) {
+ ret.push(' ');
+ });
+ return ret.join("");
+ });
+
+ if (data.length <= 1) {
+ logoGroup.addClass("box-search_logo_disabled");
+ } else {
+ logoGroup.removeClass("box-search_logo_disabled");
+ }
+ logoGroup.children().on("mouseenter", function() {
+ $(this).addClass("box-search_logo_hover");
+ });
+ logoGroup.children().on("mouseleave", function() {
+ $(this).removeClass("box-search_logo_hover");
+ });
+ },
+
+ resetSug = function(data, n) {
+ data = _conf.sug[data[n].id];
+ $.each(data, function(key, val) {
+ sug.o[key] = val;
+ });
+ //fix more prams
+ !data.templ && (sug.o.templ = false);
+ !data.callbackFn && (sug.o.callbackFn = false);
+ !data.callbackDataKey && (sug.o.callbackDataKey = false);
+ !data.callbackName && (sug.o.callbackName = false);
+ !data.callbackDataNum && (sug.o.callbackDataNum = false);
+ !data.customUrl && (sug.o.customUrl = false);
+
+ !data.customUrl && (sug.o.customUrl = false);
+ !data.charset && (sug.o.charset = undefined);
+ sug.reset(true);
+ },
+
+ // toggle for baidu sug
+ resetBaiduSug = function (data, n) {
+
+ if (!baidu_sug) {
+ return;
+ }
+
+ data = data ? data[n].baiduSug : false;
+
+ if (data) {
+ baidu_sug.setMode(data.mod);
+ baidu_sug.toggle(true);
+ } else {
+ baidu_sug.toggle(false);
+ }
+ },
+
+ // toggle for PS video sug
+ resetBaiduVideoSug = function(data, n) {
+ if(!window["baidu_video_sug"]) {
+ return;
+ }
+
+ data = data ? data[n].otherSug : false;
+
+ if (data) {
+ baidu_video_sug.setMode(data.mod);
+ baidu_video_sug.toggle(true);
+ } else {
+ baidu_video_sug.toggle(false);
+ }
+ },
+
+ switchTab = function(tab, sugStay) {
+ tab = $(tab);
+ curTab.removeClass("cur");
+ tab.addClass("cur");
+ curTab = tab;
+
+ var t = tab.attr("data-t"),
+
+ list = _conf.list,
+ engines = list[t].engine,
+ engLen = engines.length;
+ //ps sug gut add tab changed name
+ tabCategoryName = t;
+ //if the last element is null, remove it
+ if($.isEmptyObject(engines[engLen-1])){
+ engines.length = engLen - 1;
+ };
+ //record current form(add the current type to storeForm as a key)
+ storeForm[t] || (storeForm[t] = 0);
+
+ //reset form
+ resetForm(engines, storeForm[t]);
+
+ //reset suggest
+ !sugStay && resetSug(engines, storeForm[t]);
+
+ // reset PS video sug
+ !sugStay && resetBaiduVideoSug(engines, storeForm[t]);
+
+ // reset baidu sug
+ !sugStay && resetBaiduSug(engines, storeForm[t]);
+
+ /*
+ //reset hot word
+ label.text(list[t].hotWords)
+ */
+
+ /*
+ setTimeout(function() {
+ input.select();
+ }, 16);
+ */
+ //keep the cursor in end
+ /*setTimeout(function() {
+ setCursorPos(input[0], input.val().length);
+ }, 16); */
+ },
+
+ showMore = function() {
+ var more = $("dd", moreTab),
+ list = _conf.more,
+ ret = [];
+ if ($("dd", moreTab).length === 0) {
+ $.each(list, function() {
+ ret.push('' + this.name + ' ');
+ });
+ moreTab.append(ret.join(""));
+ moreTab.children().on("mouseenter", function() {
+ $(this).addClass("box-search_more_hover");
+ });
+ moreTab.children().on("mouseleave", function() {
+ $(this).removeClass("box-search_more_hover");
+ });
+ }
+ if(moreTab.hasClass("box-search_more_show")) {
+ moreTab.removeClass("box-search_more_show");
+ more.each(function () {
+ $(this).addClass("box-search_more_hide");
+ });
+ }
+ else {
+ moreTab.addClass("box-search_more_show");
+ more.each(function () {
+ $(this).removeClass("box-search_more_hide");
+ });
+ }
+ },
+
+ showLogo = function () {
+ var n = logo.parent().attr("data-n"),
+ logoList = $("dd", logoGroup);
+ var isFix = $bd.hasClass("header-fixed-up"),
+ logLen = logoList.length;
+ if (logoGroup.hasClass("box-search_logos_show")) {
+ logoGroup.removeClass("box-search_logos_show");
+ logoList.each(function () {
+ $(this).addClass("box-search_logo_hide").removeClass("box-search_logo_first box-search_logo_last");
+ });
+ }
+ else {
+ logoGroup.addClass("box-search_logos_show");
+ logoList.each(function (key) {
+ var $that = $(this);
+
+ if (onceTime) {
+ var $imgEle = $that.find("img").first();
+ if ($imgEle.attr("data-src")) {
+ $imgEle.attr("src", $imgEle.attr("data-src"));
+ $imgEle.removeAttr("data-src");
+ }
+ }
+
+ key != n && $that.removeClass("box-search_logo_hide");
+ if (isFix && (logLen > 1) && (key != n)) {
+ if(n == 0) {
+ if(key === 1) {
+ $that.addClass("box-search_logo_first");
+ }
+ if(key === logLen-1) {
+ $that.addClass("box-search_logo_last");
+ }
+ } else if(n == logLen-1) {
+ if(key === 0) {
+ $that.addClass("box-search_logo_first");
+ }
+ if(key === logLen-2) {
+ $that.addClass("box-search_logo_last");
+ }
+ } else {
+ if(key === 0) {
+ $that.addClass("box-search_logo_first");
+ }
+ if(key === logLen-1) {
+ $that.addClass("box-search_logo_last");
+ }
+ }
+ }
+ });
+ onceTime = false;
+ }
+ },
+
+ //disable selection for input elements
+ disableSelection = function(el) {
+ if (typeof el.onselectstart != "undefined") { //IE
+ el.onselectstart = function() {
+ return false;
+ }
+ } else if (typeof el.style.MozUserSelect != "undefined") { //FF
+ el.style.MozUserSelect = "none";
+ } else { //Opera
+ el.onmousedown = function() {
+ return false;
+ }
+ }
+ },
+
+ setCursorPos = function(obj, pos) {
+ if (obj.setSelectionRange) {
+ obj.focus();
+ obj.setSelectionRange(pos, pos);
+ } else if (obj.createTextRange) {
+ var range = obj.createTextRange();
+ range.collapse(true);
+ range.moveEnd('character', pos);
+ range.moveStart('character', pos);
+ range.select();
+ }
+ },
+
+ //sug instantiation
+ sug = Gl.suggest(input[0], {
+ classNameWrap: "sug-search",
+ classNameQuery: "sug-query",
+ classNameSelect: "sug-select",
+ //classNameClose: "sug-close",
+ delay: _conf.conf[type].delay,
+ n: _conf.conf[type].n,
+ autoFocus: false,
+ requestQuery: defaultData.requestQuery,
+ requestParas: defaultData.requestParas,
+ url: defaultData.url,
+ callbackFn: defaultData.callbackFn,
+ callbackDataKey: defaultData.callbackDataKey,
+ onCheckForm: function(form) {
+
+ if( !(/^hao123$/.test(logo.attr("data-id"))) ) return;
+
+ if( !$(form).find("input[name='haobd']").get(0) ) {
+ $(form).append(" ");
+ }
+ },
+ onSearchDirect: function(li, q, prefix) {
+ var img = new Image(),
+ enco = encodeURIComponent,
+ collect = [],
+ _type = curTab.attr("data-t"),
+ url = "http://search.hao123.co.th/r/cl/i18n.gif?fm=se&st=3&rsv_sugtype=cr&lang=th-TH",
+ href = $( $(li).find("a").get(0) ).attr("href"),
+ title = $( $(li).find("a .sug-hl").get(0) ).text(),
+
+ conf = {
+ url: href,
+ q: q,
+ title: title,
+ prefixsug: prefix,
+ haobd: $.cookie("BAIDUID"),
+ t: +new Date
+ };
+
+
+ img.src = url + "&" + $.param(conf); // PS的统计
+
+ var utObj = {
+ type: "click",
+ position: "search",
+ engine: _conf.list[_type].engine[storeForm[_type]].id.toLowerCase(),
+ value: enco(q),
+ url: href,
+ element: "sug",
+ modId: "search",
+ tab: _type
+ };
+ if ($bd.hasClass("header-fixed-up")) {
+ utObj.sort = "header";
+ }
+ UT.send(utObj);
+ // 我们的统计
+ /*if (_conf.conf.sort) {
+ UT.send({
+ type: "click",
+ position: "search",
+ engine: _conf.list[_type].engine[storeForm[_type]].id.toLowerCase(),
+ value: enco(q),
+ url: href,
+ element: "sug",
+ sort: _conf.conf.sort,
+ modId:"search"
+ });
+ } else {
+ UT.send({
+ type: "click",
+ position: "search",
+ engine: _conf.list[_type].engine[storeForm[_type]].id.toLowerCase(),
+ value: enco(q),
+ url: href,
+ element: "sug",
+ modId:"search"
+ });
+ }*/
+ },
+ onMouseSelect: function() {
+ var t = curTab.attr("data-t"),
+ _action = _conf.list[t].engine[storeForm[t]].action;
+ //fix action
+ if(/#\{([^}]*)\}/mg.test(_action)) {
+ form.attr("action", helper.replaceTpl(_action, {q: encodeURIComponent(input.val())}));
+ input.attr("disabled", true);
+ setTimeout(function() {
+ input.attr("disabled", false);
+ }, 16);
+ }
+ input.select();
+ var _type = curTab.attr("data-t");
+ var utObj = {
+ type: "click",
+ position: "search",
+ engine: _conf.list[_type].engine[storeForm[_type]].id.toLowerCase(),
+ modId: "search",
+ tab: t
+ },
+ val = encodeURIComponent(input.val());
+ /*if (_conf.conf.sort) {
+ utObj.sort = _conf.conf.sort;
+ } else {
+ if (conf.country === "tw" && $(document.body).hasClass("header-fixed-up")) {
+ utObj.sort = "header";
+ }
+ }*/
+ if ($bd.hasClass("header-fixed-up")) {
+ utObj.sort = "header";
+ }
+ //if (conf.country != "jp") {
+ utObj.value = val;
+ //}
+ UT.send(utObj);
+ },
+ templ: defaultData.templ
+ });
+ //ps sug gut add tab
+ window.tabCategoryName = curTab.attr("data-t");
+ //clear the input's value after refresh
+ input.val("");
+ //some browsers may keep form's status after refresh
+ // $("[name = radioName]:first").attr("checked", true);
+
+ //record the default form'n
+ storeForm[curTab.attr("data-t")] = 0;
+
+ //select text in input after submit
+ form.on("submit", function() {
+ // input.select();
+ var t = curTab.attr("data-t"),
+ _action = _conf.list[t].engine[storeForm[t]].action,
+ _url = _conf.list[t].engine[storeForm[t]].url,
+ isBlank = false;
+ /*var radioEl = $("input", radios);
+ for(var i = 0; i < radioEl.length; i++) {
+ if(radioEl.eq(i).attr("checked")) {
+ var checkedRadio = radioEl.eq(i);
+ }
+ }
+ if(t == "shopping" && checkedRadio.attr("id") == "searchGroupRadio_0") {
+ form[0].acceptCharset = document.charset = "big5";
+ }
+ else {
+ form[0].acceptCharset = document.charset = "utf-8";
+ }*/
+
+ /* cancel hot word
+ // set input's value to the hot word if it was blank
+ if($.trim(input.val()) === "") {
+ if($.trim(label.text()) === ""){
+ var action = _action && _url ? _url : _action;
+ form.attr("action", action);
+ } else {
+ input.val(label.text());
+ input.css("color", "#fff");
+ isBlank = true;
+ }
+ } else {*/
+ if(/^hao123$/.test(logo.attr("data-id"))) {
+ if(!form.find("input[name='haobd']").get(0)) {
+ form.append(" ");
+ }
+ }
+ form.attr("action", _action);
+ //}
+
+ // set charset to big5 while the engine is ruten
+ if(t == "shopping" && /ruten.png/.test(logo.attr("src"))) {
+ form[0].acceptCharset = document.charset = "big5";
+ }
+ else {
+ form[0].acceptCharset = document.charset = "utf-8";
+ }
+ var utObj = {
+ type: "click",
+ position: "search",
+ engine: _conf.list[t].engine[storeForm[t]].id.toLowerCase(),
+ modId: "search",
+ tab: t
+ },
+ val = encodeURIComponent(input.val());
+ /*if (_conf.conf.sort) {
+ utObj.sort = _conf.conf.sort;
+ } else {
+ if(conf.country === "tw" && $(document.body).hasClass("header-fixed-up")) {
+ utObj.sort = "header";
+ }
+ }*/
+ if($bd.hasClass("header-fixed-up")) {
+ utObj.sort = "header";
+ }
+ //if(conf.country != "jp") {
+ utObj.value = val;
+ //}
+ UT.send(utObj);
+ //reset input after search
+ if(isBlank) {
+ setTimeout(function() {
+ input.val("");
+ input.removeAttr("style");
+ }, 16);
+ } else {
+ input.select();
+ }
+ //fix action
+ if(/#\{([^}]*)\}/mg.test(_action)) {
+ form.attr("action", helper.replaceTpl(_action, {q: encodeURIComponent(input.val())}));
+ input.attr("disabled", true);
+ setTimeout(function() {
+ input.attr("disabled", false);
+ input.select();
+ }, 16);
+ }
+ //no action while engine is hao123 and input val is blank
+ /*if(/^hao123$/.test(logo.attr("data-id")) && input.val() === "") {
+ return false;
+ }*/
+ }),
+ //把个人热搜词排在CMS配置的热搜词之前
+ renderPersonalHotSearchWords = function( result ){
+
+ var dom = "",
+ len = 5;
+
+ result = result || [];
+ result = result.concat(conf.hSearchWords.words);
+ len = Math.min( result.length,len );
+ for (var i = 0; i < len; i++) {
+ var data = result[i],
+ currentTpl = data.url ? hSeWordsWithUrlTpl : hSeWordsWithOutUrlTpl,
+ frc = data.name ? "true" : "";
+
+ dom = dom + helper.replaceTpl( currentTpl,{"url" : data.url || "","name" : data.word || data.name,"frc" : frc});
+ };
+
+ $(".hsrch_word").html(dom);
+ },
+ //获取个人热搜词
+ getPersonalHotSearchWords = function(){
+ var result = "",
+ params = "?app=recomquery&act=contents&vk=0&num=5&country=" + conf.country;
+
+
+ $.ajax({
+ url : conf.apiUrlPrefix + params,
+ dataType : "jsonp",
+ jsonp : "jsonp",
+ jsonpCallback : "ghao123_" + hex_md5(params,16),
+ success : function ( result ) {
+ renderPersonalHotSearchWords( result.content.data );
+ },
+ error : function(){
+ renderPersonalHotSearchWords();
+ }
+ });
+
+ },
+ //把用户删除的热搜词加入黑名单
+ deletePersonalHotSearchWords = function( word ){
+ var params = "?app=recomquery&act=delete&vk=0&num=5&content=" + encodeURIComponent(word) + "&country=" + conf.country,
+ result = "";
+
+ $.ajax({
+ url : conf.apiUrlPrefix + params,
+ dataType : "jsonp",
+ jsonp : "jsonp",
+ jsonpCallback : "ghao123_" + hex_md5(params,16),
+ success : function( result ){
+ renderPersonalHotSearchWords( result.content.data );
+ UT.send({
+ modId : "hot-word",
+ position : "delete",
+ type : "click",
+ ac : "b",
+ value : encodeURIComponent(word)
+ });
+ },
+ error : function(){
+ renderPersonalHotSearchWords();
+ }
+ });
+ },
+ handlePersonalSwitch = function () {
+
+ var cookie = $.cookie.get("pHotWord"),
+ icon = hSeWords.find(".i-personal"),
+ title = conf.hSearchWords;
+
+ if(cookie !== null) {
+ $.store("pHotWord", cookie, {expires: 2000});
+ $.cookie.set("pHotWord", null);
+ }
+ cookie = $.store("pHotWord");
+
+ if(!cookie || cookie == "1"){
+ icon.addClass("on-personal");
+ getPersonalHotSearchWords();
+ icon.attr("title",title.showTip);
+ } else {
+ icon.addClass("off-personal");
+ renderPersonalHotSearchWords();
+ icon.attr("title",title.hideTip);
+ }
+ },
+ offRecordPersonal = function () {
+ var params = "?app=recomquery&act=close&vk=0&country=" + conf.country;
+
+ $.ajax({
+ url : conf.apiUrlPrefix + params,
+ dataType : "jsonp",
+ jsonp : "jsonp",
+ jsonpCallback : "ghao123_" + hex_md5(params,16),
+ success : function( result ){}
+ });
+ },
+ onRecordPersonal = function () {
+ var params = "?app=recomquery&act=open&vk=0&country=" + conf.country;
+
+ $.ajax({
+ url : conf.apiUrlPrefix + params,
+ dataType : "jsonp",
+ jsonp : "jsonp",
+ jsonpCallback : "ghao123_" + hex_md5(params,16),
+ success : function( result ){
+ }
+ });
+ UT.send({
+ modId : "hot-word",
+ position : "empty",
+ type : "click",
+ ac : "b"
+ });
+ };
+ //get personal hot words
+ conf.hSearchWords && conf.hSearchWords.showPersonalHotSearchWords && handlePersonalSwitch();
+
+ //disableSelection
+ disableSelection(tabs[0]);
+ // disableSelection(radios[0]);
+
+ resetBaiduVideoSug(_conf.list[curTab.attr('data-t')].engine, defaultN);
+
+ resetBaiduSug(_conf.list[curTab.attr('data-t')].engine, defaultN);
+
+ //focus the input when init
+
+ //to let lv2 page NOT to auto focus SEARCH INPUT! by NE
+ if(o.autoFocus == null){
+ o.autoFocus = true; //default TRUE!
+ }
+ if(o.autoFocus) {
+ input.focus();
+ }
+
+ btn.on("mousedown", function() {
+ btnWrap.addClass("btn-search_click");
+ });
+ btn.on("mouseup", function() {
+ btnWrap.removeClass("btn-search_click");
+ });
+ btn.on("mouseout", function() {
+ btnWrap.removeClass("btn-search_click");
+ });
+ btn.on("mouseenter", function() {
+ btnWrap.addClass("btn-search_hover");
+ });
+ btn.on("mouseleave", function() {
+ btnWrap.removeClass("btn-search_hover");
+ });
+ input.on("focus", function() {
+ inputWrap.addClass("box-search_focus");
+ label.hide();
+ });
+ input.on("blur", function() {
+ inputWrap.removeClass("box-search_focus");
+ // $.trim(input.val()) === "" && label.show();
+ });
+ logoGroup.children().on("mouseenter", function() {
+ $(this).addClass("box-search_logo_hover");
+ });
+ logoGroup.children().on("mouseleave", function() {
+ $(this).removeClass("box-search_logo_hover");
+ });
+ moreTab.children().on("mouseenter", function() {
+ $(this).addClass("box-search_more_hover");
+ });
+ moreTab.children().on("mouseleave", function() {
+ $(this).removeClass("box-search_more_hover");
+ });
+
+ tabs.on("mousedown", function(e) {
+ var el = e.target;
+ el.tagName === "SPAN" && (el = el.parentNode);
+ //el.tagName !== "DT" && !hasClass(el, "cur") && !hasClass(el, "more") && switchTab(el);
+ el.getAttribute("data-t") && switchTab(el);
+ form.acceptCharset = document.charset = "utf-8";
+
+ // e.stopPropagation();
+
+ // focus the input when tab element exchanges
+ setTimeout(function() {
+ input.focus();
+ // clearTimeout(t);
+ }, 5);
+ });
+ conf.pageType !=="lv2" && window["PDC"] && PDC.mark("c_sxvi");
+ moreTab.on("mousedown", function(e) {
+ var el = e.target;
+ if(el.parentNode.tagName === "DD") {
+ setTimeout(showMore, 200);
+ }else {
+ showMore();
+ }
+ });
+
+ $(document).on("mousedown", function(e) {
+ var el = e.target;
+ logoGroup.hasClass("box-search_logos_show") && el !== logoGroup[0] && !jQuery.contains(logoGroup[0], el) && showLogo();
+ moreTab.hasClass("box-search_more_show") && el !== moreTab[0] && !jQuery.contains(moreTab[0], el) && showMore();
+ // more.css("display") === "block" && el !== moreTab[0] && !jQuery.contains(moreTab[0], el) && !jQuery.contains(more[0], el) && showMore();
+ });
+
+ logoGroup.on("click", function(e) {
+ var el = e.target,
+ $el = $(el),
+ $ta = el.tagName,
+ t = curTab.attr("data-t"),
+ n = storeForm[t],
+ _n,
+ engines = _conf.list[t].engine,
+ engLen = engines.length;
+
+ //remove the last null ,IE8 bug
+ if($.isEmptyObject(engines[engLen-1])){
+ engines.length = engLen - 1;
+ };
+ if ($ta === "IMG"||$ta === "SPAN") {
+ _n = ~~$el.parent().attr("data-n");
+ } else if ($ta === "A") {
+ _n = ~~$el.attr("data-n");
+ } else {
+ _n = ~~$el.children().attr("data-n");
+ }
+
+ if(curTab.attr("data-t") == "web") {
+ webEngine.attr("data-num", _n);
+ }
+ //input.select();
+ //keep the cursor in end
+ form[0].acceptCharset = document.charset = "utf-8";
+ /*setTimeout(function() {
+ setCursorPos(input[0], input.val().length);
+ }, 16);*/
+
+ if(_n !== n) {
+ storeForm[t] = _n;
+ resetForm(engines, _n);
+
+ //reset suggest
+ resetSug(engines, _n);
+
+ //reset PS video sug
+ resetBaiduVideoSug(engines, _n);
+
+ //reset baidu sug
+ resetBaiduSug(engines, _n);
+ }
+ showLogo();
+
+ });
+ // realize hot search words module
+ hSeWords.on("click", function(e) {
+ var tar = e.target,
+ href = $(tar).attr("href"),
+ data_n = webEngine.attr("data-num"),
+ engine = _conf.list["web"].engine[data_n], // default Google search engine
+ urlPath = engine.action, // url string except query string. some search engine end with '?'
+ query = engine.q, // query variable
+ param = jQuery.param(engine.params), // like a=b&b=2
+ hadlParam = param ? ("&"+param) : "", // like &a=b&b=2 or ""
+ url = "";
+
+ if(tar.nodeName.toLowerCase() === "a" && href === "#") {
+ // handled url
+ url = urlPath + (urlPath.charAt(urlPath.length-1) == "?" ? "" : "?") + query + "=" + encodeURIComponent($(tar).text()) + hadlParam;
+ window.open(url);
+ }
+
+ });
+
+ // hot search word send search action UT
+ (function() {
+ if(_conf.list["web"].engine[0].id === "hao123") {
+ hSeWords.on("mousedown", function(e) {
+ var tar = e.target;
+ if(tar.tagName.toUpperCase() == 'A') {
+ UT.send({
+ type: "click",
+ position: "search",
+ engine: "hao123",
+ modId: "hot-word",
+ tab: "web",
+ value: helper.getQuery(tar.href).wd || ""
+ });
+ e.stopPropagation(); // avoid links auto UT
+ }
+ });
+ }
+ })();
+ if( conf.hSearchWords && conf.hSearchWords.showPersonalHotSearchWords ){
+ hSeWords.on("click",".i-close",function(){
+ var el = $(this).parent();
+
+ el.fadeOut();
+ deletePersonalHotSearchWords( el.find("a").text() );
+ }).
+ on("mouseover",".i-close",function(){
+ deleteHswordTimer && clearTimeout(deleteHswordTimer);
+ $(this).show();
+ }).
+ on("mouseleave",".i-close",function(){
+ $(".i-close").hide();
+ deleteHswordTimer && clearTimeout(deleteHswordTimer);
+ }).
+ on("mouseover",".hsword-span",function(){
+ var $this = $(this);
+
+ $(".i-close").hide();
+ deleteHswordTimer && clearTimeout(deleteHswordTimer);
+ !$this.attr("frc").length && $(this).find(".i-close").show();
+ }).
+ on("mouseleave",".hsword-span",function(){
+ var $this = $(this);
+
+ deleteHswordTimer = setTimeout(function(){
+ $(".i-close").hide();
+ },200);
+
+ }).
+ on("click",".on-personal",function(){
+ var content = ''+conf.hSearchWords.deleteTip+' '
+ +''+conf.hSearchWords.confirm+' '
+ +''+conf.hSearchWords.cancle+' ',
+ option = {
+ 'wrapOpt': {
+ 'modId': 'hot-word',
+ 'content': content
+ },
+ 'pos': {
+ 'left': -20,
+ 'top': 30
+ }
+ },
+ tip = null,
+ bubble = $(".ui-bubble-hot-word"),
+ cookie = $.store("pHotWord");
+
+ if( bubble.length ){
+ bubble.show();
+ } else {
+ tip = hSeWords.bubble(option),
+ tip.show();
+ }
+ UT.send({
+ modId: "hot-word",
+ position: "switch",
+ sort: "off",
+ ac: "b"
+ });
+
+ }).
+ on("click",".off-personal",function(){
+ $(this).removeClass("off-personal").addClass('on-personal').attr("title",conf.hSearchWords.showTip);
+ $.store("pHotWord","1",{expires: 2000});
+ UT.send({
+ modId: "hot-word",
+ position: "switch",
+ sort: "on",
+ ac: "b"
+ });
+ onRecordPersonal();
+ });
+ $(document).on("click",".ui-bubble-hot-word .btn-confirm",function(){
+ $(".ui-bubble-hot-word").hide();
+ hSeWords.find(".i-personal").removeClass("on-personal").addClass("off-personal").attr("title",conf.hSearchWords.hideTip);
+ $.store("pHotWord","0",{expires: 2000});
+ renderPersonalHotSearchWords();
+ UT.send({
+ modId: "hot-word",
+ position: "switch",
+ sort: "confirm",
+ ac: "b"
+ });
+ offRecordPersonal();
+ }).on("click",".ui-bubble-hot-word .btn-cancle,.ui-bubble-hot-word .ui-bubble_close",function(){
+ $(".ui-bubble-hot-word").hide();
+ UT.send({
+ modId: "hot-word",
+ position: "switch",
+ sort: "cancle",
+ ac: "b"
+ });
+ });
+ }
+
+
+ if (_conf.conf.tn) {
+ var timInter = _conf.conf.tn.timeInterval,
+ timeStamp = _conf.conf.tn.timeStamp,
+ isInList = _conf.conf.tn.isInList,
+ separTime = parseInt(_conf.conf.tn.serverTime) - parseInt(timeStamp),
+ searGroup = $(".box-search").parent();
+ if (isInList > 0 && separTime < timInter) {
+ searGroup.next().css("margin-top", "10px");
+ searGroup.hide();
+ }
+ }
+
+ /*for header when fixed & width = 40px*/ // TODO
+ var $window = $(window),
+ recordTab = null, // 吸顶时刻如果tab不是web的话记录当前tab
+ restoreTo = function() { // 吸顶变正常时恢复之前的tab
+ if(recordTab) {
+ switchTab(recordTab);
+ } else {
+ switchTab($("a[data-t='web']", tabs), true);
+ logoGroup.removeClass("box-search_logos_show");
+ }
+ },
+ transTo = function() { // 正常变吸顶时切到web的tab
+ if (curTab.attr("data-t") != "web") {
+ recordTab = curTab;
+ switchTab($("a[data-t='web']", tabs));
+ } else {
+ recordTab = null;
+ switchTab($("a[data-t='web']", tabs), true);
+ logoGroup.removeClass("box-search_logos_show");
+ }
+ };
+
+ $window.on("headerFixed.transTo", function() {
+ transTo();
+ });
+ $window.on("headerFixed.restore", function() {
+ restoreTo();
+ });
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/search-box-head.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/search-box-head.tpl
new file mode 100755
index 000000000..023d766e1
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/search-box-head.tpl
@@ -0,0 +1,97 @@
+<%* 搜索引擎根据TN号显隐*%>
+<%foreach $body.searchBox.sBoxTag as $value%>
+ <%foreach $value.engine as $engine%>
+ <%if !empty($engine.tn[0].param)%>
+ <%foreach $engine.tn as $tn%>
+ <%if $tn.param == $root.urlparam.tn%>
+ <%$body.searchboxEngine[$engine.id] = 'true'%>
+ <%/if%>
+ <%/foreach%>
+ <%/if%>
+ <%/foreach%>
+<%/foreach%>
+
+<%assign var="sBoxTag" value=$body.searchBox.sBoxTag%>
+<%assign var="hSearchWords" value=$body.searchBox.hotSearchWords%>
+<%assign var="sBtnWords" value=$body.searchBox.searchBtnWords%>
+<%* 搜索框 --- 首屏模块 inline css*%>
+<%style%>
+ <%if $head.dir=='ltr'%>
+ @import url('/widget/search-box-head/ltr/ltr_inline.css?__inline');
+ <%else%>
+ @import url('/widget/search-box-head/rtl/rtl_inline.css?__inline');
+ <%/if%>
+<%/style%>
+<%widget name="common:widget/search-box-head/`$head.dir`/`$head.dir`.tpl"%>
+<%widget name="common:widget/search-box-head/`$sysInfo.country`/`$sysInfo.country`.tpl"%>
+<%script%>
+ require.async(["common:widget/ui/jquery/jquery.js", "common:widget/search-box-head/search-box-head-async.js"], function ($) {
+ var autoFocusSearch = true;
+ <%if $body.extAppMod%>
+ autoFocusSearch = false; //if app show DO NOT autoFocus
+ <%/if%>
+ <%if !empty($body.searchBox.sugUrl)%>
+ var head = document.getElementsByTagName("head")[0];
+ var requestScript = function(url, onsuccess, onerror, timeout) {
+
+ var script = document.createElement('script');
+ if (onerror) {
+ var tid = setTimeout(function() {
+ script.onload = script.onreadystatechange = script.onerror = null;
+ timeout();
+ }, 5000);
+
+ script.onerror = function() {
+ clearTimeout(tid);
+ onerror();
+ };
+
+ script.onload = script.onreadystatechange = function() {
+ if ( !script.readyState || /loaded|complete/.test( script.readyState ) ) {
+ script.onload = script.onreadystatechange = null;
+ script = undefined;
+ clearTimeout(tid);
+ onsuccess();
+ }
+ }
+ }
+ script.type = 'text/javascript';
+ script.src = url;
+ head.appendChild(script);
+ };
+
+ requestScript("<%$body.searchBox.sugUrl%>", function() {
+ baidu_sug.setMode('baidu');
+ baidu_sug.toggle(false);
+ Gl.searchGroup({
+ type: conf.pageType,
+ autoFocus: autoFocusSearch
+ });
+ UT && UT.send && UT.send({type: "others", modId: "search", position: "success"});
+ }, function() {
+ baidu_sug = false;
+ Gl.searchGroup({
+ type: conf.pageType,
+ autoFocus: autoFocusSearch
+ });
+ UT && UT.send && UT.send({type: "others", modId: "search", position: "error"});
+ }, function() {
+ baidu_sug = false;
+ Gl.searchGroup({
+ type: conf.pageType,
+ autoFocus: autoFocusSearch
+ });
+ UT && UT.send && UT.send({type: "others", modId: "search", position: "timeout"});
+ });
+ <%else%>
+ baidu_sug = false;
+ Gl.searchGroup({type: conf.pageType, autoFocus: autoFocusSearch});
+ <%/if%>
+
+ <%if !empty($body.searchBox.sugMoreUrl)%>
+ setTimeout(function() {
+ window["require"] && require.async("<%$body.searchBox.sugMoreUrl%>");
+ }, 1e3);
+ <%/if%>
+ });
+<%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/th/th.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/th/th.tpl
new file mode 100755
index 000000000..1f7b05187
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/th/th.tpl
@@ -0,0 +1,374 @@
+<%if !empty($body.searchBox.tplUrl)%>
+ <%widget name="common:widget/search-box/`$sysInfo.country`/`$body.searchBox.tplUrl`/`$body.searchBox.tplUrl`.tpl"%>
+<%else%>
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+require.async('common:widget/ui/jquery/jquery.js', function () {
+conf.searchGroup = {
+ conf:{
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/th/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/th/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ }
+ <%if isset($body.searchBox.sort)%>, sort: "<%$body.searchBox.sort%>"<%/if%>
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ <%if !empty($engine.otherSug)%>otherSug:{mod: "<%$engine.otherSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+ sug: {
+ "hao123": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: null,
+ callbackFn: "window.bdsug.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod": "thai",
+ "cb": "window.bdsug.sug",
+ "haobd": jQuery.cookie("BAIDUID")
+ },
+ templ: false
+ },
+ "google_th": {
+ requestQuery: "q",
+ url: null,
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "hp",
+ "hl": "th",
+ "authuser": "0"
+ },
+ templ: false
+ },
+ "yahoo_web": {
+ autoCompleteData: false,
+ requestQuery: "command",
+ url: "http://sugg.us.search.yahoo.net/gossip-us-sayt/",
+ callbackFn: "fxsearch",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjsonp"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.co.th/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "th",
+ "client": "img",
+ "ds": "i",
+ "cp": "4"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "hao123_images": {
+ requestQuery: "wd",
+ url: "http://sugimg.hao123.co.th/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod": "image_thai"
+ },
+ templ: function(data) {
+ var _data = data["s"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "ps_video": {
+ requestQuery: "wd",
+ url: null,
+ callbackFn: "ps_video",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod" : "video_thai",
+ "sid": "",
+ "cb":"ps_video",
+ },
+ templ: false
+ },
+ "youtube": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "youtube",
+ "hl": "th",
+ "gl": "us",
+ "gs_nf": "1",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_video": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.co.th/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "video-hp",
+ "hl": "th",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "mthai": {
+ url: null
+ },
+ "4shared": {
+ requestQuery: "search",
+ url: "http://dc413.4shared.com/network/search-suggest.jsp",
+ callbackFn: "ajaxSuggestions.jsonpCallback",
+ callbackDataKey: "suggestions",
+ requestParas: {
+ "format": "jsonp"
+ },
+ customUrl: function(para) {
+ return this.o.url + "?search=" + btoa(this.q) + "&format=jsonp";
+ },
+ templ: function(data) {
+ var _data = data["suggestions"] || [],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "filestube": {
+ requestQuery: "q",
+ url: "http://149.13.65.144:8087",
+ callbackFn: "filestube123",
+ callbackDataKey: "r",
+ charset: "utf-8",
+ requestParas: {
+ "callback": "filestube123",
+ "t": +new Date
+ },
+ customUrl: function(para) {
+ return this.o.url + "/" + encodeURIComponent(this.q) + "?" + para.substr(1);
+ }
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.co.th/maps/suggest",
+ callbackFn: "_xdc_._bgnkibby8",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "2",
+ "hl": "th",
+ "gl": "th",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "ll": "21.902278,101.469727",
+ "spn": "5.706298,39.506836",
+ "auth": "ac0dbe60:A6KQ3ztz8bQ13_rnpShsJPs6jOU",
+ "src": "1",
+ "num": "5",
+ "numps": "5",
+ "callback": "_xdc_._bgnkibby8"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for(; i - ' + detail + '' : "";*/
+
+ ret.push('' + _data[i][0] + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "longdo_map": {
+ requestQuery: "key",
+ url: "http://search2.longdo.com/BWTSearch/HeadSearch",
+ callbackFn: "processJSONSuggest",
+ requestParas: {
+ "ds": "poi,poi2,poi3,s_pg",
+ "json": "1",
+ "num": "20",
+ "anyorder": "1",
+ "count": "19"
+ },
+ customUrl: function(para) {
+ return this.o.url + "?" + para.substr(1) + "&" + this.o.requestQuery + '=' + encodeURIComponent(this.q);
+ },
+ templ: function(data) {
+ var _data = data,
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length;
+
+ for(; i' + _data[i].d + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "longdo_dict": {
+ requestQuery: "key",
+ url: "http://search.longdo.com/BWTSearch/HeadSearch",
+ callbackFn: "processJSONSuggest",
+ requestParas: {
+ "json": "1",
+ "ds": "head",
+ "num": "20",
+ "count": "7"
+ },
+ customUrl: function(para) {
+ return this.o.url + "?" + para.substr(1) + "&" + this.o.requestQuery + '=' + encodeURIComponent(this.q);
+ },
+ templ: function(data) {
+ var _data = data,
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length;
+
+ for(; i' + _data[i].d + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_translate": {
+ url: null
+ },
+ "wiki": {
+ autoCompleteData: false,
+ requestQuery: "search",
+ url: "http://th.wikipedia.org/w/api.php",
+ callbackFn: "wikipedia.th",
+ callbackDataKey: "1",
+ requestParas: {
+ "action": "opensearch",
+ "namespace": "0",
+ "suggest": "",
+ "callback": "wikipedia.th"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "filmes": {
+ requestQuery: "wds",
+ url: "http://th.hao123.com/video/sug",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {},
+ templ: function(data) {
+ var _data = data["s"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ }
+ }
+}
+});
+<%/strip%>
+<%/script%>
+<%/if%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/tw/tw.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/tw/tw.tpl
new file mode 100755
index 000000000..20f996a16
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/tw/tw.tpl
@@ -0,0 +1,333 @@
+
+<%if !empty($body.searchBox.tplUrl)%>
+ <%widget name="common:widget/search-box/`$sysInfo.country`/`$body.searchBox.tplUrl`/`$body.searchBox.tplUrl`.tpl"%>
+<%else%>
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+conf.searchGroup = {
+ conf:{
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/tw/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/tw/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ }
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+
+ sug: {
+ "google_web": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com.tw/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "hp",
+ "hl": "zh-TW"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_web": {
+ autoCompleteData: false,
+ requestQuery: "command",
+ url: "http://sugg.tw.search.yahoo.net/gossip-tw/",
+ callbackFn: "fxsearch",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjsonp"
+ }
+ },
+ "baidu": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://suggestion.baidu.com/su",
+ callbackFn: "window.bdsug.sug",
+ callbackDataKey: "s",
+ charset:"gbk",
+ requestParas: {
+ "cb": "window.bdsug.sug"
+ }
+ },
+ "google_news": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com.tw/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "serp",
+ "hl": "zh-TW",
+ "gs_nf": "1",
+ "ds": "n"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_news": {
+ autoCompleteData: false,
+ requestQuery: "command",
+ url: "http://sugg.tw.search.yahoo.net/gossip-tw-ura",
+ callbackFn: "fxsearch",
+ callbackDataKey: "1",
+ requestParas: {
+ "output": "fxjsonp",
+ "droprotated": "1",
+ "pubid": "184"
+ }
+ },
+ "baidu_news": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://nssug.baidu.com/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ charset:"gbk",
+ requestParas: {
+ "prod": "news"
+ }
+ },
+ "youtube": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "youtube",
+ "hl": "zh-TW",
+ "gl": "tw",
+ "gs_nf": "1",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_video": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com.tw/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "video-hp",
+ "hl": "zh-TW",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "baidu_video": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://nssug.baidu.com/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ charset:"gbk",
+ requestParas: {
+ "prod": "video"
+ }
+ },
+ "yahoo_images": {
+ autoCompleteData: false,
+ requestQuery: "command",
+ url: "http://sugg.tw.search.yahoo.net/gossip-tw",
+ callbackFn: "fxsearch",
+ callbackDataKey: "1",
+ requestParas: {
+ "output": "fxjsonp",
+ "pubid": "183"
+ }
+ },
+ "google_images": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com.tw/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "zh-TW",
+ "client": "img",
+ "gs_nf": "1",
+ "ds": "i"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "baidu_images": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://nssug.baidu.com/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ charset:"gbk",
+ requestParas: {
+ "prod": "image"
+ }
+ },
+ "facebook": {
+ url: null
+ },
+ "wiki": {
+ autoCompleteData: false,
+ requestQuery: "search",
+ url: "http://zh.wikipedia.org/w/api.php",
+ callbackFn: "wikipedia.zh",
+ callbackDataKey: "1",
+ requestParas: {
+ "action": "opensearch",
+ "namespace": "0",
+ "suggest": "",
+ "callback": "wikipedia.zh"
+ }
+ },
+ "baidu_baike": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://nssug.baidu.com/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ charset:"gbk",
+ requestParas: {
+ "prod": "baike"
+ }
+ },
+ "google_dict": {
+ url: null
+ },
+ "yahoo_dict": {
+ autoCompleteData: false,
+ requestQuery: "command",
+ url: "http://sugg.tw.search.yahoo.net/gossip-tw-pub_sayt",
+ callbackFn: "fxsearch",
+ callbackDataKey: "1",
+ requestParas: {
+ "output": "fxjsonp",
+ "pubid": "560"
+ }
+ },
+ "baidu_dict": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://dictsug.baidu.com/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ charset:"gbk",
+ requestParas: {
+ }
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.com.tw/maps/suggest",
+ callbackFn: "googleMapCallback",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "1",
+ "hl": "zh-TW",
+ "gl": "tw",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "vpsrc": "1",
+ "src": "1",
+ "num": "10",
+ "numps": "3",
+ "callback": "googleMapCallback"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for(; i - ' + detail + '' : "";
+
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_map": {
+ url: null
+ }
+ }
+}
+<%/strip%>
+<%/script%>
+<%/if%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/vn/vn.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/vn/vn.tpl
new file mode 100755
index 000000000..86ca07340
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-head/vn/vn.tpl
@@ -0,0 +1,212 @@
+
+<%if !empty($body.searchBox.tplUrl)%>
+ <%widget name="common:widget/search-box/`$sysInfo.country`/`$body.searchBox.tplUrl`/`$body.searchBox.tplUrl`.tpl"%>
+<%else%>
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+conf.searchGroup = {
+ conf:{
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/vn/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 8
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/vn/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 8
+ }
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+ sug: {
+ "google_vn": {
+ requestQuery: "q",
+ url: "http://clients1.google.com.vn/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ client: "hp",
+ hl: "vi",
+ cp:"1",
+ gs_id: "c"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.com.vn/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataNum: 1,
+ requestParas: {
+ client:"img",
+ ds:"i",
+ hl:"vi",
+ gs_is:"1",
+ cp:"1",
+ gs_id:"k"
+ },
+ customUrl: function(para) {
+ return this.o.url + "?" + para.substr(1) + "&" + this.o.requestQuery + '=' + encodeURIComponent(this.q);
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "youtube": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "youtube",
+ "hl": "vi",
+ "gl": "us",
+ "gs_nf": "1",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_video": {
+ requestQuery: "q",
+ url: "http://suggestqueries.google.com/complete/search",
+ callbackFn: "window.google.ac.hr",
+ callbackDataNum: 1,
+ requestParas: {
+ hl:"vi",
+ gl:"ZZ",
+ ds:"yt",
+ client:"suggest",
+ hjson:"t",
+ jsonp:"window.google.ac.hr",
+ cp:"1"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_news": {
+ url: null
+ },
+ "google_dict": {
+ url: null
+ },
+ "mp3.zing": {
+ url: null
+ },
+ "nhaccuatui": {
+ url: null
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.com/maps/suggest",
+ callbackFn: "_xdc_._2gqj8p7jf",
+ callbackDataNum: 3,
+ requestParas: {
+ clid:"1",
+ cp:"2",
+ hl:"th",
+ gl:"",
+ json:"a",
+ ll:"21.739091,106.704712",
+ num:"5",
+ numps:"5",
+ spn:"1.347031,4.938354",
+ src:"1",
+ v:"2",
+ callback:"_xdc_._2gqj8p7jf",
+ auth:"d95a99a2:MA69F0jNrYbAN5QJuDKDqwnr1rU"
+ },
+ customUrl: function(para) {
+ return this.o.url + "?" + para.substr(1) + "&" + this.o.requestQuery + '=' + encodeURIComponent(this.q);
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length;
+
+ var detail = "";
+
+ for(; i - ' + detail + '' : "";
+
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "diadiem": {
+ url: null
+ },
+ "google_answers": {
+ url: null
+ },
+ "yahoo_answers": {
+ url: null
+ }
+ }
+}
+<%/strip%>
+<%/script%>
+<%/if%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/ae/ae.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/ae/ae.tpl
new file mode 100755
index 000000000..4524b8ce2
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/ae/ae.tpl
@@ -0,0 +1,242 @@
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+conf.searchGroup = {
+ conf: {
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/ae/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 8,
+ defaultTab: "<%$body.searchBox.defaultTab|default:'web'%>"
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/ae/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 8,
+ defaultTab: "<%$body.searchBox.defaultTab|default:'web'%>"
+ }
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>",
+ placeholder: "<%$engine.placeholder%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+ sug: {
+ "google": {
+ requestQuery: "q",
+ url: "http://clients1.google.ae/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataNum: 1,
+ requestParas: {
+ "client": "hp",
+ "hl": "ar",
+ "authuser": "0"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0] + ' ')
+ }
+
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo": {
+ requestQuery: "command",
+ url: "http://sugg.us.search.yahoo.net/gossip-us-ura",
+ callbackFn: "YUI.Env.DataSource.callbacks.yui_3_3_0_1_1312871021408973",
+ callbackDataKey: "r",
+ requestParas: {
+ "output": "yjsonp",
+ "callback": "YUI.Env.DataSource.callbacks.yui_3_3_0_1_1312871021408973"
+ },
+ templ: function(data) {
+ var _data = data["r"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "youtube": {
+ requestQuery: "q",
+ url: "http://suggestqueries.google.com/complete/search",
+ callbackFn: "window.yt.www.suggest.handleResponse",
+ callbackDataNum: 1,
+ requestParas: {
+ "hl": "ar",
+ "ds": "yt",
+ "client": "youtube",
+ "hjson": "t",
+ "jsonp": "window.yt.www.suggest.handleResponse",
+ "cp": "2"
+ },
+
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_video": {
+ requestQuery: "command",
+ url: "http://gossip-ss.us.search.yahoo.com/gossip-us_ss/",
+ callbackFn: "fxsearch",
+ callbackDataNum: 1,
+ requestParas: {
+ "nresults": 8,
+ "output": "fxjsonp"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i].replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.ae/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "ar",
+ "client": "img",
+ "sugexp": "gsihc"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_images": {
+ requestQuery: "command",
+ url: "http://gossip-ss.us.search.yahoo.com/gossip-us_ss",
+ callbackFn: "YUI.Env.DataSource.callbacks.yui_3_5_1_1_1354169017899_293",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjsonp",
+ "nresults": 10,
+ "callback": "{callback}",
+ "callback": "YUI.Env.DataSource.callbacks.yui_3_5_1_1_1354169017899_293",
+ "pubid": 103,
+ "queryfirst": 1
+ }
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.ae/maps/suggest",
+ callbackFn: "_xdc_._bgnkibby8",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "2",
+ "hl": "ar",
+ "gl": "ar",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "ll": "21.902278,101.469727",
+ "spn": "5.706298,39.506836",
+ "auth": "ac0dbe60:A6KQ3ztz8bQ13_rnpShsJPs6jOU",
+ "src": "1",
+ "num": "5",
+ "numps": "5",
+ "callback": "_xdc_._bgnkibby8"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for (; i < len; i++) {
+ try {
+ detail = _data[i][9][0][0] || _data[i][9][0] || _data[i][9] || "";
+ } catch (e) {
+ detail = ""
+ }
+
+ detail = detail ? ' - ' + detail + ' ' : "";
+
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "wikimapia": {
+ url: null
+ },
+ "wiki_ar": {
+ requestQuery: "search",
+ url: "http://ar.wikipedia.org/w/api.php",
+ callbackFn: "wikipedia.ar",
+ callbackDataNum: 1,
+ requestParas: {
+ "action": "opensearch",
+ "namespace": "0",
+ "suggest": "",
+ "callback": "wikipedia.ar"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i].replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_translate": {
+ url: null
+ }
+ }
+}
+<%/strip%>
+<%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/ar/ar.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/ar/ar.tpl
new file mode 100755
index 000000000..32509a030
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/ar/ar.tpl
@@ -0,0 +1,451 @@
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+require.async('common:widget/ui/jquery/jquery.js', function () {
+conf.searchGroup = {
+ conf: {
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/ar/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10,
+ defaultTab: "<%$body.searchBox.defaultTab|default:'web'%>"
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/ar/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10,
+ defaultTab: "<%$body.searchBox.defaultTab|default:'web'%>"
+ }
+ <%if isset($body.searchBox.sort)%>, sort: "<%$body.searchBox.sort%>"<%/if%>
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ <%if !empty($engine.otherSug)%>otherSug:{mod: "<%$engine.otherSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>",
+ placeholder: "<%$engine.placeholder%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+ sug: {
+ "hao123": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://search.hao123.com.eg/r/su",
+ callbackFn: "window.bdsug.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod": "eg",
+ "cb": "window.bdsug.sug"
+ },
+ templ: function(data) {
+ var _data = data['s'] || [],
+ q = data['q'],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com.eg/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "hp",
+ "hl": "ar-EG",
+ "authuser": "0"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo": {
+ requestQuery: "command",
+ url: "http://sugg.us.search.yahoo.net/gossip-us-ura",
+ callbackFn: "YUI.Env.DataSource.callbacks.yui_3_3_0_1_1312871021408973",
+ callbackDataKey: "r",
+ requestParas: {
+ "output": "yjsonp",
+ "callback": "YUI.Env.DataSource.callbacks.yui_3_3_0_1_1312871021408973"
+ },
+ templ: function(data) {
+ var _data = data["r"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "ps_video": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://search.hao123.com.eg/r/su",
+ callbackFn: "window.bdsug.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod": "video_eg",
+ "cb": "window.bdsug.sug"
+ },
+ templ: function(data) {
+ var _data = data['s'] || [],
+ q = data['q'],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "youtube": {
+ requestQuery: "q",
+ url: "http://suggestqueries.google.com/complete/search",
+ callbackFn: "window.yt.www.suggest.handleResponse",
+ callbackDataNum: 1,
+ requestParas: {
+ "hl": "ar",
+ "ds": "yt",
+ "client": "youtube",
+ "hjson": "t",
+ "jsonp": "window.yt.www.suggest.handleResponse",
+ "cp": "2"
+ },
+
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_video": {
+ requestQuery: "command",
+ url: "http://gossip-ss.us.search.yahoo.com/gossip-us_ss/",
+ callbackFn: "fxsearch",
+ callbackDataNum: 1,
+ requestParas: {
+ "nresults": 8,
+ "output": "fxjsonp"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.com.eg/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "ar",
+ "client": "img",
+ "sugexp": "gsihc"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "hao123_images": {
+ requestQuery: "wd",
+ url: "http://10.247.1.38:8333/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod" : "image_eg"
+ },
+ templ: function(data) {
+ var _data = data["s"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_images": {
+ requestQuery: "command",
+ url: "http://gossip-ss.us.search.yahoo.com/gossip-us_ss",
+ callbackFn: "YUI.Env.DataSource.callbacks.yui_3_5_1_1_1354169017899_293",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjsonp",
+ "nresults": 10,
+ "callback": "{callback}",
+ "callback": "YUI.Env.DataSource.callbacks.yui_3_5_1_1_1354169017899_293",
+ "pubid": 103,
+ "queryfirst": 1
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.com.eg/maps/suggest",
+ callbackFn: "_xdc_._bgnkibby8",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "2",
+ "hl": "ar",
+ "gl": "ar",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "ll": "21.902278,101.469727",
+ "spn": "5.706298,39.506836",
+ "auth": "ac0dbe60:A6KQ3ztz8bQ13_rnpShsJPs6jOU",
+ "src": "1",
+ "num": "5",
+ "numps": "5",
+ "callback": "_xdc_._bgnkibby8"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for (; i < len; i++) {
+ try {
+ detail = _data[i][9][0][0] || _data[i][9][0] || _data[i][9] || "";
+ } catch (e) {
+ detail = ""
+ }
+
+ /*detail = detail ? ' - ' + detail + ' ' : "";*/
+
+ ret.push('' + _data[i][0] + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "wikimapia": {
+ url: null
+ },
+ "wiki_ar": {
+ requestQuery: "search",
+ url: "http://ar.wikipedia.org/w/api.php",
+ callbackFn: "wikipedia.ar",
+ callbackDataNum: 1,
+ requestParas: {
+ "action": "opensearch",
+ "namespace": "0",
+ "suggest": "",
+ "callback": "wikipedia.ar"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_translate": {
+ url: null
+ },
+ "filmes": {
+ requestQuery: "wds",
+ url: "http://ar.hao123.com/movie/sug",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ },
+ templ: function(data) {
+ var _data = data["s"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "ask_web": {
+ requestQuery: "q",
+ url: "http://clients1.google.com.eg/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "ar",
+ "client": "serp",
+ "sugexp": "gsihc"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + ' ');
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "ask_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.com.eg/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "ar",
+ "client": "img",
+ "sugexp": "gsihc"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + ' ');
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "ask_videos": {
+ requestQuery: "q",
+ url: "http://suggestqueries.google.com/complete/search",
+ callbackFn: "window.yt.www.suggest.handleResponse",
+ callbackDataNum: 1,
+ requestParas: {
+ "hl": "ar",
+ "ds": "yt",
+ "client": "youtube",
+ "hjson": "t",
+ "jsonp": "window.yt.www.suggest.handleResponse",
+ "cp": "2"
+ },
+
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "ask_maps": {
+ requestQuery: "q",
+ url: "http://maps.google.com.eg/maps/suggest",
+ callbackFn: "_xdc_._bgnkibby8",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "2",
+ "hl": "ar",
+ "gl": "ar",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "ll": "21.902278,101.469727",
+ "spn": "5.706298,39.506836",
+ "auth": "ac0dbe60:A6KQ3ztz8bQ13_rnpShsJPs6jOU",
+ "src": "1",
+ "num": "5",
+ "numps": "5",
+ "callback": "_xdc_._bgnkibby8"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for (; i < len; i++) {
+ try {
+ detail = _data[i][9][0][0] || _data[i][9][0] || _data[i][9] || "";
+ } catch (e) {
+ detail = ""
+ }
+
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ }
+ }
+}
+});
+<%/strip%>
+<%/script%>
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/br/br.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/br/br.tpl
new file mode 100755
index 000000000..816379c50
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/br/br.tpl
@@ -0,0 +1,459 @@
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+require.async('common:widget/ui/jquery/jquery.js', function () {
+conf.searchGroup = {
+ conf:{
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/br/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10,
+ defaultTab: "<%$body.searchBox.defaultTab|default:'web'%>"
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/br/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10,
+ defaultTab: "<%$body.searchBox.defaultTab|default:'web'%>"
+ }
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ <%if !empty($engine.otherSug)%>otherSug:{mod: "<%$engine.otherSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>",
+ placeholder: "<%$engine.placeholder%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+ sug: {
+ "hao123": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://search.hao123.com.br/r/su",
+ callbackFn: "window.bdsug.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod": "br",
+ "cb": "window.bdsug.sug"
+ },
+ templ: function(data) {
+ var _data = data['s'] || [],
+ q = data['q'],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_br": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com.br/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "hp",
+ "hl": "pt-BR",
+ "authuser": "0"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_web": {
+ autoCompleteData: false,
+ requestQuery: "command",
+ url: "http://sugg.br.search.yahoo.net/gossip-br-sayt/",
+ callbackFn: "fxsearch",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjsonp"
+ }
+ },
+ "4shared": {
+ requestQuery: "search",
+ url: "http://dc413.4shared.com/network/search-suggest.jsp",
+ callbackFn: "ajaxSuggestions.jsonpCallback",
+ callbackDataKey: "suggestions",
+ requestParas: {
+ "format": "jsonp"
+ },
+ customUrl: function(para) {
+ return this.o.url + "?search=" + btoa(this.q) + "&format=jsonp";
+ }
+ },
+ "ps_video": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://search.hao123.com.br/r/su",
+ callbackFn: "window.bdsug.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod": "video_br",
+ "cb": "window.bdsug.sug"
+ },
+ templ: function(data) {
+ var _data = data['s'] || [],
+ q = data['q'],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "youtube": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "youtube",
+ "hl": "pt",
+ "gl": "br",
+ "gs_nf": "1",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_video": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com.br/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "video-hp",
+ "hl": "pt-BR",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "kboing": {
+ url: null
+ },
+ "empregos": {
+ url: null
+ },
+ "google_dict": {
+ url: null
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.com.br/maps/suggest",
+ callbackFn: "_xdc_._bgnkibby8",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "100",
+ "hl": "pt-BR",
+ "gl": "br",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "ll": "-14.239424,-53.186502",
+ "spn": "24.779743,86.572266",
+ "auth": "ac0dbe60:A6KQ3ztz8bQ13_rnpShsJPs6jOU",
+ "src": "1",
+ "num": "10",
+ "callback": "_xdc_._bgnkibby8"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for(; i - ' + detail + '' : "";
+
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.com.br/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "img",
+ "ds": "i",
+ "hl": "pt-BR"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "hao123_images": {
+ requestQuery: "wd",
+ url: "http://sugimg.hao123.com.br/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod" : "image_brazil"
+ },
+ templ: function(data) {
+ var _data = data["s"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "postbar": {
+ url: null
+ },
+ "filmes": {
+ requestQuery: "wds",
+ url: "http://br.hao123.com/movie/sug",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ }
+ },
+ "americanas": {
+ requestQuery: "q",
+ url: "http://busca.americanas.com.br/autocomplete/search.php",
+ callbackFn: "window.americanas",
+ callbackDataKey: "sugestoes",
+ requestParas: {
+ "prod" : "image_brazil",
+ "type": "1",
+ "numsugestoes": "12",
+ "numprods": "0",
+ "callback":"window.americanas"
+ },
+ templ: function(data, q) {
+ var _data = data["sugestoes"] || [],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i].consulta.replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "walmart": {
+ url: null
+ },
+ "netshoes": {
+ url: null
+ },
+ "buscape": {
+ url: null
+ },
+ "zoom": {
+ requestQuery: "q",
+ url: "http://s.zst.com.br/static/autocomplete-index-r/.js",
+ callbackFn: "zoomAutoCompleteBlackBoard.notify",
+ callbackDataKey: "completions",
+ customUrl: function(para) {
+ var str = this.q.split("").join("/") + ".js?_=" + +new Date;
+ return this.o.url.replace(".js", str);
+ },
+ templ: function(data) {
+ var _data = data["completions"] || [],
+ ret = [],
+ i = 0,
+ q = data["key"],
+ tmp = "",
+ len = _data.length;
+ var isStr = function(value){
+ return typeof value === 'string';
+ };
+ for(; i' + tmp.replace(q, '' + q + ' ') + '');
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "ask_web": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ _url: null,
+ url: "http://ss-hao.search.ask.com/ss",
+ callbackFn: "suggestCallBack",
+ callbackDataNum: 1,
+ requestParas: {
+ "limit": "10",
+ "li":"ff",
+ "hl":"pt",
+ "fn":"suggestCallBack"
+ },
+ templ: function(data,q) {
+ var _data = data[1] || [],
+ ret = [],
+ i = 0,
+ len = _data.length;
+
+ for(; i' + _data[i].replace(q, '' + q + ' ') + '');
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "ask_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.com.br/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "img",
+ "hl": "pt-BR"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i", "").replace("", "");
+ ret.push('' + _q.replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "ask_videos": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com.br/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "video-hp",
+ "hl": "pt-BR",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i", "").replace("", "");
+ ret.push('' + _q.replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "ask_maps": {
+ requestQuery: "q",
+ url: "http://maps.google.com.br/maps/suggest",
+ callbackFn: "_xdc_._bgnkibby8",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "100",
+ "hl": "pt-BR",
+ "gl": "br",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "ll": "-14.239424,-53.186502",
+ "spn": "24.779743,86.572266",
+ "auth": "ac0dbe60:A6KQ3ztz8bQ13_rnpShsJPs6jOU",
+ "src": "1",
+ "num": "10",
+ "callback": "_xdc_._bgnkibby8"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for(; i - ' + detail + '' : "";
+
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ }
+ }
+}
+});
+<%/strip%>
+<%/script%>
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/en/en.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/en/en.tpl
new file mode 100755
index 000000000..0de360bb9
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/en/en.tpl
@@ -0,0 +1,176 @@
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+conf.searchGroup = {
+ conf:{
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/en/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10,
+ defaultTab: "<%$body.searchBox.defaultTab|default:'web'%>"
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/en/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10,
+ defaultTab: "<%$body.searchBox.defaultTab|default:'web'%>"
+ }
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>",
+ placeholder: "<%$engine.placeholder%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+ sug: {
+ "google_web": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "hp",
+ "hl": "en"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_images": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "en",
+ "client": "img",
+ "gs_nf": "1",
+ "ds": "i"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.com/maps/suggest",
+ callbackFn: "googleMapCallback",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "1",
+ "hl": "en",
+ "gl": "",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "vpsrc": "1",
+ "src": "1",
+ "num": "10",
+ "numps": "3",
+ "callback": "googleMapCallback"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for(; i - ' + detail + '' : "";
+
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "youtube": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "youtube",
+ "hl": "en",
+ "gl": "US",
+ "gs_nf": "1",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_news": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "serp",
+ "hl": "en",
+ "gs_nf": "1",
+ "ds": "n"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ }
+ }
+}
+<%strip%>
+<%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/id/id.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/id/id.tpl
new file mode 100755
index 000000000..adca107f5
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/id/id.tpl
@@ -0,0 +1,296 @@
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+conf.searchGroup = {
+ conf:{
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/id/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10,
+ defaultTab: "<%$body.searchBox.defaultTab|default:'web'%>"
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/id/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10,
+ defaultTab: "<%$body.searchBox.defaultTab|default:'web'%>"
+ }
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>",
+ placeholder: "<%$engine.placeholder%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+ sug: {
+ "google": {
+ requestQuery: "q",
+ url: "http://clients1.google.co.id/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "serp",
+ "hl": "id"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.co.id/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "img",
+ "ds": "i",
+ "hl": "id"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.co.id/maps/suggest",
+ callbackFn: "googleMapCallback",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "1",
+ "hl": "id",
+ "gl": "id",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "vpsrc": "1",
+ "src": "1",
+ "num": "10",
+ "numps": "3",
+ "callback": "googleMapCallback"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for(; i - ' + detail + '' : "";
+
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "youtube": {
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "youtubeCallback",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "id",
+ "client": "youtube",
+ "gl": "id",
+ "ds": "yt",
+ "callback": "youtubeCallback",
+ "cp": "1"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "4shared": {
+ requestQuery: "search",
+ url: "http://dc446.4shared.com/network/search-suggest.jsp",
+ callbackFn: "ajaxSuggestions.jsonpCallback",
+ callbackDataKey: "suggestions",
+ requestParas: {
+ "format": "jsonp"
+ },
+ customUrl: function(para) {
+ return this.o.url + "?search=" + btoa(this.q) + "&format=jsonp";
+ }
+ },
+ "google_dict": {
+ url: null
+ },
+ "yahoo_web": {
+ autoCompleteData: false,
+ requestQuery: "command",
+ url: "http://sugg.id.search.yahoo.com/gossip-id-sayt/",
+ callbackFn: "fxsearch",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjsonp"
+ }
+ },
+ "wiki": {
+ autoCompleteData: false,
+ requestQuery: "search",
+ url: "http://id.wikipedia.org/w/api.php",
+ callbackFn: "wikipedia.id",
+ callbackDataKey: "1",
+ requestParas: {
+ "action": "opensearch",
+ "namespace": "0",
+ "suggest": "",
+ "callback": "wikipedia.id",
+ "format":"json"
+ }
+ },
+ "google_news": {
+ url: null
+ },
+ "ask_web": {
+ requestQuery: "q",
+ url: "http://clients1.google.co.id/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "serp",
+ "hl": "id"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "ask_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.co.id/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "img",
+ "ds": "i",
+ "hl": "id"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "ask_videos": {
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "youtubeCallback",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "id",
+ "client": "youtube",
+ "gl": "id",
+ "ds": "yt",
+ "callback": "youtubeCallback",
+ "cp": "1"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "ask_maps": {
+ requestQuery: "q",
+ url: "http://maps.google.co.id/maps/suggest",
+ callbackFn: "googleMapCallback",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "1",
+ "hl": "id",
+ "gl": "id",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "vpsrc": "1",
+ "src": "1",
+ "num": "10",
+ "numps": "3",
+ "callback": "googleMapCallback"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for(; i - ' + detail + '' : "";
+
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ }
+ }
+}
+<%/strip%>
+<%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/bg-search-btn-click.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/bg-search-btn-click.png
new file mode 100755
index 000000000..7828b5d56
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/bg-search-btn-click.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/bg-search-btn-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/bg-search-btn-hover.png
new file mode 100755
index 000000000..d11e540ed
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/bg-search-btn-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/bg-search-btn-side-click.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/bg-search-btn-side-click.png
new file mode 100755
index 000000000..b66706676
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/bg-search-btn-side-click.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/bg-search-btn-side-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/bg-search-btn-side-hover.png
new file mode 100755
index 000000000..693ac8896
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/bg-search-btn-side-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/bg-search-btn-side.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/bg-search-btn-side.png
new file mode 100755
index 000000000..d2b3c4f93
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/bg-search-btn-side.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/bg-search-btn.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/bg-search-btn.png
new file mode 100755
index 000000000..e0d576570
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/bg-search-btn.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/i-close-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/i-close-hover.png
new file mode 100755
index 000000000..c6f540558
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/i-close-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/i-close.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/i-close.png
new file mode 100755
index 000000000..159ed3112
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/i-close.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/i-custom-hide.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/i-custom-hide.png
new file mode 100755
index 000000000..608993755
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/i-custom-hide.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/i-custom-show.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/i-custom-show.png
new file mode 100755
index 000000000..b21b98c98
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/i-custom-show.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/i-search-click.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/i-search-click.png
new file mode 100755
index 000000000..31d004952
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/i-search-click.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/i-search-hover.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/i-search-hover.png
new file mode 100755
index 000000000..a01e36716
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/i-search-hover.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/i-search.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/i-search.png
new file mode 100755
index 000000000..b3a7a12cd
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/i-search.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/id_new_add_icon.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/id_new_add_icon.png
new file mode 100755
index 000000000..eb59eef1f
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/id_new_add_icon.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/tag_new_icon.png b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/tag_new_icon.png
new file mode 100755
index 000000000..43e3174fe
Binary files /dev/null and b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/img/tag_new_icon.png differ
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/jp/jp.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/jp/jp.tpl
new file mode 100755
index 000000000..b3b01fd3c
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/jp/jp.tpl
@@ -0,0 +1,367 @@
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+conf.searchGroup = {
+ conf:{
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/jp/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10,
+ defaultTab: "<%$body.searchBox.defaultTab|default:'web'%>"
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/jp/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10,
+ defaultTab: "<%$body.searchBox.defaultTab|default:'web'%>"
+ },
+ tn: {
+ timeStamp: "<%$sysInfo.baiduidCt%>",
+ serverTime: "<%$sysInfo.serverTime%>",
+ isInList:<%if !empty($root.urlparam.tn) && !empty($head.confTn) && in_array($root.urlparam.tn,explode("|", $head.confTn))%>1<%else%>0<%/if%>,
+ timeInterval: 1209600
+ }
+
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>",
+ placeholder: "<%$engine.placeholder%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+
+ sug: {
+ "google_jp": {
+ requestQuery: "q",
+ url: "http://clients1.google.co.jp/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "serp",
+ "hl": "ja"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ <%if !empty($body.useYahooSug)%>
+ "yahoo_jp": {
+ requestQuery: "query",
+ url: "/yahoosug",
+ callbackFn: "yahoo_partner_sug",
+ callbackDataKey: 1,
+ requestParas: {
+ }
+ },
+ <%else%>
+ "yahoo_jp": {
+ requestQuery: "p",
+ url: "http://suggest.search.yahooapis.jp/SuggestSearchService/V3/webassistSearch",
+ callbackFn: "yahooSuggest",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjson",
+ "src": "srch",
+ "ei": "UTF-8",
+ "appid": "GEI3l.2xg673b7_tjztd7mGq8if5tIPm86vXPjoW7cwqM6jdkuEfO73_xNbz8QA-",
+ "n": 11,
+ "callback": "yahooSuggest"
+ }
+ },
+ <%/if%>
+ "baidu_jp": {
+ requestQuery: "wd",
+ url: "http://sug.baidu.jp/su?",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ }
+ },
+ "google_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.co.jp/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "img",
+ "ds": "i",
+ "hl": "ja"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_images": {
+ requestQuery: "query",
+ url: "http://suggest.search.yahooapis.jp/SuggestSearchService/V3/webassistSearch",
+ callbackFn: "yahooImgSuggest",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "json",
+ "src": "isrch",
+ "ei": "UTF-8",
+ "appid": "GEI3l.2xg673b7_tjztd7mGq8if5tIPm86vXPjoW7cwqM6jdkuEfO73_xNbz8QA-",
+ "resulsts": 10,
+ "callback": "yahooImgSuggest"
+ }
+ },
+ "baidu_images": {
+ requestQuery: "wd",
+ url: "http://image.baidu.jp/su?",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ }
+ },
+ "youtube": {
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "youtubeCallback",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "ja",
+ "client": "youtube",
+ "gl": "jp",
+ "ds": "yt",
+ "callback": "youtubeCallback",
+ "cp": "1"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_video": {
+ requestQuery: "query",
+ url: "http://suggest.search.yahooapis.jp/SuggestSearchService/V3/webassistSearch",
+ callbackFn: "yahooVideoSuggest",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "json",
+ "src": "vsrch",
+ "ei": "UTF-8",
+ "appid": "GEI3l.2xg673b7_tjztd7mGq8if5tIPm86vXPjoW7cwqM6jdkuEfO73_xNbz8QA-",
+ "resulsts": 10,
+ "callback": "yahooVideoSuggest"
+ }
+ },
+ "baidu_video": {
+ requestQuery: "wd",
+ url: "http://video.baidu.jp/su?",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ }
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.co.jp/maps/suggest",
+ callbackFn: "googleMapCallback",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "1",
+ "hl": "ja",
+ "gl": "jp",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "vpsrc": "1",
+ "src": "1",
+ "num": "10",
+ "numps": "3",
+ "callback": "googleMapCallback"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for(; i - ' + detail + '' : "";
+
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_news": {
+ requestQuery: "q",
+ url: "http://clients1.google.co.jp/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "serp",
+ "ds": "n",
+ "hl": "ja"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "jp_jobs": {
+ url: null
+ },
+ "google_dict": {
+ url: null
+ },
+ "yahoo_dict": {
+ requestQuery: "query",
+ url: "http://suggest.search.yahooapis.jp/SuggestSearchService/V3/webassistSearch",
+ callbackFn: "yahooDictSuggest",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "json",
+ ".src": "dic_all",
+ "appid": "GEI3l.2xg673b7_tjztd7mGq8if5tIPm86vXPjoW7cwqM6jdkuEfO73_xNbz8QA-",
+ "crumb": "QKHAOjMgzamLb0jiQkkwyVvZN_UvDCDclNTtYF_zmIZt96JRlxPpz5OweLONIHfY82xzaoagN2EPsJ.006TjkYwNEmA-",
+ "resulsts": 10,
+ "callback": "yahooDictSuggest"
+ }
+ },
+ "yahoo_chiebukuro": {
+ url: null
+ },
+ "yahoo_auctions": {
+ requestQuery: "query",
+ url: "http://suggest.search.yahooapis.jp/SuggestSearchService/V3/webassistSearch",
+ callbackFn: "yahooSuggest",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "json",
+ ".src": "auc",
+ "appid": "Hy5EaxCxg66QNDm0cEojk3JOZS470WbaRqWtIpaQ4Tc7s8v6IK8AO45lFd3bwAwJzlZc",
+ "resulsts": 10,
+ "callback": "yahooSuggest"
+ }
+ },
+ "amazon_shopping": {
+ requestQuery: "q",
+ url: "http://completion.amazon.co.jp/search/complete",
+ callbackFn: "amazonShoppingCallback",
+ callbackDataKey: 1,
+ requestParas: {
+ "method": "completion",
+ "search-alias" : "aps",
+ "mkt": 6,
+ "callback": "amazonShoppingCallback"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "rakuten_shopping": {
+ requestQuery: "q",
+ url: "http://api.suggest.search.rakuten.co.jp/suggest",
+ callbackFn: "rakutenShoppingCallback",
+ callbackDataKey: "result",
+ requestParas: {
+ "cl": "dir",
+ "rid": "1252328571",
+ "sid": "1",
+ "oe": "euc-jp",
+ "cb": "rakutenShoppingCallback"
+ },
+ templ: function(data) {
+ var _data = data["result"] || [],
+ q = _data["input"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_shopping": {
+ requestQuery: "p",
+ url: "http://suggest.shop.yahooapis.jp/Shopping/Suggest/V1/suggester",
+ callbackFn: "getJsonData",
+ callbackDataNum: 1,
+ requestParas: {
+ "callback":"getJsonData",
+ "output": "json",
+ "start": "1",
+ "result": "10",
+ ".src": "shp",
+ "brand": "0",
+ "da": "0",
+ "prod": "0",
+ "appid": "dj0zaiZpPWIyYVBwSXI3bmdqYSZzPWNvbnN1bWVyc2VjcmV0Jng9YWU-"
+ },
+ templ: function(data) {
+ var _data = data[1][0].keyword || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i].replace(q, '' + q + ' ') + '');
+ }
+ return '' + ret.join("") + ' ';
+ }
+ }
+ }
+};
+<%/strip%>
+<%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/ltr/ltr.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/ltr/ltr.css
new file mode 100755
index 000000000..7a1ee3bc7
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/ltr/ltr.css
@@ -0,0 +1,173 @@
+.box-search_keyboard {
+ padding: 2px 1px;
+}
+.box-search {
+ width: 834px;
+ margin-top: 15px;
+ margin-left: 103px;
+}
+.box-search_tab {
+ position: relative;
+ z-index: 8;
+
+ margin-left: 168px;
+
+ white-space: nowrap;
+}
+.box-search_tab a {
+ float: left;
+
+ margin-left: -1px;
+ padding: 4px 12px 3px;
+}
+.box-search_tab a.cur {
+ font-weight: 700;
+
+ cursor: default;
+
+ color: #1c81e5;
+}
+.box-search_sep {
+ float: left;
+
+ height: 6px;
+ margin-top: 8px;
+ margin-left: -1px;
+
+ border-right: 1px solid #b3b3b3;
+}
+.box-search_inner {
+ height: 68px;
+}
+.box-search_logo_wrap {
+ position: relative;
+ z-index: 6;
+
+ float: left;
+
+ width: 161px;
+ height: 65px;
+ margin: -13px 0 0 0;
+}
+.box-search_logo dt,
+.box-search_logo dd {
+ padding: 10px 12px 10px 14px;
+
+ cursor: pointer;
+}
+.box-search_logo_hide {
+ display: none;
+}
+.box-search_logo img {
+ width: 120px;
+ height: 45px;
+}
+.box-search_form {
+ padding: 3px 0 5px 113px;
+}
+.box-search_form .input {
+ position: relative;
+ z-index: 5;
+
+ margin-left: 6px;
+ margin-right: 0;
+
+ border: 1px solid #d9d9d9;
+ border-top-color: #bfbfbf;
+ border-right-width: 0;
+ background-color: #fff;
+}
+.box-search_form .input input {
+ font-size: 14px;
+ line-height: 20px\9;
+
+ float: left;
+ overflow: hidden;
+
+ width: 539px;
+ height: 26px;
+ padding: 4px 0 3px 10px;
+
+ border: 0;
+ outline: none;
+ background-color: #fff;
+}
+
+.box-search .sug-search {
+ visibility: hidden;
+
+ height: 0;
+}
+.btn-search {
+ line-height: 35px;
+
+ overflow: hidden;
+
+ width: 90px;
+
+ border-width: 0;
+ border-radius: 2px;
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+ background-color: #2085e9;
+ background-image: linear-gradient(#258bef, #248aee, #2287ec, #2085e9, #1e83e7, #1c81e5);
+}
+.btn-search_c {
+ font-size: 15px;
+ font-weight: 700;
+ line-height: 35px;
+
+ float: right;
+
+ width: 90px;
+ height: 35px;
+
+ cursor: pointer;
+ text-align: center;
+
+ color: #fff;
+ border: 0;
+ background: 0 0;
+}
+.box-search_hsrch {
+ overflow: hidden;
+
+ width: 640px;
+ margin-left: 168px;
+ padding-top: 2px;
+
+ height: 15px;
+
+ color: #919191;
+}
+.hsrch_title {
+ font-weight: bold;
+
+ margin-right: 8px;
+
+ color: #919191;
+}
+.hsrch_word span {
+ display: inline-block;
+
+ margin-right: 15px;
+}
+.hsrch_word a {
+ text-align: left;
+
+ color: #919191;
+}
+
+
+/* 960 */
+.w960 .input input {
+ width: 433px;
+}
+.w960 .box-search {
+ width: 740px;
+ margin-left: 22px;
+}
+.w960 .box-search_hsrch {
+ width: 562px;
+}
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/ltr/ltr.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/ltr/ltr.more.css
new file mode 100755
index 000000000..6a46574e8
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/ltr/ltr.more.css
@@ -0,0 +1,159 @@
+.box-search_tab a:hover {
+ color: #1c81e5;
+ border-radius: 2px;
+ background-color: #f2f2f2;
+ background-color: rgba(0, 0, 0, .05);
+}
+.box-search_logo dt:hover,
+.box-search_logo dd:hover {
+ border-radius: 2px;
+ background-color: #f2f2f2;
+ background-color: rgba(0, 0, 0, .05);
+}
+.box-search_logos_show {
+ border: 1px solid #e5e6e7;
+ background-color: #fff;
+}
+.box-search_logos_show dt,
+.box-search_logos_show dd {
+ padding: 10px 11px 10px 13px;
+}
+.box-search_logos_show dt {
+ padding-top: 9px;
+}
+.box-search_logo a {
+ display: block;
+
+ padding-right: 15px;
+}
+.box-search_logo dt a {
+ background: url(/widget/img/bg.png) right -61px no-repeat;
+}
+.box-search_logos_show dt a {
+ background-position: right -87px;
+}
+
+.box-search_logo_disabled {
+ border-width: 0;
+ background-color: transparent;
+}
+.box-search_logo_disabled dt,
+.box-search_logo_disabled dd {
+ padding: 10px 12px 10px 14px;
+}
+.box-search_logo_disabled dt:hover,
+.box-search_logo_disabled dd:hover {
+ padding: 10px 12px 10px 14px;
+
+ background-color: transparent;
+}
+.box-search_logo_disabled dt a {
+ background: none;
+}
+
+
+.box-search_form .box-search_focus {
+ border-color: #4ca6ff;
+}
+
+.btn-search_ico {
+ line-height: 27px;
+
+ display: block;
+
+ width: 17px;
+ height: 17px;
+ margin: 0 auto;
+
+ background: url(../img/i-search.png?__sprite) no-repeat;
+}
+.btn-search_c:hover {
+ background-color: #1e7ddc;
+}
+
+.btn-search_c:active {
+ background-color: #1D6CBB;
+}
+
+.hsrch_word a:hover {
+ text-decoration: underline;
+ color: #1c81e5;
+}
+
+
+
+body .box-search .sug-search {
+ top: 0;
+
+ visibility: visible;
+
+ width: 548px;
+ height: auto;
+ margin-top: 34px;
+
+ border-top: 0;
+}
+
+/****黑色皮肤****/
+.skin-type-dark .box-search_tab a {
+ color: #fff;
+}
+.skin-type-dark .box-search_tab a:hover,
+.skin-type-dark .box-search_logo dt:hover,
+.skin-type-dark .box-search_logo dd:hover {
+ background-color: #0d0d0d;
+ background-color: rgba(0, 0, 0, .3);
+}
+.skin-type-dark .box-search_logos_show {
+ border: 1px solid #0d0d0d;
+ border-color: rgba(0, 0, 0, .3);
+ background-color: #8c8c8c;
+ background-color: rgba(0, 0, 0, .6);
+}
+.skin-type-dark .box-search_tab a:hover,
+.skin-type-dark .box-search_tab a.cur {
+ color: #fff;
+}
+.skin-type-dark .hsrch_title,
+.skin-type-dark .hsrch_word a {
+ color: #bbb;
+}
+.skin-type-dark .hsrch_word a:hover {
+ color: #eee;
+}
+
+
+/* 960 */
+.w960 .box-search .sug-search {
+ width: 469px;
+}
+
+
+/*header fixed*/
+.header-fixed-up .box-search_logo dt:hover,
+.header-fixed-up .box-search_logo dd:hover {
+ background-color: #f2f2f2;
+}
+.header-fixed-up .box-search_logos_show {
+ border-width: 0 !important;
+}
+
+/*搜索条中增加new提示*/
+.box-search_tab .new_add_prompt{
+ display:block;
+ width:24px;
+ height:12px;
+ background: url(../img/tag_new_icon.png?__sprite) no-repeat 0 0;
+ position: absolute;
+ top: -6px;
+ right: -8px;
+}
+.box-search_tab .new_add_prompt_id{
+ display:block;
+ width:28px;
+ height:14px;
+ background: url(../img/id_new_add_icon.png?__sprite) no-repeat 0 0;
+ position: absolute;
+ top: -8px;
+ right: -12px;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/ma/ma.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/ma/ma.tpl
new file mode 100755
index 000000000..c43966c84
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/ma/ma.tpl
@@ -0,0 +1,244 @@
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+conf.searchGroup = {
+ conf: {
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/ma/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 8,
+ defaultTab: "<%$body.searchBox.defaultTab|default:'web'%>"
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/ma/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 8,
+ defaultTab: "<%$body.searchBox.defaultTab|default:'web'%>"
+ }
+ <%if isset($body.searchBox.sort)%>, sort: "<%$body.searchBox.sort%>"<%/if%>
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>",
+ placeholder: "<%$engine.placeholder%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+ sug: {
+ "google": {
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataNum: 1,
+ requestParas: {
+ "client": "hp",
+ "hl": "ar",
+ "authuser": "0"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0] + ' ')
+ }
+
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo": {
+ requestQuery: "command",
+ url: "http://sugg.us.search.yahoo.net/gossip-us-ura",
+ callbackFn: "YUI.Env.DataSource.callbacks.yui_3_3_0_1_1312871021408973",
+ callbackDataKey: "r",
+ requestParas: {
+ "output": "yjsonp",
+ "callback": "YUI.Env.DataSource.callbacks.yui_3_3_0_1_1312871021408973"
+ },
+ templ: function(data) {
+ var _data = data["r"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "youtube": {
+ requestQuery: "q",
+ url: "http://suggestqueries.google.com/complete/search",
+ callbackFn: "window.yt.www.suggest.handleResponse",
+ callbackDataNum: 1,
+ requestParas: {
+ "hl": "ar",
+ "ds": "yt",
+ "client": "youtube",
+ "hjson": "t",
+ "jsonp": "window.yt.www.suggest.handleResponse",
+ "cp": "2"
+ },
+
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_video": {
+ requestQuery: "command",
+ url: "http://gossip-ss.us.search.yahoo.com/gossip-us_ss/",
+ callbackFn: "fxsearch",
+ callbackDataNum: 1,
+ requestParas: {
+ "nresults": 8,
+ "output": "fxjsonp"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i].replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.com.eg/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "ar",
+ "client": "img",
+ "sugexp": "gsihc"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_images": {
+ requestQuery: "command",
+ url: "http://gossip-ss.us.search.yahoo.com/gossip-us_ss",
+ callbackFn: "YUI.Env.DataSource.callbacks.yui_3_5_1_1_1354169017899_293",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjsonp",
+ "nresults": 10,
+ "callback": "{callback}",
+ "callback": "YUI.Env.DataSource.callbacks.yui_3_5_1_1_1354169017899_293",
+ "pubid": 103,
+ "queryfirst": 1
+ }
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.com.eg/maps/suggest",
+ callbackFn: "_xdc_._bgnkibby8",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "2",
+ "hl": "ar",
+ "gl": "ar",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "ll": "21.902278,101.469727",
+ "spn": "5.706298,39.506836",
+ "auth": "ac0dbe60:A6KQ3ztz8bQ13_rnpShsJPs6jOU",
+ "src": "1",
+ "num": "5",
+ "numps": "5",
+ "callback": "_xdc_._bgnkibby8"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for (; i < len; i++) {
+ try {
+ detail = _data[i][9][0][0] || _data[i][9][0] || _data[i][9] || "";
+ } catch (e) {
+ detail = ""
+ }
+
+ detail = detail ? ' - ' + detail + ' ' : "";
+
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "wikimapia": {
+ url: null
+ },
+ "wiki": {
+ requestQuery: "search",
+ url: "http://ar.wikipedia.org/w/api.php",
+ callbackFn: "wikipedia.ar",
+ callbackDataNum: 1,
+ requestParas: {
+ "action": "opensearch",
+ "namespace": "0",
+ "suggest": "",
+ "callback": "wikipedia.ar"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i].replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_translate": {
+ url: null
+ }
+ }
+}
+<%/strip%>
+<%/script%>
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/rtl/rtl.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/rtl/rtl.css
new file mode 100755
index 000000000..c458c776e
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/rtl/rtl.css
@@ -0,0 +1,173 @@
+.box-search_keyboard {
+ padding: 2px 1px;
+}
+.box-search {
+ width: 834px;
+ margin-top: 15px;
+ margin-right: 98px;
+}
+.box-search_tab {
+ position: relative;
+ z-index: 8;
+
+ margin-right: 173px;
+
+ white-space: nowrap;
+}
+.box-search_tab a {
+ float: right;
+
+ margin-right: -1px;
+ padding: 4px 12px 3px;
+}
+.box-search_tab a.cur {
+ font-weight: 700;
+
+ cursor: default;
+
+ color: #1c81e5;
+}
+.box-search_sep {
+ float: right;
+
+ height: 6px;
+ margin-top: 8px;
+ margin-right: -1px;
+
+ border-left: 1px solid #b3b3b3;
+}
+.box-search_inner {
+ height: 68px;
+}
+.box-search_logo_wrap {
+ position: relative;
+ z-index: 6;
+
+ float: right;
+
+ width: 161px;
+ height: 65px;
+ margin: -13px 0 0 5px;
+}
+.box-search_logo dt,
+.box-search_logo dd {
+ padding: 10px 14px 10px 12px;
+
+ cursor: pointer;
+}
+.box-search_logo_hide {
+ display: none;
+}
+.box-search_logo img {
+ width: 120px;
+ height: 45px;
+}
+.box-search_form {
+ padding: 3px 113px 5px 0;
+}
+.box-search_form .input {
+ position: relative;
+ z-index: 5;
+
+ margin-right: 6px;
+ margin-left: 0;
+ /* for IE9 */
+ padding-right: 1px\9\0;
+
+ border: 1px solid #d9d9d9;
+ border-top-color: #bfbfbf;
+ border-left-width: 0;
+ background-color: #fff;
+}
+.box-search_form .input input {
+ font-size: 14px;
+ line-height: 20px\9;
+
+ float: right;
+ overflow: hidden;
+
+ width: 512px;
+ height: 26px;
+ margin-right: 1px;
+ padding: 4px 9px 3px 0;
+
+ border: 0;
+ outline: none;
+ background-color: #fff;
+}
+.box-search .sug-search {
+ visibility: hidden;
+
+ height: 0;
+}
+.btn-search {
+ line-height: 35px;
+
+ overflow: hidden;
+
+ width: 90px;
+
+ border-width: 0;
+ border-radius: 2px;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ background-color: #2085e9;
+ background-image: linear-gradient(#258bef, #248aee, #2287ec, #2085e9, #1e83e7, #1c81e5);
+}
+.btn-search_c {
+ font-size: 15px;
+ font-weight: 700;
+ line-height: 35px;
+
+ float: left;
+
+ width: 90px;
+ height: 35px;
+
+ cursor: pointer;
+ text-align: center;
+
+ color: #fff;
+ border: 0;
+ background: 0 0;
+}
+.box-search_hsrch {
+ overflow: hidden;
+
+ width: 640px;
+ margin-right: 171px;
+ padding-top: 2px;
+
+ height: 15px;
+
+ color: #919191;
+}
+.hsrch_title {
+ font-weight: bold;
+
+ margin-left: 8px;
+
+ color: #919191;
+}
+.hsrch_word span {
+ display: inline-block;
+
+ margin-left: 15px;
+}
+.hsrch_word a {
+ text-align: right;
+
+ color: #919191;
+}
+
+/* 960 */
+.w960 .input input {
+ width: 433px;
+}
+.w960 .box-search {
+ width: 740px;
+ margin-right: 22px;
+}
+.w960 .box-search_hsrch {
+ width: 562px;
+}
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/rtl/rtl.more.css b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/rtl/rtl.more.css
new file mode 100755
index 000000000..ebe88b856
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/rtl/rtl.more.css
@@ -0,0 +1,159 @@
+.box-search_tab a:hover {
+ color: #1c81e5;
+ border-radius: 2px;
+ background-color: #f2f2f2;
+ background-color: rgba(0, 0, 0, .05);
+}
+.box-search_logo dt:hover,
+.box-search_logo dd:hover {
+ border-radius: 2px;
+ background-color: #f2f2f2;
+ background-color: rgba(0, 0, 0, .05);
+}
+.box-search_logos_show {
+ border: 1px solid #e5e6e7;
+ background-color: #fff;
+}
+.box-search_logos_show dt,
+.box-search_logos_show dd {
+ padding: 10px 13px 10px 11px;
+}
+.box-search_logos_show dt {
+ padding-top: 9px;
+}
+.box-search_logo a {
+ display: block;
+
+ padding-left: 15px;
+}
+.box-search_logo dt a {
+ background: url(/widget/img/bg.png) -10px -61px no-repeat;
+}
+.box-search_logos_show dt a {
+ background-position: -10px -87px;
+}
+
+.box-search_logo_disabled {
+ border-width: 0;
+ background-color: transparent;
+}
+.box-search_logo_disabled dt,
+.box-search_logo_disabled dd {
+ padding: 10px 14px 10px 12px;
+}
+.box-search_logo_disabled dt:hover,
+.box-search_logo_disabled dd:hover {
+ padding: 10px 14px 10px 12px;
+
+ background-color: transparent;
+}
+.box-search_logo_disabled dt a {
+ background: none;
+}
+
+
+.box-search_form .box-search_focus {
+ border-color: #4ca6ff;
+}
+
+.btn-search_ico {
+ line-height: 27px;
+
+ display: block;
+
+ width: 17px;
+ height: 17px;
+ margin: 0 auto;
+
+ background: url(../img/i-search.png?__sprite) no-repeat;
+}
+.btn-search_c:hover {
+ background-color: #1e7ddc;
+}
+
+.btn-search_c:active {
+ background-color: #1D6CBB;
+}
+
+.hsrch_word a:hover {
+ text-decoration: underline;
+ color: #1c81e5;
+}
+
+
+body .box-search .sug-search {
+ top: 0;
+ left: 0;
+
+ visibility: visible;
+
+ width: 548px;
+ height: auto;
+ margin-top: 34px;
+
+ border-top: 0;
+}
+
+/****黑色皮肤****/
+.skin-type-dark .box-search_tab a {
+ color: #fff;
+}
+.skin-type-dark .box-search_tab a:hover,
+.skin-type-dark .box-search_logo dt:hover,
+.skin-type-dark .box-search_logo dd:hover {
+ background-color: #0d0d0d;
+ background-color: rgba(0, 0, 0, .3);
+}
+.skin-type-dark .box-search_logos_show {
+ border: 1px solid #0d0d0d;
+ border-color: rgba(0, 0, 0, .3);
+ background-color: #8c8c8c;
+ background-color: rgba(0, 0, 0, .6);
+}
+.skin-type-dark .box-search_tab a:hover,
+.skin-type-dark .box-search_tab a.cur {
+ color: #fff;
+}
+.skin-type-dark .hsrch_title,
+.skin-type-dark .hsrch_word a {
+ color: #bbb;
+}
+.skin-type-dark .hsrch_word a:hover {
+ color: #eee;
+}
+
+
+/* 960 */
+.w960 .box-search .sug-search {
+ width: 469px;
+}
+
+
+/*header fixed*/
+.header-fixed-up .box-search_logo dt:hover,
+.header-fixed-up .box-search_logo dd:hover {
+ background-color: #f2f2f2;
+}
+.header-fixed-up .box-search_logos_show {
+ border-width: 0 !important;
+}
+
+/*搜索条中增加new提示*/
+.box-search_tab .new_add_prompt{
+ display:block;
+ width:24px;
+ height:12px;
+ background: url(../img/tag_new_icon.png?__sprite) no-repeat 0 0;
+ position: absolute;
+ top: -6px;
+ left: -8px;
+}
+.box-search_tab .new_add_prompt_id{
+ display:block;
+ width:28px;
+ height:14px;
+ background: url(../img/id_new_add_icon.png?__sprite) no-repeat 0 0;
+ position: absolute;
+ top: -8px;
+ left: -12px;
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/sa/sa.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/sa/sa.tpl
new file mode 100755
index 000000000..b9355b6a4
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/sa/sa.tpl
@@ -0,0 +1,385 @@
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+conf.searchGroup = {
+ conf: {
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/sa/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 8,
+ defaultTab: "<%$body.searchBox.defaultTab|default:'web'%>"
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/sa/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 8,
+ defaultTab: "<%$body.searchBox.defaultTab|default:'web'%>"
+ }
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>",
+ placeholder: "<%$engine.placeholder%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+ sug: {
+ "google": {
+ requestQuery: "q",
+ url: "http://clients1.google.com.sa/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataNum: 1,
+ requestParas: {
+ "client": "hp",
+ "hl": "ar",
+ "authuser": "0"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0] + ' ')
+ }
+
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo": {
+ requestQuery: "command",
+ url: "http://sugg.us.search.yahoo.net/gossip-us-ura",
+ callbackFn: "YUI.Env.DataSource.callbacks.yui_3_3_0_1_1312871021408973",
+ callbackDataKey: "r",
+ requestParas: {
+ "output": "yjsonp",
+ "callback": "YUI.Env.DataSource.callbacks.yui_3_3_0_1_1312871021408973"
+ },
+ templ: function(data) {
+ var _data = data["r"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "youtube": {
+ requestQuery: "q",
+ url: "http://suggestqueries.google.com/complete/search",
+ callbackFn: "window.yt.www.suggest.handleResponse",
+ callbackDataNum: 1,
+ requestParas: {
+ "hl": "ar",
+ "ds": "yt",
+ "client": "youtube",
+ "hjson": "t",
+ "jsonp": "window.yt.www.suggest.handleResponse",
+ "cp": "2"
+ },
+
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_video": {
+ requestQuery: "command",
+ url: "http://gossip-ss.us.search.yahoo.com/gossip-us_ss/",
+ callbackFn: "fxsearch",
+ callbackDataNum: 1,
+ requestParas: {
+ "nresults": 8,
+ "output": "fxjsonp"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.com.sa/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "ar",
+ "client": "img",
+ "sugexp": "gsihc"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_images": {
+ requestQuery: "command",
+ url: "http://gossip-ss.us.search.yahoo.com/gossip-us_ss",
+ callbackFn: "YUI.Env.DataSource.callbacks.yui_3_5_1_1_1354169017899_293",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjsonp",
+ "nresults": 10,
+ "callback": "{callback}",
+ "callback": "YUI.Env.DataSource.callbacks.yui_3_5_1_1_1354169017899_293",
+ "pubid": 103,
+ "queryfirst": 1
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.com.sa/maps/suggest",
+ callbackFn: "_xdc_._bgnkibby8",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "2",
+ "hl": "ar",
+ "gl": "ar",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "ll": "21.902278,101.469727",
+ "spn": "5.706298,39.506836",
+ "auth": "ac0dbe60:A6KQ3ztz8bQ13_rnpShsJPs6jOU",
+ "src": "1",
+ "num": "5",
+ "numps": "5",
+ "callback": "_xdc_._bgnkibby8"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for (; i < len; i++) {
+ try {
+ detail = _data[i][9][0][0] || _data[i][9][0] || _data[i][9] || "";
+ } catch (e) {
+ detail = ""
+ }
+
+ /*detail = detail ? ' - ' + detail + ' ' : "";*/
+
+ ret.push('' + _data[i][0] + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "wikimapia": {
+ url: null
+ },
+ "wiki_ar": {
+ requestQuery: "search",
+ url: "http://ar.wikipedia.org/w/api.php",
+ callbackFn: "wikipedia.ar",
+ callbackDataNum: 1,
+ requestParas: {
+ "action": "opensearch",
+ "namespace": "0",
+ "suggest": "",
+ "callback": "wikipedia.ar"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_translate": {
+ url: null
+ },
+ "filmes": {
+ requestQuery: "wds",
+ url: "http://sa.hao123.com/movie/sug",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ },
+ templ: function(data) {
+ var _data = data["s"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "ask_web": {
+ requestQuery: "q",
+ url: "http://clients1.google.com.sa/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataNum: 1,
+ requestParas: {
+ "client": "hp",
+ "hl": "ar",
+ "authuser": "0"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + ' ')
+ }
+
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "ask_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.com.sa/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "ar",
+ "client": "img",
+ "sugexp": "gsihc"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "ask_videos": {
+ requestQuery: "q",
+ url: "http://suggestqueries.google.com/complete/search",
+ callbackFn: "window.yt.www.suggest.handleResponse",
+ callbackDataNum: 1,
+ requestParas: {
+ "hl": "ar",
+ "ds": "yt",
+ "client": "youtube",
+ "hjson": "t",
+ "jsonp": "window.yt.www.suggest.handleResponse",
+ "cp": "2"
+ },
+
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "ask_maps": {
+ requestQuery: "q",
+ url: "http://maps.google.com.sa/maps/suggest",
+ callbackFn: "_xdc_._bgnkibby8",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "2",
+ "hl": "ar",
+ "gl": "ar",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "ll": "21.902278,101.469727",
+ "spn": "5.706298,39.506836",
+ "auth": "ac0dbe60:A6KQ3ztz8bQ13_rnpShsJPs6jOU",
+ "src": "1",
+ "num": "5",
+ "numps": "5",
+ "callback": "_xdc_._bgnkibby8"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for (; i < len; i++) {
+ try {
+ detail = _data[i][9][0][0] || _data[i][9][0] || _data[i][9] || "";
+ } catch (e) {
+ detail = ""
+ }
+
+ /*detail = detail ? ' - ' + detail + ' ' : "";*/
+
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ }
+ }
+}
+<%/strip%>
+<%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/search-box-new-async.js b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/search-box-new-async.js
new file mode 100755
index 000000000..8aecc2efb
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/search-box-new-async.js
@@ -0,0 +1,537 @@
+/*
+ * Search box group
+ */
+
+var $ = require("common:widget/ui/jquery/jquery.js"),
+ UT = require("common:widget/ui/ut/ut.js"),
+ helper = require("common:widget/ui/helper/helper.js");
+
+require("common:widget/ui/suggest/suggest.js");
+require('common:widget/ui/jquery/jquery.cookie.js');
+
+Gl.searchGroup = function(o) {
+
+ var _conf = conf.searchGroup,
+ type = o.type || "index",
+ logoPath = _conf.conf[type].logoPath,
+ defaultN = _conf.conf[type].curN || 0,
+
+ logo = $("#searchGroupLogo"),
+ logoGroup = $("#searchGroupLogos"),
+ tabs = $("#searchGroupTabs"),
+ form = $("#searchGroupForm"),
+ input = $("#searchGroupInput"),
+ btn = $("#searchGroupBtn"),
+ params = $("#searchGroupParams"),
+ hSeWords = $("#hotSearchWords"),
+ webEngine = $("#searchGroupWebEngine"),
+ inputWrap = input.parent(),
+
+ curTab = $("a:eq(" + defaultN + ")", tabs),
+ curWordTab = curTab.attr("data-t"),
+ defaultData = _conf.sug[_conf.list[curWordTab].engine[defaultN].id],
+
+ //record which form was selected in tabs
+ storeForm = {},
+ onceTime = true,
+ logoHash = {
+ 'yahoo': 'yahoo',
+ 'google': 'google',
+ 'baidu': 'baidu',
+ 'defau': 'defau'
+ },
+ defaultTab = _conf.conf[type].defaultTab || 'web',
+
+ $bd = $(document.body),
+
+
+ getCurLogo = function(attr) {
+ var tmpObj = null;
+ attr = attr.toLowerCase();
+ for (var i in logoHash) {
+ if (attr.search(i) > -1) {
+ tmpObj = logoHash[i];
+ break;
+ }
+ }
+ if (tmpObj === 'yahoo' && conf.country === 'jp') {
+ tmpObj = 'yahoo_jp';
+ }
+ return (tmpObj || 'defau');
+ },
+
+ //reset the form about action and params
+ resetForm = function(data, n) {
+
+ var ret = [];
+ var theLogoPath = $bd.hasClass("skin-type-dark") ? (_conf.conf[type].logoPath + "dark/") : _conf.conf[type].logoPath;
+ var logoGroupDt = $("dt", logoGroup).clone();
+ var isFixed = $bd.hasClass("header-fixed-up");
+
+ // Fixed bug in IE8
+ logoGroup.html('');
+ logoGroup.append(logoGroupDt);
+
+ // rebinding logo element
+ logo = $("#" + (o.logoId || "searchGroupLogo"), logoGroupDt);
+
+ form.attr("action", data[n].action);
+ input.attr("name", data[n].q);
+
+ logo.attr("alt", data[n].name);
+ logo.parent().attr("title", data[n].name);
+ logo.parent().attr("data-n", n);
+ logo.attr("data-id", data[n].id);
+
+ if (isFixed) {
+ logo.attr("src", "/resource/fe/headerTest/search/" + getCurLogo(data[n].logo) + ".png");
+ } else {
+ logo.attr("src", theLogoPath + data[n].logo + ".png");
+ }
+
+ logoGroup.append(function() {
+ ret = [];
+ $.each(data, function(key, val) {
+ if (isFixed) {
+ ret.push('' + val.name + ' ');
+ } else {
+ ret.push(' ');
+ }
+ });
+ return ret.join("");
+ });
+
+ params.html(function() {
+ ret = [];
+ $.each(data[n].params, function(key, val) {
+ ret.push(' ');
+ });
+ return ret.join("");
+ });
+
+ if (data.length <= 1) {
+ logoGroup.addClass("box-search_logo_disabled");
+ } else {
+ logoGroup.removeClass("box-search_logo_disabled");
+ }
+ },
+
+ resetSug = function(data, n) {
+ data = _conf.sug[data[n].id];
+ $.each(data, function(key, val) {
+ sug.o[key] = val;
+ });
+
+ //fix more prams
+ !data.templ && (sug.o.templ = false);
+ !data.callbackFn && (sug.o.callbackFn = false);
+ !data.callbackDataKey && (sug.o.callbackDataKey = false);
+ !data.callbackName && (sug.o.callbackName = false);
+ !data.callbackDataNum && (sug.o.callbackDataNum = false);
+ !data.customUrl && (sug.o.customUrl = false);
+
+ !data.charset && (sug.o.charset = undefined);
+ sug.reset(true);
+ },
+
+ // toggle for baidu sug
+ resetBaiduSug = function(data, n) {
+
+ if (!baidu_sug) {
+ return;
+ }
+
+ data = data ? data[n].baiduSug : false;
+
+ if (data) {
+ baidu_sug.setMode(data.mod);
+ baidu_sug.toggle(true);
+ } else {
+ baidu_sug.toggle(false);
+ }
+ },
+
+ // toggle for PS video sug
+ resetBaiduVideoSug = function(data, n) {
+ if (!window["baidu_video_sug"]) {
+ return;
+ }
+
+ data = data ? data[n].otherSug : false;
+
+ if (data) {
+ baidu_video_sug.setMode(data.mod);
+ baidu_video_sug.toggle(true);
+ } else {
+ baidu_video_sug.toggle(false);
+ }
+ },
+
+ switchTab = function(tab, sugStay) {
+
+ tab = $(tab);
+ curTab.removeClass("cur");
+ tab.addClass("cur");
+ curTab = tab;
+
+ var t = tab.attr("data-t");
+ var engines = _conf.list[t].engine;
+ var engLen = engines.length;
+
+ //ps sug gut add tab changed name
+ tabCategoryName = t;
+
+ //if the last element is null, remove it
+ if ($.isEmptyObject(engines[engLen - 1])) {
+ engines.length = engLen - 1;
+ };
+
+ //record current form(add the current type to storeForm as a key)
+ storeForm[t] || (storeForm[t] = 0);
+
+ //reset form
+ resetForm(engines, storeForm[t]);
+
+ //reset suggest
+ !sugStay && resetSug(engines, storeForm[t]);
+
+ // reset PS video sug
+ !sugStay && resetBaiduVideoSug(engines, storeForm[t]);
+
+ // reset baidu sug
+ !sugStay && resetBaiduSug(engines, storeForm[t]);
+ },
+
+ showLogo = function() {
+ var n = logo.parent().attr("data-n");
+ var logoList = $("dd", logoGroup);
+ var isFix = $bd.hasClass("header-fixed-up");
+ var logLen = logoList.length;
+
+ if (logoGroup.hasClass("box-search_logos_show")) {
+ logoGroup.removeClass("box-search_logos_show");
+ logoList.each(function() {
+ $(this)
+ .addClass("box-search_logo_hide")
+ .removeClass("box-search_logo_first box-search_logo_last");
+ });
+ } else {
+ logoGroup.addClass("box-search_logos_show");
+ logoList.each(function(key) {
+ var $that = $(this);
+
+ if (onceTime) {
+ var $imgEle = $that.find("img").first();
+ if ($imgEle.attr("data-src")) {
+ $imgEle.attr("src", $imgEle.attr("data-src"));
+ $imgEle.removeAttr("data-src");
+ }
+ }
+
+ key != n && $that.removeClass("box-search_logo_hide");
+ if (isFix && (logLen > 1) && (key != n)) {
+ if (n == 0) {
+ if (key === 1) {
+ $that.addClass("box-search_logo_first");
+ }
+ if (key === logLen - 1) {
+ $that.addClass("box-search_logo_last");
+ }
+ } else if (n == logLen - 1) {
+ if (key === 0) {
+ $that.addClass("box-search_logo_first");
+ }
+ if (key === logLen - 2) {
+ $that.addClass("box-search_logo_last");
+ }
+ } else {
+ if (key === 0) {
+ $that.addClass("box-search_logo_first");
+ }
+ if (key === logLen - 1) {
+ $that.addClass("box-search_logo_last");
+ }
+ }
+ }
+ });
+ onceTime = false;
+ }
+ },
+
+ //sug instantiation
+ sug = Gl.suggest(input[0], {
+ classNameWrap: "sug-search",
+ classNameQuery: "sug-query",
+ classNameSelect: "sug-select",
+ delay: _conf.conf[type].delay,
+ n: _conf.conf[type].n,
+ autoFocus: false,
+ requestQuery: defaultData.requestQuery,
+ requestParas: defaultData.requestParas,
+ url: defaultData.url,
+ callbackFn: defaultData.callbackFn,
+ callbackDataKey: defaultData.callbackDataKey,
+ onCheckForm: function(form) {
+
+ if (!(/^hao123$/.test(logo.attr("data-id")))) return;
+
+ if (!$(form).find("input[name='haobd']").get(0)) {
+ $(form).append(" ");
+ }
+ },
+ onMouseSelect: function(li) {
+ var t = curTab.attr("data-t");
+ var _action = _conf.list[t].engine[storeForm[t]].action;
+ var utObj = {
+ type: "click",
+ position: "search",
+ engine: _conf.list[t].engine[storeForm[t]].id.toLowerCase(),
+ value: encodeURIComponent(input.val()),
+ modId: "search",
+ element: "sug",
+ tab: t
+ };
+
+ //fix action
+ if (/#\{([^}]*)\}/mg.test(_action)) {
+ form.attr("action", helper.replaceTpl(_action, {
+ q: encodeURIComponent(input.val())
+ }));
+ input.attr("disabled", true);
+ setTimeout(function() {
+ input.attr("disabled", false);
+ }, 16);
+ }
+ input.select();
+
+ if ($bd.hasClass("header-fixed-up")) {
+ utObj.sort = "header";
+ }
+ UT.send(utObj);
+ },
+ templ: defaultData.templ
+ });
+
+
+ //ps sug gut add tab
+ window.tabCategoryName = curTab.attr("data-t");
+
+ //clear the input's value after refresh
+ input.val("");
+
+ //record the default form'n
+ storeForm[curTab.attr("data-t")] = 0;
+
+ //select text in input after submit
+ form.on("submit", function() {
+ // input.select();
+ var t = curTab.attr("data-t"),
+ _action = _conf.list[t].engine[storeForm[t]].action,
+ _url = _conf.list[t].engine[storeForm[t]].url,
+ val = encodeURIComponent(input.val()),
+ utObj = {
+ type: "click",
+ position: "search",
+ engine: _conf.list[t].engine[storeForm[t]].id.toLowerCase(),
+ modId: "search",
+ element: "input",
+ tab: t,
+ value: val
+ };
+
+ if (/^hao123$/.test(logo.attr("data-id"))) {
+ if (!form.find("input[name='haobd']").get(0)) {
+ form.append(" ");
+ }
+ }
+ form.attr("action", _action);
+
+
+ // set charset to big5 while the engine is ruten
+ if (t == "shopping" && /ruten.png/.test(logo.attr("src"))) {
+ form[0].acceptCharset = document.charset = "big5";
+ } else {
+ form[0].acceptCharset = document.charset = "utf-8";
+ }
+
+ if ($bd.hasClass("header-fixed-up")) {
+ utObj.sort = "header";
+ }
+
+ UT.send(utObj);
+
+ input.select();
+
+ //fix action
+ if (/#\{([^}]*)\}/mg.test(_action)) {
+ form.attr("action", helper.replaceTpl(_action, {
+ q: val
+ }));
+ input.attr("disabled", true);
+ setTimeout(function() {
+ input.attr("disabled", false);
+ input.select();
+ }, 16);
+ }
+
+ });
+
+ resetBaiduVideoSug(_conf.list[curTab.attr('data-t')].engine, defaultN);
+
+ resetBaiduSug(_conf.list[curTab.attr('data-t')].engine, defaultN);
+
+ //to let lv2 page NOT to auto focus SEARCH INPUT! by NE
+ if (o.autoFocus == null) {
+ o.autoFocus = true; //default TRUE!
+ }
+ if (o.autoFocus) {
+ input.focus();
+ }
+
+ input.on("focus", function() {
+ inputWrap.addClass("box-search_focus");
+ });
+ input.on("blur", function() {
+ inputWrap.removeClass("box-search_focus");
+ });
+
+ tabs.on("mousedown", function(e) {
+ var el = e.target,
+ tabTo;
+ el.tagName === "SPAN" && (el = el.parentNode);
+
+ tabTo = el.getAttribute("data-t");
+ if (tabTo) {
+ switchTab(el);
+ UT.send({
+ type: "click",
+ position: "switchTab",
+ modId: "search",
+ sort: tabTo
+ });
+ }
+ form.acceptCharset = document.charset = "utf-8";
+
+ setTimeout(function() {
+ input.focus();
+ }, 5);
+ });
+
+ conf.pageType !== "lv2" && window["PDC"] && PDC.mark("c_sxvi");
+
+
+ $(document).on("mousedown", function(e) {
+ var el = e.target;
+ logoGroup.hasClass("box-search_logos_show") && el !== logoGroup[0] && !$.contains(logoGroup[0], el) && showLogo();
+ });
+
+ logoGroup.on("click", function(e) {
+ var el = e.target,
+ $el = $(el),
+ $ta = el.tagName,
+
+ t = curTab.attr("data-t"),
+ n = storeForm[t],
+ _n,
+ engines = _conf.list[t].engine,
+ engLen = engines.length;
+
+ //remove the last null ,IE8 bug
+ if ($.isEmptyObject(engines[engLen - 1])) {
+ engines.length = engLen - 1;
+ };
+ if ($ta === "IMG" || $ta === "SPAN") {
+ _n = ~~$el.parent().attr("data-n");
+ } else if ($ta === "A") {
+ _n = ~~$el.attr("data-n");
+ } else {
+ _n = ~~$el.children().attr("data-n");
+ }
+
+ if (curTab.attr("data-t") == "web") {
+ webEngine.attr("data-num", _n);
+ }
+
+
+ form[0].acceptCharset = document.charset = "utf-8";
+
+
+ if (_n !== n) {
+ storeForm[t] = _n;
+ resetForm(engines, _n);
+
+ //reset suggest
+ resetSug(engines, _n);
+
+ //reset PS video sug
+ resetBaiduVideoSug(engines, _n);
+
+ //reset baidu sug
+ resetBaiduSug(engines, _n);
+ }
+ showLogo();
+
+ });
+ // realize hot search words module
+ hSeWords.on("click", function(e) {
+ var tar = e.target,
+ href = $(tar).attr("href"),
+ //data_n = webEngine.attr("data-num"),
+ engine = _conf.list[curWordTab].engine[0], // default first search engine
+ urlPath = engine.action, // url string except query string. some search engine end with '?'
+ query = engine.q, // query variable
+ param = $.param(engine.params), // like a=b&b=2
+ hadlParam = param ? ("&" + param) : "", // like &a=b&b=2 or ""
+ url = "";
+
+ if (tar.tagName.toLowerCase() === "a" && href === "#") {
+ // handled url
+ url = urlPath + (urlPath.charAt(urlPath.length - 1) == "?" ? "" : "?") + query + "=" + encodeURIComponent($(tar).text()) + hadlParam;
+ window.open(url);
+ }
+
+ });
+
+ // hot search word send search action UT
+ hSeWords.on("mousedown", "a", function(e) {
+ UT.send({
+ type: "click",
+ position: "search",
+ engine: _conf.list[curWordTab].engine[0].id,
+ modId: "hot-word",
+ tab: curWordTab,
+ value: encodeURIComponent($.trim($(this).attr("data-val")))
+ });
+ e.stopPropagation(); // avoid links auto UT
+ });
+
+
+ /*for header when fixed & width = 40px*/
+ var $window = $(window),
+ recordTab = null, // 吸顶时刻如果tab不是web的话记录当前tab
+ restoreTo = function() { // 吸顶变正常时恢复之前的tab
+ if (recordTab) {
+ switchTab(recordTab);
+ } else {
+ switchTab($("a[data-t='"+defaultTab+"']", tabs), true);
+ logoGroup.removeClass("box-search_logos_show");
+ }
+ },
+ transTo = function() { // 正常变吸顶时切到web的tab
+ if (curTab.attr("data-t") != defaultTab) {
+ recordTab = curTab;
+ switchTab($("a[data-t='"+defaultTab+"']", tabs));
+ } else {
+ recordTab = null;
+ switchTab($("a[data-t='"+defaultTab+"']", tabs), true);
+ logoGroup.removeClass("box-search_logos_show");
+ }
+ };
+
+ $window.on("headerFixed.transTo", function() {
+ transTo();
+ });
+ $window.on("headerFixed.restore", function() {
+ restoreTo();
+ });
+}
\ No newline at end of file
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/search-box-new.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/search-box-new.tpl
new file mode 100755
index 000000000..fa5b82570
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/search-box-new.tpl
@@ -0,0 +1,210 @@
+<%*只有新首页用*%>
+<%assign var="sBoxTag" value=$body.searchBox.sBoxTag%>
+<%assign var="hSearchWords" value=$body.searchBox.hotSearchWords%>
+<%assign var="sBtnWords" value=$body.searchBox.searchBtnWords%>
+
+<%style%>
+ <%if $head.dir=='ltr'%>
+ @import url('/widget/search-box-new/ltr/ltr.css?__inline');
+ <%else%>
+ @import url('/widget/search-box-new/rtl/rtl.css?__inline');
+ <%/if%>
+<%/style%>
+
+<%if $head.dir=='ltr'%>
+<%require name="common:widget/search-box-new/ltr/ltr.more.css"%>
+<%else%>
+<%require name="common:widget/search-box-new/rtl/rtl.more.css"%>
+<%/if%>
+<%strip%>
+
+
+ <%foreach $sBoxTag as $value%>
+ <%if $value.catagory != 'more'%>
+ <%if empty($body.searchboxTab[$value.catagory])%>
+ <%if $value@first%>
+ <%$value.title%>
+ <%else%>
+ <%if $value.isNewAdd == 'true'%>
+ <%if !empty($value.area) && $value.area =="id" %>
+ <%assign var="tmpClassName" value="new_add_prompt_id"%>
+ <%else%>
+ <%assign var="tmpClassName" value="new_add_prompt"%>
+ <%/if%>
+
+ <%$value.title%>
+ <%else%>
+
+ <%$value.title%>
+ <%/if%>
+ <%/if%>
+ <%/if%>
+ <%else%>
+ <%/if%>
+ <%/foreach%>
+
+
+
+
+ <%$sBoxCount = 0%>
+ <%foreach $sBoxTag[0].engine as $value%>
+ <%if !empty($body.searchboxEngine[$value.id])%>
+ <%$sBoxCount = $sBoxCount + 1%>
+ <%/if%>
+ <%/foreach%>
+
+
+ <%foreach $sBoxTag[0].engine as $value%>
+ <%if empty($body.searchboxEngine[$value.id])%>
+
+
+ <%break%>
+ <%/if%>
+ <%/foreach%>
+
+ <%$logoIndex = 0%>
+ <%foreach $sBoxTag[0].engine as $value%>
+ <%if empty($body.searchboxEngine[$value.id])%>
+
+
+
+
+
+ <%$logoIndex = $logoIndex + 1%>
+ <%/if%>
+ <%/foreach%>
+
+
+
+
+ <%if !empty($hSearchWords.title)%>
+
<%$hSearchWords.title%>:
+
+ <%foreach $hSearchWords.words as $val%>
+ <%if !empty($hSearchWords.length) && $val@iteration > $hSearchWords.length%>
+ <%break%>
+ <%/if%>
+ <%if !empty($val.url)%>
+
+ <%$val.name%>
+
+ <%else%>
+
+ <%$val.name%>
+
+ <%/if%>
+ <%/foreach%>
+
+ <%/if%>
+
+
+
+
+<%/strip%>
+
+<%widget name="common:widget/search-box-new/`$sysInfo.country`/`$sysInfo.country`.tpl"%>
+
+<%script%>
+<%strip%>
+require.async(["common:widget/search-box-new/search-box-new-async.js"], function ($) {
+ var autoFocusSearch = true;
+<%if $body.extAppMod%>
+ autoFocusSearch = false;
+<%/if%>
+<%if !empty($body.searchBox.sugUrl)%>
+ var head = document.getElementsByTagName("head")[0];
+ var requestScript = function(url, onsuccess, onerror, timeout) {
+
+ var script = document.createElement('script');
+ if (onerror) {
+ var tid = setTimeout(function() {
+ script.onload = script.onreadystatechange = script.onerror = null;
+ timeout();
+ }, 5000);
+
+ script.onerror = function() {
+ clearTimeout(tid);
+ onerror();
+ };
+
+ script.onload = script.onreadystatechange = function() {
+ if ( !script.readyState || /loaded|complete/.test( script.readyState ) ) {
+ script.onload = script.onreadystatechange = null;
+ script = undefined;
+ clearTimeout(tid);
+ onsuccess();
+ }
+ }
+ }
+ script.type = 'text/javascript';
+ script.src = url;
+ head.appendChild(script);
+ };
+
+ requestScript("<%$body.searchBox.sugUrl%>", function() {
+ if(typeof baidu_sug !== 'undefined') {
+ baidu_sug.setMode('baidu');
+ baidu_sug.toggle(false);
+ }
+ Gl.searchGroup({
+ type: conf.pageType,
+ autoFocus: autoFocusSearch
+ });
+ }, function() {
+ baidu_sug = false;
+ Gl.searchGroup({
+ type: conf.pageType,
+ autoFocus: autoFocusSearch
+ });
+ }, function() {
+ baidu_sug = false;
+ Gl.searchGroup({
+ type: conf.pageType,
+ autoFocus: autoFocusSearch
+ });
+ });
+<%else%>
+ baidu_sug = false;
+ Gl.searchGroup({type: conf.pageType, autoFocus: autoFocusSearch});
+<%/if%>
+
+<%if !empty($body.searchBox.sugMoreUrl)%>
+ setTimeout(function() {
+ window["require"] && require.async("<%$body.searchBox.sugMoreUrl%>");
+ }, 1e3);
+<%/if%>
+});
+<%/strip%>
+<%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/th/th.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/th/th.tpl
new file mode 100755
index 000000000..b390be056
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/th/th.tpl
@@ -0,0 +1,513 @@
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+require.async('common:widget/ui/jquery/jquery.js', function () {
+conf.searchGroup = {
+ conf:{
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/th/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10,
+ defaultTab: "<%$body.searchBox.defaultTab|default:'web'%>"
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/th/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10,
+ defaultTab: "<%$body.searchBox.defaultTab|default:'web'%>"
+ }
+ <%if isset($body.searchBox.sort)%>, sort: "<%$body.searchBox.sort%>"<%/if%>
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ <%if !empty($engine.otherSug)%>otherSug:{mod: "<%$engine.otherSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>",
+ placeholder: "<%$engine.placeholder%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+ sug: {
+ "hao123": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://www.baidu.co.th/r/su",
+ callbackFn: "window.bdsug.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod": "thai",
+ "cb": "window.bdsug.sug"
+ },
+ templ: function(data) {
+ var _data = data['s'] || [],
+ q = data['q'],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_th": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.co.th/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "hp",
+ "hl": "th-TH",
+ "authuser": "0"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_web": {
+ autoCompleteData: false,
+ requestQuery: "command",
+ url: "http://sugg.us.search.yahoo.net/gossip-us-sayt/",
+ callbackFn: "fxsearch",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjsonp"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.co.th/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "th",
+ "client": "img",
+ "ds": "i",
+ "cp": "4"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "hao123_images": {
+ requestQuery: "wd",
+ url: "http://sugimg.hao123.co.th/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod": "image_thai"
+ },
+ templ: function(data) {
+ var _data = data["s"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "ps_video": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://www.baidu.co.th/r/su",
+ callbackFn: "window.bdsug.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod": "video_thai",
+ "cb": "window.bdsug.sug"
+ },
+ templ: function(data) {
+ var _data = data['s'] || [],
+ q = data['q'],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "youtube": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "youtube",
+ "hl": "th",
+ "gl": "us",
+ "gs_nf": "1",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_video": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.co.th/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "video-hp",
+ "hl": "th",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "mthai": {
+ url: null
+ },
+ "4shared": {
+ requestQuery: "search",
+ url: "http://dc413.4shared.com/network/search-suggest.jsp",
+ callbackFn: "ajaxSuggestions.jsonpCallback",
+ callbackDataKey: "suggestions",
+ requestParas: {
+ "format": "jsonp"
+ },
+ customUrl: function(para) {
+ return this.o.url + "?search=" + btoa(this.q) + "&format=jsonp";
+ },
+ templ: function(data) {
+ var _data = data["suggestions"] || [],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "filestube": {
+ requestQuery: "q",
+ url: "http://149.13.65.144:8087",
+ callbackFn: "filestube123",
+ callbackDataKey: "r",
+ charset: "utf-8",
+ requestParas: {
+ "callback": "filestube123",
+ "t": +new Date
+ },
+ customUrl: function(para) {
+ return this.o.url + "/" + encodeURIComponent(this.q) + "?" + para.substr(1);
+ }
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.co.th/maps/suggest",
+ callbackFn: "_xdc_._bgnkibby8",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "2",
+ "hl": "th",
+ "gl": "th",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "ll": "21.902278,101.469727",
+ "spn": "5.706298,39.506836",
+ "auth": "ac0dbe60:A6KQ3ztz8bQ13_rnpShsJPs6jOU",
+ "src": "1",
+ "num": "5",
+ "numps": "5",
+ "callback": "_xdc_._bgnkibby8"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for(; i - ' + detail + '' : "";*/
+
+ ret.push('' + _data[i][0] + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "longdo_map": {
+ requestQuery: "key",
+ url: "http://search2.longdo.com/BWTSearch/HeadSearch",
+ callbackFn: "processJSONSuggest",
+ requestParas: {
+ "ds": "poi,poi2,poi3,s_pg",
+ "json": "1",
+ "num": "20",
+ "anyorder": "1",
+ "count": "19"
+ },
+ customUrl: function(para) {
+ return this.o.url + "?" + para.substr(1) + "&" + this.o.requestQuery + '=' + encodeURIComponent(this.q);
+ },
+ templ: function(data) {
+ var _data = data,
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length;
+
+ for(; i' + _data[i].d + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "longdo_dict": {
+ requestQuery: "key",
+ url: "http://search.longdo.com/BWTSearch/HeadSearch",
+ callbackFn: "processJSONSuggest",
+ requestParas: {
+ "json": "1",
+ "ds": "head",
+ "num": "20",
+ "count": "7"
+ },
+ customUrl: function(para) {
+ return this.o.url + "?" + para.substr(1) + "&" + this.o.requestQuery + '=' + encodeURIComponent(this.q);
+ },
+ templ: function(data) {
+ var _data = data,
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length;
+
+ for(; i' + _data[i].d + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_translate": {
+ url: null
+ },
+ "wiki": {
+ autoCompleteData: false,
+ requestQuery: "search",
+ url: "http://th.wikipedia.org/w/api.php",
+ callbackFn: "wikipedia.th",
+ callbackDataKey: "1",
+ requestParas: {
+ "action": "opensearch",
+ "namespace": "0",
+ "suggest": "",
+ "callback": "wikipedia.th"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "filmes": {
+ requestQuery: "wds",
+ url: "http://th.hao123.com/video/sug",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {},
+ templ: function(data) {
+ var _data = data["s"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "ask_web": {
+ requestQuery: "q",
+ url: "http://clients1.google.co.th/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "th",
+ "client": "serp",
+ "ds": "i",
+ "cp": "4"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "ask_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.co.th/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "th",
+ "client": "img",
+ "ds": "i",
+ "cp": "4"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "ask_videos": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "youtube",
+ "hl": "th",
+ "gl": "us",
+ "gs_nf": "1",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "ask_maps": {
+ requestQuery: "q",
+ url: "http://maps.google.co.th/maps/suggest",
+ callbackFn: "_xdc_._bgnkibby8",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "2",
+ "hl": "th",
+ "gl": "th",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "ll": "21.902278,101.469727",
+ "spn": "5.706298,39.506836",
+ "auth": "ac0dbe60:A6KQ3ztz8bQ13_rnpShsJPs6jOU",
+ "src": "1",
+ "num": "5",
+ "numps": "5",
+ "callback": "_xdc_._bgnkibby8"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for(; i - ' + detail + '' : "";*/
+
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ }
+ }
+}
+});
+<%/strip%>
+<%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/tw/tw.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/tw/tw.tpl
new file mode 100755
index 000000000..512a65e77
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/tw/tw.tpl
@@ -0,0 +1,334 @@
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+conf.searchGroup = {
+ conf:{
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/tw/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10,
+ defaultTab: "<%$body.searchBox.defaultTab|default:'web'%>"
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/tw/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10,
+ defaultTab: "<%$body.searchBox.defaultTab|default:'web'%>"
+ }
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>",
+ placeholder: "<%$engine.placeholder%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+
+ sug: {
+ "google_web": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com.tw/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "hp",
+ "hl": "zh-TW"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_web": {
+ autoCompleteData: false,
+ requestQuery: "command",
+ url: "http://sugg.tw.search.yahoo.net/gossip-tw/",
+ callbackFn: "fxsearch",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjsonp"
+ }
+ },
+ "hao123": {
+ url: null
+ },
+ "baidu": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://suggestion.baidu.com/su",
+ callbackFn: "window.bdsug.sug",
+ callbackDataKey: "s",
+ charset:"gbk",
+ requestParas: {
+ "cb": "window.bdsug.sug"
+ }
+ },
+ "google_news": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com.tw/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "serp",
+ "hl": "zh-TW",
+ "gs_nf": "1",
+ "ds": "n"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_news": {
+ autoCompleteData: false,
+ requestQuery: "command",
+ url: "http://sugg.tw.search.yahoo.net/gossip-tw-ura",
+ callbackFn: "fxsearch",
+ callbackDataKey: "1",
+ requestParas: {
+ "output": "fxjsonp",
+ "droprotated": "1",
+ "pubid": "184"
+ }
+ },
+ "baidu_news": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://nssug.baidu.com/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ charset:"gbk",
+ requestParas: {
+ "prod": "news"
+ }
+ },
+ "youtube": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "youtube",
+ "hl": "zh-TW",
+ "gl": "tw",
+ "gs_nf": "1",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_video": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com.tw/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "video-hp",
+ "hl": "zh-TW",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "baidu_video": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://nssug.baidu.com/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ charset:"gbk",
+ requestParas: {
+ "prod": "video"
+ }
+ },
+ "yahoo_images": {
+ autoCompleteData: false,
+ requestQuery: "command",
+ url: "http://sugg.tw.search.yahoo.net/gossip-tw",
+ callbackFn: "fxsearch",
+ callbackDataKey: "1",
+ requestParas: {
+ "output": "fxjsonp",
+ "pubid": "183"
+ }
+ },
+ "google_images": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com.tw/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "zh-TW",
+ "client": "img",
+ "gs_nf": "1",
+ "ds": "i"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "baidu_images": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://nssug.baidu.com/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ charset:"gbk",
+ requestParas: {
+ "prod": "image"
+ }
+ },
+ "facebook": {
+ url: null
+ },
+ "wiki": {
+ autoCompleteData: false,
+ requestQuery: "search",
+ url: "http://zh.wikipedia.org/w/api.php",
+ callbackFn: "wikipedia.zh",
+ callbackDataKey: "1",
+ requestParas: {
+ "action": "opensearch",
+ "namespace": "0",
+ "suggest": "",
+ "callback": "wikipedia.zh"
+ }
+ },
+ "baidu_baike": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://nssug.baidu.com/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ charset:"gbk",
+ requestParas: {
+ "prod": "baike"
+ }
+ },
+ "google_dict": {
+ url: null
+ },
+ "yahoo_dict": {
+ autoCompleteData: false,
+ requestQuery: "command",
+ url: "http://sugg.tw.search.yahoo.net/gossip-tw-pub_sayt",
+ callbackFn: "fxsearch",
+ callbackDataKey: "1",
+ requestParas: {
+ "output": "fxjsonp",
+ "pubid": "560"
+ }
+ },
+ "baidu_dict": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://dictsug.baidu.com/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ charset:"gbk",
+ requestParas: {
+ }
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.com.tw/maps/suggest",
+ callbackFn: "googleMapCallback",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "1",
+ "hl": "zh-TW",
+ "gl": "tw",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "vpsrc": "1",
+ "src": "1",
+ "num": "10",
+ "numps": "3",
+ "callback": "googleMapCallback"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for(; i - ' + detail + '' : "";
+
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_map": {
+ url: null
+ }
+ }
+}
+<%/strip%>
+<%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/vn/vn.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/vn/vn.tpl
new file mode 100755
index 000000000..b9504593a
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box-new/vn/vn.tpl
@@ -0,0 +1,210 @@
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+conf.searchGroup = {
+ conf:{
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/vn/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 8,
+ defaultTab: "<%$body.searchBox.defaultTab|default:'web'%>"
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/vn/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 8,
+ defaultTab: "<%$body.searchBox.defaultTab|default:'web'%>"
+ }
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>",
+ placeholder: "<%$engine.placeholder%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+ sug: {
+ "google_vn": {
+ requestQuery: "q",
+ url: "http://clients1.google.com.vn/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ client: "hp",
+ hl: "vi",
+ cp:"1",
+ gs_id: "c"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.com.vn/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataNum: 1,
+ requestParas: {
+ client:"img",
+ ds:"i",
+ hl:"vi",
+ gs_is:"1",
+ cp:"1",
+ gs_id:"k"
+ },
+ customUrl: function(para) {
+ return this.o.url + "?" + para.substr(1) + "&" + this.o.requestQuery + '=' + encodeURIComponent(this.q);
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "youtube": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "youtube",
+ "hl": "vi",
+ "gl": "us",
+ "gs_nf": "1",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_video": {
+ requestQuery: "q",
+ url: "http://suggestqueries.google.com/complete/search",
+ callbackFn: "window.google.ac.hr",
+ callbackDataNum: 1,
+ requestParas: {
+ hl:"vi",
+ gl:"ZZ",
+ ds:"yt",
+ client:"suggest",
+ hjson:"t",
+ jsonp:"window.google.ac.hr",
+ cp:"1"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_news": {
+ url: null
+ },
+ "google_dict": {
+ url: null
+ },
+ "mp3.zing": {
+ url: null
+ },
+ "nhaccuatui": {
+ url: null
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.com/maps/suggest",
+ callbackFn: "_xdc_._2gqj8p7jf",
+ callbackDataNum: 3,
+ requestParas: {
+ clid:"1",
+ cp:"2",
+ hl:"th",
+ gl:"",
+ json:"a",
+ ll:"21.739091,106.704712",
+ num:"5",
+ numps:"5",
+ spn:"1.347031,4.938354",
+ src:"1",
+ v:"2",
+ callback:"_xdc_._2gqj8p7jf",
+ auth:"d95a99a2:MA69F0jNrYbAN5QJuDKDqwnr1rU"
+ },
+ customUrl: function(para) {
+ return this.o.url + "?" + para.substr(1) + "&" + this.o.requestQuery + '=' + encodeURIComponent(this.q);
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length;
+
+ var detail = "";
+
+ for(; i - ' + detail + '' : "";
+
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "diadiem": {
+ url: null
+ },
+ "google_answers": {
+ url: null
+ },
+ "yahoo_answers": {
+ url: null
+ }
+ }
+}
+<%/strip%>
+<%/script%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box/ae/ae.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box/ae/ae.tpl
new file mode 100755
index 000000000..636d61d3a
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box/ae/ae.tpl
@@ -0,0 +1,245 @@
+
+<%if !empty($body.searchBox.tplUrl)%>
+ <%widget name="common:widget/search-box/`$sysInfo.country`/`$body.searchBox.tplUrl`/`$body.searchBox.tplUrl`.tpl"%>
+<%else%>
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+conf.searchGroup = {
+ conf: {
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/ae/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 8
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/ae/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 8
+ }
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>",
+ placeholder: "<%$engine.placeholder%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+ sug: {
+ "google": {
+ requestQuery: "q",
+ url: "http://clients1.google.ae/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataNum: 1,
+ requestParas: {
+ "client": "hp",
+ "hl": "ar",
+ "authuser": "0"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0] + ' ')
+ }
+
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo": {
+ requestQuery: "command",
+ url: "http://sugg.us.search.yahoo.net/gossip-us-ura",
+ callbackFn: "YUI.Env.DataSource.callbacks.yui_3_3_0_1_1312871021408973",
+ callbackDataKey: "r",
+ requestParas: {
+ "output": "yjsonp",
+ "callback": "YUI.Env.DataSource.callbacks.yui_3_3_0_1_1312871021408973"
+ },
+ templ: function(data) {
+ var _data = data["r"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "youtube": {
+ requestQuery: "q",
+ url: "http://suggestqueries.google.com/complete/search",
+ callbackFn: "window.yt.www.suggest.handleResponse",
+ callbackDataNum: 1,
+ requestParas: {
+ "hl": "ar",
+ "ds": "yt",
+ "client": "youtube",
+ "hjson": "t",
+ "jsonp": "window.yt.www.suggest.handleResponse",
+ "cp": "2"
+ },
+
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_video": {
+ requestQuery: "command",
+ url: "http://gossip-ss.us.search.yahoo.com/gossip-us_ss/",
+ callbackFn: "fxsearch",
+ callbackDataNum: 1,
+ requestParas: {
+ "nresults": 8,
+ "output": "fxjsonp"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i].replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.ae/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "ar",
+ "client": "img",
+ "sugexp": "gsihc"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_images": {
+ requestQuery: "command",
+ url: "http://gossip-ss.us.search.yahoo.com/gossip-us_ss",
+ callbackFn: "YUI.Env.DataSource.callbacks.yui_3_5_1_1_1354169017899_293",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjsonp",
+ "nresults": 10,
+ "callback": "{callback}",
+ "callback": "YUI.Env.DataSource.callbacks.yui_3_5_1_1_1354169017899_293",
+ "pubid": 103,
+ "queryfirst": 1
+ }
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.ae/maps/suggest",
+ callbackFn: "_xdc_._bgnkibby8",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "2",
+ "hl": "ar",
+ "gl": "ar",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "ll": "21.902278,101.469727",
+ "spn": "5.706298,39.506836",
+ "auth": "ac0dbe60:A6KQ3ztz8bQ13_rnpShsJPs6jOU",
+ "src": "1",
+ "num": "5",
+ "numps": "5",
+ "callback": "_xdc_._bgnkibby8"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for (; i < len; i++) {
+ try {
+ detail = _data[i][9][0][0] || _data[i][9][0] || _data[i][9] || "";
+ } catch (e) {
+ detail = ""
+ }
+
+ detail = detail ? ' - ' + detail + ' ' : "";
+
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "wikimapia": {
+ url: null
+ },
+ "wiki_ar": {
+ requestQuery: "search",
+ url: "http://ar.wikipedia.org/w/api.php",
+ callbackFn: "wikipedia.ar",
+ callbackDataNum: 1,
+ requestParas: {
+ "action": "opensearch",
+ "namespace": "0",
+ "suggest": "",
+ "callback": "wikipedia.ar"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i].replace(q, '' + q + ' ') + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_translate": {
+ url: null
+ }
+ }
+}
+<%/strip%>
+<%/script%>
+<%/if%>
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box/ar/ar.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box/ar/ar.tpl
new file mode 100755
index 000000000..8aa75bc2b
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box/ar/ar.tpl
@@ -0,0 +1,343 @@
+<%if !empty($body.searchBox.tplUrl)%>
+ <%widget name="common:widget/search-box/`$sysInfo.country`/`$body.searchBox.tplUrl`/`$body.searchBox.tplUrl`.tpl"%>
+<%else%>
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+require.async('common:widget/ui/jquery/jquery.js', function () {
+conf.searchGroup = {
+ conf: {
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/ar/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/ar/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ }
+ <%if isset($body.searchBox.sort)%>, sort: "<%$body.searchBox.sort%>"<%/if%>
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ <%if !empty($engine.otherSug)%>otherSug:{mod: "<%$engine.otherSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>",
+ placeholder: "<%$engine.placeholder%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+ sug: {
+ "hao123": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://search.hao123.com.eg/r/su",
+ callbackFn: "window.bdsug.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod": "eg",
+ "cb": "window.bdsug.sug"
+ },
+ templ: function(data) {
+ var _data = data['s'] || [],
+ q = data['q'],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com.eg/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "hp",
+ "hl": "ar-EG",
+ "authuser": "0"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo": {
+ requestQuery: "command",
+ url: "http://sugg.us.search.yahoo.net/gossip-us-ura",
+ callbackFn: "YUI.Env.DataSource.callbacks.yui_3_3_0_1_1312871021408973",
+ callbackDataKey: "r",
+ requestParas: {
+ "output": "yjsonp",
+ "callback": "YUI.Env.DataSource.callbacks.yui_3_3_0_1_1312871021408973"
+ },
+ templ: function(data) {
+ var _data = data["r"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "ps_video": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://search.hao123.com.eg/r/su",
+ callbackFn: "window.bdsug.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod": "video_eg",
+ "cb": "window.bdsug.sug"
+ },
+ templ: function(data) {
+ var _data = data['s'] || [],
+ q = data['q'],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "youtube": {
+ requestQuery: "q",
+ url: "http://suggestqueries.google.com/complete/search",
+ callbackFn: "window.yt.www.suggest.handleResponse",
+ callbackDataNum: 1,
+ requestParas: {
+ "hl": "ar",
+ "ds": "yt",
+ "client": "youtube",
+ "hjson": "t",
+ "jsonp": "window.yt.www.suggest.handleResponse",
+ "cp": "2"
+ },
+
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_video": {
+ requestQuery: "command",
+ url: "http://gossip-ss.us.search.yahoo.com/gossip-us_ss/",
+ callbackFn: "fxsearch",
+ callbackDataNum: 1,
+ requestParas: {
+ "nresults": 8,
+ "output": "fxjsonp"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.com.eg/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "ar",
+ "client": "img",
+ "sugexp": "gsihc"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i][0] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "hao123_images": {
+ requestQuery: "wd",
+ url: "http://10.247.1.38:8333/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod" : "image_eg"
+ },
+ templ: function(data) {
+ var _data = data["s"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_images": {
+ requestQuery: "command",
+ url: "http://gossip-ss.us.search.yahoo.com/gossip-us_ss",
+ callbackFn: "YUI.Env.DataSource.callbacks.yui_3_5_1_1_1354169017899_293",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjsonp",
+ "nresults": 10,
+ "callback": "{callback}",
+ "callback": "YUI.Env.DataSource.callbacks.yui_3_5_1_1_1354169017899_293",
+ "pubid": 103,
+ "queryfirst": 1
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i] + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.com.eg/maps/suggest",
+ callbackFn: "_xdc_._bgnkibby8",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "2",
+ "hl": "ar",
+ "gl": "ar",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "ll": "21.902278,101.469727",
+ "spn": "5.706298,39.506836",
+ "auth": "ac0dbe60:A6KQ3ztz8bQ13_rnpShsJPs6jOU",
+ "src": "1",
+ "num": "5",
+ "numps": "5",
+ "callback": "_xdc_._bgnkibby8"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for (; i < len; i++) {
+ try {
+ detail = _data[i][9][0][0] || _data[i][9][0] || _data[i][9] || "";
+ } catch (e) {
+ detail = ""
+ }
+
+ /*detail = detail ? ' - ' + detail + ' ' : "";*/
+
+ ret.push('' + _data[i][0] + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "wikimapia": {
+ url: null
+ },
+ "wiki_ar": {
+ requestQuery: "search",
+ url: "http://ar.wikipedia.org/w/api.php",
+ callbackFn: "wikipedia.ar",
+ callbackDataNum: 1,
+ requestParas: {
+ "action": "opensearch",
+ "namespace": "0",
+ "suggest": "",
+ "callback": "wikipedia.ar"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_translate": {
+ url: null
+ },
+ "filmes": {
+ requestQuery: "wds",
+ url: "http://ar.hao123.com/movie/sug",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ },
+ templ: function(data) {
+ var _data = data["s"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for (; i < len; i++) {
+ ret.push('' + _data[i] + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ }
+ }
+}
+});
+<%/strip%>
+<%/script%>
+<%/if%>
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box/br/br.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box/br/br.tpl
new file mode 100755
index 000000000..f5023ed07
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box/br/br.tpl
@@ -0,0 +1,349 @@
+<%if !empty($body.searchBox.tplUrl)%>
+ <%widget name="common:widget/search-box/`$sysInfo.country`/`$body.searchBox.tplUrl`/`$body.searchBox.tplUrl`.tpl"%>
+<%else%>
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+require.async('common:widget/ui/jquery/jquery.js', function () {
+conf.searchGroup = {
+ conf:{
+ index: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/br/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ },
+ lv2: {
+ logoPath: "<%if !empty($head.cdn)%><%$head.cdn%><%/if%>/resource/fe/br/search_logo<%if $body.searchBox.logoSize == 's'%>_s<%elseif $body.searchBox.logoSize == 'm'%>_m<%/if%>/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ }
+ },
+ list: {
+ <%foreach $body.searchBox.sBoxTag as $tag%>"<%$tag.catagory%>": {
+ "engine": [<%foreach $tag.engine as $engine%>
+ <%if empty($body.searchboxEngine[$engine.id])%>{
+ id: "<%$engine.id%>",
+ name: "<%$engine.title%>",
+ logo: "<%$engine.logo%>",
+ url: "<%$engine.url%>",
+ action: "<%$engine.action%>",
+ params: {
+ <%if !empty($engine.params[0].name)%><%foreach $engine.params as $params%><%if !empty($params.name)%>"<%$params.name%>": "<%$params.value%>"<%if !$params@last%>,<%/if%><%/if%><%/foreach%><%/if%>
+ },
+ <%if !empty($engine.baiduSug)%>baiduSug:{mod: "<%$engine.baiduSug%>"},<%/if%>
+ <%if !empty($engine.otherSug)%>otherSug:{mod: "<%$engine.otherSug%>"},<%/if%>
+ q: "<%$engine.q|default:'q'%>",
+ placeholder: "<%$engine.placeholder%>"
+ }<%if !$engine@last%>,<%/if%><%/if%><%/foreach%>
+ ]
+ }<%if !$tag@last%>,<%/if%><%/foreach%>
+ },
+ sug: {
+ "hao123": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://search.hao123.com.br/r/su",
+ callbackFn: "window.bdsug.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod": "br",
+ "cb": "window.bdsug.sug"
+ },
+ templ: function(data) {
+ var _data = data['s'] || [],
+ q = data['q'],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_br": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com.br/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "hp",
+ "hl": "pt-BR",
+ "authuser": "0"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "yahoo_web": {
+ autoCompleteData: false,
+ requestQuery: "command",
+ url: "http://sugg.br.search.yahoo.net/gossip-br-sayt/",
+ callbackFn: "fxsearch",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjsonp"
+ }
+ },
+ "4shared": {
+ requestQuery: "search",
+ url: "http://dc413.4shared.com/network/search-suggest.jsp",
+ callbackFn: "ajaxSuggestions.jsonpCallback",
+ callbackDataKey: "suggestions",
+ requestParas: {
+ "format": "jsonp"
+ },
+ customUrl: function(para) {
+ return this.o.url + "?search=" + btoa(this.q) + "&format=jsonp";
+ }
+ },
+ "ps_video": {
+ autoCompleteData: false,
+ requestQuery: "wd",
+ url: "http://search.hao123.com.br/r/su",
+ callbackFn: "window.bdsug.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod": "video_br",
+ "cb": "window.bdsug.sug"
+ },
+ templ: function(data) {
+ var _data = data['s'] || [],
+ q = data['q'],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "youtube": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "youtube",
+ "hl": "pt",
+ "gl": "br",
+ "gs_nf": "1",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_video": {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com.br/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "video-hp",
+ "hl": "pt-BR",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "kboing": {
+ url: null
+ },
+ "google_dict": {
+ url: null
+ },
+ "google_map": {
+ requestQuery: "q",
+ url: "http://maps.google.com.br/maps/suggest",
+ callbackFn: "_xdc_._bgnkibby8",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "100",
+ "hl": "pt-BR",
+ "gl": "br",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "ll": "-14.239424,-53.186502",
+ "spn": "24.779743,86.572266",
+ "auth": "ac0dbe60:A6KQ3ztz8bQ13_rnpShsJPs6jOU",
+ "src": "1",
+ "num": "10",
+ "callback": "_xdc_._bgnkibby8"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for(; i - ' + detail + '' : "";
+
+ ret.push('' + _data[i][0].replace(q, '' + q + ' ') + detail + ' ')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "google_images": {
+ requestQuery: "q",
+ url: "http://clients1.google.com.br/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "img",
+ "ds": "i",
+ "hl": "pt-BR"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "hao123_images": {
+ requestQuery: "wd",
+ url: "http://sugimg.hao123.com.br/su",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ "prod" : "image_brazil"
+ },
+ templ: function(data) {
+ var _data = data["s"] || [],
+ q = data["q"],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "postbar": {
+ url: null
+ },
+ "filmes": {
+ requestQuery: "wds",
+ url: "http://br.hao123.com/movie/sug",
+ callbackFn: "window.baidu.sug",
+ callbackDataKey: "s",
+ requestParas: {
+ }
+ },
+ "americanas": {
+ requestQuery: "q",
+ url: "http://busca.americanas.com.br/autocomplete/search.php",
+ callbackFn: "window.americanas",
+ callbackDataKey: "sugestoes",
+ requestParas: {
+ "prod" : "image_brazil",
+ "type": "1",
+ "numsugestoes": "12",
+ "numprods": "0",
+ "callback":"window.americanas"
+ },
+ templ: function(data, q) {
+ var _data = data["sugestoes"] || [],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i].consulta.replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ },
+ "walmart": {
+ url: null
+ },
+ "netshoes": {
+ url: null
+ },
+ "buscape": {
+ url: null
+ },
+ "zoom": {
+ requestQuery: "q",
+ url: "http://s.zst.com.br/static/autocomplete-index-r/.js",
+ callbackFn: "zoomAutoCompleteBlackBoard.notify",
+ callbackDataKey: "completions",
+ customUrl: function(para) {
+ var str = this.q.split("").join("/") + ".js?_=" + +new Date;
+ return this.o.url.replace(".js", str);
+ },
+ templ: function(data) {
+ var _data = data["completions"] || [],
+ ret = [],
+ i = 0,
+ q = data["key"],
+ tmp = "",
+ len = _data.length;
+ var isStr = function(value){
+ return typeof value === 'string';
+ };
+ for(; i' + tmp.replace(q, '' + q + ' ') + '');
+ }
+ return '' + ret.join("") + ' ';
+ }
+ }
+ }
+}
+});
+<%/strip%>
+<%/script%>
+<%/if%>
+
diff --git a/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box/br/minilogo/minilogo.tpl b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box/br/minilogo/minilogo.tpl
new file mode 100755
index 000000000..bdfe503c2
--- /dev/null
+++ b/test/diff_fis3_smarty/product_code/hao123_fis3_smarty/common/widget/search-box/br/minilogo/minilogo.tpl
@@ -0,0 +1,316 @@
+
+<%script%>
+<%strip%>
+<%*注意:不能写JS注释*%>
+conf.searchGroup = {
+ conf:{
+ index: {
+ logoPath: "/resource/fe/br/minilogo/search_logo/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ },
+ lv2: {
+ logoPath: "/resource/fe/br/minilogo/search_logo/",
+ curN: 0,
+ delay: 200,
+ n: 10
+ }
+ },
+ list: {
+
+ "web": {
+ "hotWords": "<%$body.searchBox.sBoxTag[0].hotWords%>",
+ "engine": [{
+ name: "Google Brasil",
+ logo: "google_br",
+ url: "http://www.google.com.br/",
+ action: "http://www.google.com.br/search",
+ params: {
+ "hl": "pt-BR"
+ },
+ q: "q",
+
+ sug: {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com.br/s",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "hl": "pt-BR",
+ "sugexp": "lemsnc",
+ "xhr": "f"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ }
+ }, {
+ name: "Yahoo",
+ logo: "yahoo_web",
+ url: "http://br.yahoo.com/",
+ action: "http://br.search.yahoo.com/search",
+ params: {
+ },
+ q: "p",
+ sug: {
+ autoCompleteData: false,
+ requestQuery: "command",
+ url: "http://sugg.br.search.yahoo.net/gossip-br-sayt/",
+ callbackFn: "fxsearch",
+ callbackDataKey: 1,
+ requestParas: {
+ "output": "fxjsonp"
+ }
+ }
+ }
+ ]
+ },
+
+ "downloads": {
+ "hotWords": "<%$body.searchBox.sBoxTag[1].hotWords%>",
+ "engine": [{
+ name: "4shared",
+ logo: "4shared",
+ url: "http://www.4shared.com/",
+ action: "http://search.4shared.com/q/1/#{q}",
+ params: {
+ },
+ q: "q",
+ sug: {
+ requestQuery: "search",
+ url: "http://dc413.4shared.com/network/search-suggest.jsp",
+ callbackFn: "ajaxSuggestions.jsonpCallback",
+ callbackDataKey: "suggestions",
+ requestParas: {
+ "format": "jsonp"
+ },
+ customUrl: function(para) {
+ return this.o.url + "?search=" + btoa(this.q) + "&format=jsonp";
+ }
+ }
+ }]
+ },
+
+ "video": {
+ "hotWords": "<%$body.searchBox.sBoxTag[2].hotWords%>",
+ "engine": [{
+ name: "YouTube",
+ logo: "youtube",
+ url: "http://www.youtube.com/?gl=BR&hl=pt",
+ action: "http://www.youtube.com/results",
+ params: {
+ },
+ q: "search_query",
+ sug: {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com/complete/search",
+ callbackFn: "google.sbox.p0 && google.sbox.p0",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "youtube",
+ "hl": "pt",
+ "gl": "br",
+ "gs_nf": "1",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ }
+ },{
+ name: "Google Vídeos",
+ logo: "google_video",
+ url: "http://www.google.com.br/videohp?hl=pt-BR",
+ action: "http://www.google.com.br/search?",
+ params: {
+ "tbm": "vid",
+ "hl": "pt-BR"
+ },
+ q: "q",
+ sug: {
+ autoCompleteData: false,
+ requestQuery: "q",
+ url: "http://clients1.google.com.br/complete/search",
+ callbackFn: "window.google.ac.h",
+ callbackDataKey: 1,
+ requestParas: {
+ "client": "video-hp",
+ "hl": "pt-BR",
+ "ds": "yt"
+ },
+ templ: function(data) {
+ var _data = data[1] || [],
+ q = data[0],
+ ret = [],
+ i = 0,
+ len = _data.length;
+ for(; i' + _data[i][0].replace(q, '' + q + ' ') + '')
+ }
+ return '' + ret.join("") + ' ';
+ }
+ }
+ }]
+ },
+ "music": {
+ "hotWords": "<%$body.searchBox.sBoxTag[3].hotWords%>",
+ "engine": [{
+ name: "kboing",
+ logo: "kboing",
+ url: "http://www.kboing.com.br/",
+ action: "http://www.kboing.com.br/searchmusic.php?",
+ params: {
+ "tb": "musica"
+ },
+ q: "q",
+ sug: {
+ url: null
+ }
+
+ }]
+ },
+ "translator": {
+ "hotWords": "<%$body.searchBox.sBoxTag[4].hotWords%>",
+ "engine": [{
+ name: "Google Tradutor",
+ logo: "google_dict",
+ url: "http://translate.google.com.br/?hl=pt-BR&tab=nT",
+ action: "http://translate.google.com.br/",
+ params: {
+ hl: "pt-BR"
+ },
+ q: "q",
+ sug: {
+ url: null
+ }
+ }]
+ },
+
+ "map": {
+ "hotWords": "<%$body.searchBox.sBoxTag[5].hotWords%>",
+ "engine": [{
+ name: "Google Mapas",
+ logo: "google_map",
+ url: "http://maps.google.com.br/maps?hl=pt-BR&tab=Tl",
+ action: "http://maps.google.com.br/maps",
+ params: {
+ "hl": "pt-BR"
+ },
+ q: "q",
+ sug: {
+ requestQuery: "q",
+ url: "http://maps.google.com.br/maps/suggest",
+ callbackFn: "_xdc_._bgnkibby8",
+ callbackDataKey: 3,
+ requestParas: {
+ "cp": "100",
+ "hl": "pt-BR",
+ "gl": "br",
+ "v": "2",
+ "clid": "1",
+ "json": "a",
+ "ll": "-14.239424,-53.186502",
+ "spn": "24.779743,86.572266",
+ "auth": "ac0dbe60:A6KQ3ztz8bQ13_rnpShsJPs6jOU",
+ "src": "1",
+ "num": "10",
+ "callback": "_xdc_._bgnkibby8"
+ },
+ templ: function(data) {
+ var _data = data[3] || [],
+ q = this.q,
+ ret = [],
+ i = 0,
+ len = _data.length,
+ detail = "";
+
+ for(; i - ' + detail + '' : "";
+
+ ret.push('