Changeset 20267
- Timestamp:
- 09/30/08 13:42:39 (9 months ago)
- Location:
- platform/firefox/FireMobileSimulator/trunk
- Files:
-
- 2 added
- 1 removed
- 27 modified
- 2 moved
-
src/chrome/content/about.xul (modified) (2 diffs)
-
src/chrome/content/carrier (deleted)
-
src/chrome/content/common/carrier.js (modified) (2 diffs)
-
src/chrome/content/common/ecl.js (modified) (16 diffs)
-
src/chrome/content/common/pref.js (moved) (moved from platform/firefox/FireMobileSimulator/trunk/src/chrome/content/common/preferences.js) (2 diffs)
-
src/chrome/content/common/util.js (modified) (11 diffs)
-
src/chrome/content/core.js (added)
-
src/chrome/content/firefoxOverlay.xul (modified) (3 diffs)
-
src/chrome/content/html/au_gps.html (modified) (2 diffs)
-
src/chrome/content/html/au_gps.js (modified) (2 diffs)
-
src/chrome/content/html/dc_openiarea.html (modified) (2 diffs)
-
src/chrome/content/html/dc_openiarea.js (modified) (4 diffs)
-
src/chrome/content/mpc.js (modified) (1 diff)
-
src/chrome/content/mpc/common.js (modified) (10 diffs)
-
src/chrome/content/mpc/docomo.js (moved) (moved from platform/firefox/FireMobileSimulator/trunk/src/chrome/content/mpc/foma.js) (5 diffs)
-
src/chrome/content/mpc/ezweb.js (modified) (6 diffs)
-
src/chrome/content/mpc/softbank.js (modified) (5 diffs)
-
src/chrome/content/options/dialogs/device.js (modified) (3 diffs)
-
src/chrome/content/options/dialogs/device.xul (modified) (2 diffs)
-
src/chrome/content/options/options.js (modified) (12 diffs)
-
src/chrome/content/options/options.xul (modified) (1 diff)
-
src/chrome/content/options/pages/devices.xul (modified) (3 diffs)
-
src/chrome/content/options/pages/general.xul (modified) (1 diff)
-
src/chrome/content/options/pages/gps.xul (modified) (1 diff)
-
src/chrome/content/options/pages/pictogram.xul (modified) (1 diff)
-
src/chrome/content/overlay.js (modified) (1 diff)
-
src/components/msimModifyHeaders.js (modified) (10 diffs)
-
src/components/msimStreamConverter.js (modified) (4 diffs)
-
src/components/nsDeviceProtocolHandler.js (modified) (1 diff)
-
test/comment.html (added)
-
test/gps/au.html (modified) (1 diff)
-
test/pictogram/au_utf8_js.html (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
platform/firefox/FireMobileSimulator/trunk/src/chrome/content/about.xul
r19736 r20267 28 28 <vbox> 29 29 <label value="FireMobileSimulator" style="font-weight: bold; font-size: x-large;"/> 30 <label value="&version; 0.1. 4"/>30 <label value="&version; 0.1.5pre"/> 31 31 <separator class="thin"/> 32 32 <label value="&createdBy;" style="font-weight: bold;"/> … … 34 34 <separator class="thin"/> 35 35 <label value="&homepage;" style="font-weight: bold;"/> 36 <label onclick=" openURL(this.value)" class="text-link" value="https://addons.mozilla.org/firefox/addon/8519"/>36 <label onclick="firemobilesimulator.common.util.openURL(this.value)" class="text-link" value="https://addons.mozilla.org/firefox/addon/8519"/> 37 37 <separator class="thin"/> 38 38 </vbox> -
platform/firefox/FireMobileSimulator/trunk/src/chrome/content/common/carrier.js
r19736 r20267 1 /* ***** BEGIN LICENSE BLOCK Version: GPL 3.0 ***** 2 * FireMobileFimulator is a Firefox add-on that simulate web browsers of 3 * japanese mobile phones. 4 * Copyright (C) 2008 Takahiro Horikawa <horikawa.takahiro@gmail.com> 5 * 6 * This program is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation, either version 3 of the License, or 9 * (at your option) any later version. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program. If not, see <http://www.gnu.org/licenses/>. 18 * ***** END LICENSE BLOCK ***** */ 1 /******************************************************************************* 2 * ***** BEGIN LICENSE BLOCK Version: GPL 3.0 FireMobileFimulator is a Firefox 3 * add-on that simulate web browsers of japanese mobile phones. Copyright (C) 4 * 2008 Takahiro Horikawa <horikawa.takahiro@gmail.com> 5 * 6 * This program is free software: you can redistribute it and/or modify it under 7 * the terms of the GNU General Public License as published by the Free Software 8 * Foundation, either version 3 of the License, or (at your option) any later 9 * version. 10 * 11 * This program is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 13 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 14 * details. 15 * 16 * You should have received a copy of the GNU General Public License along with 17 * this program. If not, see <http://www.gnu.org/licenses/>. ***** END LICENSE 18 * BLOCK ***** 19 */ 19 20 20 21 // キャリア別の端末の設定 22 var firemobilesimulator; 23 if (!firemobilesimulator) 24 firemobilesimulator = {}; 25 if (!firemobilesimulator.common) 26 firemobilesimulator.common = {}; 27 if (!firemobilesimulator.common.carrier) 28 firemobilesimulator.common.carrier = {}; 21 29 22 const DOCOMO = "DC"; 23 const AU = "AU"; 24 const SOFTBANK = "SB"; 30 /** 31 * 各キャリアを示す定数 32 * @type String 33 */ 34 firemobilesimulator.common.carrier.DOCOMO = "DC"; 35 firemobilesimulator.common.carrier.AU = "AU"; 36 firemobilesimulator.common.carrier.SOFTBANK = "SB"; 25 37 26 var carrierArray = [DOCOMO, AU, SOFTBANK]; 38 /** 39 * 各キャリアを示す定数配列 40 */ 41 firemobilesimulator.common.carrier.carrierArray = [firemobilesimulator.common.carrier.DOCOMO, firemobilesimulator.common.carrier.AU, firemobilesimulator.common.carrier.SOFTBANK]; 27 42 28 var carrierName = { 43 /** 44 * 各キャリアの正式名称を示すマップ 45 */ 46 firemobilesimulator.common.carrier.carrierName = { 29 47 DC : "DoCoMo", 30 AU : " Au",48 AU : "au", 31 49 SB : "SoftBank" 32 50 }; 33 51 34 var deviceBasicAttribute = ["device", "useragent", "carrier"]; 52 /** 53 * キャリア共通の属性 54 */ 55 firemobilesimulator.common.carrier.deviceBasicAttribute = ["device", "useragent", "carrier"]; 35 56 36 var deviceAttribute = { 57 /** 58 * キャリア固有の属性 59 */ 60 firemobilesimulator.common.carrier.deviceAttribute = { 37 61 DC : [], 38 62 AU : ["x-up-devcap-multimedia", "x-up-devcap-cc", "x-up-devcap-iscolor", … … 44 68 }; 45 69 46 function setDevice(carrier, id) { 47 48 dump("setDevice:"+carrier+",id:"+id+"\n"); 49 var msimButton = document.getElementById("msim-button"); 50 51 if (!carrier || !id) { 52 dump("[msim]Error : the attribute which you have selected is insufficient.\n"); 53 return; 54 } 55 56 var pref_prefix = "msim.devicelist." + carrier + "." + id; 57 pref.setUnicharPref("msim.current.carrier", pref 58 .copyUnicharPref(pref_prefix + ".carrier")); 59 pref.setUnicharPref("msim.current.device", pref.copyUnicharPref(pref_prefix 60 + ".device")); 61 62 var useragent = pref.copyUnicharPref(pref_prefix + ".useragent"); 63 if (SOFTBANK == carrier) { 64 useragent = getSoftBankUserAgent(useragent, pref 65 .copyUnicharPref("msim.config.SB.serial")); 66 } 67 68 pref.setUnicharPref("general.useragent.override", useragent); 69 pref.setUnicharPref("msim.current.useragent", useragent); 70 pref.setUnicharPref("msim.current.id", id); 71 72 msim.updateIcon(); 73 }; 74 75 function getSoftBankUserAgent(useragent, serial) { 76 var notifySerial = pref.getBoolPref("msim.config.SB.notifyserial"); 70 firemobilesimulator.common.carrier.getSoftBankUserAgent = function(useragent, serial) { 71 var notifySerial = parent.firemobilesimulator.common.pref.getBoolPref("msim.config.SB.notifyserial"); 77 72 if (true == notifySerial) { 78 73 useragent = useragent.replace("[/Serial]", "/" + serial); -
platform/firefox/FireMobileSimulator/trunk/src/chrome/content/common/ecl.js
r19719 r20267 17 17 * along with this program. If not, see <http://www.gnu.org/licenses/>. 18 18 * ***** END LICENSE BLOCK ***** */ 19 20 EscapeSJIS=function(str){ 19 var firemobilesimulator; 20 if(!firemobilesimulator) firemobilesimulator = {}; 21 if(!firemobilesimulator.common) firemobilesimulator.common = {}; 22 if(!firemobilesimulator.common.ecl) firemobilesimulator.common.ecl = {}; 23 24 firemobilesimulator.common.ecl.EscapeSJIS=function(str){ 21 25 return str.replace(/[^*+.-9A-Z_a-z-]/g,function(s){ 22 26 var c=s.charCodeAt(0),m; 23 return c<128?(c<16?"%0":"%")+c.toString(16).toUpperCase():65376<c&&c<65440?"%"+(c-65216).toString(16).toUpperCase():(c= JCT11280.indexOf(s))<0?"%81E":"%"+((m=((c<8272?c:(c=JCT11280.lastIndexOf(s)))-(c%=188))/188)<31?m+129:m+193).toString(16).toUpperCase()+(64<(c+=c<63?64:65)&&c<91||95==c||96<c&&c<123?String.fromCharCode(c):"%"+c.toString(16).toUpperCase())24 }) 25 }; 26 27 UnescapeSJIS=function(str){27 return c<128?(c<16?"%0":"%")+c.toString(16).toUpperCase():65376<c&&c<65440?"%"+(c-65216).toString(16).toUpperCase():(c=firemobilesimulator.common.ecl.JCT11280.indexOf(s))<0?"%81E":"%"+((m=((c<8272?c:(c=firemobilesimulator.common.ecl.JCT11280.lastIndexOf(s)))-(c%=188))/188)<31?m+129:m+193).toString(16).toUpperCase()+(64<(c+=c<63?64:65)&&c<91||95==c||96<c&&c<123?String.fromCharCode(c):"%"+c.toString(16).toUpperCase()) 28 }) 29 }; 30 31 firemobilesimulator.common.ecl.UnescapeSJIS=function(str){ 28 32 return str.replace(/%(8[1-9A-F]|[9E][0-9A-F]|F[0-9A-C])(%[4-689A-F][0-9A-F]|%7[0-9A-E]|[@-~])|%([0-7][0-9A-F]|A[1-9A-F]|[B-D][0-9A-F])/ig,function(s){ 29 33 var c=parseInt(s.substring(1,3),16),l=s.length; 30 return 3==l?String.fromCharCode(c<160?c:c+65216): JCT11280.charAt((c<160?c-129:c-193)*188+(4==l?s.charCodeAt(3)-64:(c=parseInt(s.substring(4),16))<127?c-64:c-65))31 }) 32 }; 33 34 EscapeEUCJP=function(str){35 return str.replace(/[^*+.-9A-Z_a-z-]/g,function(s){ 36 var c=s.charCodeAt(0); 37 return (c<128?(c<16?"%0":"%")+c.toString(16):65376<c&&c<65440?"%8E%"+(c-65216).toString(16):(c= JCT8836.indexOf(s))<0?"%A1%A6":"%"+((c-(c%=94))/94+161).toString(16)+"%"+(c+161).toString(16)).toUpperCase()38 }) 39 }; 40 41 UnescapeEUCJP=function(str){34 return 3==l?String.fromCharCode(c<160?c:c+65216):firemobilesimulator.common.ecl.JCT11280.charAt((c<160?c-129:c-193)*188+(4==l?s.charCodeAt(3)-64:(c=parseInt(s.substring(4),16))<127?c-64:c-65)) 35 }) 36 }; 37 38 firemobilesimulator.common.ecl.EscapeEUCJP=function(str){ 39 return str.replace(/[^*+.-9A-Z_a-z-]/g,function(s){ 40 var c=s.charCodeAt(0); 41 return (c<128?(c<16?"%0":"%")+c.toString(16):65376<c&&c<65440?"%8E%"+(c-65216).toString(16):(c=firemobilesimulator.common.ecl.JCT8836.indexOf(s))<0?"%A1%A6":"%"+((c-(c%=94))/94+161).toString(16)+"%"+(c+161).toString(16)).toUpperCase() 42 }) 43 }; 44 45 firemobilesimulator.common.ecl.UnescapeEUCJP=function(str){ 42 46 return str.replace(/(%A[1-9A-F]|%[B-E][0-9A-F]|%F[0-9A-E]){2}|%8E%(A[1-9A-F]|[B-D][0-9A-F])|%[0-7][0-9A-F]/ig,function(s){ 43 47 var c=parseInt(s.substring(1),16); 44 return c<161?String.fromCharCode(c<128?c:parseInt(s.substring(4),16)+65216): JCT8836.charAt((c-161)*94+parseInt(s.substring(4),16)-161)45 }) 46 }; 47 48 EscapeJIS7=function(str){48 return c<161?String.fromCharCode(c<128?c:parseInt(s.substring(4),16)+65216):firemobilesimulator.common.ecl.JCT8836.charAt((c-161)*94+parseInt(s.substring(4),16)-161) 49 }) 50 }; 51 52 firemobilesimulator.common.ecl.EscapeJIS7=function(str){ 49 53 var u=String.fromCharCode,ri=u(92,120,48,48,45,92,120,55,70),rj=u(65377,45,65439,93,43), 50 54 H=function(c){ … … 61 65 var c,i=0,t="%1B%28I";while(c=s.charCodeAt(i++))t+=H(c-65344);return t 62 66 }).replace(RegExp("[^"+ri+rj,"g"),function(s){ 63 var a,c,i=0,t="%1B%24B";while(a=s.charAt(i++))t+=(c= JCT8836.indexOf(a))<0?"%21%26":H((c-(c%=94))/94+33)+H(c+33);return t67 var a,c,i=0,t="%1B%24B";while(a=s.charAt(i++))t+=(c=firemobilesimulator.common.ecl.JCT8836.indexOf(a))<0?"%21%26":H((c-(c%=94))/94+33)+H(c+33);return t 64 68 }).slice(8,-1) 65 69 }; 66 70 67 UnescapeJIS7=function(str){71 firemobilesimulator.common.ecl.UnescapeJIS7=function(str){ 68 72 var i=0,p,q,s="",u=String.fromCharCode, 69 73 P=("%28B"+str.replace(/%49/g,"I").replace(/%1B%24%4[02]|%1B%24@/ig,"%1B%24B")).split(/%1B/i), … … 76 80 K=function(s){ 77 81 var l=s.length; 78 return JCT8836.charAt(4<l?(parseInt(s.substring(1),16)-33)*94+parseInt(s.substring(4),16)-33:2<l?(37==(l=s.charCodeAt(0))?(parseInt(s.substring(1,3),16)-33)*94+s.charCodeAt(3):(l-33)*94+parseInt(s.substring(2),16))-33:(s.charCodeAt(0)-33)*94+s.charCodeAt(1)-33)82 return firemobilesimulator.common.ecl.JCT8836.charAt(4<l?(parseInt(s.substring(1),16)-33)*94+parseInt(s.substring(4),16)-33:2<l?(37==(l=s.charCodeAt(0))?(parseInt(s.substring(1,3),16)-33)*94+s.charCodeAt(3):(l-33)*94+parseInt(s.substring(2),16))-33:(s.charCodeAt(0)-33)*94+s.charCodeAt(1)-33) 79 83 }, 80 84 rI=new RegExp,rJ=new RegExp,rK=new RegExp; … … 85 89 }; 86 90 87 EscapeJIS8=function(str){91 firemobilesimulator.common.ecl.EscapeJIS8=function(str){ 88 92 var u=String.fromCharCode,r=u(92,120,48,48,45,92,120,55,70,65377,45,65439,93,43), 89 93 H=function(c){ … … 98 102 return "%1B%28B"+s.replace(rI,I) 99 103 }).replace(RegExp("[^"+r,"g"),function(s){ 100 var a,c,i=0,t="%1B%24B";while(a=s.charAt(i++))t+=(c= JCT8836.indexOf(a))<0?"%21%26":H((c-(c%=94))/94+33)+H(c+33);return t104 var a,c,i=0,t="%1B%24B";while(a=s.charAt(i++))t+=(c=firemobilesimulator.common.ecl.JCT8836.indexOf(a))<0?"%21%26":H((c-(c%=94))/94+33)+H(c+33);return t 101 105 }).slice(8,-1) 102 106 }; 103 107 104 UnescapeJIS8=function(str){108 firemobilesimulator.common.ecl.UnescapeJIS8=function(str){ 105 109 var i=0,p,s="", 106 110 P=("%28B"+str.replace(/%1B%24%4[02]|%1B%24@/ig,"%1B%24B")).split(/%1B/i), … … 111 115 K=function(s){ 112 116 var l=s.length; 113 return JCT8836.charAt(4<l?(parseInt(s.substring(1),16)-33)*94+parseInt(s.substring(4),16)-33:2<l?(37==(l=s.charCodeAt(0))?(parseInt(s.substring(1,3),16)-33)*94+s.charCodeAt(3):(l-33)*94+parseInt(s.substring(2),16))-33:(s.charCodeAt(0)-33)*94+s.charCodeAt(1)-33)117 return firemobilesimulator.common.ecl.JCT8836.charAt(4<l?(parseInt(s.substring(1),16)-33)*94+parseInt(s.substring(4),16)-33:2<l?(37==(l=s.charCodeAt(0))?(parseInt(s.substring(1,3),16)-33)*94+s.charCodeAt(3):(l-33)*94+parseInt(s.substring(2),16))-33:(s.charCodeAt(0)-33)*94+s.charCodeAt(1)-33) 114 118 }, 115 119 rI=new RegExp,rK=new RegExp; … … 120 124 }; 121 125 122 EscapeUnicode=function(str){126 firemobilesimulator.common.ecl.EscapeUnicode=function(str){ 123 127 return str.replace(/[^*+.-9A-Z_a-z-]/g,function(s){ 124 128 var c=s.charCodeAt(0); … … 127 131 }; 128 132 129 UnescapeUnicode=function(str){133 firemobilesimulator.common.ecl.UnescapeUnicode=function(str){ 130 134 return str.replace(/%u[0-9A-F]{4}|%[0-9A-F]{2}/ig,function(s){ 131 135 return String.fromCharCode("0x"+s.substring(s.length/3)) … … 133 137 }; 134 138 135 EscapeUTF7=function(str){139 firemobilesimulator.common.ecl.EscapeUTF7=function(str){ 136 140 var B="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""), 137 141 E=function(s){ … … 147 151 }; 148 152 149 UnescapeUTF7=function(str){153 firemobilesimulator.common.ecl.UnescapeUTF7=function(str){ 150 154 var i=0,B={}; 151 155 while(i<64)B["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(i)]=i++; … … 162 166 }; 163 167 164 EscapeUTF8=function(str){168 firemobilesimulator.common.ecl.EscapeUTF8=function(str){ 165 169 return str.replace(/[^*+.-9A-Z_a-z-]/g,function(s){ 166 170 var c=s.charCodeAt(0); … … 169 173 }; 170 174 171 UnescapeUTF8=function(str){175 firemobilesimulator.common.ecl.UnescapeUTF8=function(str){ 172 176 return str.replace(/%(E(0%[AB]|[1-CEF]%[89AB]|D%[89])[0-9A-F]|C[2-9A-F]|D[0-9A-F])%[89AB][0-9A-F]|%[0-7][0-9A-F]/ig,function(s){ 173 177 var c=parseInt(s.substring(1),16); … … 176 180 }; 177 181 178 EscapeUTF16LE=function(str){182 firemobilesimulator.common.ecl.EscapeUTF16LE=function(str){ 179 183 var H=function(c){ 180 184 return 41<c&&c<58&&44!=c||64<c&&c<91||95==c||96<c&&c<123?String.fromCharCode(c):(c<16?"%0":"%")+c.toString(16).toUpperCase() … … 185 189 }; 186 190 187 UnescapeUTF16LE=function(str){191 firemobilesimulator.common.ecl.UnescapeUTF16LE=function(str){ 188 192 var u=String.fromCharCode,b=u(92,120,48,48,45,92,120,70,70); 189 193 return str.replace(/^%FF%FE/i,"").replace(RegExp("%[0-9A-F]{2}%[0-9A-F]{2}|%[0-9A-F]{2}["+b+"]|["+b+"]%[0-9A-F]{2}|["+b+"]{2}","ig"),function(s){ … … 193 197 }; 194 198 195 GetEscapeCodeType=function(str){199 firemobilesimulator.common.ecl.GetEscapeCodeType=function(str){ 196 200 if(/%u[0-9A-F]{4}/i.test(str))return "Unicode"; 197 201 if(/%([0-9A-DF][0-9A-F]%[8A]0%|E0%80|[0-7][0-9A-F]|C[01])%[8A]0|%00|%[7F]F/i.test(str))return "UTF16LE"; … … 218 222 }; 219 223 220 JCT11280=Function('var a="zKV33~jZ4zN=~ji36XazM93y!{~k2y!o~k0ZlW6zN?3Wz3W?{EKzK[33[`y|;-~j^YOTz$!~kNy|L1$353~jV3zKk3~k-4P4zK_2+~jY4y!xYHR~jlz$_~jk4z$e3X5He<0y!wy|X3[:~l|VU[F3VZ056Hy!nz/m1XD61+1XY1E1=1y|bzKiz!H034zKj~mEz#c5ZA3-3X$1~mBz$$3~lyz#,4YN5~mEz#{ZKZ3V%7Y}!J3X-YEX_J(3~mAz =V;kE0/y|F3y!}~m>z/U~mI~j_2+~mA~jp2;~m@~k32;~m>V}2u~mEX#2x~mBy+x2242(~mBy,;2242(~may->2&XkG2;~mIy-_2&NXd2;~mGz,{4<6:.:B*B:XC4>6:.>B*BBXSA+A:X]E&E<~r#z+625z s2+zN=`HXI@YMXIAXZYUM8X4K/:Q!Z&33 3YWX[~mB`{zKt4z (zV/z 3zRw2%Wd39]S11z$PAXH5Xb;ZQWU1ZgWP%3~o@{Dgl#gd}T){Uo{y5_d{e@}C(} WU9|cB{w}bzvV|)[} H|zT}d||0~{]Q|(l{|x{iv{dw}(5}[Z|kuZ }cq{{y|ij}.I{idbof%cu^d}Rj^y|-M{ESYGYfYsZslS`?ZdYO__gLYRZ&fvb4oKfhSf^d<Yeasc1f&a=hnYG{QY{D`Bsa|u,}Dl|_Q{C%xK|Aq}C>|c#ryW=}eY{L+`)][YF_Ub^h4}[X|?r|u_ex}TL@YR]j{SrXgo*|Gv|rK}B#mu{R1}hs|dP{C7|^Qt3|@P{YVV |8&}#D}ef{e/{Rl|>Hni}R1{Z#{D[}CQlQ||E}[s{SG_+i8eplY[=[|ec[$YXn#`hcm}YR|{Ci(_[ql|?8p3]-}^t{wy}4la&pc|3e{Rp{LqiJ],] `kc(]@chYnrM`O^,ZLYhZB]ywyfGY~aex!_Qww{a!|)*lHrM{N+n&YYj~Z b c#e_[hZSon|rOt`}hBXa^i{lh|<0||r{KJ{kni)|x,|0auY{D!^Sce{w;|@S|cA}Xn{C1h${E]Z-XgZ*XPbp]^_qbH^e[`YM|a||+=]!Lc}]vdBc=j-YSZD]YmyYLYKZ9Z>Xcczc2{Yh}9Fc#Z.l{}(D{G{{mRhC|L3b#|xK[Bepj#ut`H[,{E9Yr}1b{[e]{ZFk7[ZYbZ0XL]}Ye[(`d}c!|*y`Dg=b;gR]Hm=hJho}R-[n}9;{N![7k_{UbmN]rf#pTe[x8}!Qcs_rs[m`|>N}^V})7{^r|/E}),}HH{OYe2{Skx)e<_.cj.cjoMhc^d}0uYZd!^J_@g,[[[?{i@][|3S}Yl3|!1|eZ|5IYw|1D}e7|Cv{OHbnx-`wvb[6[4} =g+k:{C:}ed{S]|2M]-}WZ|/q{LF|dYu^}Gs^c{Z=}h>|/i|{W]:|ip{N:|zt|S<{DH[p_tvD{N<[8Axo{X4a.^o^X>Yfa59`#ZBYgY~_t^9`jZHZn`>G[oajZ;X,i)Z.^~YJe ZiZF^{][[#Zt^|]Fjx]&_5dddW]P0C[-]}]d|y {C_jUql] |OpaA[Z{lp|rz}:Mu#]_Yf6{Ep?f5`$[6^D][^u[$[6^.Z8]]ePc2U/=]K^_+^M{q*|9tYuZ,s(dS{i=|bNbB{uG}0jZOa:[-]dYtu3]:]<{DJ_SZIqr_`l=Yt`gkTnXb3d@kiq0a`Z{|!B|}e}Ww{Sp,^Z|0>_Z}36|]A|-t}lt{R6pi|v8hPu#{C>YOZHYmg/Z4nicK[}hF_Bg|YRZ7c|crkzYZY}_iXcZ.|)U|L5{R~qi^Uga@Y[xb}&qdbd6h5|Btw[}c<{Ds53[Y7]?Z<|e0{L[ZK]mXKZ#Z2^tavf0`PE[OSOaP`4gi`qjdYMgys/?[nc,}EEb,eL]g[n{E_b/vcvgb.{kcwi`~v%|0:|iK{Jh_vf5lb}KL|(oi=LrzhhY_^@`zgf[~g)[J_0fk_V{T)}I_{D&_/d9W/|MU[)f$xW}?$xr4<{Lb{y4}&u{XJ|cm{Iu{jQ}CMkD{CX|7A}G~{kt)nB|d5|<-}WJ}@||d@|Iy}Ts|iL|/^|no|0;}L6{Pm]7}$zf:|r2}?C_k{R(}-w|`G{Gy[g]bVje=_0|PT{^Y^yjtT[[[l!Ye_`ZN]@[n_)j3nEgMa]YtYpZy].d-Y_cjb~Y~[nc~sCi3|zg}B0}do{O^{|$`_|D{}U&|0+{J3|8*]iayx{a{xJ_9|,c{Ee]QXlYb]$[%YMc*]w[aafe]aVYi[fZEii[xq2YQZHg]Y~h#|Y:thre^@^|_F^CbTbG_1^qf7{L-`VFx Zr|@EZ;gkZ@slgko`[e}T:{Cu^pddZ_`yav^Ea+[#ZBbSbO`elQfLui}.F|txYcbQ`XehcGe~fc^RlV{D_0ZAej[l&jShxG[ipB_=u:eU}3e8[=j|{D(}dO{Do[BYUZ0/]AYE]ALYhZcYlYP/^-^{Yt_1_-;YT`P4BZG=IOZ&]H[e]YYd[9^F[1YdZxZ?Z{Z<]Ba2[5Yb[0Z4l?]d_;_)a?YGEYiYv`_XmZs4ZjY^Zb]6gqGaX^9Y}dXZr[g|]Y}K aFZp^k^F]M`^{O1Ys]ZCgCv4|E>}8eb7}l`{L5[Z_faQ|c2}Fj}hw^#|Ng|B||w2|Sh{v+[G}aB|MY}A{|8o}X~{E8paZ:]i^Njq]new)`-Z>haounWhN}c#{DfZ|fK]KqGZ=:u|fqoqcv}2ssm}.r{]{nIfV{JW)[K|,Z{Uxc|]l_KdCb%]cfobya3`p}G^|LZiSC]U|(X|kBlVg[kNo({O:g:|-N|qT}9?{MBiL}Sq{`P|3a|u.{Uaq:{_o|^S}jX{Fob0`;|#y_@[V[K|cw[<_ }KU|0F}d3|et{Q7{LuZttsmf^kYZ`Af`}$x}U`|Ww}d]| >}K,r&|XI|*e{C/a-bmr1fId4[;b>tQ_:]hk{b-pMge]gfpo.|(w[jgV{EC1Z,YhaY^q,_G[c_g[J0YX]`[h^hYK^_Yib,` {i6vf@YM^hdOKZZn(jgZ>bzSDc^Z%[[o9[2=/YHZ(_/Gu_`*|8z{DUZxYt^vuvZjhi^lc&gUd4|<UiA`z]$b/Z?l}YI^jaHxe|;F}l${sQ}5g}hA|e4}?o{ih}Uz{C)jPe4]H^J[Eg[|AMZMlc}:,{iz}#*|gc{Iq|/:|zK{l&}#u|myd{{M&v~nV};L|(g|I]ogddb0xsd7^V})$uQ{HzazsgxtsO^l}F>ZB]r|{7{j@cU^{{CbiYoHlng]f+nQ[bkTn/}<-d9q {KXadZYo+n|l[|lc}V2{[a{S4Zam~Za^`{HH{xx_SvF|ak=c^[v^7_rYT`ld@]:_ub%[$[m](Shu}G2{E.ZU_L_R{tz`vj(f?^}hswz}GdZ}{S:h`aD|?W|`dgG|if{a8|J1{N,}-Ao3{H#{mfsP|[ bzn+}_Q{MT{u4kHcj_q`eZj[8o0jy{p7}C|[}l){MuYY{|Ff!Ykn3{rT|m,^R|,R}$~Ykgx{P!]>iXh6[l[/}Jgcg{JYZ.^qYfYIZl[gZ#Xj[Pc7YyZD^+Yt;4;`e8YyZVbQ7YzZxXja.7SYl[s]2^/Ha$[6ZGYrb%XiYdf2]H]kZkZ*ZQ[ZYS^HZXcCc%Z|[(bVZ]]:OJQ_DZCg<[,]%Zaa [g{C00HY[c%[ChyZ,Z_`PbXa+eh`^&jPi0a[ggvhlekL]w{Yp^v}[e{~;k%a&k^|nR_z_Qng}[E}*Wq:{k^{FJZpXRhmh3^p>de^=_7`|ZbaAZtdhZ?n4ZL]u`9ZNc3g%[6b=e.ZVfC[ZZ^^^hD{E(9c(kyZ=bb|Sq{k`|vmr>izlH[u|e`}49}Y%}FT{[z{Rk}Bz{TCc/lMiAqkf(m$hDc;qooi[}^o:c^|Qm}a_{mrZ(pA`,}<2sY| adf_%|}`}Y5U;}/4|D>|$X{jw{C<|F.hK|*A{MRZ8Zsm?imZm_?brYWZrYx`yVZc3a@f?aK^ojEd {bN}/3ZH]/$YZhm^&j 9|(S|b]mF}UI{q&aM]LcrZ5^.|[j`T_V_Gak}9J[ ZCZD|^h{N9{~&[6Zd{}B}2O|cv]K}3s}Uy|l,fihW{EG`j_QOp~Z$F^zexS`dcISfhZBXP|.vn|_HYQ|)9|cr]<`&Z6]m_(ZhPcSg>`Z]5`~1`0Xcb4k1{O!bz|CN_T{LR|a/gFcD|j<{Z._[f)mPc:1`WtIaT1cgYkZOaVZOYFrEe[}T$}Ch}mk{K-^@]fH{Hdi`c*Z&|Kt{if[C{Q;{xYB`dYIX:ZB[}]*[{{p9|4GYRh2ao{DS|V+[zd$`F[ZXKadb*A] Ys]Maif~a/Z2bmclb8{Jro_rz|x9cHojbZ{GzZx_)]:{wAayeDlx}<=`g{H1{l#}9i|)=|lP{Qq}.({La|!Y{i2EZfp=c*}Cc{EDvVB|;g}2t{W4av^Bn=]ri,|y?|3+}T*ckZ*{Ffr5e%|sB{lx^0]eZb]9[SgAjS_D|uHZx]dive[c.YPkcq/}db{EQh&hQ|eg}G!ljil|BO]X{Qr_GkGl~YiYWu=c3eb}29v3|D|}4i||.{Mv})V{SP1{FX}CZW6{cm|vO{pS|e#}A~|1i}81|Mw}es|5[}3w{C`h9aL]o{}p[G`>i%a1Z@`Ln2bD[$_h`}ZOjhdTrH{[j_:k~kv[Sdu]CtL}41{I |[[{]Zp$]XjxjHt_eThoa#h>sSt8|gK|TVi[Y{t=}Bs|b7Zpr%{gt|Yo{CS[/{iteva|cf^hgn}($_c^wmb^Wm+|55jrbF|{9^ q6{C&c+ZKdJkq_xOYqZYSYXYl`8]-cxZAq/b%b*_Vsa[/Ybjac/OaGZ4fza|a)gY{P?| I|Y |,pi1n7}9bm9ad|=d{aV|2@[(}B`d&|Uz}B}{`q|/H|!JkM{FU|CB|.{}Az}#P|lk}K{|2rk7{^8^?`/|k>|Ka{Sq}Gz}io{DxZh[yK_#}9<{TRdgc]`~Z>JYmYJ]|`!ZKZ]gUcx|^E[rZCd`f9oQ[NcD_$ZlZ;Zr}mX|=!|$6ZPZYtIo%fj}CpcN|B,{VDw~gb}@hZg`Q{LcmA[(bo`<|@$|o1|Ss}9Z_}tC|G`{F/|9nd}i=}V-{L8aaeST]daRbujh^xlpq8|}zs4bj[S`J|]?G{P#{rD{]I`OlH{Hm]VYuSYUbRc*6[j`8]pZ[bt_/^Jc*[<Z?YE|Xb|?_Z^Vcas]h{t9|Uwd)_(=0^6Zb{Nc} E[qZAeX[a]P^|_J>e8`W^j_Y}R{{Jp__]Ee#e:iWb9q_wKbujrbR}CY`,{mJ}gz{Q^{t~N|? gSga`V_||:#mi}3t|/I`X{N*|ct|2g{km}gi|{={jC}F;|E}{ZZjYf*frmu}8Tdroi{T[|+~}HG{cJ}DM{Lp{Ctd&}$hi3|FZ| m}Kr|38}^c|m_|Tr{Qv|36}?Up>|;S{DV{k_as}BK{P}}9p|t`jR{sAm4{D=b4pWa[}Xi{EjwEkI}3S|E?u=X0{jf} S|NM|JC{qo^3cm]-|JUx/{Cj{s>{Crt[UXuv|D~|j|d{YXZR}Aq}0r}(_{pJfi_z}0b|-vi)Z mFe,{f4|q`b{}^Z{HM{rbeHZ|^x_o|XM|L%|uFXm}@C_{{Hhp%a7|0p[Xp+^K}9U{bP}: tT}B|}+$|b2|[^|~h{FAby[`{}xgygrt~h1[li`c4vz|,7p~b(|mviN}^pg[{N/|g3|^0c,gE|f%|7N{q[|tc|TKA{LU}I@|AZp(}G-sz{F |qZ{}F|f-}RGn6{Z]_5})B}UJ{FFb2]4ZI@v=k,]t_Dg5Bj]Z-]L]vrpdvdGlk|gF}G]|IW}Y0[G| /bo|Te^,_B}#n^^{QHYI[?hxg{[`]D^IYRYTb&kJ[cri[g_9]Ud~^_]<p@_e_XdNm-^/|5)|h_{J;{kacVopf!q;asqd}n)|.m|bf{QW|U)}b+{tL|w``N|to{t ZO|T]jF}CB|0Q{e5Zw|k |We}5:{HO{tPwf_uajjBfX}-V_C_{{r~gg|Ude;s+}KNXH}! `K}eW{Upwbk%ogaW}9EYN}YY|&v|SL{C3[5s.]Y]I]u{M6{pYZ`^,`ZbCYR[1mNg>rsk0Ym[jrE]RYiZTr*YJ{Ge|%-lf|y(`=[t}E6{k!|3)}Zk} ][G{E~cF{u3U.rJ|a9p#o#ZE|?|{sYc#vv{E=|LC}cu{N8`/`3`9rt[4|He{cq|iSYxY`}V |(Q|t4{C?]k_Vlvk)BZ^r<{CL}#h}R+[<|i=}X|{KAo]|W<`K{NW|Zx}#;|fe{IMr<|K~tJ_x}AyLZ?{GvbLnRgN}X&{H7|x~}Jm{]-| GpNu0}.ok>|c4{PYisrDZ|fwh9|hfo@{H~XSbO]Odv]%`N]b1Y]]|eIZ}_-ZA]aj,>eFn+j[aQ_+]h[J_m_g]%_wf.`%k1e#Z?{CvYu_B^|gk`Xfh^M3`afGZ-Z|[m{L}|k3cp[it ^>YUi~d>{T*}YJ{Q5{Jxa$hg|%4`}|LAgvb }G}{P=|<;Ux{_skR{cV|-*|s-{Mp|XP|$G|_J}c6cM{_=_D|*9^$ec{V;|4S{qO|w_|.7}d0|/D}e}|0G{Dq]Kdp{}dfDi>}B%{Gd|nl}lf{C-{y}|ANZr}#={T~|-(}c&{pI|ft{lsVP}){|@u}!W|bcmB{d?|iW|:dxj{PSkO|Hl]Li:}VYk@|2={fnWt{M3`cZ6|)}|Xj}BYa?vo{e4|L7|B7{L7|1W|lvYO}W8nJ|$Vih|{T{d*_1|:-n2dblk``fT{Ky|-%}m!|Xy|-a{Pz}[l{kFjz|iH}9N{WE{x,|jz}R {P|{D)c=nX|Kq|si}Ge{sh|[X{RF{t`|jsr*fYf,rK|/9}$}}Nf{y!1|<Std}4Wez{W${Fd_/^O[ooqaw_z[L`Nbv[;l7V[ii3_PeM}.h^viqYjZ*j1}+3{bt{DR[;UG}3Og,rS{JO{qw{d<_zbAh<R[1_r`iZTbv^^a}c{iEgQZ<exZFg.^Rb+`Uj{a+{z<[~r!]`[[|rZYR|?F|qppp]L|-d|}K}YZUM|=Y|ktm*}F]{D;g{uI|7kg^}%?Z%ca{N[_<q4xC]i|PqZC]n}.bDrnh0Wq{tr|OMn6tM|!6|T`{O`|>!]ji+]_bTeU}Tq|ds}n|{Gm{z,f)}&s{DPYJ`%{CGd5v4tvb*hUh~bf]z`jajiFqAii]bfy^U{Or|m+{I)cS|.9k:e3`^|xN}@Dnlis`B|Qo{`W|>||kA}Y}{ERYuYx`%[exd`]|OyiHtb}HofUYbFo![5|+]gD{NIZR|Go}.T{rh^4]S|C9_}xO^i`vfQ}C)bK{TL}cQ|79iu}9a];sj{P.o!f[Y]pM``Jda^Wc9ZarteBZClxtM{LW}l9|a.mU}KX}4@{I+f1}37|8u}9c|v${xGlz}jP{Dd1}e:}31}%3X$|22i<v+r@~mf{sN{C67G97855F4YL5}8f{DT|xy{sO{DXB334@55J1)4.G9A#JDYtXTYM4, YQD9;XbXm9SX]IB^4UN=Xn<5(;(F3YW@XkH-X_VM[DYM:5XP!T&Y`6|,^{IS-*D.H>:LXjYQ0I3XhAF:9:(==.F*3F1189K/7163D,:@|e2{LS36D4hq{Lw/84443@4.933:0307::6D7}&l{Mx657;89;,K5678H&93D(H<&<>0B90X^I;}Ag1{P%3A+>><975}[S{PZE453?4|T2{Q+5187;>447:81{C=hL6{Me^:=7ii{R=.=F<81;48?|h8}Uh{SE|,VxL{ST,7?9Y_5Xk3A#:$%YSYdXeKXOD8+TXh7(@>(YdXYHXl9J6X_5IXaL0N?3YK7Xh!1?XgYz9YEXhXaYPXhC3X`-YLY_XfVf[EGXZ5L8BXL9YHX]SYTXjLXdJ: YcXbQXg1PX]Yx4|Jr{Ys4.8YU+XIY`0N,<H%-H;:0@,74/:8546I=9177154870UC]d<C3HXl7ALYzXFXWP<<?E!88E5@03YYXJ?YJ@6YxX-YdXhYG|9o{`iXjY_>YVXe>AYFX[/(I@0841?):-B=14337:8=|14{c&93788|di{cW-0>0<097/A;N{FqYpugAFT%X/Yo3Yn,#=XlCYHYNX[Xk3YN:YRT4?)-YH%A5XlYF3C1=NWyY}>:74-C673<69545v {iT85YED=64=.F4..9878/D4378?48B3:7:7/1VX[f4{D,{l<5E75{dAbRB-8-@+;DBF/$ZfW8S<4YhXA.(5@*11YV8./S95C/0R-A4AXQYI7?68167B95HA1*<M3?1/@;/=54XbYP36}lc{qzSS38:19?,/39193574/66878Yw1X-87E6=;964X`T734:>86>1/=0;(I-1::7ALYGXhF+Xk[@W%TYbX7)KXdYEXi,H-XhYMRXfYK?XgXj.9HX_SX]YL1XmYJ>Y}WwIXiI-3-GXcYyXUYJ$X`Vs[7;XnYEZ;XF! 3;%8;PXX(N3Y[)Xi1YE&/ :;74YQ6X`33C;-(>Xm0(TYF/!YGXg8 9L5P01YPXO-5%C|qd{{/K/E6,=0144:361:955;6443@?B7*7:F89&F35YaX-CYf,XiFYRXE_e{}sF 0*7XRYPYfXa5YXXY8Xf8Y~XmA[9VjYj*#YMXIYOXk,HHX40YxYMXU8OXe;YFXLYuPXP?EB[QV0CXfY{:9XV[FWE0D6X^YVP*$4%OXiYQ(|xp|%c3{}V`1>Y`XH00:8/M6XhQ1:;3414|TE|&o@1*=81G8<3}6<|(f6>>>5-5:8;093B^3U*+*^*UT30XgYU&7*O1953)5@E78--F7YF*B&0:%P68W9Zn5974J9::3}Vk|-,C)=)1AJ4+<3YGXfY[XQXmT1M-XcYTYZXCYZXEYXXMYN,17>XIG*SaS|/eYJXbI?XdNZ+WRYP<F:R PXf;0Xg`$|1GX9YdXjLYxWX!ZIXGYaXNYm6X9YMX?9EXmZ&XZ#XQ>YeXRXfAY[4 ;0X!Zz0XdN$XhYL XIY^XGNXUYS/1YFXhYk.TXn4DXjB{jg|4DEX]:XcZMW=A.+QYL<LKXc[vV$+&PX*Z3XMYIXUQ:ZvW< YSXFZ,XBYeXMM)?Xa XiZ4/EXcP3%}&-|6~:1(-+YT$@XIYRBC<}&,|7aJ6}bp|8)K1|Xg|8C}[T|8Q.89;-964I38361<=/;883651467<7:>?1:.}le|:Z=39;1Y^)?:J=?XfLXbXi=Q0YVYOXaXiLXmJXO5?.SFXiCYW}-;|=u&D-X`N0X^,YzYRXO(QX_YW9`I|>hZ:N&X)DQXP@YH#XmNXi$YWX^=!G6YbYdX>XjY|XlX^XdYkX>YnXUXPYF)FXT[EVTMYmYJXmYSXmNXi#GXmT3X8HOX[ZiXN]IU2>8YdX1YbX<YfWuZ8XSXcZU%0;1XnXkZ_WTG,XZYX5YSX Yp 05G?XcYW(IXg6K/XlYP4XnI @XnO1W4Zp-9C@%QDYX+OYeX9>--YSXkD.YR%Q/Yo YUX].Xi<HYEZ2WdCE6YMXa7F)=,D>-@9/8@5=?7164;35387?N<618=6>7D+C50<6B03J0{Hj|N9$D,9I-,.KB3}m |NzE0::/81YqXjMXl7YG; [.W=Z0X4XQY]:MXiR,XgM?9$9>:?E;YE77VS[Y564760391?14941:0=:8B:;/1DXjFA-564=0B3XlH1+D85:0Q!B#:-6&N/:9<-R3/7Xn<*3J4.H:+334B.=>30H.;3833/76464665755:/83H6633:=;.>5645}&E|Y)?1/YG-,93&N3AE@5 <L1-G/8A0D858/30>8<549=@B8] V0[uVQYlXeD(P#ID&7T&7;Xi0;7T-$YE)E=1:E1GR):--0YI7=E<}n9|aT6783A>D7&4YG7=391W;Zx<5+>F#J39}o/|cc;6=A050EQXg8A1-}D-|d^5548083563695D?-.YOXd37I$@LYLWeYlX<Yd+YR A$;3-4YQ-9XmA0!9/XLY_YT(=5XdDI>YJ5XP1ZAW{9>X_6R(XhYO65&J%DA)C-!B:97#A9;@?F;&;(9=11/=657/H,<8}bz|j^5446>.L+&Y^8Xb6?(CYOXb*YF(8X`FYR(XPYVXmPQ%&DD(XmZXW??YOXZXfCYJ79,O)XnYF7K0!QXmXi4IYFRXS,6<%-:YO(+:-3Q!1E1:W,Zo}Am|n~;3580534*?3Zc4=9334361693:30C<6/717:<1/;>59&:4}6!|rS36=1?75<8}[B|s809983579I.A.>84758=108564741H*9E{L{|u%YQ<%6XfH.YUXe4YL@,>N}Tv|ve*G0X)Z;/)3@A74(4P&A1X:YVH97;,754*A66:1 D739E3553545558E4?-?K17/770843XAYf838A7K%N!YW4.$T19Z`WJ*0XdYJXTYOXNZ 1XaN1A+I&Xi.Xk3Z3GB&5%WhZ1+5#Y[X<4YMXhQYoQXVXbYQ8XSYUX4YXBXWDMG0WxZA[8V+Z8X;D],Va$%YeX?FXfX[XeYf<X:Z[WsYz8X_Y]%XmQ(!7BXIZFX]&YE3F$(1XgYgYE& +[+W!<YMYFXc;+PXCYI9YrWxGXY9DY[!GXiI7::)OC;*$.>N*HA@{C|}&k=:<TB83X`3YL+G4XiK]i}(fYK<=5$.FYE%4*5*H*6XkCYL=*6Xi6!Yi1KXR4YHXbC8Xj,B9ZbWx/XbYON#5B}Ue}+QKXnF1&YV5XmYQ0!*3IXBYb71?1B75XmF;0B976;H/RXU:YZX;BG-NXj;XjI>A#D3B636N;,*%<D:0;YRXY973H5)-4FXOYf0:0;/7759774;7;:/855:543L43<?6=E,.A4:C=L)%4YV!1(YE/4YF+ F3%;S;&JC:%/?YEXJ4GXf/YS-EXEYW,9;E}X$}547EXiK=51-?71C%?57;5>463553Zg90;6447?<>4:9.7538XgN{|!}9K/E&3-:D+YE1)YE/3;37/:05}n<}:UX8Yj4Yt864@JYK..G=.(A Q3%6K>3(P3#AYE$-6H/456*C=.XHY[#S.<780191;057C)=6HXj?955B:K1 E>-B/9,;5.!L?:0>/.@//:;7833YZ56<4:YE=/:7Z_WGC%3I6>XkC*&NA16X=Yz2$X:Y^&J48<99k8}CyB-61<18K946YO4{|N}E)YIB9K0L>4=46<1K0+R;6-=1883:478;4,S+3YJX`GJXh.Yp+Xm6MXcYpX(>7Yo,/:X=Z;Xi0YTYHXjYmXiXj;*;I-8S6N#XgY}.3XfYGO3C/$XjL$*NYX,1 6;YH&<XkK9C#I74.>}Hd`A748X[T450[n75<4439:18A107>|ET}Rf<1;14876/Yb983E<5.YNXd4149>,S=/4E/<306443G/06}0&}UkYSXFYF=44=-5095=88;63844,9E6644{PL}WA8:>)7+>763>>0/B3A545CCnT}Xm|dv}Xq1L/YNXk/H8;;.R63351YY747@15YE4J8;46;.38.>4A369.=-83,;Ye3?:3@YE.4-+N353;/;@(X[YYD>@/05-I*@.:551741Yf5>6A443<3535;.58/86=D4753442$635D1>0359NQ @73:3:>><Xn?;43C14 ?Y|X611YG1&<+,4<*,YLXl<1/AIXjF*N89A4Z576K1XbJ5YF.ZOWN.YGXO/YQ01:4G38Xl1;KI0YFXB=R<7;D/,/4>;$I,YGXm94@O35Yz66695385.>:6A#5}W7n^4336:4157597434433<3|XA}m`>=D>:4A.337370?-6Q96{`E|4A}C`|Qs{Mk|J+~r>|o,wHv>Vw}!c{H!|Gb|*Ca5}J||,U{t+{CN[!M65YXOY_*B,Y[Z9XaX[QYJYLXPYuZ%XcZ8LY[SYPYKZM<LMYG9OYqSQYM~[e{UJXmQYyZM_)>YjN1~[f3{aXFY|Yk:48YdH^NZ0|T){jVFYTZNFY^YTYN~[h{nPYMYn3I]`EYUYsYIZEYJ7Yw)YnXPQYH+Z.ZAZY]^Z1Y`YSZFZyGYHXLYG 8Yd#4~[i|+)YH9D?Y^F~Y7|-eYxZ^WHYdYfZQ~[j|3>~[k|3oYmYqY^XYYO=Z*4[]Z/OYLXhZ1YLZIXgYIHYEYK,<Y`YEXIGZI[3YOYcB4SZ!YHZ*&Y{Xi3~[l|JSY`Zz?Z,~[m|O=Yi>??XnYWXmYS617YVYIHZ(Z4[~L4/=~[n|Yu{P)|];YOHHZ}~[o33|a>~[r|aE]DH~[s|e$Zz~[t|kZFY~XhYXZB[`Y}~[u|{SZ&OYkYQYuZ2Zf8D~[v}% ~[w3},Q[X]+YGYeYPIS~[y}4aZ!YN^!6PZ*~[z}?E~[{3}CnZ=~[}}EdDZz/9A3(3S<,YR8.D=*XgYPYcXN3Z5 4)~[~}JW=$Yu.XX~] }KDX`PXdZ4XfYpTJLY[F5]X~[2Yp}U+DZJ::<446[m@~]#3}]1~]%}^LZwZQ5Z`/OT<Yh^ -~]&}jx[ ~m<z!%2+~ly4VY-~o>}p62yz!%2+Xf2+~ly4VY-zQ`z (=] 2z~o2",C={" ":0,"!":1},c=34,i=2,p,s="",u=String.fromCharCode,t=u(12539);while(++c<127)C[u(c)]=c^39&&c^92?i++:0;i=0;while(0<=(c=C[a.charAt(i++)]))if(16==c)if((c=C[a.charAt(i++)])<87){if(86==c)c=1879;while(c--)s+=u(++p)}else s+=s.substr(8272,360);else if(c<86)s+=u(p+=c<51?c-16:(c-55)*92+C[a.charAt(i++)]);else if((c=((c-86)*92+C[a.charAt(i++)])*92+C[a.charAt(i++)])<49152)s+=u(p=c<40960?c:c|57344);else{c&=511;while(c--)s+=t;p=12539}return s')();221 222 JCT8836=JCT11280.substring(0,8836);223 224 firemobilesimulator.common.ecl.JCT11280=Function('var a="zKV33~jZ4zN=~ji36XazM93y!{~k2y!o~k0ZlW6zN?3Wz3W?{EKzK[33[`y|;-~j^YOTz$!~kNy|L1$353~jV3zKk3~k-4P4zK_2+~jY4y!xYHR~jlz$_~jk4z$e3X5He<0y!wy|X3[:~l|VU[F3VZ056Hy!nz/m1XD61+1XY1E1=1y|bzKiz!H034zKj~mEz#c5ZA3-3X$1~mBz$$3~lyz#,4YN5~mEz#{ZKZ3V%7Y}!J3X-YEX_J(3~mAz =V;kE0/y|F3y!}~m>z/U~mI~j_2+~mA~jp2;~m@~k32;~m>V}2u~mEX#2x~mBy+x2242(~mBy,;2242(~may->2&XkG2;~mIy-_2&NXd2;~mGz,{4<6:.:B*B:XC4>6:.>B*BBXSA+A:X]E&E<~r#z+625z s2+zN=`HXI@YMXIAXZYUM8X4K/:Q!Z&33 3YWX[~mB`{zKt4z (zV/z 3zRw2%Wd39]S11z$PAXH5Xb;ZQWU1ZgWP%3~o@{Dgl#gd}T){Uo{y5_d{e@}C(} WU9|cB{w}bzvV|)[} H|zT}d||0~{]Q|(l{|x{iv{dw}(5}[Z|kuZ }cq{{y|ij}.I{idbof%cu^d}Rj^y|-M{ESYGYfYsZslS`?ZdYO__gLYRZ&fvb4oKfhSf^d<Yeasc1f&a=hnYG{QY{D`Bsa|u,}Dl|_Q{C%xK|Aq}C>|c#ryW=}eY{L+`)][YF_Ub^h4}[X|?r|u_ex}TL@YR]j{SrXgo*|Gv|rK}B#mu{R1}hs|dP{C7|^Qt3|@P{YVV |8&}#D}ef{e/{Rl|>Hni}R1{Z#{D[}CQlQ||E}[s{SG_+i8eplY[=[|ec[$YXn#`hcm}YR|{Ci(_[ql|?8p3]-}^t{wy}4la&pc|3e{Rp{LqiJ],] `kc(]@chYnrM`O^,ZLYhZB]ywyfGY~aex!_Qww{a!|)*lHrM{N+n&YYj~Z b c#e_[hZSon|rOt`}hBXa^i{lh|<0||r{KJ{kni)|x,|0auY{D!^Sce{w;|@S|cA}Xn{C1h${E]Z-XgZ*XPbp]^_qbH^e[`YM|a||+=]!Lc}]vdBc=j-YSZD]YmyYLYKZ9Z>Xcczc2{Yh}9Fc#Z.l{}(D{G{{mRhC|L3b#|xK[Bepj#ut`H[,{E9Yr}1b{[e]{ZFk7[ZYbZ0XL]}Ye[(`d}c!|*y`Dg=b;gR]Hm=hJho}R-[n}9;{N![7k_{UbmN]rf#pTe[x8}!Qcs_rs[m`|>N}^V})7{^r|/E}),}HH{OYe2{Skx)e<_.cj.cjoMhc^d}0uYZd!^J_@g,[[[?{i@][|3S}Yl3|!1|eZ|5IYw|1D}e7|Cv{OHbnx-`wvb[6[4} =g+k:{C:}ed{S]|2M]-}WZ|/q{LF|dYu^}Gs^c{Z=}h>|/i|{W]:|ip{N:|zt|S<{DH[p_tvD{N<[8Axo{X4a.^o^X>Yfa59`#ZBYgY~_t^9`jZHZn`>G[oajZ;X,i)Z.^~YJe ZiZF^{][[#Zt^|]Fjx]&_5dddW]P0C[-]}]d|y {C_jUql] |OpaA[Z{lp|rz}:Mu#]_Yf6{Ep?f5`$[6^D][^u[$[6^.Z8]]ePc2U/=]K^_+^M{q*|9tYuZ,s(dS{i=|bNbB{uG}0jZOa:[-]dYtu3]:]<{DJ_SZIqr_`l=Yt`gkTnXb3d@kiq0a`Z{|!B|}e}Ww{Sp,^Z|0>_Z}36|]A|-t}lt{R6pi|v8hPu#{C>YOZHYmg/Z4nicK[}hF_Bg|YRZ7c|crkzYZY}_iXcZ.|)U|L5{R~qi^Uga@Y[xb}&qdbd6h5|Btw[}c<{Ds53[Y7]?Z<|e0{L[ZK]mXKZ#Z2^tavf0`PE[OSOaP`4gi`qjdYMgys/?[nc,}EEb,eL]g[n{E_b/vcvgb.{kcwi`~v%|0:|iK{Jh_vf5lb}KL|(oi=LrzhhY_^@`zgf[~g)[J_0fk_V{T)}I_{D&_/d9W/|MU[)f$xW}?$xr4<{Lb{y4}&u{XJ|cm{Iu{jQ}CMkD{CX|7A}G~{kt)nB|d5|<-}WJ}@||d@|Iy}Ts|iL|/^|no|0;}L6{Pm]7}$zf:|r2}?C_k{R(}-w|`G{Gy[g]bVje=_0|PT{^Y^yjtT[[[l!Ye_`ZN]@[n_)j3nEgMa]YtYpZy].d-Y_cjb~Y~[nc~sCi3|zg}B0}do{O^{|$`_|D{}U&|0+{J3|8*]iayx{a{xJ_9|,c{Ee]QXlYb]$[%YMc*]w[aafe]aVYi[fZEii[xq2YQZHg]Y~h#|Y:thre^@^|_F^CbTbG_1^qf7{L-`VFx Zr|@EZ;gkZ@slgko`[e}T:{Cu^pddZ_`yav^Ea+[#ZBbSbO`elQfLui}.F|txYcbQ`XehcGe~fc^RlV{D_0ZAej[l&jShxG[ipB_=u:eU}3e8[=j|{D(}dO{Do[BYUZ0/]AYE]ALYhZcYlYP/^-^{Yt_1_-;YT`P4BZG=IOZ&]H[e]YYd[9^F[1YdZxZ?Z{Z<]Ba2[5Yb[0Z4l?]d_;_)a?YGEYiYv`_XmZs4ZjY^Zb]6gqGaX^9Y}dXZr[g|]Y}K aFZp^k^F]M`^{O1Ys]ZCgCv4|E>}8eb7}l`{L5[Z_faQ|c2}Fj}hw^#|Ng|B||w2|Sh{v+[G}aB|MY}A{|8o}X~{E8paZ:]i^Njq]new)`-Z>haounWhN}c#{DfZ|fK]KqGZ=:u|fqoqcv}2ssm}.r{]{nIfV{JW)[K|,Z{Uxc|]l_KdCb%]cfobya3`p}G^|LZiSC]U|(X|kBlVg[kNo({O:g:|-N|qT}9?{MBiL}Sq{`P|3a|u.{Uaq:{_o|^S}jX{Fob0`;|#y_@[V[K|cw[<_ }KU|0F}d3|et{Q7{LuZttsmf^kYZ`Af`}$x}U`|Ww}d]| >}K,r&|XI|*e{C/a-bmr1fId4[;b>tQ_:]hk{b-pMge]gfpo.|(w[jgV{EC1Z,YhaY^q,_G[c_g[J0YX]`[h^hYK^_Yib,` {i6vf@YM^hdOKZZn(jgZ>bzSDc^Z%[[o9[2=/YHZ(_/Gu_`*|8z{DUZxYt^vuvZjhi^lc&gUd4|<UiA`z]$b/Z?l}YI^jaHxe|;F}l${sQ}5g}hA|e4}?o{ih}Uz{C)jPe4]H^J[Eg[|AMZMlc}:,{iz}#*|gc{Iq|/:|zK{l&}#u|myd{{M&v~nV};L|(g|I]ogddb0xsd7^V})$uQ{HzazsgxtsO^l}F>ZB]r|{7{j@cU^{{CbiYoHlng]f+nQ[bkTn/}<-d9q {KXadZYo+n|l[|lc}V2{[a{S4Zam~Za^`{HH{xx_SvF|ak=c^[v^7_rYT`ld@]:_ub%[$[m](Shu}G2{E.ZU_L_R{tz`vj(f?^}hswz}GdZ}{S:h`aD|?W|`dgG|if{a8|J1{N,}-Ao3{H#{mfsP|[ bzn+}_Q{MT{u4kHcj_q`eZj[8o0jy{p7}C|[}l){MuYY{|Ff!Ykn3{rT|m,^R|,R}$~Ykgx{P!]>iXh6[l[/}Jgcg{JYZ.^qYfYIZl[gZ#Xj[Pc7YyZD^+Yt;4;`e8YyZVbQ7YzZxXja.7SYl[s]2^/Ha$[6ZGYrb%XiYdf2]H]kZkZ*ZQ[ZYS^HZXcCc%Z|[(bVZ]]:OJQ_DZCg<[,]%Zaa [g{C00HY[c%[ChyZ,Z_`PbXa+eh`^&jPi0a[ggvhlekL]w{Yp^v}[e{~;k%a&k^|nR_z_Qng}[E}*Wq:{k^{FJZpXRhmh3^p>de^=_7`|ZbaAZtdhZ?n4ZL]u`9ZNc3g%[6b=e.ZVfC[ZZ^^^hD{E(9c(kyZ=bb|Sq{k`|vmr>izlH[u|e`}49}Y%}FT{[z{Rk}Bz{TCc/lMiAqkf(m$hDc;qooi[}^o:c^|Qm}a_{mrZ(pA`,}<2sY| adf_%|}`}Y5U;}/4|D>|$X{jw{C<|F.hK|*A{MRZ8Zsm?imZm_?brYWZrYx`yVZc3a@f?aK^ojEd {bN}/3ZH]/$YZhm^&j 9|(S|b]mF}UI{q&aM]LcrZ5^.|[j`T_V_Gak}9J[ ZCZD|^h{N9{~&[6Zd{}B}2O|cv]K}3s}Uy|l,fihW{EG`j_QOp~Z$F^zexS`dcISfhZBXP|.vn|_HYQ|)9|cr]<`&Z6]m_(ZhPcSg>`Z]5`~1`0Xcb4k1{O!bz|CN_T{LR|a/gFcD|j<{Z._[f)mPc:1`WtIaT1cgYkZOaVZOYFrEe[}T$}Ch}mk{K-^@]fH{Hdi`c*Z&|Kt{if[C{Q;{xYB`dYIX:ZB[}]*[{{p9|4GYRh2ao{DS|V+[zd$`F[ZXKadb*A] Ys]Maif~a/Z2bmclb8{Jro_rz|x9cHojbZ{GzZx_)]:{wAayeDlx}<=`g{H1{l#}9i|)=|lP{Qq}.({La|!Y{i2EZfp=c*}Cc{EDvVB|;g}2t{W4av^Bn=]ri,|y?|3+}T*ckZ*{Ffr5e%|sB{lx^0]eZb]9[SgAjS_D|uHZx]dive[c.YPkcq/}db{EQh&hQ|eg}G!ljil|BO]X{Qr_GkGl~YiYWu=c3eb}29v3|D|}4i||.{Mv})V{SP1{FX}CZW6{cm|vO{pS|e#}A~|1i}81|Mw}es|5[}3w{C`h9aL]o{}p[G`>i%a1Z@`Ln2bD[$_h`}ZOjhdTrH{[j_:k~kv[Sdu]CtL}41{I |[[{]Zp$]XjxjHt_eThoa#h>sSt8|gK|TVi[Y{t=}Bs|b7Zpr%{gt|Yo{CS[/{iteva|cf^hgn}($_c^wmb^Wm+|55jrbF|{9^ q6{C&c+ZKdJkq_xOYqZYSYXYl`8]-cxZAq/b%b*_Vsa[/Ybjac/OaGZ4fza|a)gY{P?| I|Y |,pi1n7}9bm9ad|=d{aV|2@[(}B`d&|Uz}B}{`q|/H|!JkM{FU|CB|.{}Az}#P|lk}K{|2rk7{^8^?`/|k>|Ka{Sq}Gz}io{DxZh[yK_#}9<{TRdgc]`~Z>JYmYJ]|`!ZKZ]gUcx|^E[rZCd`f9oQ[NcD_$ZlZ;Zr}mX|=!|$6ZPZYtIo%fj}CpcN|B,{VDw~gb}@hZg`Q{LcmA[(bo`<|@$|o1|Ss}9Z_}tC|G`{F/|9nd}i=}V-{L8aaeST]daRbujh^xlpq8|}zs4bj[S`J|]?G{P#{rD{]I`OlH{Hm]VYuSYUbRc*6[j`8]pZ[bt_/^Jc*[<Z?YE|Xb|?_Z^Vcas]h{t9|Uwd)_(=0^6Zb{Nc} E[qZAeX[a]P^|_J>e8`W^j_Y}R{{Jp__]Ee#e:iWb9q_wKbujrbR}CY`,{mJ}gz{Q^{t~N|? gSga`V_||:#mi}3t|/I`X{N*|ct|2g{km}gi|{={jC}F;|E}{ZZjYf*frmu}8Tdroi{T[|+~}HG{cJ}DM{Lp{Ctd&}$hi3|FZ| m}Kr|38}^c|m_|Tr{Qv|36}?Up>|;S{DV{k_as}BK{P}}9p|t`jR{sAm4{D=b4pWa[}Xi{EjwEkI}3S|E?u=X0{jf} S|NM|JC{qo^3cm]-|JUx/{Cj{s>{Crt[UXuv|D~|j|d{YXZR}Aq}0r}(_{pJfi_z}0b|-vi)Z mFe,{f4|q`b{}^Z{HM{rbeHZ|^x_o|XM|L%|uFXm}@C_{{Hhp%a7|0p[Xp+^K}9U{bP}: tT}B|}+$|b2|[^|~h{FAby[`{}xgygrt~h1[li`c4vz|,7p~b(|mviN}^pg[{N/|g3|^0c,gE|f%|7N{q[|tc|TKA{LU}I@|AZp(}G-sz{F |qZ{}F|f-}RGn6{Z]_5})B}UJ{FFb2]4ZI@v=k,]t_Dg5Bj]Z-]L]vrpdvdGlk|gF}G]|IW}Y0[G| /bo|Te^,_B}#n^^{QHYI[?hxg{[`]D^IYRYTb&kJ[cri[g_9]Ud~^_]<p@_e_XdNm-^/|5)|h_{J;{kacVopf!q;asqd}n)|.m|bf{QW|U)}b+{tL|w``N|to{t ZO|T]jF}CB|0Q{e5Zw|k |We}5:{HO{tPwf_uajjBfX}-V_C_{{r~gg|Ude;s+}KNXH}! `K}eW{Upwbk%ogaW}9EYN}YY|&v|SL{C3[5s.]Y]I]u{M6{pYZ`^,`ZbCYR[1mNg>rsk0Ym[jrE]RYiZTr*YJ{Ge|%-lf|y(`=[t}E6{k!|3)}Zk} ][G{E~cF{u3U.rJ|a9p#o#ZE|?|{sYc#vv{E=|LC}cu{N8`/`3`9rt[4|He{cq|iSYxY`}V |(Q|t4{C?]k_Vlvk)BZ^r<{CL}#h}R+[<|i=}X|{KAo]|W<`K{NW|Zx}#;|fe{IMr<|K~tJ_x}AyLZ?{GvbLnRgN}X&{H7|x~}Jm{]-| GpNu0}.ok>|c4{PYisrDZ|fwh9|hfo@{H~XSbO]Odv]%`N]b1Y]]|eIZ}_-ZA]aj,>eFn+j[aQ_+]h[J_m_g]%_wf.`%k1e#Z?{CvYu_B^|gk`Xfh^M3`afGZ-Z|[m{L}|k3cp[it ^>YUi~d>{T*}YJ{Q5{Jxa$hg|%4`}|LAgvb }G}{P=|<;Ux{_skR{cV|-*|s-{Mp|XP|$G|_J}c6cM{_=_D|*9^$ec{V;|4S{qO|w_|.7}d0|/D}e}|0G{Dq]Kdp{}dfDi>}B%{Gd|nl}lf{C-{y}|ANZr}#={T~|-(}c&{pI|ft{lsVP}){|@u}!W|bcmB{d?|iW|:dxj{PSkO|Hl]Li:}VYk@|2={fnWt{M3`cZ6|)}|Xj}BYa?vo{e4|L7|B7{L7|1W|lvYO}W8nJ|$Vih|{T{d*_1|:-n2dblk``fT{Ky|-%}m!|Xy|-a{Pz}[l{kFjz|iH}9N{WE{x,|jz}R {P|{D)c=nX|Kq|si}Ge{sh|[X{RF{t`|jsr*fYf,rK|/9}$}}Nf{y!1|<Std}4Wez{W${Fd_/^O[ooqaw_z[L`Nbv[;l7V[ii3_PeM}.h^viqYjZ*j1}+3{bt{DR[;UG}3Og,rS{JO{qw{d<_zbAh<R[1_r`iZTbv^^a}c{iEgQZ<exZFg.^Rb+`Uj{a+{z<[~r!]`[[|rZYR|?F|qppp]L|-d|}K}YZUM|=Y|ktm*}F]{D;g{uI|7kg^}%?Z%ca{N[_<q4xC]i|PqZC]n}.bDrnh0Wq{tr|OMn6tM|!6|T`{O`|>!]ji+]_bTeU}Tq|ds}n|{Gm{z,f)}&s{DPYJ`%{CGd5v4tvb*hUh~bf]z`jajiFqAii]bfy^U{Or|m+{I)cS|.9k:e3`^|xN}@Dnlis`B|Qo{`W|>||kA}Y}{ERYuYx`%[exd`]|OyiHtb}HofUYbFo![5|+]gD{NIZR|Go}.T{rh^4]S|C9_}xO^i`vfQ}C)bK{TL}cQ|79iu}9a];sj{P.o!f[Y]pM``Jda^Wc9ZarteBZClxtM{LW}l9|a.mU}KX}4@{I+f1}37|8u}9c|v${xGlz}jP{Dd1}e:}31}%3X$|22i<v+r@~mf{sN{C67G97855F4YL5}8f{DT|xy{sO{DXB334@55J1)4.G9A#JDYtXTYM4, YQD9;XbXm9SX]IB^4UN=Xn<5(;(F3YW@XkH-X_VM[DYM:5XP!T&Y`6|,^{IS-*D.H>:LXjYQ0I3XhAF:9:(==.F*3F1189K/7163D,:@|e2{LS36D4hq{Lw/84443@4.933:0307::6D7}&l{Mx657;89;,K5678H&93D(H<&<>0B90X^I;}Ag1{P%3A+>><975}[S{PZE453?4|T2{Q+5187;>447:81{C=hL6{Me^:=7ii{R=.=F<81;48?|h8}Uh{SE|,VxL{ST,7?9Y_5Xk3A#:$%YSYdXeKXOD8+TXh7(@>(YdXYHXl9J6X_5IXaL0N?3YK7Xh!1?XgYz9YEXhXaYPXhC3X`-YLY_XfVf[EGXZ5L8BXL9YHX]SYTXjLXdJ: YcXbQXg1PX]Yx4|Jr{Ys4.8YU+XIY`0N,<H%-H;:0@,74/:8546I=9177154870UC]d<C3HXl7ALYzXFXWP<<?E!88E5@03YYXJ?YJ@6YxX-YdXhYG|9o{`iXjY_>YVXe>AYFX[/(I@0841?):-B=14337:8=|14{c&93788|di{cW-0>0<097/A;N{FqYpugAFT%X/Yo3Yn,#=XlCYHYNX[Xk3YN:YRT4?)-YH%A5XlYF3C1=NWyY}>:74-C673<69545v {iT85YED=64=.F4..9878/D4378?48B3:7:7/1VX[f4{D,{l<5E75{dAbRB-8-@+;DBF/$ZfW8S<4YhXA.(5@*11YV8./S95C/0R-A4AXQYI7?68167B95HA1*<M3?1/@;/=54XbYP36}lc{qzSS38:19?,/39193574/66878Yw1X-87E6=;964X`T734:>86>1/=0;(I-1::7ALYGXhF+Xk[@W%TYbX7)KXdYEXi,H-XhYMRXfYK?XgXj.9HX_SX]YL1XmYJ>Y}WwIXiI-3-GXcYyXUYJ$X`Vs[7;XnYEZ;XF! 3;%8;PXX(N3Y[)Xi1YE&/ :;74YQ6X`33C;-(>Xm0(TYF/!YGXg8 9L5P01YPXO-5%C|qd{{/K/E6,=0144:361:955;6443@?B7*7:F89&F35YaX-CYf,XiFYRXE_e{}sF 0*7XRYPYfXa5YXXY8Xf8Y~XmA[9VjYj*#YMXIYOXk,HHX40YxYMXU8OXe;YFXLYuPXP?EB[QV0CXfY{:9XV[FWE0D6X^YVP*$4%OXiYQ(|xp|%c3{}V`1>Y`XH00:8/M6XhQ1:;3414|TE|&o@1*=81G8<3}6<|(f6>>>5-5:8;093B^3U*+*^*UT30XgYU&7*O1953)5@E78--F7YF*B&0:%P68W9Zn5974J9::3}Vk|-,C)=)1AJ4+<3YGXfY[XQXmT1M-XcYTYZXCYZXEYXXMYN,17>XIG*SaS|/eYJXbI?XdNZ+WRYP<F:R PXf;0Xg`$|1GX9YdXjLYxWX!ZIXGYaXNYm6X9YMX?9EXmZ&XZ#XQ>YeXRXfAY[4 ;0X!Zz0XdN$XhYL XIY^XGNXUYS/1YFXhYk.TXn4DXjB{jg|4DEX]:XcZMW=A.+QYL<LKXc[vV$+&PX*Z3XMYIXUQ:ZvW< YSXFZ,XBYeXMM)?Xa XiZ4/EXcP3%}&-|6~:1(-+YT$@XIYRBC<}&,|7aJ6}bp|8)K1|Xg|8C}[T|8Q.89;-964I38361<=/;883651467<7:>?1:.}le|:Z=39;1Y^)?:J=?XfLXbXi=Q0YVYOXaXiLXmJXO5?.SFXiCYW}-;|=u&D-X`N0X^,YzYRXO(QX_YW9`I|>hZ:N&X)DQXP@YH#XmNXi$YWX^=!G6YbYdX>XjY|XlX^XdYkX>YnXUXPYF)FXT[EVTMYmYJXmYSXmNXi#GXmT3X8HOX[ZiXN]IU2>8YdX1YbX<YfWuZ8XSXcZU%0;1XnXkZ_WTG,XZYX5YSX Yp 05G?XcYW(IXg6K/XlYP4XnI @XnO1W4Zp-9C@%QDYX+OYeX9>--YSXkD.YR%Q/Yo YUX].Xi<HYEZ2WdCE6YMXa7F)=,D>-@9/8@5=?7164;35387?N<618=6>7D+C50<6B03J0{Hj|N9$D,9I-,.KB3}m |NzE0::/81YqXjMXl7YG; [.W=Z0X4XQY]:MXiR,XgM?9$9>:?E;YE77VS[Y564760391?14941:0=:8B:;/1DXjFA-564=0B3XlH1+D85:0Q!B#:-6&N/:9<-R3/7Xn<*3J4.H:+334B.=>30H.;3833/76464665755:/83H6633:=;.>5645}&E|Y)?1/YG-,93&N3AE@5 <L1-G/8A0D858/30>8<549=@B8] V0[uVQYlXeD(P#ID&7T&7;Xi0;7T-$YE)E=1:E1GR):--0YI7=E<}n9|aT6783A>D7&4YG7=391W;Zx<5+>F#J39}o/|cc;6=A050EQXg8A1-}D-|d^5548083563695D?-.YOXd37I$@LYLWeYlX<Yd+YR A$;3-4YQ-9XmA0!9/XLY_YT(=5XdDI>YJ5XP1ZAW{9>X_6R(XhYO65&J%DA)C-!B:97#A9;@?F;&;(9=11/=657/H,<8}bz|j^5446>.L+&Y^8Xb6?(CYOXb*YF(8X`FYR(XPYVXmPQ%&DD(XmZXW??YOXZXfCYJ79,O)XnYF7K0!QXmXi4IYFRXS,6<%-:YO(+:-3Q!1E1:W,Zo}Am|n~;3580534*?3Zc4=9334361693:30C<6/717:<1/;>59&:4}6!|rS36=1?75<8}[B|s809983579I.A.>84758=108564741H*9E{L{|u%YQ<%6XfH.YUXe4YL@,>N}Tv|ve*G0X)Z;/)3@A74(4P&A1X:YVH97;,754*A66:1 D739E3553545558E4?-?K17/770843XAYf838A7K%N!YW4.$T19Z`WJ*0XdYJXTYOXNZ 1XaN1A+I&Xi.Xk3Z3GB&5%WhZ1+5#Y[X<4YMXhQYoQXVXbYQ8XSYUX4YXBXWDMG0WxZA[8V+Z8X;D],Va$%YeX?FXfX[XeYf<X:Z[WsYz8X_Y]%XmQ(!7BXIZFX]&YE3F$(1XgYgYE& +[+W!<YMYFXc;+PXCYI9YrWxGXY9DY[!GXiI7::)OC;*$.>N*HA@{C|}&k=:<TB83X`3YL+G4XiK]i}(fYK<=5$.FYE%4*5*H*6XkCYL=*6Xi6!Yi1KXR4YHXbC8Xj,B9ZbWx/XbYON#5B}Ue}+QKXnF1&YV5XmYQ0!*3IXBYb71?1B75XmF;0B976;H/RXU:YZX;BG-NXj;XjI>A#D3B636N;,*%<D:0;YRXY973H5)-4FXOYf0:0;/7759774;7;:/855:543L43<?6=E,.A4:C=L)%4YV!1(YE/4YF+ F3%;S;&JC:%/?YEXJ4GXf/YS-EXEYW,9;E}X$}547EXiK=51-?71C%?57;5>463553Zg90;6447?<>4:9.7538XgN{|!}9K/E&3-:D+YE1)YE/3;37/:05}n<}:UX8Yj4Yt864@JYK..G=.(A Q3%6K>3(P3#AYE$-6H/456*C=.XHY[#S.<780191;057C)=6HXj?955B:K1 E>-B/9,;5.!L?:0>/.@//:;7833YZ56<4:YE=/:7Z_WGC%3I6>XkC*&NA16X=Yz2$X:Y^&J48<99k8}CyB-61<18K946YO4{|N}E)YIB9K0L>4=46<1K0+R;6-=1883:478;4,S+3YJX`GJXh.Yp+Xm6MXcYpX(>7Yo,/:X=Z;Xi0YTYHXjYmXiXj;*;I-8S6N#XgY}.3XfYGO3C/$XjL$*NYX,1 6;YH&<XkK9C#I74.>}Hd`A748X[T450[n75<4439:18A107>|ET}Rf<1;14876/Yb983E<5.YNXd4149>,S=/4E/<306443G/06}0&}UkYSXFYF=44=-5095=88;63844,9E6644{PL}WA8:>)7+>763>>0/B3A545CCnT}Xm|dv}Xq1L/YNXk/H8;;.R63351YY747@15YE4J8;46;.38.>4A369.=-83,;Ye3?:3@YE.4-+N353;/;@(X[YYD>@/05-I*@.:551741Yf5>6A443<3535;.58/86=D4753442$635D1>0359NQ @73:3:>><Xn?;43C14 ?Y|X611YG1&<+,4<*,YLXl<1/AIXjF*N89A4Z576K1XbJ5YF.ZOWN.YGXO/YQ01:4G38Xl1;KI0YFXB=R<7;D/,/4>;$I,YGXm94@O35Yz66695385.>:6A#5}W7n^4336:4157597434433<3|XA}m`>=D>:4A.337370?-6Q96{`E|4A}C`|Qs{Mk|J+~r>|o,wHv>Vw}!c{H!|Gb|*Ca5}J||,U{t+{CN[!M65YXOY_*B,Y[Z9XaX[QYJYLXPYuZ%XcZ8LY[SYPYKZM<LMYG9OYqSQYM~[e{UJXmQYyZM_)>YjN1~[f3{aXFY|Yk:48YdH^NZ0|T){jVFYTZNFY^YTYN~[h{nPYMYn3I]`EYUYsYIZEYJ7Yw)YnXPQYH+Z.ZAZY]^Z1Y`YSZFZyGYHXLYG 8Yd#4~[i|+)YH9D?Y^F~Y7|-eYxZ^WHYdYfZQ~[j|3>~[k|3oYmYqY^XYYO=Z*4[]Z/OYLXhZ1YLZIXgYIHYEYK,<Y`YEXIGZI[3YOYcB4SZ!YHZ*&Y{Xi3~[l|JSY`Zz?Z,~[m|O=Yi>??XnYWXmYS617YVYIHZ(Z4[~L4/=~[n|Yu{P)|];YOHHZ}~[o33|a>~[r|aE]DH~[s|e$Zz~[t|kZFY~XhYXZB[`Y}~[u|{SZ&OYkYQYuZ2Zf8D~[v}% ~[w3},Q[X]+YGYeYPIS~[y}4aZ!YN^!6PZ*~[z}?E~[{3}CnZ=~[}}EdDZz/9A3(3S<,YR8.D=*XgYPYcXN3Z5 4)~[~}JW=$Yu.XX~] }KDX`PXdZ4XfYpTJLY[F5]X~[2Yp}U+DZJ::<446[m@~]#3}]1~]%}^LZwZQ5Z`/OT<Yh^ -~]&}jx[ ~m<z!%2+~ly4VY-~o>}p62yz!%2+Xf2+~ly4VY-zQ`z (=] 2z~o2",C={" ":0,"!":1},c=34,i=2,p,s="",u=String.fromCharCode,t=u(12539);while(++c<127)C[u(c)]=c^39&&c^92?i++:0;i=0;while(0<=(c=C[a.charAt(i++)]))if(16==c)if((c=C[a.charAt(i++)])<87){if(86==c)c=1879;while(c--)s+=u(++p)}else s+=s.substr(8272,360);else if(c<86)s+=u(p+=c<51?c-16:(c-55)*92+C[a.charAt(i++)]);else if((c=((c-86)*92+C[a.charAt(i++)])*92+C[a.charAt(i++)])<49152)s+=u(p=c<40960?c:c|57344);else{c&=511;while(c--)s+=t;p=12539}return s')(); 225 226 firemobilesimulator.common.ecl.JCT8836=firemobilesimulator.common.ecl.JCT11280.substring(0,8836); 227 -
platform/firefox/FireMobileSimulator/trunk/src/chrome/content/common/pref.js
r19719 r20267 1 /* ***** BEGIN LICENSE BLOCK Version: GPL 3.0 ***** 2 * FireMobileFimulator is a Firefox add-on that simulate web browsers of 3 * japanese mobile phones. 4 * Copyright (C) 2008 Takahiro Horikawa <horikawa.takahiro@gmail.com> 5 * 6 * This program is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation, either version 3 of the License, or 9 * (at your option) any later version. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program. If not, see <http://www.gnu.org/licenses/>. 18 * ***** END LICENSE BLOCK ***** */ 1 /******************************************************************************* 2 * ***** BEGIN LICENSE BLOCK Version: GPL 3.0 FireMobileFimulator is a Firefox 3 * add-on that simulate web browsers of japanese mobile phones. Copyright (C) 4 * 2008 Takahiro Horikawa <horikawa.takahiro@gmail.com> 5 * 6 * This program is free software: you can redistribute it and/or modify it under 7 * the terms of the GNU General Public License as published by the Free Software 8 * Foundation, either version 3 of the License, or (at your option) any later 9 * version. 10 * 11 * This program is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 13 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 14 * details. 15 * 16 * You should have received a copy of the GNU General Public License along with 17 * this program. If not, see <http://www.gnu.org/licenses/>. ***** END LICENSE 18 * BLOCK ***** 19 */ 19 20 20 var jsLoader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"].getService(Components.interfaces.mozIJSSubScriptLoader); 21 jsLoader.loadSubScript("chrome://global/content/nsUserSettings.js"); 21 var firemobilesimulator; 22 if(!firemobilesimulator) firemobilesimulator = {}; 23 if(!firemobilesimulator.common) firemobilesimulator.common = {}; 22 24 23 var pref = { 25 firemobilesimulator.common.jsLoader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"].getService(Components.interfaces.mozIJSSubScriptLoader); 26 firemobilesimulator.common.jsLoader.loadSubScript("chrome://global/content/nsUserSettings.js"); 27 28 firemobilesimulator.common.pref = { 24 29 __proto__ : nsPreferences, 25 30 26 get mPrefService2()31 getPrefService2 : function() 27 32 { 28 33 return Components.classes["@mozilla.org/preferences-service;1"]. … … 32 37 deletePref : function(preference) 33 38 { 34 if(this. mPrefService2.prefHasUserValue(preference))39 if(this.getPrefService2().prefHasUserValue(preference)) 35 40 { 36 this. mPrefService2.clearUserPref(preference);41 this.getPrefService2().clearUserPref(preference); 37 42 } 38 43 } -
platform/firefox/FireMobileSimulator/trunk/src/chrome/content/common/util.js
r19736 r20267 18 18 * ***** END LICENSE BLOCK ***** */ 19 19 20 var firemobilesimulator; 21 if(!firemobilesimulator) firemobilesimulator = {}; 22 if(!firemobilesimulator.common) firemobilesimulator.common = {}; 23 if(!firemobilesimulator.common.util) firemobilesimulator.common.util = {}; 24 20 25 // Opens the URL in a new tab 21 f unction openURL(url) {26 firemobilesimulator.common.util.openURL = function(url) { 22 27 var parentWindow = null; 23 28 … … 38 43 } 39 44 40 // page load eventからcontent documentを返す41 function getPageLoadEventContentDocument(event) {42 try {43 var eventTarget = event.target;44 var originalTarget = event.originalTarget;45 46 if (eventTarget47 && originalTarget48 && (originalTarget.nodeName == "#document" || eventTarget == getBrowser())) {49 var contentDocument = eventTarget.contentDocument;50 51 if (!contentDocument && originalTarget.defaultView52 && originalTarget.defaultView.parent) {53 contentDocument = originalTarget.defaultView.parent.document;54 }55 56 if (contentDocument57 && contentDocument.documentURI == originalTarget.documentURI) {58 return contentDocument;59 }60 }61 } catch (exception) {62 dump("[msim]Error can't get content document:" + exception + "\n");63 }64 65 return null;66 }67 68 45 /** 69 46 * … … 72 49 * @return {} 73 50 */ 74 f unction getParamsFromPath(path, func){51 firemobilesimulator.common.util.getParamsFromPath = function(path, func){ 75 52 var params = {}; 76 53 var qindex = path.indexOf("?"); 77 54 if (qindex >= 0) { 78 params = getParamsFromQuery(path.substring(qindex+1), func);55 params = firemobilesimulator.common.util.getParamsFromQuery(path.substring(qindex+1), func); 79 56 } 80 57 return params; … … 87 64 * @return {} 88 65 */ 89 f unction getParamsFromQuery(q, func){66 firemobilesimulator.common.util.getParamsFromQuery = function(q, func){ 90 67 if (!func || !func instanceof Function) func = decodeURI; 91 68 //dump("##getParamsFromQuery start\n"); … … 116 93 * @param {} lon 117 94 */ 118 f unction Point(lat,lon){95 firemobilesimulator.common.util.Point = function(lat,lon){ 119 96 this.lat=lat; 120 97 this.lon=lon; 121 98 }; 122 Point.prototype = { 99 100 firemobilesimulator.common.util.Point.prototype = { 123 101 lat : null, 124 102 lon : null, … … 131 109 toDms : function (){ 132 110 if (this.unit == this.UNIT_DEGREE) { 133 this.lat = degree2dms(this.lat);134 this.lon = degree2dms(this.lon);111 this.lat = firemobilesimulator.common.util.degree2dms(this.lat); 112 this.lon = firemobilesimulator.common.util.degree2dms(this.lon); 135 113 this.unit = this.UNIT_DMS; 136 114 } … … 138 116 toDegree : function(){ 139 117 if (this.unit == this.UNIT_DMS) { 140 this.lat = dms2degree(this.lat);141 this.lon = dms2degree(this.lon);118 this.lat = firemobilesimulator.common.util.dms2degree(this.lat); 119 this.lon = firemobilesimulator.common.util.dms2degree(this.lon); 142 120 this.unit = this.UNIT_DEGREE; 143 121 } … … 163 141 * @return {} 164 142 */ 165 f unction dms2degree(dms){143 firemobilesimulator.common.util.dms2degree = function(dms){ 166 144 if (!/[-+]?(\d+)\.(\d+)\.(\d+\.\d+)/.test(dms)) { 167 145 return null; … … 179 157 * @return {} 180 158 */ 181 f unction degree2dms(degree){159 firemobilesimulator.common.util.degree2dms = function(degree){ 182 160 var n = 1000; 183 161 var u = Math.floor(degree*3600*n + 0.5); … … 203 181 } 204 182 205 f unction getYYYYMMDDHHmm(){183 firemobilesimulator.common.util.getYYYYMMDDHHmm = function(){ 206 184 var now = new Date(); 207 185 var y = (now.getFullYear()).toString(); … … 213 191 } 214 192 215 f unction getHiddenTag(params){193 firemobilesimulator.common.util.getHiddenTag = function(params){ 216 194 var r = ""; 217 195 for (var i in params) { 218 196 if (i.toUpperCase() == "UID" && params[i].toUpperCase() == "NULLGWDOCOMO") { 219 params[i] = pref.copyUnicharPref("msim.config.DC.uid");197 params[i] = firemobilesimulator.common.pref.copyUnicharPref("msim.config.DC.uid"); 220 198 } 221 199 r += '<input type="hidden" name="'+i+'" value="'+params[i]+'" />\n'; -
platform/firefox/FireMobileSimulator/trunk/src/chrome/content/firefoxOverlay.xul
r19736 r20267 23 23 <overlay id="msim-overlay" 24 24 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 25 <script type="application/x-javascript" src="common/preferences.js"></script> 25 <script type="application/x-javascript" src="core.js"></script> 26 <script type="application/x-javascript" src="common/pref.js"></script> 26 27 <script type="application/x-javascript" src="common/carrier.js"></script> 27 28 <script type="application/x-javascript" src="common/util.js"></script> 28 29 <script type="application/x-javascript" src="overlay.js"></script> 30 <script type="application/x-javascript" src="core.js"></script> 31 <script type="application/x-javascript" src="mpc/common.js"></script> 32 <script type="application/x-javascript" src="mpc/docomo.js"></script> 33 <script type="application/x-javascript" src="mpc/ezweb.js"></script> 34 <script type="application/x-javascript" src="mpc/softbank.js"></script> 29 35 <script type="application/x-javascript" src="mpc.js"></script> 30 <script type="application/x-javascript" src="carrier/common.js"></script>31 <script type="application/x-javascript" src="carrier/foma.js"></script>32 <script type="application/x-javascript" src="carrier/softbank.js"></script>33 <script type="application/x-javascript" src="carrier/ezweb.js"></script>34 36 35 37 <stringbundleset id="stringbundleset"> … … 39 41 <menupopup id="menu_ToolsPopup"> 40 42 <menu id="msim-menu" class="menu-iconic" accesskey="&msim.menu.accesskey;" insertafter="devToolsSeparator" label="&msim.label;"> 41 <menupopup id="msim-popup-menu" onpopupshowing=" msim.displayDeviceSwitcherMenu(this, 'menu');">42 <menuitem id="msim-default-menu" accesskey="&msim.menu.default.accesskey;" label="&msim.menu.default.label;" type="radio" oncommand=" msim.msim_resetDevice(event);" name="devicelist"/>43 <menupopup id="msim-popup-menu" onpopupshowing="firemobilesimulator.overlay.displayDeviceSwitcherMenu(this, 'menu');"> 44 <menuitem id="msim-default-menu" accesskey="&msim.menu.default.accesskey;" label="&msim.menu.default.label;" type="radio" oncommand="firemobilesimulator.core.resetDevice(event);" name="devicelist"/> 43 45 <menuseparator id="msim-separator1-menu"/> 44 46 <menuseparator id="msim-separator2-menu"/> 45 <menuitem id="msim-options-menu" accesskey="&msim.menu.options.accesskey;" label="&msim.menu.options.label;" oncommand=" msim.msim_openOptions();"/>46 <menuitem id="msim-about-menu" accesskey="&msim.menu.about.accesskey;" label="&msim.menu.about.label;" oncommand=" msim.msim_openAbout();"/>47 <menuitem id="msim-options-menu" accesskey="&msim.menu.options.accesskey;" label="&msim.menu.options.label;" oncommand="firemobilesimulator.overlay.openOptions();"/> 48 <menuitem id="msim-about-menu" accesskey="&msim.menu.about.accesskey;" label="&msim.menu.about.label;" oncommand="firemobilesimulator.overlay.openAbout();"/> 47 49 </menupopup> 48 50 </menu> … … 50 52 51 53 <toolbarpalette id="BrowserToolbarPalette"> 52 <toolbarbutton id="msim-button" label="&msim.label;" tooltiptext="&msim.label;" type="menu" onmouseover=" msim.msim_openToolbarButton(this);">53 <menupopup id="msim-popup-toolbar" onpopupshowing=" msim.displayDeviceSwitcherMenu(this, 'toolbar');">54 <menuitem id="msim-default-toolbar" accesskey="&msim.menu.default.accesskey;" label="&msim.menu.default.label;" type="radio" oncommand=" msim.msim_resetDevice(event);" name="devicelist"/>54 <toolbarbutton id="msim-button" label="&msim.label;" tooltiptext="&msim.label;" type="menu" onmouseover="firemobilesimulator.overlay.openToolbarButton(this);"> 55 <menupopup id="msim-popup-toolbar" onpopupshowing="firemobilesimulator.overlay.displayDeviceSwitcherMenu(this, 'toolbar');"> 56 <menuitem id="msim-default-toolbar" accesskey="&msim.menu.default.accesskey;" label="&msim.menu.default.label;" type="radio" oncommand="firemobilesimulator.core.resetDevice(event);" name="devicelist"/> 55 57 <menuseparator id="msim-separator1-toolbar"/> 56 58 <menuseparator id="msim-separator2-toolbar"/> 57 <menuitem id="msim-options-toolbar" accesskey="&msim.menu.options.accesskey;" label="&msim.menu.options.label;" oncommand=" msim.msim_openOptions();"/>58 <menuitem id="msim-about-toolbar" accesskey="&msim.menu.about.accesskey;" label="&msim.menu.about.label;" oncommand=" msim.msim_openAbout();"/>59 <menuitem id="msim-options-toolbar" accesskey="&msim.menu.options.accesskey;" label="&msim.menu.options.label;" oncommand="firemobilesimulator.overlay.openOptions();"/> 60 <menuitem id="msim-about-toolbar" accesskey="&msim.menu.about.accesskey;" label="&msim.menu.about.label;" oncommand="firemobilesimulator.overlay.openAbout();"/> 59 61 </menupopup> 60 62 </toolbarbutton> -
platform/firefox/FireMobileSimulator/trunk/src/chrome/content/html/au_gps.html
r19579 r20267 1 1 <html> 2 2 <head> 3 <script type="text/javascript" src="chrome://msim/content/common/pref erences.js"></script>3 <script type="text/javascript" src="chrome://msim/content/common/pref.js"></script> 4 4 <script type="text/javascript" src="chrome://msim/content/common/util.js"></script> 5 5 <script type="text/javascript" src="chrome://msim/content/html/au_gps.js"></script> … … 7 7 window.onload= 8 8 function init(){ 9 var params = getParamsFromPath(location.href);10 auLocationInit(params);9 var params = firemobilesimulator.common.util.getParamsFromPath(location.href); 10 firemobilesimulator.auLocationInit(params); 11 11 }; 12 12 </script> -
platform/firefox/FireMobileSimulator/trunk/src/chrome/content/html/au_gps.js
r19719 r20267 18 18 * ***** END LICENSE BLOCK ***** */ 19 19 20 function auLocationInit(params) { 20 var firemobilesimulator; 21 if(!firemobilesimulator) firemobilesimulator = {}; 22 23 firemobilesimulator.auLocationInit = function(params) { 21 24 var href = location.href; 22 var lat = encodeURIComponent( pref.copyUnicharPref("msim.config.AU.gps.lat"));23 var lon = encodeURIComponent( pref.copyUnicharPref("msim.config.AU.gps.lon"));25 var lat = encodeURIComponent(firemobilesimulator.common.pref.copyUnicharPref("msim.config.AU.gps.lat")); 26 var lon = encodeURIComponent(firemobilesimulator.common.pref.copyUnicharPref("msim.config.AU.gps.lon")); 24 27 25 28 if(href.indexOf("device:location") == 0){ … … 31 34 var datum = params["datum"]; // 測地系 32 35 var unit = params["unit"]; // 緯度経度表記方法 33 var alt = pref.copyUnicharPref("msim.config.AU.gps.alt") || 50; //海抜高度34 var time = getYYYYMMDDHHmm();35 var smaj = pref.copyUnicharPref("msim.config.AU.gps.smaj") || 100; //長軸成分誤差36 var smin = pref.copyUnicharPref("msim.config.AU.gps.smin") || 100; //短軸成分誤差37 var vert = pref.copyUnicharPref("msim.config.AU.gps.vert") || 100; //高度誤差38 var majaa = pref.copyUnicharPref("msim.config.AU.gps.majaa") || 60; //長軸短軸傾き値36 var alt = firemobilesimulator.common.pref.copyUnicharPref("msim.config.AU.gps.alt") || 50; //海抜高度 37 var time = firemobilesimulator.common.util.getYYYYMMDDHHmm(); 38 var smaj = firemobilesimulator.common.pref.copyUnicharPref("msim.config.AU.gps.smaj") || 100; //長軸成分誤差 39 var smin = firemobilesimulator.common.pref.copyUnicharPref("msim.config.AU.gps.smin") || 100; //短軸成分誤差 40 var vert = firemobilesimulator.common.pref.copyUnicharPref("msim.config.AU.gps.vert") || 100; //高度誤差 41 var majaa = firemobilesimulator.common.pref.copyUnicharPref("msim.config.AU.gps.majaa") || 60; //長軸短軸傾き値 39 42 var fm = 1; //測位結果の精度 40 43 41 var point = new Point(lat, lon);44 var point = new firemobilesimulator.common.util.Point(lat, lon); 42 45 if(datum == 1){ 43 46 // 東京測地系 -
platform/firefox/FireMobileSimulator/trunk/src/chrome/content/html/dc_openiarea.html
r19579 r20267 1 1 <html> 2 2 <head> 3 <script type="text/javascript" src="chrome://msim/content/common/pref erences.js"></script>3 <script type="text/javascript" src="chrome://msim/content/common/pref.js"></script> 4 4 <script type="text/javascript" src="chrome://msim/content/common/util.js"></script> 5 5 <script type="text/javascript" src="dc_openiarea.js"></script> … … 7 7 window.onload= 8 8 function init(){ 9 var params = getParamsFromPath(location.href);10 openiareaInit(params);9 var params = firemobilesimulator.common.util.getParamsFromPath(location.href); 10 firemobilesimulator.openiareaInit(params); 11 11 }; 12 12 </script> 13 13 </head> 14 14 <body> 15 <div id=" openiarea_body"></div>15 <div id="firemobilesimulator-openiarea-body"></div> 16 16 <div>※情報を送信しない場合はバックボタンで戻ってください。</div> 17 17 <div><a href="#">ご利用にあたって</a></div> -
platform/firefox/FireMobileSimulator/trunk/src/chrome/content/html/dc_openiarea.js
r19719 r20267 18 18 * ***** END LICENSE BLOCK ***** */ 19 19 20 function openiareaInit(params){ 20 var firemobilesimulator; 21 if(!firemobilesimulator) firemobilesimulator = {}; 22 23 firemobilesimulator.openiareaInit = function(params){ 21 24 var nl = unescape(params["nl"]); 22 25 var posinfo = params["posinfo"]; … … 24 27 var arg2 = params["arg2"]; 25 28 dump("##"+arg1+":"+arg2+"\n"); 26 var arg1params = arg1 ? getParamsFromQuery(unescape(arg1)) : null;27 var arg2params = arg2 ? getParamsFromQuery(unescape(arg2)) : null;29 var arg1params = arg1 ? firemobilesimulator.common.util.getParamsFromQuery(unescape(arg1)) : null; 30 var arg2params = arg2 ? firemobilesimulator.common.util.getParamsFromQuery(unescape(arg2)) : null; 28 31 29 var openiareaBody = document.getElementById(" openiarea_body");30 var areaname = pref.copyUnicharPref("msim.config.DC.gps.areaname");31 var areacode = pref.copyUnicharPref("msim.config.DC.gps.areacode");32 var lat = pref.copyUnicharPref("msim.config.DC.gps.lat");33 var lon = pref.copyUnicharPref("msim.config.DC.gps.lon");32 var openiareaBody = document.getElementById("firemobilesimulator-openiarea-body"); 33 var areaname = firemobilesimulator.common.pref.copyUnicharPref("msim.config.DC.gps.areaname"); 34 var areacode = firemobilesimulator.common.pref.copyUnicharPref("msim.config.DC.gps.areacode"); 35 var lat = firemobilesimulator.common.pref.copyUnicharPref("msim.config.DC.gps.lat"); 36 var lon = firemobilesimulator.common.pref.copyUnicharPref("msim.config.DC.gps.lon"); 34 37 35 38 if(!posinfo){ … … 41 44 <form method="POST" action='+nl+'>\ 42 45 <input type="hidden" name="AREACODE" value="'+areacode+'">'; 43 body += getHiddenTag(arg1params);44 body += getHiddenTag(arg2params);46 body += firemobilesimulator.common.util.getHiddenTag(arg1params); 47 body += firemobilesimulator.common.util.getHiddenTag(arg2params); 45 48 body += '\ 46 49 <div align="center"><input type="submit" name="ACTN" value="OK"></div>\ … … 65 68 <input type="hidden" name="GEO" value="wgs84">\ 66 69 <input type="hidden" name="XACC" value="1">'; 67 body += getHiddenTag(arg1params);68 body += getHiddenTag(arg2params);70 body += firemobilesimulator.common.util.getHiddenTag(arg1params); 71 body += firemobilesimulator.common.util.getHiddenTag(arg2params); 69 72 body += '\ 70 73 <input type="hidden" name="POSINFO" value="'+posinfo+'">\ -
platform/firefox/FireMobileSimulator/trunk/src/chrome/content/mpc.js
r19719 r20267 1 /* ***** BEGIN LICENSE BLOCK Version: GPL 3.0 *****2 * FireMobileFimulator is a Firefox add-on that simulate web browsers of3 * japanese mobile phones.4 * Copyright (C) 2008ryster <ryster@php-develop.org>5 * 6 * This program is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by8 * the Free Software Foundation, either version 3 of the License, or9 * (at your option) any laterversion.10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the14 * GNU General Public License for moredetails.15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program. If not, see <http://www.gnu.org/licenses/>.18 * ***** END LICENSEBLOCK *****1 /******************************************************************************* 2 * ***** BEGIN LICENSE BLOCK Version: GPL 3.0 FireMobileFimulator is a Firefox 3 * add-on that simulate web browsers of japanese mobile phones. Copyright (C) 4 * 2008 ryster <ryster@php-develop.org> 5 * 6 * This program is free software: you can redistribute it and/or modify it under 7 * the terms of the GNU General Public License as published by the Free Software 8 * Foundation, either version 3 of the License, or (at your option) any later 9 * version. 10 * 11 * This program is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 13 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 14 * details. 15 * 16 * You should have received a copy of the GNU General Public License along with 17 * this program. If not, see <http://www.gnu.org/licenses/>. ***** END LICENSE 18 * BLOCK ***** 19 19 */ 20 20 21 var MobilePictogramConverter = { 22 /** 23 * �^�C�v�ɍ��킹�āA��p�̃N���X�I�u�W�F�N�g�� 24 * @param string str �ϊ��O������ 25 * @param string carrier str�̊G�����L�����A (MPC_FROM_FOMA, MPC_FROM_EZWEB, MPC_FROM_SOFTBANK) 26 * @return mixed 27 */ 28 factory : function (carrier) { 29 var classname = eval('MPC_'+carrier); 30 var mpc = new classname; 31 return mpc; 32 } 21 var firemobilesimulator; 22 if (!firemobilesimulator) 23 firemobilesimulator = {}; 24 if (!firemobilesimulator.mpc) 25 firemobilesimulator.mpc = {}; 26 27 firemobilesimulator.mpc.factoryMap = {}; 28 firemobilesimulator.mpc.factoryMap[firemobilesimulator.common.carrier.DOCOMO] = firemobilesimulator.mpc.docomo; 29 firemobilesimulator.mpc.factoryMap[firemobilesimulator.common.carrier.AU] = firemobilesimulator.mpc.ezweb; 30 firemobilesimulator.mpc.factoryMap[firemobilesimulator.common.carrier.SOFTBANK] = firemobilesimulator.mpc.softbank; 31 32 firemobilesimulator.mpc.factory = function(carrier) { 33 return new firemobilesimulator.mpc.factoryMap[carrier]; 33 34 }; -
platform/firefox/FireMobileSimulator/trunk/src/chrome/content/mpc/common.js
r19736 r20267 18 18 * ***** END LICENSE BLOCK ***** */ 19 19 20 var MPC_SJIS = "SJIS"; 21 var MPC_UTF8 = "UTF-8"; 22 var MPC_EUCJP = "EUC_JP"; 20 var firemobilesimulator; 21 if(!firemobilesimulator) firemobilesimulator = {}; 22 if(!firemobilesimulator.mpc) firemobilesimulator.mpc = {}; 23 if(!firemobilesimulator.mpc.common) firemobilesimulator.mpc.common = {}; 23 24 24 var HexStrings = function(hexstrings, charset) { 25 firemobilesimulator.mpc.common.MPC_SJIS = "SJIS"; 26 firemobilesimulator.mpc.common.MPC_UTF8 = "UTF-8"; 27 firemobilesimulator.mpc.common.MPC_EUCJP = "EUC_JP"; 28 29 firemobilesimulator.mpc.common.HexStrings = function(hexstrings, charset) { 25 30 this.hexstrings = hexstrings || ""; 26 this.charset = charset || MPC_SJIS;31 this.charset = charset || firemobilesimulator.mpc.common.MPC_SJIS; 27 32 this.i = 0; 28 33 }; 29 34 30 HexStrings.prototype = {35 firemobilesimulator.mpc.common.HexStrings.prototype = { 31 36 hexstring : "", 32 37 charset : "", … … 38 43 getNextCharacterDecs : function() { 39 44 var ds = parseInt(this.hexstrings[this.i], 16); 40 if (ds >= 0x00 && ds <= 0x7F || this.charset == MPC_SJIS && ds >= 0xA045 if (ds >= 0x00 && ds <= 0x7F || this.charset == firemobilesimulator.mpc.common.MPC_SJIS && ds >= 0xA0 41 46 && ds <= 0xDF) { 42 47 // 1バイト文字 43 48 this.i += 1; 44 49 return [ds]; 45 } else if (this.charset == MPC_SJIS) {50 } else if (this.charset == firemobilesimulator.mpc.common.MPC_SJIS) { 46 51 // 2バイト文字 47 52 var ds2 = parseInt(this.hexstrings[this.i + 1], 16); 48 53 this.i += 2; 49 54 return [ds, ds2]; 50 } else if (this.charset == MPC_UTF8) {55 } else if (this.charset == firemobilesimulator.mpc.common.MPC_UTF8) { 51 56 // 3バイト(UTF-8) 52 57 if (ds >= 0xE0 && ds <= 0xEF) { … … 63 68 }; 64 69 65 f unction unpack(str) {70 firemobilesimulator.mpc.common.unpack = function(str) { 66 71 // dump("unpack start:"+str+"\n"); 67 72 var last = str.length; … … 74 79 } 75 80 76 f unction sdecs2udec(chs) {81 firemobilesimulator.mpc.common.sdecs2udec = function(chs) { 77 82 var hex = ""; 78 83 for (var i = 0; i < chs.length; i++) { … … 80 85 hex += "%" + temp.slice(-2); 81 86 } 82 var unicode = EscapeUnicode(UnescapeSJIS(hex));87 var unicode = firemobilesimulator.common.ecl.EscapeUnicode(firemobilesimulator.common.ecl.UnescapeSJIS(hex)); 83 88 if (/^%(?:u[0-9A-F]{4}|[0-9A-F]{2})$/.test(unicode)) { 84 89 //dump("return" + parseInt(unicode.substring(2, 6), 16) + "\n"); … … 89 94 } 90 95 91 f unction u8decs2udec(chs) {96 firemobilesimulator.mpc.common.u8decs2udec = function(chs) { 92 97 var hex = ""; 93 98 for (var i = 0; i < chs.length; i++) { … … 95 100 hex += "%" + temp.slice(-2); 96 101 } 97 var unicode = EscapeUnicode(UnescapeUTF8(hex));102 var unicode = firemobilesimulator.common.ecl.EscapeUnicode(firemobilesimulator.common.ecl.UnescapeUTF8(hex)); 98 103 if (/^%(?:u[0-9A-F]{4}|[0-9A-F]{2})$/.test(unicode)) { 99 104 //dump("return" + parseInt(unicode.substring(2, 6), 16) + "\n"); … … 104 109 } 105 110 106 f unction utf82unicode(bits) {111 firemobilesimulator.mpc.common.utf82unicode = function(bits) { 107 112 var rbits = new Array(2); 108 113 if (bits.length == 3) { … … 118 123 } 119 124 120 f unction unicode2utf8(bits){125 firemobilesimulator.mpc.common.unicode2utf8 = function(bits){ 121 126 var rbits = new Array(3); 122 127 if (bits.length == 2) { … … 130 135 } 131 136 132 f unction bits2dec(bits) {137 firemobilesimulator.mpc.common.bits2dec = function(bits) { 133 138 var r = 0; 134 139 for (var i=0; i<bits.length; i++) { -
platform/firefox/FireMobileSimulator/trunk/src/chrome/content/mpc/docomo.js
r19736 r20267 18 18 * ***** END LICENSE BLOCK ***** */ 19 19 20 var MPC_DC = function(charset) { 21 this.charset = charset || MPC_SJIS; 20 var firemobilesimulator; 21 if(!firemobilesimulator) firemobilesimulator = {}; 22 if(!firemobilesimulator.mpc) firemobilesimulator.mpc = {}; 23 24 firemobilesimulator.mpc.docomo = function(charset) { 25 this.charset = charset || firemobilesimulator.mpc.common.MPC_SJIS; 22 26 }; 23 MPC_DC.prototype = {27 firemobilesimulator.mpc.docomo.prototype = { 24 28 /** 25 29 * i-mode絵文字画像格納パス … … 38 42 convert : function(str) { 39 43 dump("[mpc]DoCoMo convert start.charset = "+this.charset+"\n"); 40 // Firefoxから数値参照が直接渡ってこないので、とりあえずコメントアウト41 // var re1 = /&#x([a-f0-9]{4});/ig;42 // var re2 = /&#([0-9]{5});/g;43 // var _this = this;44 // Unicodeの16進数値文字参照をimgタグ形式に変換45 // str = str.replace(re1, function(whole, s1) { var udec =46 // parseInt(s1,16); return _this.isPictogramDec(udec) ?47 // _this.i_options_encode(udec) : s1 ; });48 // SJISの10進数値文字参照をimgタグ形式に変換49 // str = str.replace(re2, function(whole, s1) { var udec = sdec2udec(s1);50 // return _this.isPictogramDec(udec) ? _this.i_options_encode(udec) : s151 // ; });52 44 53 45 // 10進数値文字参照をバイナリに変換(絵文字以外も対象としてよし) … … 76 68 //TODO: Auから呼び出される場合は違う判定にすべきかどうか? 77 69 //TODO: 基本絵文字のみに限定する 78 if (this.charset == MPC_SJIS) {70 if (this.charset == firemobilesimulator.mpc.common.MPC_SJIS) { 79 71 dump("[mpc]DoCoMo SJIS10match start\n"); 80 72 var regNumericReferenceDec = /&#([0-9]{5});/g; … … 95 87 // バイナリをimgタグ形式に変換 96 88 dump("[mpc]DoCoMo binary match start\n"); 97 var hexstrings = new HexStrings(unpack(str), this.charset);89 var hexstrings = new firemobilesimulator.mpc.common.HexStrings(firemobilesimulator.mpc.common.unpack(str), this.charset); 98 90 var r = ""; 99 91 while (hexstrings.hasNextCharacter()) { 100 92 var decs = hexstrings.getNextCharacterDecs(); 101 if (this.charset == MPC_SJIS) {93 if (this.charset == firemobilesimulator.mpc.common.MPC_SJIS) { 102 94 // SJISバイナリの絵文字を変換 103 95 if (this.isPictogramSJISDecs(decs)) { 104 r += this.i_options_encode( sdecs2udec(decs));96 r += this.i_options_encode(firemobilesimulator.mpc.common.sdecs2udec(decs)); 105 97 } else { 106 98 for (var i = 0; i < decs.length; i++) { … … 108 100 } 109 101 } 110 } else if (this.charset == MPC_UTF8) {102 } else if (this.charset == firemobilesimulator.mpc.common.MPC_UTF8) { 111 103 // UTF-8バイナリの絵文字を変換 112 104 if (this.isPictogramUTF8Decs(decs)) { 113 r += this.i_options_encode( u8decs2udec(decs));105 r += this.i_options_encode(firemobilesimulator.mpc.common.u8decs2udec(decs)); 114 106 } else { 115 107 for (var i = 0; i < decs.length; i++) { -
platform/firefox/FireMobileSimulator/trunk/src/chrome/content/mpc/ezweb.js
r19736 r20267 18 18 * ***** END LICENSE BLOCK ***** */ 19 19 20 var MPC_AU = function(charset) { 21 this.charset = charset || MPC_SJIS; 20 var firemobilesimulator; 21 if(!firemobilesimulator) firemobilesimulator = {}; 22 if(!firemobilesimulator.mpc) firemobilesimulator.mpc = {}; 23 24 firemobilesimulator.mpc.ezweb = function(charset) { 25 this.charset = charset || firemobilesimulator.mpc.common.MPC_SJIS; 22 26 }; 23 MPC_AU.prototype = {27 firemobilesimulator.mpc.ezweb.prototype = { 24 28 /** 25 29 * EZweb絵文字画像格納パス … … 837 841 dump("au SJIS 16 match\n"); 838 842 return _this 839 .e_options_encode(_this.getIconMapSJIS()[ bits2dec(decs)]);843 .e_options_encode(_this.getIconMapSJIS()[firemobilesimulator.mpc.common.bits2dec(decs)]); 840 844 } else if (_this.isPictogramUnicodeDecs(decs)) { 841 845 // decsはUnicode 842 846 dump("au Unicode 16 match\n"); 843 847 return _this 844 .e_options_encode(_this.getIconMapUnicode()[ bits2dec(decs)]);848 .e_options_encode(_this.getIconMapUnicode()[firemobilesimulator.mpc.common.bits2dec(decs)]); 845 849 } else { 846 850 dump("au 16 no match\n") … … 867 871 dump("au SJIS 10 match\n"); 868 872 return _this 869 .e_options_encode(_this.getIconMapSJIS()[ bits2dec(decs)]);873 .e_options_encode(_this.getIconMapSJIS()[firemobilesimulator.mpc.common.bits2dec(decs)]); 870 874 } else if (_this.isPictogramUnicodeDecs(decs)) { 871 875 // decsはUnicode 872 876 dump("au Unicode 10 match\n"); 873 877 return _this 874 .e_options_encode(_this.getIconMapUnicode()[ bits2dec(decs)]);878 .e_options_encode(_this.getIconMapUnicode()[firemobilesimulator.mpc.common.bits2dec(decs)]); 875 879 } else { 876 880 dump("au 10 no match\n"); … … 882 886 // var hexstrings = unpack_e(str); 883 887 var r = ""; 884 var hexstrings = new HexStrings(unpack(str), this.charset);888 var hexstrings = new firemobilesimulator.mpc.common.HexStrings(firemobilesimulator.mpc.common.unpack(str), this.charset); 885 889 886 890 dump("[mpc]Au binary match start\n"); … … 888 892 var decs = hexstrings.getNextCharacterDecs(); 889 893 // 絵文字変換処理 890 if (this.charset == MPC_SJIS) {894 if (this.charset == firemobilesimulator.mpc.common.MPC_SJIS) { 891 895 // SJISバイナリの絵文字を変換 892 896 if (this.isPictogramSJISDecs(decs)) { 893 897 r += this 894 .e_options_encode(_this.getIconMapSJIS()[ bits2dec(decs)]);898 .e_options_encode(_this.getIconMapSJIS()[firemobilesimulator.mpc.common.bits2dec(decs)]); 895 899 } else { 896 900 for (var i = 0; i < decs.length; i++) { … … 898 902 } 899 903 } 900 } else if (this.charset == MPC_UTF8) {904 } else if (this.charset == firemobilesimulator.mpc.common.MPC_UTF8) { 901 905 // 裏KDDIのUTF-8バイナリの絵文字を変換 902 906 if (this.isPictogramUTF8Decs(decs)) { 903 907 r += this 904 .e_options_encode(_this.getIconMapSJIS()[ bits2dec(_this905 .e_unofficialUnicode2SJIS( utf82unicode(decs)))]);908 .e_options_encode(_this.getIconMapSJIS()[firemobilesimulator.mpc.common.bits2dec(_this 909 .e_unofficialUnicode2SJIS(firemobilesimulator.mpc.common.utf82unicode(decs)))]); 906 910 } else { 907 911 for (var i = 0; i < decs.length; i++) { -
platform/firefox/FireMobileSimulator/trunk/src/chrome/content/mpc/softbank.js
r19736 r20267 18 18 * ***** END LICENSE BLOCK ***** */ 19 19 20 var MPC_SB = function(){}; 21 MPC_SB.prototype = 20 var firemobilesimulator; 21 if(!firemobilesimulator) firemobilesimulator = {}; 22 if(!firemobilesimulator.mpc) firemobilesimulator.mpc = {}; 23 24 firemobilesimulator.mpc.softbank = function(){}; 25 firemobilesimulator.mpc.softbank.prototype = 22 26 { 23 27 /** … … 40 44 var _this = this; 41 45 var f = function(whole, s1){ 42 var hexstrings = unpack(s1);46 var hexstrings = firemobilesimulator.mpc.common.unpack(s1); 43 47 var emoji = ""; 44 48 for (var i=1; i<hexstrings.length; i++) { … … 77 81 // バイナリをimgタグ形式に変換 78 82 dump("[mpc]SoftBank binary match start\n"); 79 var hexstrings = new HexStrings(unpack(str), this.charset);83 var hexstrings = new firemobilesimulator.mpc.common.HexStrings(firemobilesimulator.mpc.common.unpack(str), this.charset); 80 84 var r = ""; 81 85 while (hexstrings.hasNextCharacter()) { 82 86 var decs = hexstrings.getNextCharacterDecs(); 83 if (this.charset == MPC_SJIS) {87 if (this.charset == firemobilesimulator.mpc.common.MPC_SJIS) { 84 88 // SJISバイナリの絵文字を変換 [unofficial] 85 89 var web = 0; 86 90 if (decs.length==2) { 87 web = this.s2web( bits2dec(decs));91 web = this.s2web(firemobilesimulator.mpc.common.bits2dec(decs)); 88 92 } 89 93 if (web) { … … 94 98 } 95 99 } 96 } else if (this.charset == MPC_UTF8) {100 } else if (this.charset == firemobilesimulator.mpc.common.MPC_UTF8) { 97 101 // UTF-8バイナリの絵文字を変換 [unofficial] 98 102 var web = 0; 99 103 if (decs.length==3) { 100 web = this.u2web( bits2dec(utf82unicode(decs)));104 web = this.u2web(firemobilesimulator.mpc.common.bits2dec(firemobilesimulator.mpc.common.utf82unicode(decs))); 101 105 } 102 106 if (web) { … … 190 194 } 191 195 }; 192 193 function unpack(str){194 var last = str.length;195 var ret = Array(last);196 for (var i = 0; i < last; i++) {197 ret[i] = str.charCodeAt(i).toString(16);198 }199 return ret;200 } -
platform/firefox/FireMobileSimulator/trunk/src/chrome/content/options/dialogs/device.js
r19736 r20267 1 var msim_windowType = null; 2 var carrier = null; 3 var id = null; 4 var retVals; 5 var stringBundle; 6 // Clears the user agent 7 8 function msim_clearDevice() { 9 } 1 var firemobilesimulator; 2 if (!firemobilesimulator) 3 firemobilesimulator = {}; 4 if (!firemobilesimulator.options) 5 firemobilesimulator.options = {}; 6 if (!firemobilesimulator.options.dialogs) 7 firemobilesimulator.options.dialogs = {}; 8 if (!firemobilesimulator.options.dialogs.device) 9 firemobilesimulator.options.dialogs.device = {}; 10 11 firemobilesimulator.options.dialogs.device.carrier = null; 12 firemobilesimulator.options.dialogs.device.id = null; 10 13 11 14 // Initializes the user agent dialog box 12 f unction msim_initializeDevice() {15 firemobilesimulator.options.dialogs.device.initializeDevice = function() { 13 16 dump("[msim]initializeDevice()\n"); 14 stringBundle = document.getElementById("msim-string-bundle"); 15 16 msim_windowType = window.arguments[0]; 17 firemobilesimulator.options.dialogs.device.stringBundle = document 18 .getElementById("msim-string-bundle"); 19 firemobilesimulator.options.dialogs.device.windowType = window.arguments[0]; 20 firemobilesimulator.options.dialogs.device.retVals = window.arguments[3]; 17 21 18 22 // If the window type is add 19 if (msim_windowType == "add") { 20 document.title = stringBundle.getString("msim_addDeviceTitle"); 23 if (firemobilesimulator.options.dialogs.device.windowType == "add") { 24 document.title = firemobilesimulator.options.dialogs.device.stringBundle 25 .getString("msim_addDeviceTitle"); 21 26 var carrierList = document.createElement("menulist"); 22 27 var carrierListPopup = document.createElement("menupopup") 23 28 carrierList.setAttribute("id", "msim.options.device.carrierlist"); 24 29 25 [""].concat(carrierArray).forEach(function (carrierTemp) { 26 var menuItem = document.createElement("menuitem"); 27 menuItem.setAttribute("label", carrierName[carrierTemp] 28 || stringBundle.getString("msim_selectCarrier")); 29 menuItem.setAttribute("id", carrierTemp); 30 menuItem.setAttribute("oncommand", 'carrierSelected(this)'); 31 carrierListPopup.appendChild(menuItem); 32 }); 30 [""].concat(firemobilesimulator.common.carrier.carrierArray) 31 .forEach(function(carrierTemp) { 32 var menuItem = document.createElement("menuitem"); 33 menuItem.setAttribute( 34 "label", 35 firemobilesimulator.common.carrier.carrierName[carrierTemp] 36 || firemobilesimulator.options.dialogs.device.stringBundle 37 .getString("msim_selectCarrier")); 38 menuItem.setAttribute("id", carrierTemp); 39 menuItem.setAttribute("oncommand", 40 'firemobilesimulator.options.dialogs.device.carrierSelected(this)'); 41 carrierListPopup.appendChild(menuItem); 42 }); 33 43 carrierList.appendChild(carrierListPopup); 34 44 var r = document.getElementById("msim.options.device.carrier.row"); 35 r.replaceChild(carrierList, r.lastChild); 45 r.appendChild(carrierList); 46 //r.replaceChild(carrierList, r.lastChild); 47 //r.replaceChild(carrierList, r); 36 48 37 49 document.getElementById("msim.options.device.device").disabled = false; 38 50 39 } else if (msim_windowType == "edit") { 40 dump("edit\n"); 41 document.title = stringBundle.getString("msim_editDeviceTitle"); 42 carrier = window.arguments[1]; 43 id = window.arguments[2]; 44 dump(carrier + "\n"); 45 dump(id + "\n"); 46 document.getElementById("msim.options.device.device").value = pref 47 .copyUnicharPref("msim.devicelist." + carrier + "." + id 51 } else if (firemobilesimulator.options.dialogs.device.windowType == "edit") { 52 dump("[msim]edit device.\n"); 53 document.title = firemobilesimulator.options.dialogs.device.stringBundle 54 .getString("msim_editDeviceTitle"); 55 firemobilesimulator.options.dialogs.device.carrier = window.arguments[1]; 56 firemobilesimulator.options.dialogs.device.id = window.arguments[2]; 57 dump(firemobilesimulator.options.dialogs.device.carrier + "\n"); 58 dump(firemobilesimulator.options.dialogs.device.id + "\n"); 59 document.getElementById("msim.options.device.device").value = firemobilesimulator.common.pref 60 .copyUnicharPref("msim.devicelist." 61 + firemobilesimulator.options.dialogs.device.carrier 62 + "." + firemobilesimulator.options.dialogs.device.id 48 63 + ".device"); 49 document.getElementById("msim.options.device.carrier").value = carrierName[carrier]; 50 document.getElementById("msim.options.device.useragent").value = pref 51 .copyUnicharPref("msim.devicelist." + carrier + "." + id 64 //<textbox id="msim.options.device.carrier" size="50" disabled="true"/> 65 var carrierTextBox = document.createElement("textbox"); 66 var r = document.getElementById("msim.options.device.carrier.row"); 67 r.appendChild(carrierTextBox); 68 carrierTextBox.setAttribute("id","msim.options.device.carrier"); 69 carrierTextBox.size = 50; 70 dump("###"+firemobilesimulator.common.carrier.carrierName[firemobilesimulator.options.dialogs.device.carrier]+"\n"); 71 carrierTextBox.value = firemobilesimulator.common.carrier.carrierName[firemobilesimulator.options.dialogs.device.carrier]; 72 carrierTextBox.disabled = true; 73 74 document.getElementById("msim.options.device.useragent").value = firemobilesimulator.common.pref 75 .copyUnicharPref("msim.devicelist." 76 + firemobilesimulator.options.dialogs.device.carrier 77 + "." + firemobilesimulator.options.dialogs.device.id 52 78 + ".useragent"); 53 79 54 appendDeviceAttributeRows(document 55 .getElementById("msim.options.device.rows"), carrier, 56 id); 57 58 } 59 60 retVals = window.arguments[3]; 61 } 62 63 function carrierSelected(obj) { 64 if (carrier) { 65 removeDeviceAttributeRows(document 66 .getElementById("msim.options.device.rows")); 67 } 68 carrier = obj.id; 69 if (carrier) { 80 firemobilesimulator.options.dialogs.device.appendDeviceAttributeRows( 81 document.getElementById("msim.options.device.rows"), 82 firemobilesimulator.options.dialogs.device.carrier, 83 firemobilesimulator.options.dialogs.device.id); 84 85 } 86 87 } 88 89 firemobilesimulator.options.dialogs.device.carrierSelected = function(obj) { 90 if (firemobilesimulator.options.dialogs.device.carrier) { 91 firemobilesimulator.options.dialogs.device 92 .removeDeviceAttributeRows(document 93 .getElementById("msim.options.device.rows")); 94 } 95 firemobilesimulator.options.dialogs.device.carrier = obj.id; 96 if (firemobilesimulator.options.dialogs.device.carrier) { 70 97 // carrier = 71 98 // document.getElementById("msim.options.device.carrierlist").selectedItem.getAttribute("id"); 72 appendDeviceAttributeRows(document73 .getElementById("msim.options.device.rows"), carrier,74 null);99 firemobilesimulator.options.dialogs.device.appendDeviceAttributeRows( 100 document.getElementById("msim.options.device.rows"), 101 firemobilesimulator.options.dialogs.device.carrier, null); 75 102 } 76 103 window.sizeToContent(); 77 104 } 78 105 79 function appendDeviceAttributeRows(parentNode, carrier, id) { 80 dump("append:" + parentNode + ":" + carrier + ":" + id + "\n"); 81 deviceAttribute[carrier].forEach(function (a) { 82 var elementId = "msim.options.device." + a; 83 var r = document.createElement("row"); 84 var l = document.createElement("label"); 85 var t = document.createElement("textbox"); 86 r.setAttribute("align", "center"); 87 l.setAttribute("control", elementId); 88 l.setAttribute("value", stringBundle.getString(elementId)); 89 t.setAttribute("id", elementId); 90 t.setAttribute("size", 50); 91 if (id 92 && pref.copyUnicharPref("msim.devicelist." + carrier + "." + id 93 + "." + a)) { 94 t.setAttribute("value", pref.copyUnicharPref("msim.devicelist." 95 + carrier + "." + id + "." + a)); 96 } 97 r.appendChild(l); 98 r.appendChild(t); 99 parentNode.appendChild(r); 100 }); 101 } 102 103 function removeDeviceAttributeRows(parentNode) { 106 firemobilesimulator.options.dialogs.device.appendDeviceAttributeRows = function( 107 parentNode, carrier, id) { 108 dump("[msim]append:" + parentNode + ":" + carrier + ":" + id + "\n"); 109 firemobilesimulator.common.carrier.deviceAttribute[carrier] 110 .forEach(function(a) { 111 var elementId = "msim.options.device." + a; 112 var r = document.createElement("row"); 113 var l = document.createElement("label"); 114 var t = document.createElement("textbox"); 115 r.setAttribute("align", "center"); 116 l.setAttribute("control", elementId); 117 l.setAttribute("value", 118 firemobilesimulator.options.dialogs.device.stringBundle 119 .getString(elementId)); 120 t.setAttribute("id", elementId); 121 t.setAttribute("size", 50); 122 if (id 123 && firemobilesimulator.common.pref 124 .copyUnicharPref("msim.devicelist." + carrier 125 + "." + id + "." + a)) { 126 t.setAttribute("value", firemobilesimulator.common.pref 127 .copyUnicharPref("msim.devicelist." 128 + carrier + "." + id + "." + a)); 129 } 130 r.appendChild(l); 131 r.appendChild(t); 132 parentNode.appendChild(r); 133 }); 134 } 135 136 firemobilesimulator.options.dialogs.device.removeDeviceAttributeRows = function( 137 parentNode) { 104 138 dump("remove:" + parentNode + "\n"); 105 139 while (parentNode.lastChild.getAttribute("id") != "msim.options.device.useragent.row") { … … 108 142 } 109 143 } 110 // Retrieves the default user agent111 function msim_retrieveDefault() {112 }113 144 114 145 // Saves a device 115 f unction msim_saveDevice() {146 firemobilesimulator.options.dialogs.device.saveDevice = function() { 116 147 // If the window type is add or edit 117 if ( msim_windowType == "add" || msim_windowType == "edit") {148 if (firemobilesimulator.options.dialogs.device.windowType == "add" || firemobilesimulator.options.dialogs.device.windowType == "edit") { 118 149 var saveId; 119 150 120 if ( msim_windowType == "add") {151 if (firemobilesimulator.options.dialogs.device.windowType == "add") { 121 152 // carrier = 122 153 // document.getElementById("msim.options.device.carrierlist").selectedItem.getAttribute("id"); 123 saveId = pref.getIntPref("msim.devicelist." + carrier + ".count") 154 saveId = firemobilesimulator.common.pref 155 .getIntPref("msim.devicelist." 156 + firemobilesimulator.options.dialogs.device.carrier 157 + ".count") 124 158 + 1; 125 pref.setIntPref("msim.devicelist." + carrier + ".count", saveId); 126 pref.setUnicharPref("msim.devicelist." + carrier + "." + saveId 127 + ".carrier", carrier); 159 firemobilesimulator.common.pref 160 .setIntPref( 161 "msim.devicelist." 162 + firemobilesimulator.options.dialogs.device.carrier 163 + ".count", saveId); 164 firemobilesimulator.common.pref 165 .setUnicharPref( 166 "msim.devicelist." 167 + firemobilesimulator.options.dialogs.device.carrier 168 + "." + saveId + ".carrier", 169 firemobilesimulator.options.dialogs.device.carrier); 128 170 } else { 129 saveId = id;171 saveId = firemobilesimulator.options.dialogs.device.id; 130 172 } 131 173 132 dump("save-carrier:" + carrier + "\n"); 174 dump("save-carrier:" 175 + firemobilesimulator.options.dialogs.device.carrier + "\n"); 133 176 dump("save-id:" + saveId + "\n"); 134 177 … … 138 181 139 182 // 入力チェック 140 if (!deviceName || !carrier || !userAgent) { 183 if (!deviceName || !firemobilesimulator.options.dialogs.device.carrier 184 || !userAgent) { 141 185 dump("[msim]Warning : Required field is null.\n"); 142 alert( stringBundle186 alert(firemobilesimulator.options.dialogs.device.stringBundle 143 187 .getString("msim_editDeviceRequirementValidation")); 144 188 return false; 145 189 } 146 pref.setUnicharPref("msim.devicelist." + carrier + "." + saveId 147 + ".device", deviceName); 148 pref.setUnicharPref("msim.devicelist." + carrier + "." + saveId 149 + ".useragent", userAgent); 150 151 retVals.deviceName = deviceName; 152 retVals.id = saveId; 153 retVals.carrier = carrier; 154 retVals.userAgent = userAgent; 155 156 deviceAttribute[carrier].forEach(function (a) { 157 var elementId = "msim.options.device." + a; 158 dump("getvalue:" + elementId + ":" 159 + document.getElementById(elementId).value + "\n"); 160 pref 161 .setUnicharPref("msim.devicelist." + carrier + "." + saveId 162 + "." + a, document 163 .getElementById(elementId).value); 164 }); 190 firemobilesimulator.common.pref.setUnicharPref("msim.devicelist." 191 + firemobilesimulator.options.dialogs.device.carrier 192 + "." + saveId + ".device", deviceName); 193 firemobilesimulator.common.pref.setUnicharPref("msim.devicelist." 194 + firemobilesimulator.options.dialogs.device.carrier 195 + "." + saveId + ".useragent", userAgent); 196 197 firemobilesimulator.options.dialogs.device.retVals.deviceName = deviceName; 198 firemobilesimulator.options.dialogs.device.retVals.id = saveId; 199 firemobilesimulator.options.dialogs.device.retVals.carrier = firemobilesimulator.options.dialogs.device.carrier; 200 firemobilesimulator.options.dialogs.device.retVals.userAgent = userAgent; 201 202 firemobilesimulator.common.carrier.deviceAttribute[firemobilesimulator.options.dialogs.device.carrier] 203 .forEach(function(a) { 204 var elementId = "msim.options.device." + a; 205 dump("getvalue:" + elementId + ":" 206 + document.getElementById(elementId).value + "\n"); 207 firemobilesimulator.common.pref 208 .setUnicharPref( 209 "msim.devicelist." 210 + firemobilesimulator.options.dialogs.device.carrier 211 + "." + saveId + "." + a, document 212 .getElementById(elementId).value); 213 }); 165 214 } 166 215 return true; -
platform/firefox/FireMobileSimulator/trunk/src/chrome/content/options/dialogs/device.xul
r19579 r20267 6 6 <dialog buttons="accept, cancel" 7 7 id="msim-user-agent-dialog" 8 ondialogaccept=" return msim_saveDevice()"8 ondialogaccept="firemobilesimulator.options.dialogs.device.saveDevice()" 9 9 ondialogcancel="javascript:false;" 10 onload=" msim_initializeDevice()"10 onload="firemobilesimulator.options.dialogs.device.initializeDevice()" 11 11 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 12 12 13 <script type="application/x-javascript" src="chrome://msim/content/common/preferences.js"/> 13 <script type="application/x-javascript" src="chrome://msim/content/core.js"/> 14 <script type="application/x-javascript" src="chrome://msim/content/common/pref.js"/> 14 15 <script type="application/x-javascript" src="chrome://msim/content/common/carrier.js"/> 15 16 <script type="application/x-javascript" src="chrome://msim/content/options/options.js"/> … … 31 32 <row id="msim.options.device.carrier.row" align="center"> 32 33 <label control="msim.options.device.carrier" value="&msim.options.device.carrier;"/> 33 < textbox id="msim.options.device.carrier" size="50" disabled="true"/>34 <!--<textbox id="msim.options.device.carrier" size="50" disabled="true"/>--> 34 35 </row> 35 36 <row id="msim.options.device.useragent.row" align="center"> -
platform/firefox/FireMobileSimulator/trunk/src/chrome/content/options/options.js
r19736 r20267 1 var msim_optionsDataBoolean = new Array(); 2 var msim_optionsDataInteger = new Array(); 3 var msim_optionsDataString = new Array(); 1 var firemobilesimulator; 2 if(!firemobilesimulator) firemobilesimulator = {}; 3 if(!firemobilesimulator.options) firemobilesimulator.options = {}; 4 5 firemobilesimulator.options.optionsDataBoolean = new Array(); 6 firemobilesimulator.options.optionsDataInteger = new Array(); 7 firemobilesimulator.options.optionsDataString = new Array(); 4 8 5 9 //Adds a device 6 f unction msim_addDevice(){10 firemobilesimulator.options.addDevice = function(){ 7 11 var retVals = {}; 8 12 if(window.openDialog("chrome://msim/content/options/dialogs/device.xul", "msim-device-dialog", "centerscreen,chrome,modal,resizable", "add", null, null, retVals)){ … … 22 26 23 27 //Handles changing the options page 24 f unction msim_changePage(pageList){25 msim_storeOptions();28 firemobilesimulator.options.changePage = function(pageList){ 29 firemobilesimulator.options.storeOptions(); 26 30 document.getElementById("msim-options-iframe").setAttribute("src", pageList.selectedItem.getAttribute("value")); 27 31 } 28 32 29 33 //Deletes a device 30 f unction msim_deleteDevice(){34 firemobilesimulator.options.deleteDevice = function(){ 31 35 var pageDocument = document.getElementById("msim-options-iframe").contentDocument; 32 36 var deviceBox = pageDocument.getElementById("msim-listbox"); 33 37 var selectedItem = deviceBox.selectedItem; 34 if(selectedItem && confirm(document.getElementById("msim-string-bundle").getString(" msim_deleteConfirmation"))){38 if(selectedItem && confirm(document.getElementById("msim-string-bundle").getString("firemobilesimulator.options.deleteConfirmation"))){ 35 39 var carrier = selectedItem.getAttribute("carrier"); 36 40 var deletedId = parseInt(selectedItem.getAttribute("id")); 37 41 var prefPrefix = "msim.devicelist." + carrier + "." + deletedId + "." 38 42 deviceBasicAttribute.concat(deviceAttribute[carrier]).forEach(function(attribute){ 39 pref.deletePref(prefPrefix+attribute);43 firemobilesimulator.common.pref.deletePref(prefPrefix+attribute); 40 44 }); 41 45 42 46 //既に使われている端末だったら設定をリセット 43 if(pref.copyUnicharPref("msim.current.id") == deletedId && pref.copyUnicharPref("msim.current.carrier") == carrier){ 44 dump("[msim]Debug : This device is used. Reset your settings.\n"); 45 pref.deletePref("msim.current.carrier"); 46 pref.deletePref("msim.current.device"); 47 pref.deletePref("general.useragent.override"); 48 pref.deletePref("msim.current.useragent"); 49 pref.deletePref("msim.current.id"); 47 if(firemobilesimulator.common.pref.copyUnicharPref("msim.current.id") == deletedId && firemobilesimulator.common.pref.copyUnicharPref("msim.current.carrier") == carrier){ 48 firemobilesimulator.options.core.resetDevice(); 50 49 } 51 50 52 51 //各端末のidを再計算 53 var count = pref.getIntPref("msim.devicelist." + carrier + ".count");52 var count = firemobilesimulator.common.pref.getIntPref("msim.devicelist." + carrier + ".count"); 54 53 dump(deletedId+":"+count+"\n"); 55 54 dump((deletedId+1)+":"+count+"\n"); … … 59 58 var ePrefPrefix = "msim.devicelist." + carrier + "." + (i-1) + "."; 60 59 deviceBasicAttribute.contcat(deviceAttribute[carrier]).forEach(function(attribute){ 61 pref.setUnicharPref(ePrefPrefix+attribute,pref.copyUnicharPref(sPrefPrefix+attribute));60 firemobilesimulator.common.pref.setUnicharPref(ePrefPrefix+attribute, firemobilesimulator.common.pref.copyUnicharPref(sPrefPrefix+attribute)); 62 61 }); 63 62 } 64 pref.setIntPref("msim.devicelist." + carrier + ".count", count-1);63 firemobilesimulator.common.pref.setIntPref("msim.devicelist." + carrier + ".count", count-1); 65 64 66 65 deviceBox.removeChild(selectedItem); … … 69 68 70 69 //Edits a device 71 f unction msim_editDevice(){70 firemobilesimulator.options.editDevice = function(){ 72 71 var pageDocument = document.getElementById("msim-options-iframe").contentDocument; 73 72 var deviceBox = pageDocument.getElementById("msim-listbox"); … … 78 77 var id = selectedItem.getAttribute("id"); 79 78 if(window.openDialog("chrome://msim/content/options/dialogs/device.xul", "msim-device-dialog", "centerscreen,chrome,modal,resizable", "edit", carrier, id, retVals)){ 80 setDevice(carrier, id); 79 //setDevice(carrier, id); 80 if(retVals.id && retVals.carrier){ 81 if(firemobilesimulator.common.pref.copyUnicharPref("msim.current.id") == retVals.id && firemobilesimulator.common.pref.copyUnicharPref("msim.current.carrier") == retVals.carrier){ 82 firemobilesimulator.core.setDevice(retVals.carrier, retVals.id); 83 } 84 } 81 85 } 82 86 }else{ … … 86 90 87 91 // Initializes the options dialog box 88 f unction msim_initializeOptions(){92 firemobilesimulator.options.initializeOptions = function(){ 89 93 var selectedPage = document.getElementById("msim-page-list").selectedItem.getAttribute("value"); 90 94 91 95 // If this is the general page 92 96 if(selectedPage.indexOf("general") != -1){ 93 msim_initializeGeneral();97 firemobilesimulator.options.initializeGeneral(); 94 98 }else if(selectedPage.indexOf("devices") != -1){ 95 msim_initializeDevices();99 firemobilesimulator.options.initializeDevices(); 96 100 }else if(selectedPage.indexOf("gps") != -1){ 97 msim_initializeGps();101 firemobilesimulator.options.initializeGps(); 98 102 }else if(selectedPage.indexOf("pictogram") != -1){ 99 msim_initializePictogram();103 firemobilesimulator.options.initializePictogram(); 100 104 } 101 105 } 102 106 103 107 // Initializes the general page 104 f unction msim_initializeGeneral()108 firemobilesimulator.options.initializeGeneral = function() 105 109 { 106 110 var pageDocument = document.getElementById("msim-options-iframe").contentDocument; 107 pageDocument.getElementById("msim-textbox-docomo-uid").setAttribute("value", pref.copyUnicharPref("msim.config.DC.uid"));108 pageDocument.getElementById("msim-textbox-docomo-ser").setAttribute("value", pref.copyUnicharPref("msim.config.DC.ser"));109 pageDocument.getElementById("msim-textbox-docomo-icc").setAttribute("value", pref.copyUnicharPref("msim.config.DC.icc"));110 pageDocument.getElementById("msim-textbox-docomo-guid").setAttribute("value", pref.copyUnicharPref("msim.config.DC.guid"));111 pageDocument.getElementById("msim-textbox-au-uid").setAttribute("value", pref.copyUnicharPref("msim.config.AU.uid"));112 pageDocument.getElementById("msim-textbox-softbank-uid").setAttribute("value", pref.copyUnicharPref("msim.config.SB.uid"));113 pageDocument.getElementById("msim-textbox-softbank-serial").setAttribute("value", pref.copyUnicharPref("msim.config.SB.serial"));111 pageDocument.getElementById("msim-textbox-docomo-uid").setAttribute("value",firemobilesimulator.common.pref.copyUnicharPref("msim.config.DC.uid")); 112 pageDocument.getElementById("msim-textbox-docomo-ser").setAttribute("value",firemobilesimulator.common.pref.copyUnicharPref("msim.config.DC.ser")); 113 pageDocument.getElementById("msim-textbox-docomo-icc").setAttribute("value",firemobilesimulator.common.pref.copyUnicharPref("msim.config.DC.icc")); 114 pageDocument.getElementById("msim-textbox-docomo-guid").setAttribute("value",firemobilesimulator.common.pref.copyUnicharPref("msim.config.DC.guid")); 115 pageDocument.getElementById("msim-textbox-au-uid").setAttribute("value",firemobilesimulator.common.pref.copyUnicharPref("msim.config.AU.uid")); 116 pageDocument.getElementById("msim-textbox-softbank-uid").setAttribute("value",firemobilesimulator.common.pref.copyUnicharPref("msim.config.SB.uid")); 117 pageDocument.getElementById("msim-textbox-softbank-serial").setAttribute("value",firemobilesimulator.common.pref.copyUnicharPref("msim.config.SB.serial")); 114 118 } 115 119 116 120 // Initializes the devices page 117 f unction msim_initializeDevices(){118 dump(" msim_initializeDevices\n");121 firemobilesimulator.options.initializeDevices = function(){ 122 dump("firemobilesimulator.options.initializeDevices\n"); 119 123 var pageDocument = document.getElementById("msim-options-iframe").contentDocument; 120 124 var deviceBox = pageDocument.getElementById("msim-listbox"); … … 126 130 } 127 131 128 carrierArray.forEach(function(carrier){129 130 deviceCount = pref.getIntPref("msim.devicelist." + carrier + ".count");132 firemobilesimulator.common.carrier.carrierArray.forEach(function(carrier){ 133 134 deviceCount = firemobilesimulator.common.pref.getIntPref("msim.devicelist." + carrier + ".count"); 131 135 for(var i = 1; i <= deviceCount; i++){ 132 var device = pref.copyUnicharPref("msim.devicelist." + carrier + "." + i + ".device");133 var useragent = pref.copyUnicharPref("msim.devicelist." + carrier + "." + i + ".useragent");136 var device = firemobilesimulator.common.pref.copyUnicharPref("msim.devicelist." + carrier + "." + i + ".device"); 137 var useragent = firemobilesimulator.common.pref.copyUnicharPref("msim.devicelist." + carrier + "." + i + ".useragent"); 134 138 if(device){ 135 139 var listItem = deviceBox.appendItem(carrier + ":" + device, useragent); … … 140 144 }); 141 145 142 msim_deviceSelected();146 firemobilesimulator.options.deviceSelected(); 143 147 } 144 148 145 149 // Saves the user's options 146 f unction msim_saveOptions(){150 firemobilesimulator.options.saveOptions = function(){ 147 151 var option = null; 148 152 var optionValue = null; 149 153 150 154 // Make sure current page is stored 151 msim_storeOptions();155 firemobilesimulator.options.storeOptions(); 152 156 153 157 // Loop through the boolean options 154 for(option in msim_optionsDataBoolean){155 pref.setBoolPref(option, msim_optionsDataBoolean[option]);158 for(option in firemobilesimulator.options.optionsDataBoolean){ 159 firemobilesimulator.common.pref.setBoolPref(option, firemobilesimulator.options.optionsDataBoolean[option]); 156 160 } 157 161 158 162 // Loop through the integer options 159 for(option in msim_optionsDataInteger){160 pref.setIntPref(option, msim_optionsDataInteger[option]);163 for(option in firemobilesimulator.options.optionsDataInteger){ 164 firemobilesimulator.common.pref.setIntPref(option, firemobilesimulator.options.optionsDataInteger[option]); 161 165 } 162 166 163 167 // Loop through the string options 164 for(option in msim_optionsDataString){165 pref.setUnicharPref(option, msim_optionsDataString[option]);168 for(option in firemobilesimulator.options.optionsDataString){ 169 firemobilesimulator.common.pref.setUnicharPref(option, firemobilesimulator.options.optionsDataString[option]); 166 170 } 167 171 } 168 172 169 173 // Stores the user's options to be saved later 170 f unction msim_storeOptions(){174 firemobilesimulator.options.storeOptions = function(){ 171 175 var iFrame = document.getElementById("msim-options-iframe"); 172 176 var iFrameSrc = iFrame.getAttribute("src"); … … 176 180 if(iFrameSrc.indexOf("general") != -1){ 177 181 dump("[msim]store generals.\n"); 178 msim_optionsDataString["msim.config.DC.uid"] = pageDocument.getElementById("msim-textbox-docomo-uid").value;179 msim_optionsDataString["msim.config.DC.ser"] = pageDocument.getElementById("msim-textbox-docomo-ser").value;180 msim_optionsDataString["msim.config.DC.icc"] = pageDocument.getElementById("msim-textbox-docomo-icc").value;181 msim_optionsDataString["msim.config.DC.guid"] = pageDocument.getElementById("msim-textbox-docomo-guid").value;182 msim_optionsDataString["msim.config.AU.uid"] = pageDocument.getElementById("msim-textbox-au-uid").value;183 msim_optionsDataString["msim.config.SB.uid"] = pageDocument.getElementById("msim-textbox-softbank-uid").value;184 msim_optionsDataString["msim.config.SB.serial"] = pageDocument.getElementById("msim-textbox-softbank-serial").value;185 var carrier = pref.copyUnicharPref("msim.current.carrier");186 if(carrier == SOFTBANK){182 firemobilesimulator.options.optionsDataString["msim.config.DC.uid"] = pageDocument.getElementById("msim-textbox-docomo-uid").value; 183 firemobilesimulator.options.optionsDataString["msim.config.DC.ser"] = pageDocument.getElementById("msim-textbox-docomo-ser").value; 184 firemobilesimulator.options.optionsDataString["msim.config.DC.icc"] = pageDocument.getElementById("msim-textbox-docomo-icc").value; 185 firemobilesimulator.options.optionsDataString["msim.config.DC.guid"] = pageDocument.getElementById("msim-textbox-docomo-guid").value; 186 firemobilesimulator.options.optionsDataString["msim.config.AU.uid"] = pageDocument.getElementById("msim-textbox-au-uid").value; 187 firemobilesimulator.options.optionsDataString["msim.config.SB.uid"] = pageDocument.getElementById("msim-textbox-softbank-uid").value; 188 firemobilesimulator.options.optionsDataString["msim.config.SB.serial"] = pageDocument.getElementById("msim-textbox-softbank-serial").value; 189 var carrier = firemobilesimulator.common.pref.copyUnicharPref("msim.current.carrier"); 190 if(carrier == firemobilesimulator.common.carrier.SOFTBANK){ 187 191 dump("[msim]Debug : Current Carrier is SoftBank. Replace User-Agent.\n"); 188 var id = pref.copyUnicharPref("msim.current.id");189 var useragent = pref.copyUnicharPref("msim.devicelist."+carrier+"."+id+".useragent");190 var newUserAgent = getSoftBankUserAgent(useragent, msim_optionsDataString["msim.config.SB.serial"]);191 msim_optionsDataString["general.useragent.override"] = newUserAgent;192 msim_optionsDataString["msim.current.useragent"] = newUserAgent;192 var id = firemobilesimulator.common.pref.copyUnicharPref("msim.current.id"); 193 var useragent = firemobilesimulator.common.pref.copyUnicharPref("msim.devicelist."+carrier+"."+id+".useragent"); 194 var newUserAgent = firemobilesimulator.common.carrier.getSoftBankUserAgent(useragent, firemobilesimulator.options.optionsDataString["msim.config.SB.serial"]); 195 firemobilesimulator.options.optionsDataString["general.useragent.override"] = newUserAgent; 196 firemobilesimulator.options.optionsDataString["msim.current.useragent"] = newUserAgent; 193 197 } 194 198 }else if(iFrameSrc.indexOf("devices") != -1){ … … 196 200 }else if(iFrameSrc.indexOf("gps") != -1){ 197 201 dump("[msim]store gps.\n"); 198 msim_optionsDataString["msim.config.DC.gps.areacode"] = pageDocument.getElementById("msim-textbox-docomo-gps-areacode").value;199 msim_optionsDataString["msim.config.DC.gps.areaname"] = pageDocument.getElementById("msim-textbox-docomo-gps-areaname").value;200 msim_optionsDataString["msim.config.DC.gps.lat"] = pageDocument.getElementById("msim-textbox-docomo-gps-lat").value;201 msim_optionsDataString["msim.config.DC.gps.lon"] = pageDocument.getElementById("msim-textbox-docomo-gps-lon").value;202 msim_optionsDataString["msim.config.DC.gps.alt"] = pageDocument.getElementById("msim-textbox-docomo-gps-alt").value;203 msim_optionsDataString["msim.config.AU.gps.lat"] = pageDocument.getElementById("msim-textbox-au-gps-lat").value;204 msim_optionsDataString["msim.config.AU.gps.lon"] = pageDocument.getElementById("msim-textbox-au-gps-lon").value;202 firemobilesimulator.options.optionsDataString["msim.config.DC.gps.areacode"] = pageDocument.getElementById("msim-textbox-docomo-gps-areacode").value; 203 firemobilesimulator.options.optionsDataString["msim.config.DC.gps.areaname"] = pageDocument.getElementById("msim-textbox-docomo-gps-areaname").value; 204 firemobilesimulator.options.optionsDataString["msim.config.DC.gps.lat"] = pageDocument.getElementById("msim-textbox-docomo-gps-lat").value; 205 firemobilesimulator.options.optionsDataString["msim.config.DC.gps.lon"] = pageDocument.getElementById("msim-textbox-docomo-gps-lon").value; 206 firemobilesimulator.options.optionsDataString["msim.config.DC.gps.alt"] = pageDocument.getElementById("msim-textbox-docomo-gps-alt").value; 207 firemobilesimulator.options.optionsDataString["msim.config.AU.gps.lat"] = pageDocument.getElementById("msim-textbox-au-gps-lat").value; 208 firemobilesimulator.options.optionsDataString["msim.config.AU.gps.lon"] = pageDocument.getElementById("msim-textbox-au-gps-lon").value; 205 209 }else if(iFrameSrc.indexOf("pictogram") != -1){ 206 210 dump("[msim]store pictogram.\n"); 207 msim_optionsDataBoolean["msim.config.DC.pictogram.enabled"] = pageDocument.getElementById("msim-textbox-docomo-pictogram-enabled").checked;208 msim_optionsDataBoolean["msim.config.AU.pictogram.enabled"] = pageDocument.getElementById("msim-textbox-au-pictogram-enabled").checked;209 msim_optionsDataBoolean["msim.config.SB.pictogram.enabled"] = pageDocument.getElementById("msim-textbox-softbank-pictogram-enabled").checked;211 firemobilesimulator.options.optionsDataBoolean["msim.config.DC.pictogram.enabled"] = pageDocument.getElementById("msim-textbox-docomo-pictogram-enabled").checked; 212 firemobilesimulator.options.optionsDataBoolean["msim.config.AU.pictogram.enabled"] = pageDocument.getElementById("msim-textbox-au-pictogram-enabled").checked; 213 firemobilesimulator.options.optionsDataBoolean["msim.config.SB.pictogram.enabled"] = pageDocument.getElementById("msim-textbox-softbank-pictogram-enabled").checked; 210 214 } 211 215 } 212 216 213 217 // Called whenever the device box is selected 214 f unction msim_deviceSelected(){218 firemobilesimulator.options.deviceSelected = function(){ 215 219 dump("something selected\n"); 216 220 var pageDocument = document.getElementById("msim-options-iframe").contentDocument; … … 225 229 } 226 230 227 f unction clearAllDeviceSettings(){231 firemobilesimulator.options.clearAllDeviceSettings = function(){ 228 232 if(confirm(document.getElementById("msim-string-bundle").getString("msim_clearAllConfirmation"))){ 229 carrierArray.forEach(function(carrier){233 firemobilesimulator.common.carrier.carrierArray.forEach(function(carrier){ 230 234 dump("target carrier is "+carrier+"\n"); 231 pref.deletePref("msim.devicelist." + carrier + ".count");232 var count = pref.getIntPref("msim.devicelist." + carrier + ".count");235 firemobilesimulator.common.pref.deletePref("msim.devicelist." + carrier + ".count"); 236 var count = firemobilesimulator.common.pref.getIntPref("msim.devicelist." + carrier + ".count"); 233 237 for(var i=1; i<=count; i++){ 234 238 var prefPrefix = "msim.devicelist." + carrier + "." + i + "."; 235 239 236 dump("target prefix is "+prefPrefix+"\n");240 dump("target firemobilesimulator.common.pref.x is "+prefPrefix+"\n"); 237 241 deviceBasicAttribute.concat(deviceAttribute[carrier]).forEach(function(attribute){ 238 pref.deletePref(prefPrefix+attribute);242 firemobilesimulator.common.pref.deletePref(prefPrefix+attribute); 239 243 }); 240 244 } 241 245 }); 242 246 243 pref.deletePref("msim.current.carrier");244 pref.deletePref("msim.current.device");245 pref.deletePref("general.useragent.override");246 pref.deletePref("msim.current.useragent");247 pref.deletePref("msim.current.id");247 firemobilesimulator.common.pref.deletePref("msim.current.carrier"); 248 firemobilesimulator.common.pref.deletePref("msim.current.device"); 249 firemobilesimulator.common.pref.deletePref("general.useragent.override"); 250 firemobilesimulator.common.pref.deletePref("msim.current.useragent"); 251 firemobilesimulator.common.pref.deletePref("msim.current.id"); 248 252 249 253 //TODO:ツールバー上のiconをupdate … … 251 255 } 252 256 253 msim_initializeDevices();257 firemobilesimulator.options.initializeDevices(); 254 258 } 255 259 256 260 // Initializes the general page 257 f unction msim_initializeGps(){258 var pageDocument = document.getElementById("msim-options-iframe").contentDocument; 259 pageDocument.getElementById("msim-textbox-docomo-gps-areacode").setAttribute("value", pref.copyUnicharPref("msim.config.DC.gps.areacode"));260 pageDocument.getElementById("msim-textbox-docomo-gps-areaname").setAttribute("value", pref.copyUnicharPref("msim.config.DC.gps.areaname"));261 pageDocument.getElementById("msim-textbox-docomo-gps-lat").setAttribute("value", pref.copyUnicharPref("msim.config.DC.gps.lat"));262 pageDocument.getElementById("msim-textbox-docomo-gps-lon").setAttribute("value", pref.copyUnicharPref("msim.config.DC.gps.lon"));263 pageDocument.getElementById("msim-textbox-docomo-gps-alt").setAttribute("value", pref.copyUnicharPref("msim.config.DC.gps.alt"));264 pageDocument.getElementById("msim-textbox-au-gps-lat").setAttribute("value", pref.copyUnicharPref("msim.config.AU.gps.lat"));265 pageDocument.getElementById("msim-textbox-au-gps-lon").setAttribute("value", pref.copyUnicharPref("msim.config.AU.gps.lon"));266 } 267 268 f unction msim_initializePictogram(){261 firemobilesimulator.options.initializeGps = function(){ 262 var pageDocument = document.getElementById("msim-options-iframe").contentDocument; 263 pageDocument.getElementById("msim-textbox-docomo-gps-areacode").setAttribute("value",firemobilesimulator.common.pref.copyUnicharPref("msim.config.DC.gps.areacode")); 264 pageDocument.getElementById("msim-textbox-docomo-gps-areaname").setAttribute("value",firemobilesimulator.common.pref.copyUnicharPref("msim.config.DC.gps.areaname")); 265 pageDocument.getElementById("msim-textbox-docomo-gps-lat").setAttribute("value",firemobilesimulator.common.pref.copyUnicharPref("msim.config.DC.gps.lat")); 266 pageDocument.getElementById("msim-textbox-docomo-gps-lon").setAttribute("value",firemobilesimulator.common.pref.copyUnicharPref("msim.config.DC.gps.lon")); 267 pageDocument.getElementById("msim-textbox-docomo-gps-alt").setAttribute("value",firemobilesimulator.common.pref.copyUnicharPref("msim.config.DC.gps.alt")); 268 pageDocument.getElementById("msim-textbox-au-gps-lat").setAttribute("value",firemobilesimulator.common.pref.copyUnicharPref("msim.config.AU.gps.lat")); 269 pageDocument.getElementById("msim-textbox-au-gps-lon").setAttribute("value",firemobilesimulator.common.pref.copyUnicharPref("msim.config.AU.gps.lon")); 270 } 271 272 firemobilesimulator.options.initializePictogram = function(){ 269 273 dump("[msim]initializePictogram.\n"); 270 274 var pageDocument = document.getElementById("msim-options-iframe").contentDocument; 271 pageDocument.getElementById("msim-textbox-docomo-pictogram-enabled").checked = pref.getBoolPref("msim.config.DC.pictogram.enabled");272 pageDocument.getElementById("msim-textbox-au-pictogram-enabled").checked = pref.getBoolPref("msim.config.AU.pictogram.enabled");273 pageDocument.getElementById("msim-textbox-softbank-pictogram-enabled").checked = pref.getBoolPref("msim.config.SB.pictogram.enabled");274 } 275 pageDocument.getElementById("msim-textbox-docomo-pictogram-enabled").checked = firemobilesimulator.common.pref.getBoolPref("msim.config.DC.pictogram.enabled"); 276 pageDocument.getElementById("msim-textbox-au-pictogram-enabled").checked = firemobilesimulator.common.pref.getBoolPref("msim.config.AU.pictogram.enabled"); 277 pageDocument.getElementById("msim-textbox-softbank-pictogram-enabled").checked = firemobilesimulator.common.pref.getBoolPref("msim.config.SB.pictogram.enabled"); 278 } -
platform/firefox/FireMobileSimulator/trunk/src/chrome/content/options/options.xul
r19579 r20267 6 6 <dialog buttons="accept, cancel" 7 7 id="msim-options-dialog" 8 ondialogaccept=" msim_saveOptions()"8 ondialogaccept="firemobilesimulator.options.saveOptions()" 9 9 title="&msim.options.title;" 10 10 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 11 11 12 <script type="application/x-javascript" src="chrome://msim/content/co mmon/preferences.js"/>13 <script type="application/x-javascript" src="chrome://msim/content/common/ carrier.js"/>14 <script type="application/x-javascript" src="chrome://msim/content/ options/options.js"/>15 <script type="application/x-javascript" src="chrome://msim/content/ msim.js"/>12 <script type="application/x-javascript" src="chrome://msim/content/core.js"/> 13 <script type="application/x-javascript" src="chrome://msim/content/common/pref.js" /> 14 <script type="application/x-javascript" src="chrome://msim/content/common/carrier.js" /> 15 <script type="application/x-javascript" src="chrome://msim/content/options/options.js" /> 16 16 17 17 <stringbundleset id="stringbundleset"> 18 <stringbundle id="msim-string-bundle" src="chrome://msim/locale/msim.properties" />18 <stringbundle id="msim-string-bundle" src="chrome://msim/locale/msim.properties" /> 19 19 </stringbundleset> 20 20 21 21 <hbox flex="1"> 22 <listbox id="msim-page-list" onselect=" msim_changePage(this)">23 <listitem label="&msim.options.general.label;" selected="true" value="chrome://msim/content/options/pages/general.xul" accesskey="g" />24 <listitem label="&msim.options.devices.label;" value="chrome://msim/content/options/pages/devices.xul" accesskey="d" />25 <listitem label="&msim.options.gps.label;" value="chrome://msim/content/options/pages/gps.xul" accesskey="d" />26 <listitem label="&msim.options.pictogram.label;" value="chrome://msim/content/options/pages/pictogram.xul" accesskey="p" />22 <listbox id="msim-page-list" onselect="firemobilesimulator.options.changePage(this)"> 23 <listitem label="&msim.options.general.label;" selected="true" value="chrome://msim/content/options/pages/general.xul" accesskey="g" /> 24 <listitem label="&msim.options.devices.label;" value="chrome://msim/content/options/pages/devices.xul" accesskey="d" /> 25 <listitem label="&msim.options.gps.label;" value="chrome://msim/content/options/pages/gps.xul" accesskey="d" /> 26 <listitem label="&msim.options.pictogram.label;" value="chrome://msim/content/options/pages/pictogram.xul" accesskey="p" /> 27 27 </listbox> 28 28 <vbox flex="1"> 29 <iframe flex="1" id="msim-options-iframe" src="chrome://msim/content/options/pages/general.xul" />29 <iframe flex="1" id="msim-options-iframe" src="chrome://msim/content/options/pages/general.xul" /> 30 30 </vbox> 31 31 </hbox> -
platform/firefox/FireMobileSimulator/trunk/src/chrome/content/options/pages/devices.xul
r19579 r20267 4 4 <!DOCTYPE page SYSTEM "chrome://msim/locale/msim.dtd"> 5 5 6 <page onload="parent. msim_initializeOptions()"6 <page onload="parent.firemobilesimulator.options.initializeOptions()" 7 7 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 8 8 … … 16 16 <rows> 17 17 <row align="top"> 18 <listbox flex="1" id="msim-listbox" rows="5" onselect="parent. msim_deviceSelected()">18 <listbox flex="1" id="msim-listbox" rows="5" onselect="parent.firemobilesimulator.options.deviceSelected()"> 19 19 <listhead> 20 20 <listheader label="&msim.options.devices.label;"/> … … 24 24 <row align="top"> 25 25 <hbox> 26 <button label="&msim.options.add;" oncommand="parent. msim_addDevice()" accesskey="n"/>27 <button id="msim-edit" label="&msim.options.edit;" oncommand="parent. msim_editDevice()" accesskey="e"/>28 <button id="msim-delete" label="&msim.options.delete;" oncommand="parent. msim_deleteDevice()" accesskey="d"/>29 <button id="msim-clearall" label="&msim.options.clearall;" oncommand="parent. clearAllDeviceSettings()" accesskey="c"/>26 <button label="&msim.options.add;" oncommand="parent.firemobilesimulator.options.addDevice()" accesskey="n"/> 27 <button id="msim-edit" label="&msim.options.edit;" oncommand="parent.firemobilesimulator.options.editDevice()" accesskey="e"/> 28 <button id="msim-delete" label="&msim.options.delete;" oncommand="parent.firemobilesimulator.options.deleteDevice()" accesskey="d"/> 29 <button id="msim-clearall" label="&msim.options.clearall;" oncommand="parent.firemobilesimulator.options.clearAllDeviceSettings()" accesskey="c"/> 30 30 </hbox> 31 31 </row> -
platform/firefox/FireMobileSimulator/trunk/src/chrome/content/options/pages/general.xul
r19579 r20267 4 4 <!DOCTYPE page SYSTEM "chrome://msim/locale/msim.dtd"> 5 5 6 <page onload="parent. msim_initializeOptions()"6 <page onload="parent.firemobilesimulator.options.initializeOptions()" 7 7 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 8 8 -
platform/firefox/FireMobileSimulator/trunk/src/chrome/content/options/pages/gps.xul
r19579 r20267 4 4 <!DOCTYPE page SYSTEM "chrome://msim/locale/msim.dtd"> 5 5 6 <page onload="parent. msim_initializeOptions()"6 <page onload="parent.firemobilesimulator.options.initializeOptions()" 7 7 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 8 8 -
platform/firefox/FireMobileSimulator/trunk/src/chrome/content/options/pages/pictogram.xul
r19579 r20267 4 4 <!DOCTYPE page SYSTEM "chrome://msim/locale/msim.dtd"> 5 5 6 <page onload="parent. msim_initializeOptions()"6 <page onload="parent.firemobilesimulator.options.initializeOptions()" 7 7 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 8 8 -
platform/firefox/FireMobileSimulator/trunk/src/chrome/content/overlay.js
r19736 r20267 18 18 * ***** END LICENSE BLOCK ***** */ 19 19 20 var msim = { 21 onInitialize : function() { 22 // initialization code 23 dump("[msim]onInitialize\n"); 24 25 this.strings = document.getElementById("msim-strings"); 26 // initialize UserAgent 27 var windowContent = window.getBrowser(); 28 if (windowContent) { 29 dump("set load2\n"); 30 try { 31 32 window.removeEventListener('load', msim_onInitialize, false); 33 } catch (exception) { 34 dump("[msim]removeEventListner error:" + exception + "\n"); 35 } 36 windowContent.addEventListener('load', msim.msim_BrowserOnLoad, 37 true); 38 } 39 40 var initialized = pref.getBoolPref("msim.config.initialized"); 41 if (!initialized) { 42 // 何か初期化処理をしたい場合はここに記載 43 // pref.setBoolPref("msim.config.initialized", true); 44 } 45 this.updateIcon(); 46 }, 47 48 onUnload : function() { 49 dump("[msim]onUnload\n"); 50 var windowCount = 0; 51 var windowEnumeration = Components.classes["@mozilla.org/appshell/window-mediator;1"] 52 .getService(Components.interfaces.nsIWindowMediator) 53 .getEnumerator("navigator:browser"); 54 20 var firemobilesimulator; 21 if(!firemobilesimulator) firemobilesimulator = {}; 22 if(!firemobilesimulator.overlay) firemobilesimulator.overlay = {}; 23 24 firemobilesimulator.overlay.onInitialize = function() { 25 // initialization code 26 dump("[msim]onInitialize\n");
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)