From 16855da1beca17f0c695d28190259b7ebe566821 Mon Sep 17 00:00:00 2001 From: Ian Skinner <56081713+IanSkinner1982@users.noreply.github.com> Date: Tue, 24 May 2022 19:08:27 -0400 Subject: [PATCH] Added some very broken DSi Shop prototype stuff I did. --- gaming/htmls/DEBUG.zip | Bin 0 -> 104958 bytes gaming/htmls/DEBUG/NCL/ec/activeKeyboard.js | 5 + gaming/htmls/DEBUG/NCL/ec/ec.js | 113 ++ gaming/htmls/DEBUG/NCL/ec/ec_deviceInfo.html | 10 + .../htmls/DEBUG/NCL/ec/ec_deviceInfo_d.html | 152 ++ .../htmls/DEBUG/NCL/ec/ec_deviceInfo_u.html | 88 + gaming/htmls/DEBUG/NCL/ec/ec_download.html | 373 ++++ gaming/htmls/DEBUG/NCL/ec/ec_example.html | 1633 +++++++++++++++++ gaming/htmls/DEBUG/NCL/ec/ec_example.js | 221 +++ .../htmls/DEBUG/NCL/ec/ec_example_index.html | 10 + gaming/htmls/DEBUG/NCL/ec/ec_point.html | Bin 0 -> 10773 bytes gaming/htmls/DEBUG/NCL/ec/ec_u.html | 10 + gaming/htmls/DEBUG/NCL/ec/progress_bar.gif | Bin 0 -> 95 bytes .../DEBUG/NCL/ec/progress_bar_border.gif | Bin 0 -> 185 bytes gaming/htmls/DEBUG/NCL/ec/syncEc.js | 59 + gaming/htmls/DEBUG/NCL/index.html | 10 + gaming/htmls/DEBUG/NCL/index_d.html | 95 + gaming/htmls/DEBUG/NCL/index_u.html | 82 + .../htmls/DEBUG/NCL/tools/ShowErrorPage.html | 25 + gaming/htmls/DEBUG/NCL/tools/default.css | 32 + gaming/htmls/DEBUG/NCL/tools/default.js | 32 + gaming/htmls/DEBUG/SMC/ec/activeKeyboard.js | 5 + gaming/htmls/DEBUG/SMC/ec/ec.js | 113 ++ gaming/htmls/DEBUG/SMC/ec/ec_deviceInfo.html | 10 + .../htmls/DEBUG/SMC/ec/ec_deviceInfo_d.html | 152 ++ .../htmls/DEBUG/SMC/ec/ec_deviceInfo_u.html | 88 + gaming/htmls/DEBUG/SMC/ec/ec_example.html | 1633 +++++++++++++++++ gaming/htmls/DEBUG/SMC/ec/ec_example.js | 221 +++ .../htmls/DEBUG/SMC/ec/ec_example_index.html | 10 + gaming/htmls/DEBUG/SMC/ec/ec_u.html | 10 + gaming/htmls/DEBUG/SMC/ec/progress_bar.gif | Bin 0 -> 95 bytes .../DEBUG/SMC/ec/progress_bar_border.gif | Bin 0 -> 185 bytes gaming/htmls/DEBUG/SMC/ec/syncEc.js | 59 + gaming/htmls/DEBUG/SMC/font_check/css/def.css | 1280 +++++++++++++ .../SMC/font_check/css/page/L_03_eur_u.css | 16 + gaming/htmls/DEBUG/SMC/font_check/js/base.js | 1010 ++++++++++ gaming/htmls/DEBUG/SMC/font_check/js/kong.js | 544 ++++++ .../DEBUG/SMC/font_check/js/load_kong.js | 57 + .../DEBUG/SMC/font_check/js/multi_page_DOM.js | 233 +++ gaming/htmls/DEBUG/SMC/font_check/js/se.js | 9 + .../DEBUG/SMC/font_check/shopmock/default.css | 38 + .../font_check/shopmock/fontlist_01_d.html | 168 ++ .../shopmock/fontlist_01_index.html | 10 + .../font_check/shopmock/fontlist_01_u.html | 133 ++ .../font_check/shopmock/fontlist_02_d.html | 166 ++ .../shopmock/fontlist_02_index.html | 10 + .../font_check/shopmock/fontlist_02_u.html | 149 ++ .../font_check/shopmock/fontlist_03_d.html | 166 ++ .../shopmock/fontlist_03_index.html | 10 + .../font_check/shopmock/fontlist_03_u.html | 424 +++++ .../font_check/shopmock/fontlist_04_d.html | 166 ++ .../shopmock/fontlist_04_index.html | 10 + .../font_check/shopmock/fontlist_04_u.html | 481 +++++ .../DEBUG/SMC/font_check/shopmock/index.html | 10 + .../SMC/font_check/shopmock/index_d.html | 52 + .../SMC/font_check/shopmock/index_u.html | 28 + gaming/htmls/DEBUG/SMC/index.html | 10 + gaming/htmls/DEBUG/SMC/index_d.html | 65 + gaming/htmls/DEBUG/SMC/index_u.html | 81 + .../htmls/DEBUG/SMC/tools/ShowErrorPage.html | 25 + gaming/htmls/DEBUG/SMC/tools/default.css | 32 + gaming/htmls/DEBUG/SMC/tools/default.js | 32 + gaming/htmls/DEBUG/common/css/default.css | 38 + gaming/htmls/DEBUG/common/js/default.js | 32 + gaming/htmls/DEBUG/startup.html | 11 + gaming/htmls/DEBUG/startup_d.html | 62 + gaming/htmls/DEBUG/startup_u.html | 81 + gaming/htmls/error/E_01_d.html | 234 +++ gaming/htmls/error/E_01_u.html | 55 + gaming/htmls/error/E_02_d.html | 234 +++ gaming/htmls/error/E_02_u.html | 55 + gaming/htmls/error/E_03_d.html | 59 + gaming/htmls/error/E_03_u.html | 42 + gaming/htmls/error/E_bg_d.gif | Bin 0 -> 52 bytes gaming/htmls/error/E_bg_u.gif | Bin 0 -> 52 bytes gaming/htmls/error/E_u_bar.gif | Bin 0 -> 51 bytes gaming/htmls/error/Wi-Fi_on.gif | Bin 0 -> 115 bytes gaming/htmls/error/base.js | 1215 ++++++++++++ gaming/htmls/error/button_224x28_all.gif | Bin 0 -> 748 bytes gaming/htmls/error/button_224x32_all.gif | Bin 0 -> 788 bytes gaming/htmls/error/error.css | 321 ++++ gaming/htmls/error/error_id.js | 13 + gaming/htmls/error/se.js | 11 + gaming/htmls/error/violet_128x28_all.gif | Bin 0 -> 431 bytes gaming/htmls/error/violet_128x40_all.gif | Bin 0 -> 512 bytes 85 files changed, 13129 insertions(+) create mode 100644 gaming/htmls/DEBUG.zip create mode 100644 gaming/htmls/DEBUG/NCL/ec/activeKeyboard.js create mode 100644 gaming/htmls/DEBUG/NCL/ec/ec.js create mode 100644 gaming/htmls/DEBUG/NCL/ec/ec_deviceInfo.html create mode 100644 gaming/htmls/DEBUG/NCL/ec/ec_deviceInfo_d.html create mode 100644 gaming/htmls/DEBUG/NCL/ec/ec_deviceInfo_u.html create mode 100644 gaming/htmls/DEBUG/NCL/ec/ec_download.html create mode 100644 gaming/htmls/DEBUG/NCL/ec/ec_example.html create mode 100644 gaming/htmls/DEBUG/NCL/ec/ec_example.js create mode 100644 gaming/htmls/DEBUG/NCL/ec/ec_example_index.html create mode 100644 gaming/htmls/DEBUG/NCL/ec/ec_point.html create mode 100644 gaming/htmls/DEBUG/NCL/ec/ec_u.html create mode 100644 gaming/htmls/DEBUG/NCL/ec/progress_bar.gif create mode 100644 gaming/htmls/DEBUG/NCL/ec/progress_bar_border.gif create mode 100644 gaming/htmls/DEBUG/NCL/ec/syncEc.js create mode 100644 gaming/htmls/DEBUG/NCL/index.html create mode 100644 gaming/htmls/DEBUG/NCL/index_d.html create mode 100644 gaming/htmls/DEBUG/NCL/index_u.html create mode 100644 gaming/htmls/DEBUG/NCL/tools/ShowErrorPage.html create mode 100644 gaming/htmls/DEBUG/NCL/tools/default.css create mode 100644 gaming/htmls/DEBUG/NCL/tools/default.js create mode 100644 gaming/htmls/DEBUG/SMC/ec/activeKeyboard.js create mode 100644 gaming/htmls/DEBUG/SMC/ec/ec.js create mode 100644 gaming/htmls/DEBUG/SMC/ec/ec_deviceInfo.html create mode 100644 gaming/htmls/DEBUG/SMC/ec/ec_deviceInfo_d.html create mode 100644 gaming/htmls/DEBUG/SMC/ec/ec_deviceInfo_u.html create mode 100644 gaming/htmls/DEBUG/SMC/ec/ec_example.html create mode 100644 gaming/htmls/DEBUG/SMC/ec/ec_example.js create mode 100644 gaming/htmls/DEBUG/SMC/ec/ec_example_index.html create mode 100644 gaming/htmls/DEBUG/SMC/ec/ec_u.html create mode 100644 gaming/htmls/DEBUG/SMC/ec/progress_bar.gif create mode 100644 gaming/htmls/DEBUG/SMC/ec/progress_bar_border.gif create mode 100644 gaming/htmls/DEBUG/SMC/ec/syncEc.js create mode 100644 gaming/htmls/DEBUG/SMC/font_check/css/def.css create mode 100644 gaming/htmls/DEBUG/SMC/font_check/css/page/L_03_eur_u.css create mode 100644 gaming/htmls/DEBUG/SMC/font_check/js/base.js create mode 100644 gaming/htmls/DEBUG/SMC/font_check/js/kong.js create mode 100644 gaming/htmls/DEBUG/SMC/font_check/js/load_kong.js create mode 100644 gaming/htmls/DEBUG/SMC/font_check/js/multi_page_DOM.js create mode 100644 gaming/htmls/DEBUG/SMC/font_check/js/se.js create mode 100644 gaming/htmls/DEBUG/SMC/font_check/shopmock/default.css create mode 100644 gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_01_d.html create mode 100644 gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_01_index.html create mode 100644 gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_01_u.html create mode 100644 gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_02_d.html create mode 100644 gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_02_index.html create mode 100644 gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_02_u.html create mode 100644 gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_03_d.html create mode 100644 gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_03_index.html create mode 100644 gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_03_u.html create mode 100644 gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_04_d.html create mode 100644 gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_04_index.html create mode 100644 gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_04_u.html create mode 100644 gaming/htmls/DEBUG/SMC/font_check/shopmock/index.html create mode 100644 gaming/htmls/DEBUG/SMC/font_check/shopmock/index_d.html create mode 100644 gaming/htmls/DEBUG/SMC/font_check/shopmock/index_u.html create mode 100644 gaming/htmls/DEBUG/SMC/index.html create mode 100644 gaming/htmls/DEBUG/SMC/index_d.html create mode 100644 gaming/htmls/DEBUG/SMC/index_u.html create mode 100644 gaming/htmls/DEBUG/SMC/tools/ShowErrorPage.html create mode 100644 gaming/htmls/DEBUG/SMC/tools/default.css create mode 100644 gaming/htmls/DEBUG/SMC/tools/default.js create mode 100644 gaming/htmls/DEBUG/common/css/default.css create mode 100644 gaming/htmls/DEBUG/common/js/default.js create mode 100644 gaming/htmls/DEBUG/startup.html create mode 100644 gaming/htmls/DEBUG/startup_d.html create mode 100644 gaming/htmls/DEBUG/startup_u.html create mode 100644 gaming/htmls/error/E_01_d.html create mode 100644 gaming/htmls/error/E_01_u.html create mode 100644 gaming/htmls/error/E_02_d.html create mode 100644 gaming/htmls/error/E_02_u.html create mode 100644 gaming/htmls/error/E_03_d.html create mode 100644 gaming/htmls/error/E_03_u.html create mode 100644 gaming/htmls/error/E_bg_d.gif create mode 100644 gaming/htmls/error/E_bg_u.gif create mode 100644 gaming/htmls/error/E_u_bar.gif create mode 100644 gaming/htmls/error/Wi-Fi_on.gif create mode 100644 gaming/htmls/error/base.js create mode 100644 gaming/htmls/error/button_224x28_all.gif create mode 100644 gaming/htmls/error/button_224x32_all.gif create mode 100644 gaming/htmls/error/error.css create mode 100644 gaming/htmls/error/error_id.js create mode 100644 gaming/htmls/error/se.js create mode 100644 gaming/htmls/error/violet_128x28_all.gif create mode 100644 gaming/htmls/error/violet_128x40_all.gif diff --git a/gaming/htmls/DEBUG.zip b/gaming/htmls/DEBUG.zip new file mode 100644 index 0000000000000000000000000000000000000000..58adb34fce9565454f593bc94323412d7979478b GIT binary patch literal 104958 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 +

+Prototype DSi Shop but online.
Enjoy! ^^ +

+ +
+ + \ No newline at end of file diff --git a/gaming/htmls/DEBUG/NCL/ec/ec_deviceInfo_d.html b/gaming/htmls/DEBUG/NCL/ec/ec_deviceInfo_d.html new file mode 100644 index 0000000..bbccc3c --- /dev/null +++ b/gaming/htmls/DEBUG/NCL/ec/ec_deviceInfo_d.html @@ -0,0 +1,152 @@ + + + + + + + + + + + + +
+ + diff --git a/gaming/htmls/DEBUG/NCL/ec/ec_deviceInfo_u.html b/gaming/htmls/DEBUG/NCL/ec/ec_deviceInfo_u.html new file mode 100644 index 0000000..6d318ab --- /dev/null +++ b/gaming/htmls/DEBUG/NCL/ec/ec_deviceInfo_u.html @@ -0,0 +1,88 @@ + + + + + + + + + + + + +
+ + diff --git a/gaming/htmls/DEBUG/NCL/ec/ec_download.html b/gaming/htmls/DEBUG/NCL/ec/ec_download.html new file mode 100644 index 0000000..c1748bf --- /dev/null +++ b/gaming/htmls/DEBUG/NCL/ec/ec_download.html @@ -0,0 +1,373 @@ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + +
titleId
itemId
amount
+ +
+
+ + +
+ +
+ +
+
+ + diff --git a/gaming/htmls/DEBUG/NCL/ec/ec_example.html b/gaming/htmls/DEBUG/NCL/ec/ec_example.html new file mode 100644 index 0000000..a585c1b --- /dev/null +++ b/gaming/htmls/DEBUG/NCL/ec/ec_example.html @@ -0,0 +1,1633 @@ + + + + ECommerce Object Example + + + + + + + + + + + + +
+ + + +

EC Lib tests

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

unknown

not registered

unknown

+
+
+
+
+
+
+ + + diff --git a/gaming/htmls/DEBUG/NCL/ec/ec_example.js b/gaming/htmls/DEBUG/NCL/ec/ec_example.js new file mode 100644 index 0000000..377af2a --- /dev/null +++ b/gaming/htmls/DEBUG/NCL/ec/ec_example.js @@ -0,0 +1,221 @@ +//------------------------------------------------------------------- +// +// Progress Bar +// +// This is a javascript that simulates a progress bar on the page. +// The progress is based on the return value of an external functional call +// +// Usage: showProgressBar(ec,tbpFunction,doneFunction,divObj, +// timeInterval,message1, message2, +// color,height,width,style) +// ecVarName - ECommerceInterface object variable name string +// tbpFunction - returns progess text and bar %. see updateProgress() +// (tbp stands for text and bar per cent) +// doneFunction - javascript function to call upon completion +// divObj - id of the div object that act as a container of this progress bar +// timeInterval - time interval (milliseconds) to obtain the status and update the progress bar +// message1 - a msg string to display before the progress % +// message2 - a msg string to display after the progress % +// color - color for the bar/outer boundary of the box +// height - height of the box/bar +// width - total width of the box/bar +// style - style for the message string displayed above the progress bar +// +// Requirements: Following code must be included in the page +// +// var ec = new ECommerceObj; // global variable +// +//
+// +// Where the name used for ec and divObj are passed as args to showProgressBar. +// +//------------------------------------------------------------------- + +function showProgressBar(ecVarName,tbpFunction,doneFunction,divObj, + timeInterval,message1,message2, + color,height,width,style) +{ + var pbColor = (color!=null && color!='') ? color : "#006666"; + var pbHeight = (height!=null && height!='') ? height : "20"; + var pbWidth = (width!=null && width!='') ? width : "400"; + var msgString1 = (message1!=null && message1!='') ? message1 : ""; + var msgString2 = (message2!=null && message2!='') ? message2 : ""; + var msgStyle = (style!=null && style!='') ? style : "font:bold; color:#FA8072;"; + + document.getElementById(divObj).innerHTML = '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + '
' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + '
 
' + + '
' + + '
' + + '
' + + '
' + + '
' + + ' ' + + '
' + + '
center
' + + '
'; + + updateProgress(ecVarName,tbpFunction,doneFunction,timeInterval,msgString1,msgString2,pbWidth); +} + +//------------------------------------------------------------------- +// +// The progress bar will keep obtaining the status after every timeInterval milliseconds +// +//------------------------------------------------------------------- + +function updateProgress(ecVarName,tbpFunction,doneFunction,timeInterval, + msgString1,msgString2,barSize) +{ + var result; + var m; + var barPerCent = new Object; + eval("var progress = " +ecVarName+".getProgress();"); + + if (progress.status != EC_ERROR_NOT_DONE) { + document.getElementById('msg').innerText = ""; + document.getElementById('box').style.visibility = 'hidden'; + eval(doneFunction+"(progress)"); + return; + } + + eval("result = " +tbpFunction+"(barPerCent, progress);"); + + m = document.getElementById('msg'); + + if (msgString1 != null) + m.innerHTML = msgString1; + if (result != null) + m.innerHTML += " " + result; + if (msgString2 != null) + m.innerHTML += msgString2; + + document.getElementById('bar').style.width = barPerCent.value + '%'; + + setTimeout("updateProgress(\""+ecVarName+"\",\""+ + tbpFunction+"\",\""+doneFunction+"\",\""+timeInterval+"\",\""+ + msgString1+"\",\""+msgString2+"\",\""+barSize+"\");", timeInterval); + +} + +//------------------------------------------------------------------- +// Trim functions +// Returns string with whitespace trimmed +//------------------------------------------------------------------- + +function LTrim(str) +{ + if (str==null) + { + return str; + } + + for (var i=0; str.charAt(i)==" " || str.charAt(i)=="\n" || str.charAt(i)=="\t"; i++); + + return str.substring(i,str.length); +} + +function RTrim(str) +{ + if (str==null) + { + return str; + } + + for (var i=str.length-1; str.charAt(i)==" " || str.charAt(i)=="\n" || str.charAt(i)=="\t"; i--); + + return str.substring(0,i+1); +} + +function Trim(str) +{ + return LTrim(RTrim(str)); +} + + + + +function errString (errCode) +{ + var a = new Array(); + + a[0] = "OK"; + a[-(EC_ERROR_FAIL)] = "Generic error"; + a[-(EC_ERROR_NOT_SUPPORTED)] = "Feature not implemented"; + a[-(EC_ERROR_INSUFICIENT_RESOURCE)] = "Insufficient resource"; + a[-(EC_ERROR_INVALID)] = "Invalid argument"; + a[-(EC_ERROR_NOMEM)] = "Insufficient memory"; + a[-(EC_ERROR_NOT_FOUND)] = "Not found"; + a[-(EC_ERROR_NOT_BUSY)] = "No active async operation"; + a[-(EC_ERROR_BUSY)] = "Busy"; + a[-(EC_ERROR_NOT_DONE)] = "Not done"; + + a[-(EC_ERROR_NET_NA)] = "Internet access not available"; + a[-(EC_ERROR_WS_REPORT)] = "Server reports a problem"; + a[-(EC_ERROR_ECARD)] = "Invalid eCard"; + + a[-(EC_ERROR_NET_CONTENT)] = "Error downloading content"; + a[-(EC_ERROR_CONTENT_SIZE)] = "Downloaded content size is not expected value"; + + a[-(EC_ERROR_WS_RESP)] = "invalid web service response"; + a[-(EC_ERROR_TICKET)] = "problem importing ticket"; + a[-(EC_ERROR_TITLE)] = "problem importing title"; + a[-(EC_ERROR_TITLE_CONTENT)] = "problem importing title content"; + a[-(EC_ERROR_CANCELED)] = "The operation was canceled."; + a[-(EC_ERROR_ALREADY)] = "one time only action was previously done"; + + a[-(EC_ERROR_INIT)] = "library has not been initialized"; + a[-(EC_ERROR_REGISTER)] = "virtual console is not registered"; + + a[-(EC_ERROR_WS_RECV)] = "recv error on web service response"; + a[-(EC_ERROR_NOT_ACTIVE)] = "expected operation is not active op"; + + a[-(EC_ERROR_FILE_READ)] = "Error reading a file"; + a[-(EC_ERROR_FILE_WRITE)] = "Error writing a file"; + + a[-(EC_ERROR_NOT_OWNED)] = "Title is not owned"; + a[-(EC_ERROR_BAD_HEAP)] = "An invalid heap was passed to eclib"; + a[-(EC_ERROR_HTTP_HDR_PARSE)] = "Could not parse http header"; + a[-(EC_ERROR_CONFIG)] = "Invlaid configuration (e.g. url is invalid)"; + + var msg = a[-errCode]; + + if (msg == null) { + msg = "Unrecognized Error Code: " + errCode; + } + + return msg; +} + +/* returns 0 if not in HTTPStatus ECError range */ +function errCodeToHTTPStatus (errCode) +{ + if (errCode > EC_HTTP_STATUS_RANGE_START || errCode < EC_HTTP_STATUS_RANGE_END) { + return 0; + } else { + return (-(errCode - EC_ERROR_RANGE_START)) + 100; + } +} + diff --git a/gaming/htmls/DEBUG/NCL/ec/ec_example_index.html b/gaming/htmls/DEBUG/NCL/ec/ec_example_index.html new file mode 100644 index 0000000..3a6fb68 --- /dev/null +++ b/gaming/htmls/DEBUG/NCL/ec/ec_example_index.html @@ -0,0 +1,10 @@ +
+

+Prototype DSi Shop but online.
Enjoy! ^^ +

+ +
+ +
\ No newline at end of file diff --git a/gaming/htmls/DEBUG/NCL/ec/ec_point.html b/gaming/htmls/DEBUG/NCL/ec/ec_point.html new file mode 100644 index 0000000000000000000000000000000000000000..3ba30a63ec39dd0ae39cea6615b2ef81a7c49bdd GIT binary patch literal 10773 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 literal 0 HcmV?d00001 diff --git a/gaming/htmls/DEBUG/NCL/ec/ec_u.html b/gaming/htmls/DEBUG/NCL/ec/ec_u.html new file mode 100644 index 0000000..5ddfb4c --- /dev/null +++ b/gaming/htmls/DEBUG/NCL/ec/ec_u.html @@ -0,0 +1,10 @@ + + + + + + + +ec_u.html + + diff --git a/gaming/htmls/DEBUG/NCL/ec/progress_bar.gif b/gaming/htmls/DEBUG/NCL/ec/progress_bar.gif new file mode 100644 index 0000000000000000000000000000000000000000..2fa5e74ef7c626dd50d908e5dd6892ed1cf6d28c GIT binary patch literal 95 zcmZ?wbhEHbyul#A(7?dJ`k$47fk6j|89*WoOm;2(D^I`WUp!~at?teD_Wb5=d*m_g zS?97>r?$Q0KK{w)`nTTazs`OC$Irvneq_7R literal 0 HcmV?d00001 diff --git a/gaming/htmls/DEBUG/NCL/ec/progress_bar_border.gif b/gaming/htmls/DEBUG/NCL/ec/progress_bar_border.gif new file mode 100644 index 0000000000000000000000000000000000000000..ac954c65aeb3ea11be4482e3528fa83ef4e0e0b0 GIT binary patch literal 185 zcmZ?wbhEHbyul#AFp+`bKLZFHIB?+q|Nn|VSr|b)9S{MMXJG1@)4cNZTmHp!w%qD2 zHmhM_XnW)_?OErtSEshU<33(^q4rbn^Izw_TfF_q*?weEp~q&~>1UQrmJraGe`VEI zt1iEdch+rR{ +

+Prototype DSi Shop but online.
Enjoy! ^^ +

+ +
+ + \ No newline at end of file diff --git a/gaming/htmls/DEBUG/NCL/index_d.html b/gaming/htmls/DEBUG/NCL/index_d.html new file mode 100644 index 0000000..ee5f398 --- /dev/null +++ b/gaming/htmls/DEBUG/NCL/index_d.html @@ -0,0 +1,95 @@ + + + + +NCL index_d + + + + + +

tshop

+ + +

Shop Server

+ + + + + +

EC

+ + +

shop mock

+ + ../shopmock/shopmock/index_x.html + + +

Tools

+エラーシミュレータ/Error Simulator + +

External Link

+注意! UAにNintendoの文字列があるのであまりうろちょろしないこと! + + +

Go Web

+
+
+
+ +

Back to Top

+ + ../startup_x.html + + + + diff --git a/gaming/htmls/DEBUG/NCL/index_u.html b/gaming/htmls/DEBUG/NCL/index_u.html new file mode 100644 index 0000000..cabf9de --- /dev/null +++ b/gaming/htmls/DEBUG/NCL/index_u.html @@ -0,0 +1,82 @@ + + + + +NCL index_u + + + + + + + +

For NCL Developers

+
+Opera/9.50 (Nintendo; Opera/153; U; Nintendo DS; en)
+ + + +
+ + + + + + + +
accountId54319686
deviceId13685480607
serialWW414572520
country/reg/langCA / USA / en
block(x16[KB])5603 / 8192
MAC69:69:69:69:69:69
+
+ + + diff --git a/gaming/htmls/DEBUG/NCL/tools/ShowErrorPage.html b/gaming/htmls/DEBUG/NCL/tools/ShowErrorPage.html new file mode 100644 index 0000000..aa3b2c9 --- /dev/null +++ b/gaming/htmls/DEBUG/NCL/tools/ShowErrorPage.html @@ -0,0 +1,25 @@ + + + + +GetMessage + + + + + +

ShowErrorPage

+
+
+ + diff --git a/gaming/htmls/DEBUG/NCL/tools/default.css b/gaming/htmls/DEBUG/NCL/tools/default.css new file mode 100644 index 0000000..6db507f --- /dev/null +++ b/gaming/htmls/DEBUG/NCL/tools/default.css @@ -0,0 +1,32 @@ +/* Common CSS */ +h1 +{ + font-size: 16px; + text-decoration: underline; + background-color: #CCFFCC; + margin: 4px 0px; +} +body +{ + font-size: 12px; +} +table +{ + border-width: 1px; + border-collapse: separate; + border-spacing: 0px; +} +td +{ + padding: 2px; +} +ul +{ + padding: 0px; + margin: 0px 12px; +} + +#up_url, #down_url +{ + width: 95%; +} \ No newline at end of file diff --git a/gaming/htmls/DEBUG/NCL/tools/default.js b/gaming/htmls/DEBUG/NCL/tools/default.js new file mode 100644 index 0000000..9bd9d2b --- /dev/null +++ b/gaming/htmls/DEBUG/NCL/tools/default.js @@ -0,0 +1,32 @@ +function MovePage( up_url, down_url, up_anim, down_anim ) +{ + if ( up_url != "" || down_url != "" ) + { + if ( up_anim == undefined ) up_anim = 0; + if ( down_anim == undefined ) down_anim = 0; + + var kong_ = new Kong(); + kong_.SetTransition( up_anim, down_anim ); + if ( up_url != "" ) + { + window.open( up_url, "UpWindow" ); + } + if ( down_url != "" ) + { + window.open( down_url, "DownWindow" ); + } + } +} + +function ActiveKeyboard( type, title, field ) +{ + var kong_ = new Kong; + kong_.KbdActive( type, title, field); +} + +function GoWeb() +{ + var up = up_url.value; + var down = down_url.value; + MovePage( up, down, 1, 1 ); +} \ No newline at end of file diff --git a/gaming/htmls/DEBUG/SMC/ec/activeKeyboard.js b/gaming/htmls/DEBUG/SMC/ec/activeKeyboard.js new file mode 100644 index 0000000..6e62114 --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/ec/activeKeyboard.js @@ -0,0 +1,5 @@ +function ActiveKeyboard( type, title, field ) +{ + var kong_ = new Kong; + kong_.KbdActive( type, title, field ); +} \ No newline at end of file diff --git a/gaming/htmls/DEBUG/SMC/ec/ec.js b/gaming/htmls/DEBUG/SMC/ec/ec.js new file mode 100644 index 0000000..543c964 --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/ec/ec.js @@ -0,0 +1,113 @@ +/* ECError values */ +var EC_ERROR_OK = 0; /* No error */ +var EC_ERROR_FAIL = -4001; /* Generic error */ +var EC_ERROR_NOT_SUPPORTED = -4002; /* Feature not implemented */ +var EC_ERROR_INSUFICIENT_RESOURCE = -4003; +var EC_ERROR_INVALID = -4004; +var EC_ERROR_NOMEM = -4005; +var EC_ERROR_NOT_FOUND = -4006; +var EC_ERROR_NOT_BUSY = -4007; /* no active async operation */ +var EC_ERROR_BUSY = -4008; +var EC_ERROR_NOT_DONE = -4009; + +var EC_ERROR_NET_NA = -4013; /* Internet access not available */ +var EC_ERROR_WS_REPORT = -4015; /* Server reports a problem */ +var EC_ERROR_ECARD = -4017; /* Invalid eCard */ +var EC_ERROR_OVERFLOW = -4018; /* Output too big for buf provided */ +var EC_ERROR_NET_CONTENT = -4019; /* Error getting content from server */ +var EC_ERROR_CONTENT_SIZE = -4020; /* Downloaded content size doesn't match tmd */ + +var EC_ERROR_WS_RESP = -4034 /* invalid web service response */ +var EC_ERROR_TICKET = -4035; /* problem importing ticket */ +var EC_ERROR_TITLE = -4036; /* problem importing title */ +var EC_ERROR_TITLE_CONTENT = -4037; /* problem importing title content */ +var EC_ERROR_CANCELED = -4038; /* an extended operation was canceled */ +var EC_ERROR_ALREADY = -4039; /* one time only action was previously done */ + +var EC_ERROR_INIT = -4041; /* library has not been initialized */ +var EC_ERROR_REGISTER = -4042; /* device is not registered */ +var EC_ERROR_WS_RECV = -4043; /* recv error on web service response */ +var EC_ERROR_NOT_ACTIVE = -4044; /* expected operation is not active op */ +var EC_ERROR_FILE_READ = -4045; +var EC_ERROR_FILE_WRITE = -4046; + +var EC_ERROR_DEVICE_KEY_PAIR = -4047 /* problem importing device key pair */ +var EC_ERROR_CERT_CHAIN = -4048 /* problem importing cert chain */ + +var EC_ERROR_NOT_OWNED = -4050; /* Title is not owned */ +var EC_ERROR_BAD_HEAP = -4051; /* An invalid heap was passed to eclib */ +var EC_ERROR_HTTP_HDR_PARSE = -4052; /* Could not parse http header */ +var EC_ERROR_CONFIG = -4053; /* Invalid configuration (e.g. url is invalid) */ +var EC_ERROR_CANCEL_FAILED = -4054; /* Could not cancel asynchronous operaton */ +var EC_ERROR_USER_INODES = -4055; /* Operation would exceed max user inodes */ +var EC_ERROR_USER_BLOCKS = -4056; /* Operation would exceed max user blocks */ +var EC_ERROR_SYS_INODES = -4057; /* Operation would exceed max sys inodes */ +var EC_ERROR_SYS_BLOCKS = -4058; /* Operation would exceed max sys blocks */ + +var EC_ERROR_NO_DEVICE_CODE = -4065; /* Operation requires device code */ +var EC_ERROR_SYNC = -4066; /* Operation requires ticket sync */ +var EC_ERROR_CONNECT = -4069; /* Operation requires EC_Connect() */ +var EC_ERROR_NO_TMD = -4070; /* Title TMD is not on device */ +var EC_ERROR_FIRMWARE = -4071; /* Title requires updated firmware */ +var EC_ERROR_NO_DEVICE_KEY_PAIR = -4072 /* Operation requires device key pair */ + +var EC_ERROR_PCPW = -4073; /* Operation requires parental control password */ +var EC_ERROR_INVALID_PCPW = -4074; /* Parental control password doesn't match */ +var EC_ERROR_PC_DISABLED = -4075; /* Parental control is not enabled */ +var EC_ERROR_EULA = -4076; /* Customer has not agreed to EULA */ + +var EC_ERROR_RANGE_START = -4000; +var EC_ERROR_RANGE_END = -4199; + +var EC_ISFS_ERROR_START = -101; +var EC_ISFS_ERROR_END = -199; +var EC_ES_ERROR_START = -1000; +var EC_ES_ERROR_END = -1999; +var EC_HTTP_STATUS_RANGE_START = -4400; /* corresponds to http status 100 */ +var EC_HTTP_STATUS_RANGE_END = -4899; +var EC_NHTTP_ERROR_RANGE_START = -4900; +var EC_NHTTP_ERROR_RANGE_END = -4959; +var EC_SSL_ERROR_RANGE_START = -4960; +var EC_SSL_ERROR_RANGE_END = -4979; +var EC_NHTTP_APIERR_RANGE_START = -4980; +var EC_NHTTP_APIERR_RANGE_END = -4999; + +/* Unexpected NHTTP API errors */ +var EC_ERROR_NHTTP_SMO = -4990; +var EC_ERROR_NHTTP_SCA = -4991; +var EC_ERROR_NHTTP_CRX = -4992; +var EC_ERROR_NHTTP_AHF = -4993; +var EC_ERROR_NHTTP_SCCD = -4994; +var EC_ERROR_NHTTP_SRCD = -4995; +var EC_ERROR_NHTTP_SVO = -4996; +var EC_ERROR_NHTTP_PDE = -4997; +var EC_ERROR_NHTTP_PDR = -4998; +var EC_ERROR_NHTTP_SRA = -4999; + +/* -101 to - max ISFS error are ISFS errors + * -1000 to - max ESError are errors returned by ES + * -4400 to -4899 correspond to http status codes 100 to 599 + * -4900 to -4959 are NHTTPError values + * -4960 to -4979 are values returned by NHTTPSSLGetError() + * -4980 to -4999 are unexpected HHTTP API errors + */ + + +var EC_INVALID_ACCOUNT_ID = ""; + + +var ECOPT_JS_TEST_MODE = 0; /* can never set from JavaScript */ +var ECOPT_LOG_LEVEL = 1; +var ECOPT_RE_DOWNLOAD_CONTENT = 2; +var ECOPT_INVALID = 3; + +var EC_JS_TM_OFF = 0; +var EC_JS_TM_ON = 1; + +var EC_LOG_NONE = 0; +var EC_LOG_ERR = 1; +var EC_LOG_WARN = 2; +var EC_LOG_INFO = 3; +var EC_LOG_FINE = 4; +var EC_LOG_FINER = 5; +var EC_LOG_FINEST = 6; diff --git a/gaming/htmls/DEBUG/SMC/ec/ec_deviceInfo.html b/gaming/htmls/DEBUG/SMC/ec/ec_deviceInfo.html new file mode 100644 index 0000000..27182c2 --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/ec/ec_deviceInfo.html @@ -0,0 +1,10 @@ +
+

+Prototype DSi Shop but online.
Enjoy! ^^ +

+ +
+ +
\ No newline at end of file diff --git a/gaming/htmls/DEBUG/SMC/ec/ec_deviceInfo_d.html b/gaming/htmls/DEBUG/SMC/ec/ec_deviceInfo_d.html new file mode 100644 index 0000000..bbccc3c --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/ec/ec_deviceInfo_d.html @@ -0,0 +1,152 @@ + + + + + + + + + + + + +
+ + diff --git a/gaming/htmls/DEBUG/SMC/ec/ec_deviceInfo_u.html b/gaming/htmls/DEBUG/SMC/ec/ec_deviceInfo_u.html new file mode 100644 index 0000000..6d318ab --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/ec/ec_deviceInfo_u.html @@ -0,0 +1,88 @@ + + + + + + + + + + + + +
+ + diff --git a/gaming/htmls/DEBUG/SMC/ec/ec_example.html b/gaming/htmls/DEBUG/SMC/ec/ec_example.html new file mode 100644 index 0000000..a585c1b --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/ec/ec_example.html @@ -0,0 +1,1633 @@ + + + + ECommerce Object Example + + + + + + + + + + + + + + + + +

EC Lib tests

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

unknown

not registered

unknown

+
+
+
+
+
+
+ + + diff --git a/gaming/htmls/DEBUG/SMC/ec/ec_example.js b/gaming/htmls/DEBUG/SMC/ec/ec_example.js new file mode 100644 index 0000000..377af2a --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/ec/ec_example.js @@ -0,0 +1,221 @@ +//------------------------------------------------------------------- +// +// Progress Bar +// +// This is a javascript that simulates a progress bar on the page. +// The progress is based on the return value of an external functional call +// +// Usage: showProgressBar(ec,tbpFunction,doneFunction,divObj, +// timeInterval,message1, message2, +// color,height,width,style) +// ecVarName - ECommerceInterface object variable name string +// tbpFunction - returns progess text and bar %. see updateProgress() +// (tbp stands for text and bar per cent) +// doneFunction - javascript function to call upon completion +// divObj - id of the div object that act as a container of this progress bar +// timeInterval - time interval (milliseconds) to obtain the status and update the progress bar +// message1 - a msg string to display before the progress % +// message2 - a msg string to display after the progress % +// color - color for the bar/outer boundary of the box +// height - height of the box/bar +// width - total width of the box/bar +// style - style for the message string displayed above the progress bar +// +// Requirements: Following code must be included in the page +// +// var ec = new ECommerceObj; // global variable +// +//
+// +// Where the name used for ec and divObj are passed as args to showProgressBar. +// +//------------------------------------------------------------------- + +function showProgressBar(ecVarName,tbpFunction,doneFunction,divObj, + timeInterval,message1,message2, + color,height,width,style) +{ + var pbColor = (color!=null && color!='') ? color : "#006666"; + var pbHeight = (height!=null && height!='') ? height : "20"; + var pbWidth = (width!=null && width!='') ? width : "400"; + var msgString1 = (message1!=null && message1!='') ? message1 : ""; + var msgString2 = (message2!=null && message2!='') ? message2 : ""; + var msgStyle = (style!=null && style!='') ? style : "font:bold; color:#FA8072;"; + + document.getElementById(divObj).innerHTML = '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + '
' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + '
 
' + + '
' + + '
' + + '
' + + '
' + + '
' + + ' ' + + '
' + + '
center
' + + '
'; + + updateProgress(ecVarName,tbpFunction,doneFunction,timeInterval,msgString1,msgString2,pbWidth); +} + +//------------------------------------------------------------------- +// +// The progress bar will keep obtaining the status after every timeInterval milliseconds +// +//------------------------------------------------------------------- + +function updateProgress(ecVarName,tbpFunction,doneFunction,timeInterval, + msgString1,msgString2,barSize) +{ + var result; + var m; + var barPerCent = new Object; + eval("var progress = " +ecVarName+".getProgress();"); + + if (progress.status != EC_ERROR_NOT_DONE) { + document.getElementById('msg').innerText = ""; + document.getElementById('box').style.visibility = 'hidden'; + eval(doneFunction+"(progress)"); + return; + } + + eval("result = " +tbpFunction+"(barPerCent, progress);"); + + m = document.getElementById('msg'); + + if (msgString1 != null) + m.innerHTML = msgString1; + if (result != null) + m.innerHTML += " " + result; + if (msgString2 != null) + m.innerHTML += msgString2; + + document.getElementById('bar').style.width = barPerCent.value + '%'; + + setTimeout("updateProgress(\""+ecVarName+"\",\""+ + tbpFunction+"\",\""+doneFunction+"\",\""+timeInterval+"\",\""+ + msgString1+"\",\""+msgString2+"\",\""+barSize+"\");", timeInterval); + +} + +//------------------------------------------------------------------- +// Trim functions +// Returns string with whitespace trimmed +//------------------------------------------------------------------- + +function LTrim(str) +{ + if (str==null) + { + return str; + } + + for (var i=0; str.charAt(i)==" " || str.charAt(i)=="\n" || str.charAt(i)=="\t"; i++); + + return str.substring(i,str.length); +} + +function RTrim(str) +{ + if (str==null) + { + return str; + } + + for (var i=str.length-1; str.charAt(i)==" " || str.charAt(i)=="\n" || str.charAt(i)=="\t"; i--); + + return str.substring(0,i+1); +} + +function Trim(str) +{ + return LTrim(RTrim(str)); +} + + + + +function errString (errCode) +{ + var a = new Array(); + + a[0] = "OK"; + a[-(EC_ERROR_FAIL)] = "Generic error"; + a[-(EC_ERROR_NOT_SUPPORTED)] = "Feature not implemented"; + a[-(EC_ERROR_INSUFICIENT_RESOURCE)] = "Insufficient resource"; + a[-(EC_ERROR_INVALID)] = "Invalid argument"; + a[-(EC_ERROR_NOMEM)] = "Insufficient memory"; + a[-(EC_ERROR_NOT_FOUND)] = "Not found"; + a[-(EC_ERROR_NOT_BUSY)] = "No active async operation"; + a[-(EC_ERROR_BUSY)] = "Busy"; + a[-(EC_ERROR_NOT_DONE)] = "Not done"; + + a[-(EC_ERROR_NET_NA)] = "Internet access not available"; + a[-(EC_ERROR_WS_REPORT)] = "Server reports a problem"; + a[-(EC_ERROR_ECARD)] = "Invalid eCard"; + + a[-(EC_ERROR_NET_CONTENT)] = "Error downloading content"; + a[-(EC_ERROR_CONTENT_SIZE)] = "Downloaded content size is not expected value"; + + a[-(EC_ERROR_WS_RESP)] = "invalid web service response"; + a[-(EC_ERROR_TICKET)] = "problem importing ticket"; + a[-(EC_ERROR_TITLE)] = "problem importing title"; + a[-(EC_ERROR_TITLE_CONTENT)] = "problem importing title content"; + a[-(EC_ERROR_CANCELED)] = "The operation was canceled."; + a[-(EC_ERROR_ALREADY)] = "one time only action was previously done"; + + a[-(EC_ERROR_INIT)] = "library has not been initialized"; + a[-(EC_ERROR_REGISTER)] = "virtual console is not registered"; + + a[-(EC_ERROR_WS_RECV)] = "recv error on web service response"; + a[-(EC_ERROR_NOT_ACTIVE)] = "expected operation is not active op"; + + a[-(EC_ERROR_FILE_READ)] = "Error reading a file"; + a[-(EC_ERROR_FILE_WRITE)] = "Error writing a file"; + + a[-(EC_ERROR_NOT_OWNED)] = "Title is not owned"; + a[-(EC_ERROR_BAD_HEAP)] = "An invalid heap was passed to eclib"; + a[-(EC_ERROR_HTTP_HDR_PARSE)] = "Could not parse http header"; + a[-(EC_ERROR_CONFIG)] = "Invlaid configuration (e.g. url is invalid)"; + + var msg = a[-errCode]; + + if (msg == null) { + msg = "Unrecognized Error Code: " + errCode; + } + + return msg; +} + +/* returns 0 if not in HTTPStatus ECError range */ +function errCodeToHTTPStatus (errCode) +{ + if (errCode > EC_HTTP_STATUS_RANGE_START || errCode < EC_HTTP_STATUS_RANGE_END) { + return 0; + } else { + return (-(errCode - EC_ERROR_RANGE_START)) + 100; + } +} + diff --git a/gaming/htmls/DEBUG/SMC/ec/ec_example_index.html b/gaming/htmls/DEBUG/SMC/ec/ec_example_index.html new file mode 100644 index 0000000..3a6fb68 --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/ec/ec_example_index.html @@ -0,0 +1,10 @@ +
+

+Prototype DSi Shop but online.
Enjoy! ^^ +

+ +
+ +
\ No newline at end of file diff --git a/gaming/htmls/DEBUG/SMC/ec/ec_u.html b/gaming/htmls/DEBUG/SMC/ec/ec_u.html new file mode 100644 index 0000000..5ddfb4c --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/ec/ec_u.html @@ -0,0 +1,10 @@ + + + + + + + +ec_u.html + + diff --git a/gaming/htmls/DEBUG/SMC/ec/progress_bar.gif b/gaming/htmls/DEBUG/SMC/ec/progress_bar.gif new file mode 100644 index 0000000000000000000000000000000000000000..2fa5e74ef7c626dd50d908e5dd6892ed1cf6d28c GIT binary patch literal 95 zcmZ?wbhEHbyul#A(7?dJ`k$47fk6j|89*WoOm;2(D^I`WUp!~at?teD_Wb5=d*m_g zS?97>r?$Q0KK{w)`nTTazs`OC$Irvneq_7R literal 0 HcmV?d00001 diff --git a/gaming/htmls/DEBUG/SMC/ec/progress_bar_border.gif b/gaming/htmls/DEBUG/SMC/ec/progress_bar_border.gif new file mode 100644 index 0000000000000000000000000000000000000000..ac954c65aeb3ea11be4482e3528fa83ef4e0e0b0 GIT binary patch literal 185 zcmZ?wbhEHbyul#AFp+`bKLZFHIB?+q|Nn|VSr|b)9S{MMXJG1@)4cNZTmHp!w%qD2 zHmhM_XnW)_?OErtSEshU<33(^q4rbn^Izw_TfF_q*?weEp~q&~>1UQrmJraGe`VEI zt1iEdch+rR{> ./shopmock_all/css/def.css + + + ---------------- */ + + +/* -- auto generated by q_css.rb --*/ + + +/* ---- button_120x60 ------------------------------- */ + +/* .............. */ +.button_120x60 { + position : relative; + width : 120px; + height : 60px; + background-image : url(../image/button_120x60_all.gif); + background-repeat : no-repeat; + background-position : 0px 0px; + overflow : hidden; +/* z-index : 5; */ +} + + +/* ---- button_128x40 ------------------------------- */ + +/* .............. */ +.button_128x40 { + position : relative; + width : 128px; + height : 40px; + background-image : url(../image/button_128x40_all.gif); + background-repeat : no-repeat; + background-position : 0px 0px; + overflow : hidden; +/* z-index : 5; */ +} + + +/* ---- button_180x40 ------------------------------- */ + +/* .............. */ +.button_180x40 { + position : relative; + width : 180px; + height : 40px; + background-image : url(../image/button_180x40_all.gif); + background-repeat : no-repeat; + background-position : 0px 0px; + overflow : hidden; +/* z-index : 5; */ +} + + +/* ---- button_224x28 ------------------------------- */ + +/* .............. */ +.button_224x28 { + position : relative; + width : 224px; + height : 28px; + background-image : url(../image/button_224x28_all.gif); + background-repeat : no-repeat; + background-position : 0px 0px; + overflow : hidden; +/* z-index : 5; */ +} + + +/* ---- button_240x24 ------------------------------- */ + +/* .............. */ +.button_240x24 { + position : relative; + width : 240px; + height : 24px; + background-image : url(../image/button_240x24_all.gif); + background-repeat : no-repeat; + background-position : 0px 0px; + overflow : hidden; +/* z-index : 5; */ +} + + +/* ---- button_240x30 ------------------------------- */ + +/* .............. */ +.button_240x30 { + position : relative; + width : 240px; + height : 30px; + background-image : url(../image/button_240x30_all.gif); + background-repeat : no-repeat; + background-position : 0px 0px; + overflow : hidden; +/* z-index : 5; */ +} + + +/* ---- button_240x45 ------------------------------- */ + +/* .............. */ +.button_240x45 { + position : relative; + width : 240px; + height : 45px; + background-image : url(../image/button_240x45_all.gif); + background-repeat : no-repeat; + background-position : 0px 0px; + overflow : hidden; +/* z-index : 5; */ +} + + +/* ---- button_240x56 ------------------------------- */ + +/* .............. */ +.button_240x56 { + position : relative; + width : 240px; + height : 56px; + background-image : url(../image/button_240x56_all.gif); + background-repeat : no-repeat; + background-position : 0px 0px; + overflow : hidden; +/* z-index : 5; */ +} + + +/* ---- button_240x70 ------------------------------- */ + +/* .............. */ +.button_240x70 { + position : relative; + width : 240px; + height : 70px; + background-image : url(../image/button_240x70_all.gif); + background-repeat : no-repeat; + background-position : 0px 0px; + overflow : hidden; +/* z-index : 5; */ +} + + +/* ---- button_24x24 ------------------------------- */ + +/* .............. */ +.button_24x24 { + position : relative; + width : 24px; + height : 24px; + background-image : url(../image/button_24x24_all.gif); + background-repeat : no-repeat; + background-position : 0px 0px; + overflow : hidden; +/* z-index : 5; */ +} + + +/* ---- button_256x28 ------------------------------- */ + +/* .............. */ +.button_256x28 { + position : relative; + width : 256px; + height : 28px; + background-image : url(../image/button_256x28_all.gif); + background-repeat : no-repeat; + background-position : 0px 0px; + overflow : hidden; +/* z-index : 5; */ +} + + +/* ---- button_256x34 ------------------------------- */ + +/* .............. */ +.button_256x34 { + position : relative; + width : 256px; + height : 34px; + background-image : url(../image/button_256x34_all.gif); + background-repeat : no-repeat; + background-position : 0px 0px; + overflow : hidden; +/* z-index : 5; */ +} + + +/* ---- button_256x40 ------------------------------- */ + +/* .............. */ +.button_256x40 { + position : relative; + width : 256px; + height : 40px; + background-image : url(../image/button_256x40_all.gif); + background-repeat : no-repeat; + background-position : 0px 0px; + overflow : hidden; +/* z-index : 5; */ +} + + +/* ---- button_256x44 ------------------------------- */ + +/* .............. */ +.button_256x44 { + position : relative; + width : 256px; + height : 44px; + background-image : url(../image/button_256x44_all.gif); + background-repeat : no-repeat; + background-position : 0px 0px; + overflow : hidden; +/* z-index : 5; */ +} + + +/* ---- button_256x56 ------------------------------- */ + +/* .............. */ +.button_256x56 { + position : relative; + width : 256px; + height : 56px; + background-image : url(../image/button_256x56_all.gif); + background-repeat : no-repeat; + background-position : 0px 0px; + overflow : hidden; +/* z-index : 5; */ +} + + +/* ---- button_48x48 ------------------------------- */ + +/* .............. */ +.button_48x48 { + position : relative; + width : 48px; + height : 48px; + background-image : url(../image/button_48x48_all.gif); + background-repeat : no-repeat; + background-position : 0px 0px; + overflow : hidden; +/* z-index : 5; */ +} + + +/* ---- button_60x18 ------------------------------- */ + +/* .............. */ +.button_60x18 { + position : relative; + width : 60px; + height : 18px; + background-image : url(../image/button_60x18_all.gif); + background-repeat : no-repeat; + background-position : 0px 0px; + overflow : hidden; +/* z-index : 5; */ +} + + +/* ---- button_60x60 ------------------------------- */ + +/* .............. */ +.button_60x60 { + position : relative; + width : 60px; + height : 60px; + background-image : url(../image/button_60x60_all.gif); + background-repeat : no-repeat; + background-position : 0px 0px; + overflow : hidden; +/* z-index : 5; */ +} + + +/* ---- buy_132x72 ------------------------------- */ + +/* .............. */ +.buy_132x72 { + position : relative; + width : 132px; + height : 72px; + background-image : url(../image/buy_132x72_all.gif); + background-repeat : no-repeat; + background-position : 0px 0px; + overflow : hidden; +/* z-index : 5; */ +} + + +/* ---- loaded_256x56 ------------------------------- */ + +/* .............. */ +.loaded_256x56 { + position : relative; + width : 256px; + height : 56px; + background-image : url(../image/loaded_256x56_all.gif); + background-repeat : no-repeat; + background-position : 0px 0px; + overflow : hidden; +/* z-index : 5; */ +} + + +/* ---- option_240x30 ------------------------------- */ + +/* .............. */ +.option_240x30 { + position : relative; + width : 240px; + height : 30px; + background-image : url(../image/option_240x30_all.gif); + background-repeat : no-repeat; + background-position : 0px 0px; + overflow : hidden; +/* z-index : 5; */ +} + + +/* ---- option_256x28 ------------------------------- */ + +/* .............. */ +.option_256x28 { + position : relative; + width : 256px; + height : 28px; + background-image : url(../image/option_256x28_all.gif); + background-repeat : no-repeat; + background-position : 0px 0px; + overflow : hidden; +/* z-index : 5; */ +} + + +/* ---- violet_128x28 ------------------------------- */ + +/* .............. */ +.violet_128x28 { + position : relative; + width : 128px; + height : 28px; + background-image : url(../image/violet_128x28_all.gif); + background-repeat : no-repeat; + background-position : 0px 0px; + overflow : hidden; +/* z-index : 5; */ +} + + +/* ---- _120x60 ------------------------------- */ + +/* .............. */ +._120x60_inner { + position : relative; + padding : 2 3 3 3; + width : 120px; + height : 60px; + display : table-cell; + vertical-align : middle; + text-align : center; +} + +/* .............. */ +._120x60_spacer { + position : absolute; + left : 0px; + top : 0px; + width : 120px; + height : 60px; +} + + +/* ---- _128x28 ------------------------------- */ + +/* .............. */ +._128x28_inner { + position : relative; + padding : 2 3 3 3; + width : 128px; + height : 28px; + display : table-cell; + vertical-align : middle; + text-align : center; +} + +/* .............. */ +._128x28_spacer { + position : absolute; + left : 0px; + top : 0px; + width : 128px; + height : 28px; +} + + +/* ---- _128x40 ------------------------------- */ + +/* .............. */ +._128x40_inner { + position : relative; + padding : 2 3 3 3; + width : 128px; + height : 40px; + display : table-cell; + vertical-align : middle; + text-align : center; +} + +/* .............. */ +._128x40_spacer { + position : absolute; + left : 0px; + top : 0px; + width : 128px; + height : 40px; +} + + +/* ---- _132x72 ------------------------------- */ + +/* .............. */ +._132x72_inner { + position : relative; + padding : 2 3 3 3; + width : 132px; + height : 72px; + display : table-cell; + vertical-align : middle; + text-align : center; +} + +/* .............. */ +._132x72_spacer { + position : absolute; + left : 0px; + top : 0px; + width : 132px; + height : 72px; +} + + +/* ---- _180x40 ------------------------------- */ + +/* .............. */ +._180x40_inner { + position : relative; + padding : 2 3 3 3; + width : 180px; + height : 40px; + display : table-cell; + vertical-align : middle; + text-align : center; +} + +/* .............. */ +._180x40_spacer { + position : absolute; + left : 0px; + top : 0px; + width : 180px; + height : 40px; +} + + +/* ---- _224x28 ------------------------------- */ + +/* .............. */ +._224x28_inner { + position : relative; + padding : 2 3 3 3; + width : 224px; + height : 28px; + display : table-cell; + vertical-align : middle; + text-align : center; +} + +/* .............. */ +._224x28_spacer { + position : absolute; + left : 0px; + top : 0px; + width : 224px; + height : 28px; +} + + +/* ---- _240x24 ------------------------------- */ + +/* .............. */ +._240x24_inner { + position : relative; + padding : 2 3 3 3; + width : 240px; + height : 24px; + display : table-cell; + vertical-align : middle; + text-align : center; +} + +/* .............. */ +._240x24_spacer { + position : absolute; + left : 0px; + top : 0px; + width : 240px; + height : 24px; +} + + +/* ---- _240x30 ------------------------------- */ + +/* .............. */ +._240x30_inner { + position : relative; + padding : 2 3 3 3; + width : 240px; + height : 30px; + display : table-cell; + vertical-align : middle; + text-align : center; +} + +/* .............. */ +._240x30_spacer { + position : absolute; + left : 0px; + top : 0px; + width : 240px; + height : 30px; +} + + +/* ---- _240x45 ------------------------------- */ + +/* .............. */ +._240x45_inner { + position : relative; + padding : 2 3 3 3; + width : 240px; + height : 45px; + display : table-cell; + vertical-align : middle; + text-align : center; +} + +/* .............. */ +._240x45_spacer { + position : absolute; + left : 0px; + top : 0px; + width : 240px; + height : 45px; +} + + +/* ---- _240x56 ------------------------------- */ + +/* .............. */ +._240x56_inner { + position : relative; + padding : 2 3 3 3; + width : 240px; + height : 56px; + display : table-cell; + vertical-align : middle; + text-align : center; +} + +/* .............. */ +._240x56_spacer { + position : absolute; + left : 0px; + top : 0px; + width : 240px; + height : 56px; +} + + +/* ---- _240x70 ------------------------------- */ + +/* .............. */ +._240x70_inner { + position : relative; + padding : 2 3 3 3; + width : 240px; + height : 70px; + display : table-cell; + vertical-align : middle; + text-align : center; +} + +/* .............. */ +._240x70_spacer { + position : absolute; + left : 0px; + top : 0px; + width : 240px; + height : 70px; +} + + +/* ---- _24x24 ------------------------------- */ + +/* .............. */ +._24x24_inner { + position : relative; + padding : 2 3 3 3; + width : 24px; + height : 24px; + display : table-cell; + vertical-align : middle; + text-align : center; +} + +/* .............. */ +._24x24_spacer { + position : absolute; + left : 0px; + top : 0px; + width : 24px; + height : 24px; +} + + +/* ---- _256x28 ------------------------------- */ + +/* .............. */ +._256x28_inner { + position : relative; + padding : 2 3 3 3; + width : 256px; + height : 28px; + display : table-cell; + vertical-align : middle; + text-align : center; +} + +/* .............. */ +._256x28_spacer { + position : absolute; + left : 0px; + top : 0px; + width : 256px; + height : 28px; +} + + +/* ---- _256x34 ------------------------------- */ + +/* .............. */ +._256x34_inner { + position : relative; + padding : 2 3 3 3; + width : 256px; + height : 34px; + display : table-cell; + vertical-align : middle; + text-align : center; +} + +/* .............. */ +._256x34_spacer { + position : absolute; + left : 0px; + top : 0px; + width : 256px; + height : 34px; +} + + +/* ---- _256x40 ------------------------------- */ + +/* .............. */ +._256x40_inner { + position : relative; + padding : 2 3 3 3; + width : 256px; + height : 40px; + display : table-cell; + vertical-align : middle; + text-align : center; +} + +/* .............. */ +._256x40_spacer { + position : absolute; + left : 0px; + top : 0px; + width : 256px; + height : 40px; +} + + +/* ---- _256x44 ------------------------------- */ + +/* .............. */ +._256x44_inner { + position : relative; + padding : 2 3 3 3; + width : 256px; + height : 44px; + display : table-cell; + vertical-align : middle; + text-align : center; +} + +/* .............. */ +._256x44_spacer { + position : absolute; + left : 0px; + top : 0px; + width : 256px; + height : 44px; +} + + +/* ---- _256x56 ------------------------------- */ + +/* .............. */ +._256x56_inner { + position : relative; + padding : 2 3 3 3; + width : 256px; + height : 56px; + display : table-cell; + vertical-align : middle; + text-align : center; +} + +/* .............. */ +._256x56_spacer { + position : absolute; + left : 0px; + top : 0px; + width : 256px; + height : 56px; +} + + +/* ---- _48x48 ------------------------------- */ + +/* .............. */ +._48x48_inner { + position : relative; + padding : 2 3 3 3; + width : 48px; + height : 48px; + display : table-cell; + vertical-align : middle; + text-align : center; +} + +/* .............. */ +._48x48_spacer { + position : absolute; + left : 0px; + top : 0px; + width : 48px; + height : 48px; +} + + +/* ---- _60x18 ------------------------------- */ + +/* .............. */ +._60x18_inner { + position : relative; + padding : 2 3 3 3; + width : 60px; + height : 18px; + display : table-cell; + vertical-align : middle; + text-align : center; +} + +/* .............. */ +._60x18_spacer { + position : absolute; + left : 0px; + top : 0px; + width : 60px; + height : 18px; +} + + +/* ---- _60x60 ------------------------------- */ + +/* .............. */ +._60x60_inner { + position : relative; + padding : 2 3 3 3; + width : 60px; + height : 60px; + display : table-cell; + vertical-align : middle; + text-align : center; +} + +/* .............. */ +._60x60_spacer { + position : absolute; + left : 0px; + top : 0px; + width : 60px; + height : 60px; +} + diff --git a/gaming/htmls/DEBUG/SMC/font_check/css/page/L_03_eur_u.css b/gaming/htmls/DEBUG/SMC/font_check/css/page/L_03_eur_u.css new file mode 100644 index 0000000..83531fc --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/font_check/css/page/L_03_eur_u.css @@ -0,0 +1,16 @@ +/* ---- common style ------------------------------- */ + +body { + font-size : 12px; + color : #555555; +} + +.bold { font-size : 16px; color : black; } + +.eulaPage_u { + position : absolute; + top : 0px; + width : 240px; + margin : 26 8 0 8; + padding : 0 0 22 0; +} diff --git a/gaming/htmls/DEBUG/SMC/font_check/js/base.js b/gaming/htmls/DEBUG/SMC/font_check/js/base.js new file mode 100644 index 0000000..a3e20c5 --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/font_check/js/base.js @@ -0,0 +1,1010 @@ +//======================================== +// base.js +//======================================== + + +/* #### 20080602 #### Commented out functions for debug grid. */ +/* + +//---------------------------------------------------------------- +//-- for debug only -- grid +//-- (TWL: X button toggle / PC: "G" key toggle(only when DownWindow focused)) + + +var _u_grid = null; +var _d_grid = null; + +function appendGridUD() { + + _u_grid = upWindowObject.document.createElement("img"); + _u_grid.src = "../image/256x192.gif"; + _u_grid.style.visibility = "hidden"; + _u_grid.style.position = "fixed"; + _u_grid.style.zIndex = 30; + _u_grid.style.top = 0; + _u_grid.style.left = 0; + //_u_grid.style.opacity = 0.3; + upWindowObject.document.body.appendChild(_u_grid); + + _d_grid = downWindowObject.document.createElement("img"); + _d_grid.src = "../image/256x192.gif"; + _d_grid.style.visibility = "hidden"; + _d_grid.style.position = "fixed"; + _d_grid.style.zIndex = 30; + _d_grid.style.top = 0; + _d_grid.style.left = 0; + //_d_grid.style.opacity = 0.3; + downWindowObject.document.body.appendChild(_d_grid); + +} + + +function setGridVisibility() { + if (_u_grid.style.visibility == "hidden") { + _u_grid.style.visibility = "visible"; + _d_grid.style.visibility = "visible"; + } else { + _u_grid.style.visibility = "hidden"; + _d_grid.style.visibility = "hidden"; + } +} + +function dispGrid() { + + var code = event.keyCode; + //-- "event.keyCode" returns a code of capital letter if use "onkyedown". + if ( code == OP_KEY_PAD_X || code == "G".charCodeAt(0) ) { + + if (_u_grid == null) { + appendGridUD(); + } + setGridVisibility(); + + } + +} + +// #### 20080628 #### Changed for PC Opera 9.5 +//window.onkeydown = dispGrid; //-- "event.keyCode" returns a code of capital letter if use "onkyedown". +window.addEventListener('keydown', dispGrid, false); + + + +*/ + + + + +//---------------------------------------------------------------- +//-- for debug only -- histroy back + +function historyBack() { + //hideScrollButton(); + gkong.SetTransition(WIPE_ANIM_TRANS, WIPE_ANIM_TRANS); /* #### 20080702 #### SetTransition* MUST BE CALLED. */ + setTimeout( function() { + upWindowObject.history.back(); + downWindowObject.history.back(); + } , WAIT_FOR_SETURL); +} + + + +//---------------------------------------------------------------- +//-- for debug only -- debug counter +/* +var gDebugCounter = 0; // #### 20080628 #### Renamed. +function incDebugCounter() { + gDebugCounter += 1; + if (gDebugCounter > (1000 * 60)) { gDebugCounter = 0;} + setTimeout("incDebugCounter()", 100); +} + +incDebugCounter(); +*/ + +//---------------------------------------------------------------- +//-- for debug only -- debug print + +function dPrint(t) { + // gkong.print("[[ dPrint ]] " + t + " ---- " + gDebugCounter) + gkong.print("[[ dPrint ]] " + t ); +} + + + + + +//---------------------------------------------------------------- +//---------------------------------------------------------------- +//---------------------------------------------------------------- + + + +//---------------------------------------- +//-- define : keyboard kinds & types of field (see Kong::KbdActive) + +var KBD_KIND_TEN = 0; +var KBD_KIND_QWERTY = 1; +var KBD_KIND_NO_JAPANESE = 2; +var KBD_KIND_JAPANESE = 3; + +var KBD_FIELD_NORMAL = 0; +var KBD_FIELD_4444 = 1; + + +//---------------------------------------- +//-- define : wipe animation types of transition (see Kong::SetTransition) + +var WIPE_ANIM_NONE = 0; +var WIPE_ANIM_TRANS = 1; +var WIPE_ANIM_TRANS_LEFT = 2; +var WIPE_ANIM_TRANS_RIGHT = 3; +var WIPE_ANIM_LEFT = 4; +var WIPE_ANIM_RIGHT = 5; + +/* #### 20080628 #### Added new types. */ +var WIPE_ANIM_DOWN = 6; +var WIPE_ANIM_UP = 7; +var WIPE_ANIM_OVER_LEFT = 8; +var WIPE_ANIM_OVER_RIGHT = 9; + + +//---------------------------------------- +//-- define : TWL key code + +var OP_KEY_PAD_A = 172; +var OP_KEY_PAD_B = 173; +var OP_KEY_PAD_X = 179; +var OP_KEY_PAD_Y = 180; +var OP_KEY_PAD_L = 181; +var OP_KEY_PAD_R = 182; +var OP_KEY_PAD_UP = 175; +var OP_KEY_PAD_DOWN = 176; +var OP_KEY_PAD_RIGHT = 177; +var OP_KEY_PAD_LEFT = 178; +var OP_KEY_PAD_START = 174; +var OP_KEY_PAD_SELECT = 170; + + + + +/* #### 20080702 #### Changed. */ +//---------------------------------------- +//-- define : options of setButtonImages() + +//var SBIMG_NO_LOADING_ICON = 0; +var SBIMG_NO_LOADINGICON_NO_PARTICLE = 0; +var SBIMG_NO_CURSOR = 1; + + +/* #### 20080709 #### Added not to init button image. */ +//---------------------------------------- +//-- define : options of clearClickedStates() + +var CCS_NOT_INIT_BUTTON_IMG = 0; + + +//---------------------------------------------------------------- +//-- set urls and types of animation + +//-- wait maybe required... if no wait, button images will not change before the wipe animation. + +/* #### 20080628 #### Changed wait time from 0ms to 200ms */ +var WAIT_FOR_SETURL = 200; + +/* #### 20080715 #### Moved from "multi_page_DOM.js". */ +var WAIT_FOR_MANUALTRANSITION = 300; + + + +function setUrlUD() { + var a = setUrlUD.arguments; + if (a.length == 2) { + //hideScrollButton(); + gkong.SetTransition(WIPE_ANIM_NONE, WIPE_ANIM_NONE); /* #### 20080702 #### SetTransition* MUST BE CALLED. */ + setTimeout( function() { + if (a[0] != "") window.open( a[0], 'UpWindow'); + if (a[1] != "") window.open( a[1], 'DownWindow'); + } , WAIT_FOR_SETURL); + } else if (a.length == 4) { + //hideScrollButton(); + gkong.SetTransition(a[1], a[3]); /* #### 20080702 #### SetTransition* MUST BE CALLED. */ + setTimeout(function() { + if (a[0] != "") window.open( a[0], 'UpWindow'); + if (a[2] != "") window.open( a[2], 'DownWindow'); + } , WAIT_FOR_SETURL); + } else { + return false; + } +} + +function setUrlU() { + var a = setUrlU.arguments; + if (a.length == 1) { + //hideScrollButton(); + gkong.SetTransition(WIPE_ANIM_NONE, WIPE_ANIM_NONE); /* #### 20080702 #### SetTransition* MUST BE CALLED. */ + setTimeout( function() { + if (a[0] != "") window.open( a[0], 'UpWindow'); + } , WAIT_FOR_SETURL); + } else if (a.length == 2) { + //hideScrollButton(); + gkong.SetTransition(a[1], WIPE_ANIM_NONE); /* #### 20080702 #### SetTransition* MUST BE CALLED. */ + setTimeout( function() { + if (a[0] != "") window.open( a[0], 'UpWindow'); + } , WAIT_FOR_SETURL); + } else { + return false; + } +} + +function setUrlD() { + var a = setUrlD.arguments; + if (a.length == 1) { + //hideScrollButton(); + gkong.SetTransition(WIPE_ANIM_NONE, WIPE_ANIM_NONE); /* #### 20080702 #### SetTransition* MUST BE CALLED. */ + setTimeout( function() { + if (a[0] != "") window.open( a[0], 'DownWindow'); + } , WAIT_FOR_SETURL); + } else if (a.length == 2) { + //hideScrollButton(); + gkong.SetTransition(WIPE_ANIM_NONE, a[1]); /* #### 20080702 #### SetTransition* MUST BE CALLED. */ + setTimeout( function() { + if (a[0] != "") window.open( a[0], 'DownWindow'); + } , WAIT_FOR_SETURL); + } else { + return false; + } +} + + + + + + + +//---------------------------------------------------------------- +//-- cursor + +var CURSOR_SIZE = 8; // 8px x 8px + + + + +function clearCursor() { + +/* #### 20080702 #### Commented out. */ +/* + var hp = -2 * CURSOR_SIZE; + cursor_tl.style.top = hp; + cursor_tr.style.top = hp; + cursor_bl.style.top = hp; + cursor_br.style.top = hp; +*/ + +} + + +//--- setCurser (z-index version) + +/* + +function setCursor(obj) { + + var oP = obj.offsetParent; + var cS = getComputedStyle(obj,''); + + if(oP) { //-- obj's style may be "position : absolute" + var p = "absolute"; + var t = parseInt(oP.offsetTop) + parseInt(obj.offsetTop); + var l = parseInt(oP.offsetLeft) + parseInt(obj.offsetLeft); + var w = parseInt(cS.getPropertyValue('width')); + var h = parseInt(cS.getPropertyValue('height')); + var z = parseInt(obj.style.zIndex); + } else { //-- obj's style may be "position : fixed" + var p = "fixed"; + var t = parseInt(cS.getPropertyValue('top')); + var l = parseInt(cS.getPropertyValue('left')); + var w = parseInt(cS.getPropertyValue('width')); + var h = parseInt(cS.getPropertyValue('height')); + var z = parseInt(cS.getPropertyValue('z-index')); + } + + + if( h == 0 || isNaN(h) ){ + //-- obj dose not have height value (maybe 'a' tag) ---- + h = parseInt( cS.getPropertyValue('font-size') ); + if (h == 16) { h = 21; } // font cell size 17x21 + else if (h == 12) { h = 16; } // font cell size 13x16 + else if (h == 10) { h = 13; } // font cell size 11x12 (+1) + } + + + if(isNaN(z)){ z = 1; } else { z += 1; } + + + cursor_tl.style.position = p; + cursor_tl.style.zIndex = z; + cursor_tl.style.top = t; + cursor_tl.style.left = l; + + cursor_tr.style.position = p; + cursor_tr.style.zIndex = z; + cursor_tr.style.top = t; + cursor_tr.style.left = l + w - CURSOR_SIZE; + + cursor_bl.style.position = p; + cursor_bl.style.zIndex = z; + cursor_bl.style.top = t + h - CURSOR_SIZE; + cursor_bl.style.left = l; + + cursor_br.style.position = p; + cursor_br.style.zIndex = z; + cursor_br.style.top = t + h - CURSOR_SIZE; + cursor_br.style.left = l + w - CURSOR_SIZE; + + +} + +*/ + + +function setCursor(obj) { + +/* #### 20080702 #### Commented out. */ +/* + + var oP = obj.offsetParent; + var cS = getComputedStyle(obj,''); + + var t = parseInt(oP.offsetTop) + parseInt(obj.offsetTop); + var l = parseInt(oP.offsetLeft) + parseInt(obj.offsetLeft); + var w = parseInt(cS.getPropertyValue('width')); + var h = parseInt(cS.getPropertyValue('height')); + + if( h == 0 || isNaN(h) ){ + //-- obj dose not have height value (maybe 'a' tag) ---- + h = parseInt( cS.getPropertyValue('font-size') ); + if (h == 16) { h = 21; } // 16pt font cell size = 17x21 + else if (h == 12) { h = 16; } // 12pt font cell size = 13x16 + else if (h == 10) { h = 13; } // 10pt font cell size = 11x12 (+1) + } + + cursor_tl.style.top = t; + cursor_tl.style.left = l; + + cursor_tr.style.top = t; + cursor_tr.style.left = l + w - CURSOR_SIZE; + + cursor_bl.style.top = t + h - CURSOR_SIZE; + cursor_bl.style.left = l; + + cursor_br.style.top = t + h - CURSOR_SIZE; + cursor_br.style.left = l + w - CURSOR_SIZE; +*/ + +} + + + + +//---------------------------------------------------------------- +//-- side blue lines + +/* #### 20080628 #### Deleted. */ +//function extendSideBlueLine() {} + + +//---------------------------------------------------------------- +//-- scroll buttons + + +function hideScrollButton() { + gkong.HideUpWindowScrollButton(); + //gkong.HideDownWindowScrollButton(); +} + + +function showScrollButton() { + /* #### 20080711 #### Deleted arguments of ShowUpWindowScrollButton(). */ + gkong.ShowUpWindowScrollButton(); + //gkong.ShowUpWindowScrollButton( 204, 1, 229, 1 ); + + //gkong.ShowDownWindowScrollButton( 225,110, 225,138 ); +} + + + +function hideScrollButton_debugIndex() { + //gkong.HideUpWindowScrollButton(); + gkong.HideDownWindowScrollButton(); +} + +function showScrollButton_debugIndex() { + /* #### 20080711 #### Deleted arguments of ShowUpWindowScrollButton(). */ + //gkong.ShowUpWindowScrollButton(); + + gkong.ShowDownWindowScrollButton( 210,130, 210,158 ); +} + + + + + + +//---------------------------------------------------------------- +//---------------------------------------------------------------- +//---------------------------------------------------------------- + + + + + + + +/* + +//---------------------------------------------------------------- +//-- functions for the reaction of button images + + +== note ==== + + 1. a clickable image element in HTML files must have a child or more. + (the last child will be treated as the spacer that defined hit-area) + + 2. and requires descriptions of image src in CSS files. + + 3. and requires additional JavaScript descriptions that set reactions and urls. + + 4. and an image file must contain 2 patterns. + + + + +== ex ==== + + + + ---- .html -------- + + +
+ + +
+ ???????? +
+ + +
+ +
+ + + + + + + + ---- .css -------- + + .YYYY_XXXX { + position : relative; + width : [width]px; + height : [height]px; + background-image: url(ClickableImage.gif); + background-repeat: no-repeat; + background-position: 0px 0px; + overflow: hidden; + } + + ._XXXX_inner { + position : relative; + padding : 2 3 3 3; + width : [width]px; + height : [height]px; + display : table-cell; + vertical-align : middle; + text-align : center; + } + + ._XXXX_spacer { + position : absolute; + left : 0px; + top : 0px; + width : [width]px; + height : [height]px; + } + + + #NNNN { position : absolute; left : 52px; top : 60px; } + + + + ---- ClickableImage.gif -------- + + +--------[width]px-------+ + | | + | normal pattern [height]px + | | + +------------------------+ + | | + | selected pattern [height]px + | | + +------------------------+ + + +*/ + + +/* + +//---------------------------------------------------------------- +//-- functions for the reaction of button images + +== note ==== + + Following functions MUST BE CALLED when click & transit. + + - Kong::PlaySE ( Not necessary if use setButtonImage(). ) + - Kong::ShowLoadingIcon ( Not necessary if use setButtonImage(). ) + - Kong::ShowClickEffect ( Not necessary if use setButtonImage(). ) + - Kong::SetTransition ( Not necessary if use setOnclickUrlUD() or if call setUrl*() at once. ) + + + + Following functions MUST BE CALLED when click & input. + + - Kong::PlaySE ( Not necessary if use setButtonImage() and set SBIMG_NO_LOADINGICON_NO_PARTICLE for argument. ) + + + + Following functions MUST BE CALLED when onchange of input tag. + + - Kong::ShowLoadingIcon ( Not necessary if call setUrl*() at once. ) + + + + Following functions MUST BE CALLED when click & manual transit. + + -- Before Change by DOM. + + - Kong::PlaySE ( Not necessary if use setButtonImage(). ) + - Kong::ShowLoadingIcon ( Not necessary if use setButtonImage(). ) + - Kong::ShowClickEffect ( Not necessary if use setButtonImage(). ) + - Kong::SetTransitionRangeOnce ( Not necessary if call beforeChangeDOMforManualTransition() or if not use wipe animation with range specification. ) + - Kong::SetManualTransition ( Not necessary if call beforeChangeDOMforManualTransition(). ) + + -- After Change by DOM. + + - ? waitAllImagesComplete ( Not necessary if call afterChangeDOMforManualTransition(). ) + - gkong.StartManualTransition ( Not necessary if call afterChangeDOMforManualTransition(). ) + - gkong.HideLoadingIcon ( Not necessary if call afterChangeDOMforManualTransition(). ) + - gkong.PlaySE ( Not necessary if call afterChangeDOMforManualTransition(). ) + + + + +*/ + + +//---------------------------------------------------------------- +//-- functions for the reaction of button images + + +var BUTTON_NORMAL = 0; +var BUTTON_SELECTED = 1; + +function bgPos(oCS, n) { dPrint("$$$$$$$$$$ Called bgPos : " + n); return "0px " + ( parseInt(oCS.getPropertyValue('height')) * (-1) * n) + "px" } + + +/* #### 20080628 #### Renamed. */ +var gObjOnmousedown = null; //-- the object that the "onMouseDown" event occured. +function setObjOnmousedown(id) { gObjOnmousedown = id; } +function clearObjOnmousedown() { gObjOnmousedown = null; /* clearCursor(); */ } +function checkObjOnmousedown(id) { if(gObjOnmousedown == id) { return true;} else {return false;} } + + + +/* #### 20080628 #### Changed for PC Opera 9.5 */ +//window.onunload = clearStates; +window.addEventListener('mouseup', function(){ clearObjOnmousedown(); }, false); + + + + + +function getLastChild( o ) { return o.children[o.children.length-1] } + + + + +/* #### 20080602 #### Added functions to prevent clicking twice. */ +/* #### 20080628 #### Renamed. */ +/* +var setButtonImagesState = 0; +function getSetButtonImagesState() { return setButtonImagesState; } +function setSetButtonImagesState() { setButtonImagesState = 1; } +function clearSetButtonImagesState() { setButtonImagesState = 0; } + +var setButtonImagesObject = null; +function getSetButtonImagesObject() { return setButtonImagesObject; } +function setSetButtonImagesObject(o) { setButtonImagesObject = o; } +function clearSetButtonImagesObject() { setButtonImagesObject = null; } +*/ + +var gClickedObjectId = null; +function getClickedObjectId() { return gClickedObjectId; } +function setClickedObjectId(n) { gClickedObjectId = n; dPrint("[[[[[[[[ setClickedObjectId : " + n); } +function clearClickedObjectId() { gClickedObjectId = null; dPrint("[[[[[[[[ clearClickedObjectId : null"); } + + + +/* #### 20080714 #### Added to init button image. */ + +var gMouseEvent = document.createEvent('MouseEvents'); +gMouseEvent.initEvent('mouseout', true, true); + +var gObjectIdToInitImage = null; + +function getObjectIdToInitButtonImage() { return gObjectIdToInitImage; } +function setObjectIdToInitButtonImage( n ) { gObjectIdToInitImage = n; } +function clearObjectIdToInitButtonImage() { gObjectIdToInitImage = null; } + +function initObjectIdToInitButtonImage( n ) { + + if ( gObjectIdToInitImage != null && gObjectIdToInitImage != n ) { + var o = $(gObjectIdToInitImage); + if (o) { + // dPrint("@@@@@@@@@@@@@@@@@ : before dispatch mouseout : " + gObjectIdToInitImage + " :: gcoi:" + getClickedObjectId()); + getLastChild(o).dispatchEvent(gMouseEvent); + // dPrint("@@@@@@@@@@@@@@@@@ : after dispatch mouseout : " + gObjectIdToInitImage + " :: gcoi:" + getClickedObjectId()); + } + } + + if ( n ) { + setObjectIdToInitButtonImage(n); + } else { + clearObjectIdToInitButtonImage(); + } + +} + + + +/* #### 20080714 #### Added to init button image. */ +window.addEventListener('blur', function(){ initObjectIdToInitButtonImage(); }, false); + + + + + + +var gSBI_dPrint = true; /* #### 20080714 #### for debug. */ + +/* #### 20080702 #### Commented out clearCusor(). */ +/* #### 20080702 #### Changed 2nd argument. */ +//function setButtonImages( o, cursor ) { +function setButtonImages( o, opt ) { + + var id = o.getAttribute("id"); + var spacer = getLastChild(o); + var oCS = getComputedStyle(o, ''); + var oStyle = o.style; + var a = setButtonImages.arguments; + + var bg = BUTTON_NORMAL; + + + spacer.addEventListener('click', function( e ) { + if (gSBI_dPrint) dPrint(id+ ' click'); /* #### 20080714 #### for debug. */ + /* #### 20080628 #### Renamed functions to prevent clicking twice. */ + if (getClickedObjectId() == null) { // + if (gSBI_dPrint) dPrint(id+ ' click ---- execute'); /* #### 20080714 #### for debug. */ + + setClickedObjectId(id); + /* #### 20080714 #### Added to init button image. */ + initObjectIdToInitButtonImage(id); + /* #### 200806028 #### SE No. to macro name. */ + gkong.PlaySE(TWL_SHOP_SE_ONCLICK); + /* #### 20080702 #### Changed 2nd argument. */ + + if (a.length == 2 ) { + /* #### 20080715 #### Changed macro name. */ + if (opt == SBIMG_NO_LOADINGICON_NO_PARTICLE ) { + /* #### 20080702 #### Added for input tag. */ + if (bg != BUTTON_NORMAL) { oStyle.backgroundPosition = bgPos(oCS, BUTTON_NORMAL); bg = BUTTON_NORMAL; } + clearClickedObjectId(); // #### 20080714 #### Currected */ + } else if (opt == SBIMG_NO_CURSOR ){ + /* #### 20080715 #### Added to display particle on click. */ + gkong.ShowClickEffect(e.pageX, e.pageY); + /* #### 20080702 #### Added to force to show loading icon. */ + gkong.ShowLoadingIcon(); + //clearCursor(o); + } + } else { + /* #### 20080715 #### Added to display particle on click. */ + gkong.ShowClickEffect(e.pageX, e.pageY); + /* #### 20080702 #### Added to force to show loading icon. */ + gkong.ShowLoadingIcon(); + //setCursor(o); + } + } + + }, false); + + + spacer.addEventListener('mousedown', function() { + if (gSBI_dPrint) dPrint(id + ' mousedown'); /* #### 20080714 #### for debug. */ + /* #### 20080628 #### Renamed functions to prevent clicking twice. */ + + if (getClickedObjectId() == null) { + if (gSBI_dPrint) dPrint(id + ' mousedown ---- exceute'); /* #### 20080714 #### for debug. */ + /* #### 200806028 #### SE No. to macro name. */ + gkong.PlaySE(TWL_SHOP_SE_ONMOUSEDOWN); + if (bg != BUTTON_SELECTED) { oStyle.backgroundPosition = bgPos(oCS, BUTTON_SELECTED); bg = BUTTON_SELECTED; } + initObjectIdToInitButtonImage(id); + setObjOnmousedown(id); + } + + }, false); + + spacer.addEventListener('mouseover', function() { + if (gSBI_dPrint) dPrint(id + ' mouseover'); /* #### 20080714 #### for debug. */ + /* #### 20080628 #### Renamed functions to prevent clicking twice. */ + + if (getClickedObjectId() == null) { + if (gSBI_dPrint) dPrint(id + ' mouseover ---- exceute'); /* #### 20080714 #### for debug. */ + if (checkObjOnmousedown(id)) { + /* #### 200806028 #### SE No. to macro name. */ + gkong.PlaySE(TWL_SHOP_SE_ONMOUSEDOWN); + if (bg != BUTTON_SELECTED) { oStyle.backgroundPosition = bgPos(oCS, BUTTON_SELECTED); bg = BUTTON_SELECTED; } + initObjectIdToInitButtonImage(id); + } + } + + }, false); + + spacer.addEventListener('mouseout', function() { + if (gSBI_dPrint) dPrint(id + ' mouseout'); /* #### 20080714 #### for debug. */ + /* #### 20080628 #### Renamed functions to prevent clicking twice. */ + + if (getClickedObjectId() == null) { + if (gSBI_dPrint) dPrint(id + ' mouseout ---- exceute'); /* #### 20080714 #### for debug. */ + //clearCursor(); /* #### 20080602 #### Commented out clearCusor(). */ + if (bg != BUTTON_NORMAL) { oStyle.backgroundPosition = bgPos(oCS, BUTTON_NORMAL); bg = BUTTON_NORMAL; } + } + + }, false); + + + /* #### 20080717 #### Deleted functions onFocus & onBlur. (Necessary if use spatial navigation.) */ + // spacer.addEventListener('focus', function() { if (gSBI_dPrint) dPrint(id + ' focus'); }, false); + // spacer.addEventListener('blur', function() { if (gSBI_dPrint) dPrint(id + ' blur' ); }, false); + + +} + + + +//---------------------------------------------------------------- +//-- add event listener to a clickable object (set urls and types of animation) + + + +/* #### 20080602 #### Added functions to prevent clicking twice. */ +/* #### 20080628 #### Renamed. */ + +/* +var setOnclickUrlState = 0; +function getSetOnclickUrlState() { return setOnclickUrlState; } +function setSetOnclickUrlState() { setOnclickUrlState = 1; } +function clearSetOnclickUrlState() { setOnclickUrlState = 0; } +*/ + +var gClickedTransition = null; +function getClickedTransition() { return gClickedTransition; } +function setClickedTransition() { gClickedTransition = true; } +function clearClickedTransition() { gClickedTransition = null; } + + + +/* #### 20080712 #### Deleted functions to prevent clicking twice. */ +/* #### 20080712 #### Deleted "var spacer". */ +function setOnclickUrlUD( o, urlU, animU, urlD, animD ) { + getLastChild(o).addEventListener('click', function() { setUrlUD(urlU, animU, urlD, animD); }, false); +} + +/* #### 20080712 #### Deleted functions to prevent clicking twice. */ +/* #### 20080712 #### Deleted "var spacer". */ +function setOnclickUrlU( o, urlU, animU ) { + getLastChild(o).addEventListener('click', function() { setUrlU(urlU, animU); }, false); +} + +/* #### 20080712 #### Deleted functions to prevent clicking twice. */ +/* #### 20080712 #### Deleted "var spacer". */ +function setOnclickUrlD( o, urlD, animD ) { + getLastChild(o).addEventListener('click', function() { setUrlD(urlD, animD); }, false); +} + + +/* #### 20080712 #### Deleted "var spacer". */ +function setOnclickHideProgressBar( o ) { + getLastChild(o).addEventListener('click', function() { gkong.HideProgressBar(); }, false); +} + + + +/* #### 20080602 #### functions to prevent clicking twice. */ +/* #### 20080628 #### Renamed. */ +function clearClickedStates() { + + var a = clearClickedStates.arguments; + + clearClickedObjectId(); + clearClickedTransition(); + + /* #### 20080709 #### Added not to init button image. */ + /* #### 20080712 #### Corrected. */ + if ( a.length == 1 ) { + if ( a[0] == CCS_NOT_INIT_BUTTON_IMG ) { + //-- not init button image. + } else { + initObjectIdToInitButtonImage() + } + } else { + initObjectIdToInitButtonImage() + } + +} + + + + + + +/* #### 20080628 #### Added sleep function. */ +function sleep(msec) { + var d1 = new Date().getTime(); + var d2 = new Date().getTime(); + while( d2 < d1 + msec ){ + d2 = new Date().getTime(); + } +} + + + +/* #### 20080628 #### Renamed functions to prevent clicking twice. */ +// #### 20080628 #### Changed for PC Opera 9.5 +//window.onunload = clearClickedStates; +window.addEventListener('unload', clearClickedStates, false); + + + + +/* #### 20080628 #### Added functions to call from HTML files onload. */ + +function onload_scroll() { + showScrollButton(); + gkong.PlaySE(TWL_SHOP_SE_TRANSIT); +} + +function onload_no_scroll() { + hideScrollButton(); + gkong.PlaySE(TWL_SHOP_SE_TRANSIT); +} + +function onload_upWindow() { + /* #### 20080709 #### Added not to init button image. */ + clearClickedStates(CCS_NOT_INIT_BUTTON_IMG); + + gkong.PlaySE(TWL_SHOP_SE_TRANSIT); +} + + + + + + + + + +/* #### 20080702 #### Added for debug. */ +function dPrintEventInfo() { + var a = dPrintEventInfo.arguments; + var o = a[0]; + var n = ""; + if (a[1]) { n = a[1] + " " } + o.addEventListener('click', function(){ dPrint(n + 'click' ); }, false); + o.addEventListener('focus', function(){ dPrint(n + 'focus' ); }, false); + o.addEventListener('blur', function(){ dPrint(n + 'blur' ); }, false); + o.addEventListener('mouseup', function(){ dPrint(n + 'mouseup' ); }, false); + o.addEventListener('mousedown', function(){ dPrint(n + 'mousedown'); }, false); + o.addEventListener('mouseover', function(){ dPrint(n + 'mouseover'); }, false); + o.addEventListener('mouseout', function(){ dPrint(n + 'mouseout' ); }, false); +} + + + + + + + + + + +/* #### 20080712 #### Moved from "multi_page_DOM.js". */ +function waitImageComplete( o ) { + + /* #### 20080717 #### TEST for NO WAIT. */ + return; + + while( o.complete != true ) { + sleep(100); + } +} + +/* #### 20080712 #### Moved from "multi_page_DOM.js". */ +/* #### 20080712 #### Changed to wait for all images of both windows. */ +function waitAllImagesComplete() { + + /* #### 20080717 #### TEST for NO WAIT. */ + return; + + var imgs = new Array(); + imgs = upWindowObject.document.getElementsByTagName('img'); + for (i=0; i < imgs.length; i++) { waitImageComplete( imgs[i] ); } + imgs = downWindowObject.document.getElementsByTagName('img'); + for (i=0; i < imgs.length; i++) { waitImageComplete( imgs[i] ); } +} + + + +/* #### 20080712 #### Added for ManualTransition simply.*/ +function beforeChangeDOMforManualTransition() { + if (getClickedTransition() == true ) return; + setClickedTransition(); + + /* #### 20080715 #### Added. */ + sleep(WAIT_FOR_MANUALTRANSITION); + + var a = beforeChangeDOMforManualTransition.arguments; + if (a.length == 0) { + gkong.SetManualTransition(WIPE_ANIM_TRANS, WIPE_ANIM_TRANS); + } else if (a.length == 2) { + gkong.SetManualTransition(a[0], a[1]); + } else if (a.length == 6) { + gkong.SetTransitionRangeOnce(a[2], a[3], a[4], a[5]); + gkong.SetManualTransition(a[0], a[1]); + } + + +} + +/* #### 20080712 #### Added for ManualTransition simply.*/ +function afterChangeDOMforManualTransition( ccs_opt ) { + waitAllImagesComplete(); + gkong.StartManualTransition(); + gkong.HideLoadingIcon(); + gkong.PlaySE(TWL_SHOP_SE_TRANSIT); + clearClickedStates(ccs_opt); +} + + +/* #### 20080718 #### Added.*/ +function addClickEffectAndSE( o ) { + o.addEventListener('click', function(e) { + gkong.PlaySE(TWL_SHOP_SE_ONCLICK); + gkong.ShowClickEffect(e.pageX, e.pageY); + }, false); +} + diff --git a/gaming/htmls/DEBUG/SMC/font_check/js/kong.js b/gaming/htmls/DEBUG/SMC/font_check/js/kong.js new file mode 100644 index 0000000..6e791f4 --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/font_check/js/kong.js @@ -0,0 +1,544 @@ +/***************************** + Kong Script for Windows + *****************************/ +/* + Kong Class +*/ + +var gShowClickEffect = true; + + +function kong_sleep(msec) { + var d1 = new Date().getTime(); + var d2 = new Date().getTime(); + while( d2 < d1 + msec ){ + d2 = new Date().getTime(); + } +} + + + +/* dummy functions for PC Browser */ + +function Kong() +{ + + this.SetTransition = function() {} + this.PlaySE = function() {} + + this.KbdActive = function(k,m,f) { + /* #### 20080628 #### Changed from alert to opera.postError. */ + opera.postError("[[KbdActive]] kind:" + k + " / " + "message: " + m + " / " + "field:" + f ); + } + + + this.GetUpDocumentHeight = function() { + var h = 0 + if (upWindowObject.pageBottom) { + var b = upWindowObject.pageBottom; + h = parseInt(b.offsetParent.offsetTop) + parseInt(b.offsetTop) + parseInt(getComputedStyle(b, '').getPropertyValue('height')); + } + if (h >= 192) { return h; } else { return 192; } + } + + this.GetDownDocumentHeight = function() { + var h = 0 + if (downWindowObject.pageBottom) { + var b = downWindowObject.pageBottom; + h = parseInt(b.offsetParent.offsetTop) + parseInt(b.offsetTop) + parseInt(getComputedStyle(b, '').getPropertyValue('height')); + } + if (h >= 192) { return h; } else { return 192; } + } + + + this.ScrollUpWindow = function(x, y ,t) { + upWindowObject.scrollBy(x, y); + } + + this.ScrollDownWindow = function(x, y ,t) { + downWindowObject.scrollBy(x, y); + } + + + /* #### 20080711 #### Deleted arguments. */ + this.ShowUpWindowScrollButton = function() { + if (downWindowObject.upWinU) { /* #### 20080628 #### Added. */ + + /* #### 20080711 #### Added default positions for PC Opera. */ + var ux = 204; + var uy = 1; + var dx = 229; + var dy = 1; + + /* #### 20080712 #### Added scroll_tab. */ + downWindowObject.scroll_tab.style.visibility = "visible"; + downWindowObject.upWinU.style.visibility = "visible"; + downWindowObject.upWinD.style.visibility = "visible"; + downWindowObject.upWinU.style.left = ux; + downWindowObject.upWinU.style.top = uy; + downWindowObject.upWinD.style.left = dx; + downWindowObject.upWinD.style.top = dy; + + + } + } + + this.ShowDownWindowScrollButton = function(ux, uy, dx, dy) { + if (downWindowObject.dnWinU) { /* #### 20080628 #### Added. */ + downWindowObject.dnWinU.style.visibility = "visible"; + downWindowObject.dnWinD.style.visibility = "visible"; + downWindowObject.dnWinU.style.left = ux; + downWindowObject.dnWinU.style.top = uy; + downWindowObject.dnWinD.style.left = dx; + downWindowObject.dnWinD.style.top = dy; + } + } + + this.HideUpWindowScrollButton = function() { + if (downWindowObject.upWinU) { /* #### 20080628 #### Added. */ + /* #### 20080712 #### Added scroll_tab. */ + downWindowObject.scroll_tab.style.visibility = "hidden"; + downWindowObject.upWinU.style.visibility = "hidden"; + downWindowObject.upWinD.style.visibility = "hidden"; + } + } + + this.HideDownWindowScrollButton = function() { + if (downWindowObject.dnWinU) { /* #### 20080628 #### Added. */ + downWindowObject.dnWinU.style.visibility = "hidden"; + downWindowObject.dnWinD.style.visibility = "hidden"; + } + } + + + /* #### 20080628 #### Added functions for loading icon. */ + this.ShowLoadingIcon = function() { + + /* #### 20080714 #### Added to disable all. */ + if (downWindowObject.disable_all) { + downWindowObject.disable_all.style.zIndex = 30; + } + + if (downWindowObject.loadingIcon) { /* #### 20080628 #### Added. */ + downWindowObject.loadingIcon.style.visibility = "visible"; + } + + kong_sleep(200); + + } + + this.HideLoadingIcon = function() { + + if (downWindowObject.loadingIcon) { /* #### 20080628 #### Added. */ + downWindowObject.loadingIcon.style.visibility = "hidden"; + } + + /* #### 20080714 #### Added to eable all. */ + if (downWindowObject.disable_all) { + downWindowObject.disable_all.style.zIndex = -1; + } + + } + + + this.ShowProgressBar = function() {} + this.UpdateProgressBar = function(d, t) { opera.postError("download:" + d + "/" + t) } + this.IsProgressBarAnimFinished = function() { return true; } + this.HideProgressBar = function() {} + + + /* #### 20080628 #### Added new functions. */ + this.SetTransitionRangeOnce = function() {} + this.SetManualTransition = function() {} + this.StartManualTransition = function() {} + this.IsBatterySufficient = function() { return true; } + + + /* #### 20080715 #### Added to display particle on click. */ + this.ShowClickEffect = function( x, y ) { + if (gShowClickEffect) { + if (downWindowObject.particle) { + downWindowObject.particle.style.left = x - 18; + downWindowObject.particle.style.top = y - 18; + downWindowObject.particle.style.visibility = "visible"; + kong_sleep(600); + downWindowObject.particle.style.visibility = "hidden"; + } + } + } + + + this.print = function(t) { opera.postError(t); } + +} + + + + + + +//---------------------------------------- +//-- scroll for PC Browser +//---------------------------------------- + +//#### 20080628 #### Added icons. + +if (window.name == "UpWindow") { + document.write("
"); +} +if (window.name == "DownWindow") { + document.write("
"); // #### 20080714 #### Added to disable all. + document.write("
"); // #### 20080715 #### Added to display particle on click. + document.write("
"); + document.write("
"); + document.write("
"); + document.write("
"); + document.write("
"); + document.write("
"); +} + + + +var upMouseState = 0; +var downMouseState = 0; + + +function setMouseState(window_u_d, state_u_d) { + if(window_u_d == "UpWindow") { upMouseState = state_u_d; } + if(window_u_d == "DownWindow") { downMouseState = state_u_d; } +} + +function onkeyCodeCheck(c) { + var code = event.keyCode; + if (code == c) { return true; } else { return false; } +} + + +var a_stateScroll = new Array(); +a_stateScroll["upWinU"] = -1; +a_stateScroll["upWinD"] = -1; +a_stateScroll["dnWinU"] = -1; +a_stateScroll["dnWinD"] = -1; + + + + + +function setScrollButtonImages( o ) { + + var id = o.getAttribute("id"); + var spacer = o; + var h = -1 * parseInt(getComputedStyle(o,'').getPropertyValue('height')); + var oStyle = o.style; + + var window_u_d = 0; + if (id.indexOf("upWin") != -1) {window_u_d = "UpWindow";} + if (id.indexOf("dnWin") != -1) {window_u_d = "DownWindow";} + + var state_u_d = 0; + if (id.indexOf("WinU") != -1) {state_u_d = 1;} + if (id.indexOf("WinD") != -1) {state_u_d = 2;} + + + + spacer.addEventListener('click', function() { + //-- need for Spacial Navigation. + }, false); + + + spacer.addEventListener('focus', function() { + if (a_stateScroll[id] != 0) { + oStyle.backgroundPosition = "0px " + h * 3 + "px"; + } else { + oStyle.backgroundPosition = "0px " + h * 1 + "px"; + } + // gkong.PlaySE(0); + }, false); + + spacer.addEventListener('blur', function() { + if (a_stateScroll[id] != 0) { + oStyle.backgroundPosition = "0px " + h * 2 + "px"; + } else { + oStyle.backgroundPosition = "0px 0px"; + } + }, false); + + + spacer.addEventListener('mousedown', function() { + if (a_stateScroll[id] != 0) { + setMouseState(window_u_d, state_u_d); + oStyle.backgroundPosition = "0px " + h * 3 + "px"; + } else { + // gkong.PlaySE(6); + } + }, false); + + + spacer.addEventListener('mouseup', function() { + setMouseState(window_u_d, 0); + if (a_stateScroll[id] != 0) { + oStyle.backgroundPosition = "0px " + h * 2 + "px"; + } else { + oStyle.backgroundPosition = "0px 0px"; + } + }, false); + + spacer.addEventListener('mouseout', function() { + setMouseState(window_u_d, 0); + if (a_stateScroll[id] != 0) { + oStyle.backgroundPosition = "0px " + h * 2 + "px"; + } else { + oStyle.backgroundPosition = "0px 0px"; + } + }, false); + + spacer.addEventListener('keydown', function() { + if ( onkeyCodeCheck(172) || onkeyCodeCheck("C".charCodeAt(0)) ) { //-- 179 = twl A key's code. + if (a_stateScroll[id] != 0) { + setMouseState(window_u_d, state_u_d); + } else { + // gkong.PlaySE(6); + } + } + }, false); + + spacer.addEventListener('keyup', function() { + if ( onkeyCodeCheck(172) || onkeyCodeCheck("C".charCodeAt(0)) ) { //-- 179 = twl A key's code. + if (a_stateScroll[id] != 0) { + setMouseState(window_u_d, 0); + } else { + oStyle.backgroundPosition = "0px " + h * 1 + "px"; + } + } + }, false); + +} + + + +function lockScroll( o ) { + + var id = o.getAttribute("id"); + var oStyle = o.style; + + if (a_stateScroll[id] == 1) { + a_stateScroll[id] = 0; + oStyle.backgroundPosition = "0px 0px"; + return true; + } + + if (a_stateScroll[id] == -1) { + a_stateScroll[id] = 0; + oStyle.backgroundPosition = "0px 0px"; + return false; + } + + return false; + +} + + +function unlockScroll( o ) { + + var id = o.getAttribute("id"); + var h = -1 * parseInt(getComputedStyle(o,'').getPropertyValue('height')); + var oStyle = o.style; + + if (a_stateScroll[id] == 0) { + a_stateScroll[id] = 1; + oStyle.backgroundPosition = "0px "+ h * 2 + "px"; + return true; + } + + if (a_stateScroll[id] == -1) { + a_stateScroll[id] = 1; + oStyle.backgroundPosition = "0px "+ h * 2 + "px"; + return false; + } + + return false; + +} + + + +//---------------------------------------- +//-- main loop for scrolling +//---------------------------------------- + + +var intervalMSec = 32; +var buttonIntervalFrame = 10; + +var scrollPx = 192 / 8; + + +//---------------------------------------- +var upBottom = 0; +var upPageYOffset = 0; + +var upPressTime = 0; + +//---------------------------------------- +var downBottom = 0; +var downPageYOffset = 0; + +var downPressTime = 0; + + +//---------------------------------------- + + +function scrollLoop() { + + + /* -- UpWin ----------------------------------------------------- */ + if(downWindowObject.document.getElementById('upWinU')) { + + upBottom = parseInt(gkong.GetUpDocumentHeight()); + upPageYOffset = parseInt(upWindowObject.pageYOffset); + + if (upPageYOffset == 0) { + if (lockScroll(upWinU)) { + // gkong.PlaySE(6); + } + } else { + unlockScroll(upWinU); + if (upMouseState == 1) { //-- scroll up + if (upPressTime > buttonIntervalFrame) { + // gkong.PlaySE(0); + upWindowObject.scrollBy(0, -scrollPx); + } else { + if (upPressTime == 0) { + // gkong.PlaySE(0); + upWindowObject.scrollBy(0, -scrollPx); + } + upPressTime += 1; + } + } else { + ; + } + } + + + if (upPageYOffset + 192 >= upBottom) { + if (lockScroll(upWinD)) { + // gkong.PlaySE(6); + } + } else { + unlockScroll(upWinD); + if (upMouseState == 2) { //-- scroll down + if (upPressTime > buttonIntervalFrame) { + // gkong.PlaySE(0); + upWindowObject.scrollBy(0, scrollPx); + } else { + if (upPressTime == 0) { + // gkong.PlaySE(0); + upWindowObject.scrollBy(0, scrollPx); + } + upPressTime += 1; + } + } else { + ; + } + } + + + if (upMouseState == 0) { + upPressTime = 0; + } + + + } + + + + /* -- dnWin ----------------------------------------------------- */ + if(downWindowObject.document.getElementById('dnWinU')) { + + DownBottom = parseInt(gkong.GetDownDocumentHeight()); + downPageYOffset = parseInt(downWindowObject.pageYOffset); + + if (downPageYOffset == 0) { + if (lockScroll(dnWinU)) { + // gkong.PlaySE(6); + } + } else { + unlockScroll(dnWinU); + if (downMouseState == 1) { //-- scroll up + if (downPressTime > buttonIntervalFrame) { + // gkong.PlaySE(0); + downWindowObject.scrollBy(0, -scrollPx); + } else { + if (downPressTime == 0) { + // gkong.PlaySE(0); + downWindowObject.scrollBy(0, -scrollPx); + } + downPressTime += 1; + } + } else { + ; + } + } + + + if (downPageYOffset + 192 >= DownBottom) { + if (lockScroll(dnWinD)) { + // gkong.PlaySE(6); + } + } else { + unlockScroll(dnWinD); + if (downMouseState == 2) { //-- scroll down + if (downPressTime > buttonIntervalFrame) { + // gkong.PlaySE(0); + downWindowObject.scrollBy(0, scrollPx); + } else { + if (downPressTime == 0) { + // gkong.PlaySE(0); + downWindowObject.scrollBy(0, scrollPx); + } + downPressTime += 1; + } + } else { + ; + } + } + + + if (downMouseState == 0) { + downPressTime = 0; + } + + + } + + + setTimeout("scrollLoop()", intervalMSec); //into an infinite loop. + +} + + + +function scrollStart() { + setScrollButtonImages(upWinU); + setScrollButtonImages(upWinD); + setScrollButtonImages(dnWinU); + setScrollButtonImages(dnWinD); + scrollLoop(); +} + + + +/* #### 20080628 #### for PC Opera 9.5 */ +var gkong = new Kong(); + + +/* #### 20080628 #### for PC Opera 9.5 */ +/* #### 20080628 #### Added for loading icon. */ +//window.onload = scrollStart; +window.addEventListener('load', function(){ gkong.HideLoadingIcon(); if (window.name == "DownWindow") { scrollStart(); } }, false); +window.addEventListener('unload', function(){ gkong.ShowLoadingIcon(); }, false); + + + + diff --git a/gaming/htmls/DEBUG/SMC/font_check/js/load_kong.js b/gaming/htmls/DEBUG/SMC/font_check/js/load_kong.js new file mode 100644 index 0000000..35da177 --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/font_check/js/load_kong.js @@ -0,0 +1,57 @@ +/***************************** + Load Kong Script + *****************************/ +/* + Load kong.js +*/ + +if ( !window.Kong ) +{ + //-- for PC Browser only + document.write(""); + document.write(""); + +} else { + + /* #### 20080628 #### for PC Opera 9.5 */ + var gkong = new Kong; + +} + + + + + +/* + Set window name +*/ + + //-- switch the window to window.open + + //-- html filename format rule : + //-- for UpWindow : u*.html or *u.html + //-- for DownWindow : d*.html or *d.html + +var url = window.location.href; +var head = url.substring( url.lastIndexOf("/")+1, url.lastIndexOf("/")+2 ).toLowerCase(); +var foot = url.substring( url.lastIndexOf(".")-1, url.lastIndexOf(".") ).toLowerCase(); + +if (foot == "u" || head == "u") +{ + window.name = "UpWindow"; +} +else if (foot =="d" || head == "d") +{ + window.name = "DownWindow"; +} + + + +var upWindowObject = window.open('', 'UpWindow'); +var downWindowObject = window.open('', 'DownWindow'); + + + +/* #### 20080628 #### Added $(). */ +var $ = function(arg){ return document.getElementById(arg) }; + diff --git a/gaming/htmls/DEBUG/SMC/font_check/js/multi_page_DOM.js b/gaming/htmls/DEBUG/SMC/font_check/js/multi_page_DOM.js new file mode 100644 index 0000000..67fdca0 --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/font_check/js/multi_page_DOM.js @@ -0,0 +1,233 @@ +//======================================== +// multi_page_DOM.js +//======================================== + + +/* #### 20080702 #### Added note. */ + +/* +// how to redraw by DOM (ManualTransition). + + +== ex ==== + + + ---- .html -------- + +
+
????????
+
+
+ + + + + ---- .js -------- + + function REDRAW_BY_DOM() { + + //-- to prevent clicking twice. + if (getClickedTransition() == true ) return; + setClickedTransition(); + + //==================================================== + //-- lock the old screen. + //==================================================== + gkong.SetTransitionRangeOnce(......); // #### 20080702 #### SetTransition* MUST BE CALLED. + gkong.SetManualTransition(......); + + + // redraw by DOM. + : + : + : + + waitAllImagesComplete(); + + + //==================================================== + //-- start to exchange the old screen to the new screen. + //==================================================== + gkong.StartManualTransition(); + + gkong.HideLoadingIcon(); + gkong.PlaySE(TWL_SHOP_SE_TRANSIT); + + //-- to be clickable. + clearClickedStates(); + + } + +*/ + + + +/* #### 20080715 #### Moved to "base.js". */ +// var WAIT_FOR_MANUALTRANSITION = 300; + + +var gTotalPages = 0; + +var gMaxContentNum = 0; +var gContentsPerPage = 0; +var gMaxPageNum = 0; + +var gPageNum = 0; +var gContentStart = 0; +var gCurrentContent = 0; + + + +var gIsInit = true; + + +function getPageNum() { return gPageNum; } +function getMaxPageNum() { return gMaxPageNum; } + +/* will be defined in HTML files */ +var gfnSetBtnContent = function() {} +var gfnChangePageTitle = function() {} + +/* ---- */ +var gTRangeUpY0 = 0; +var gTRangeUpY1 = 192; /* #### 20080711 #### Changed from 191 to 192. */ +var gTRangeDnY0 = 26; +var gTRangeDnY1 = 164; + +function setTRangeOnce() { gkong.SetTransitionRangeOnce(gTRangeUpY0, gTRangeUpY1, gTRangeDnY0, gTRangeDnY1); } + + + +function initDOM() { + var a = initDOM.arguments; + gTotalPages = a[0]; + gTopPageInThis = a[1]; + gMaxContentNum = a[2]; + gContentsPerPage = a[3]; + gMaxPageNum = a[4]; + gPageNum = a[5]; + gBtnIdBasename = a[6]; + gSpanIdPageNum = a[7]; + if (a[8]) { gfnSetBtnContent = a[8]; } + if (a[9]) { gfnChangePageTitle = a[9]; } + changeDOM(); +} + + +function changeDOM() { + + if (getClickedTransition() == true ) return; /*@@@@*/ + + //------------------------------------------ + setClickedTransition(); /*@@@@*/ + //------------------------------------------ + + var a = changeDOM.arguments; + + if (a.length == 0) { + + var isInit = true; + + } else { + + sleep(WAIT_FOR_MANUALTRANSITION); + + var isInit = false; + + var pm = a[0]; + var animU = a[1]; + var animD = a[2]; + if (!animU) { animU = WIPE_ANIM_NONE; } + if (!animD) { animD = WIPE_ANIM_NONE; } + + setTRangeOnce(); /*@@@@*/ + gkong.SetManualTransition(animU, animD); /*@@@@*/ + + + gPageNum += pm; + if ( gPageNum < 1 ) { gPageNum = gMaxPageNum; } + if ( gPageNum > gMaxPageNum ) { gPageNum = 1; } + + } + + + gContentStart = 1 + ( gPageNum - 1 ) * gContentsPerPage; + + + clearCursor(); + + for (i = 1; i <= gContentsPerPage; i++) { + + var o = $(gBtnIdBasename + i); + var gContentNum = ( gContentStart - 1 ) + i; + + if (isInit) { + setButtonImages(o); + } else { + } + + + if (gContentNum <= gMaxContentNum) { + gfnSetBtnContent(o, i, gContentNum, true); /* will be defined in HTML files */ + // if (gContentNum == gCurrentContent) { setCursor(o); } + } else { + gfnSetBtnContent(o, i, gContentNum, false); /* will be defined in HTML files */ + } + + } + + + $(gSpanIdPageNum).innerHTML = "" + (gTopPageInThis - 1 + gPageNum) + " / " + gTotalPages; + + gfnChangePageTitle(); /* will be defined in HTML files */ + + waitAllImagesComplete(); /*@@@@*/ + + + if (isInit) { + isInit = false; + } else { + gkong.StartManualTransition(); /*@@@@*/ + } + + gkong.HideLoadingIcon(); /*@@@@*/ + gkong.PlaySE(TWL_SHOP_SE_TRANSIT); /*@@@@*/ + + + //------------------------------------------ + clearClickedStates(); /*@@@@*/ + //------------------------------------------ + + +} + + +/* #### 20080712 #### Deleted functions to prevent clicking twice. */ +function setUrlTRangeOnceUD( urlU, animU, urlD, animD ) { + setTRangeOnce(); + setUrlUD(urlU, animU, urlD, animD); +} + +/* #### 20080712 #### Deleted functions to prevent clicking twice. */ +function setUrlTRangeOnceU( urlU, animU ) { + setTRangeOnce(); + setUrlU(urlU, animU); +} + +/* #### 20080712 #### Deleted functions to prevent clicking twice. */ +function setUrlTRangeOnceD( urlD, animD ) { + setTRangeOnce(); + setUrlD(urlD, animD); +} + + +/* #### 20080712 #### Moved to "base.js". */ +// function waitImageComplete( o ) {} + +/* #### 20080712 #### Moved to "base.js". */ +// function waitAllImagesComplete() {} + + diff --git a/gaming/htmls/DEBUG/SMC/font_check/js/se.js b/gaming/htmls/DEBUG/SMC/font_check/js/se.js new file mode 100644 index 0000000..0e5f61e --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/font_check/js/se.js @@ -0,0 +1,9 @@ +//---------------------------------------- +//-- define : SE No. (refer to sound_data.sadl) + +/* #### 20080628 #### Changed SE No. */ + +var TWL_SHOP_SE_ONMOUSEDOWN = 20; +var TWL_SHOP_SE_ONCLICK = 19; +var TWL_SHOP_SE_TRANSIT = 17; + diff --git a/gaming/htmls/DEBUG/SMC/font_check/shopmock/default.css b/gaming/htmls/DEBUG/SMC/font_check/shopmock/default.css new file mode 100644 index 0000000..6fbeed2 --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/font_check/shopmock/default.css @@ -0,0 +1,38 @@ +/* Common CSS */ +h1 +{ + font-size: 16px; + text-decoration: underline; + background-color: #CCFFCC; + margin: 4px 0px; +} +body +{ + font-size: 12px; +} +table +{ + border-width: 1px; + border-collapse: separate; + border-spacing: 0px; +} +td +{ + padding: 2px; +} +ul +{ + padding: 0px; + margin: 0px 12px; +} + +#up_url, #down_url +{ + width: 95%; +} + +#app_version +{ + text-align: right; + background-color: #CCC; +} \ No newline at end of file diff --git a/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_01_d.html b/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_01_d.html new file mode 100644 index 0000000..8dbe1f3 --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_01_d.html @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + +FontList + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +#no message
+ +FontSize : +S + +M + +L + + + + + + +
+ + + + + +
+ +
+ + + + + + + + + + +
+
+ Back +
+
+
+ + + + + +
+
+
+ + + + + + +
1/4
+ + + +
+
+
+ + + + + + + + + + + + + + diff --git a/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_01_index.html b/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_01_index.html new file mode 100644 index 0000000..b8c7273 --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_01_index.html @@ -0,0 +1,10 @@ +
+

+Prototype DSi Shop but online.
Enjoy! ^^ +

+ +
+ +
\ No newline at end of file diff --git a/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_01_u.html b/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_01_u.html new file mode 100644 index 0000000..51e1b59 --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_01_u.html @@ -0,0 +1,133 @@ + + + + + + + + + +FontList + + + + + + + +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +




 !"#$%&'
()*+,-./
01234567
89:;<=>?
@ABCDEFG
HIJKLMNO
PQRSTUVW
XYZ[\]^_
`abcdefg
hijklmno
pqrstuvw
xyz{|}~


ƒ
ˆŠŒŽ
˜šœžŸ


 ¡¢£¤¥¦§
¨©ª«¬­®¯
°±²³´µ·
¸¹º»¼½¾¿
ÀÁÂÃÄÅÆÇ
ÈÉÊËÌÍÎÏ
ÐÑÒÓÔÕÖ×
ØÙÚÛÜÝÞß
àáâãäåæç
èéêëìíîï
ðñòóôõö÷
øùúûüýþÿ


ͺ;΅Ά·΄
ΈΉΊΌΎΏ
ΐΑΒΓΔΕΖΗ
ΘΙΚΛΜΝΞΟ
ΠΡΣ ΤΥΦΧ
ΨΩΪΫάέήί
ΰαβγδεζη
θικλμνξο
πρςστυφχ
ψωϊϋόύώ
+ +
+

0x00AD (Soft Hyphen) Display Test

+

下の文字列の画面右端のみハイフンが表示され、それ以外では表示されていなければOK.

+

+A­B­C­D­E­F­G­H­I­J­K­L­M­N­O­P­Q­R­S­T­U­V­W­X­Y­Z­a­b­c­d­e­f­g­h­i­j­k­l­m­n­o­p­q­r­s­t­u­v­w­x­y­z­
+

+
+ + +
+
+ + +
+
+ + diff --git a/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_02_d.html b/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_02_d.html new file mode 100644 index 0000000..932a2eb --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_02_d.html @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + +FontList + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +#no message
+ +FontSize : +S + +M + +L + + + + + + +
+ + + + + +
+ +
+ + + + + + + + + + +
+
+ Back +
+
+
+ + + + + +
+
+
+ + + + + + +
2/4
+ + + +
+
+
+ + + + + + + + + + + + + + diff --git a/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_02_index.html b/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_02_index.html new file mode 100644 index 0000000..15dca44 --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_02_index.html @@ -0,0 +1,10 @@ +
+

+Prototype DSi Shop but online.
Enjoy! ^^ +

+ +
+ +
\ No newline at end of file diff --git a/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_02_u.html b/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_02_u.html new file mode 100644 index 0000000..040c9df --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_02_u.html @@ -0,0 +1,149 @@ + + + + + + + + + +FontList + + + + + + + +
+ + + +
+ +
+
+   。  「  」  、  ・  ヲ  ァ
+ィ  ゥ  ェ  ォ  ャ  ュ  ョ  ッ
+ー  ア  イ  ウ  エ  オ  カ  キ
+ク  ケ  コ  サ  シ  ス  セ  ソ
+タ  チ  ツ  テ  ト  ナ  ニ  ヌ
+ネ  ノ  ハ  ヒ  フ  ヘ  ホ  マ
+ミ  ム  メ  モ  ヤ  ユ  ヨ  ラ
+リ  ル  レ  ロ  ワ  ン  ゙  ゚
+
+
+  、 。 , . ・ : ;
+        ? ! ゛ ゜
+
+          `
+
+              ^
+ ̄ _ ヽ ヾ ゝ ゞ 〃 仝
+々 〆 〇 ー ― ‐ / \
+~ ∥ |
+
+        ‥      
+
+
+  ( ) 〔 〕 [ ] {
+} 〈 〉 《 》 「 」 『
+』 【 】 + -
+= ≠ < > ≦ ≧ ∞ ∴
+♂ ♀
+
+      ′ ″ ℃ ¥ $
+¢ £ % # & * @
+
+
+☆ ★ ○ ● ◎ ◇ ◆ □
+■ △ ▲ ▽ ▼ ※ 〒 →
+← ↑ ↓ 〓 ∈ ∋ ⊆ ⊇
+⊂ ⊃ ∪ ∩ ∧ ∨ ¬ ⇒
+⇔ ∀ ∃ ∠ ⊥ ⌒ ∂ ∇
+≡ ≒ ≪ ≫ √ ∽ ∝ ∵
+∫ ∬ Å
+                 
+        ♯ ♭ ♪
+    ◯ 0 1 2 3 4
+5 6 7 8 9 A B C
+D E F G H I J K
+L M N O P Q R S
+T U V W X Y Z a
+b c d e f g h i
+j k l m n o p q
+r s t u v w x y
+z ぁ あ ぃ い ぅ う ぇ
+え ぉ お か が き ぎ く
+ぐ け げ こ ご さ ざ し
+じ す ず せ ぜ そ ぞ た
+だ ち ぢ っ つ づ て で
+と ど な に ぬ ね の は
+ば ぱ ひ び ぴ ふ ぶ ぷ
+へ べ ぺ ほ ぼ ぽ ま み
+む め も ゃ や ゅ ゆ ょ
+よ ら り る れ ろ ゎ わ
+ゐ ゑ を ん ァ ア ィ イ
+ゥ ウ ェ エ ォ オ カ ガ
+キ ギ ク グ ケ ゲ コ ゴ
+サ ザ シ ジ ス ズ セ ゼ
+ソ ゾ タ ダ チ ヂ ッ ツ
+ヅ テ デ ト ド ナ ニ ヌ
+ネ ノ ハ バ パ ヒ ビ ピ
+フ ブ プ ヘ ベ ペ ホ ボ
+ポ マ ミ ム メ モ ャ ヤ
+ュ ユ ョ ヨ ラ リ ル レ
+ロ ヮ ワ ヰ ヱ ヲ ン ヴ
+ヵ ヶ
+
+
+                
+    А Б В Г Д Е
+Ё Ж З И Й К Л М
+Н О П Р С Т У Ф
+Х Ц Ч Ш Щ Ъ Ы Ь
+Э Ю Я а б в г д
+е ё ж з и й к л
+м н о п р с т у
+ф х ц ч ш щ ъ ы
+ь э ю я ─ │ ┌ ┐
+┘ └ ├ ┬ ┤ ┴ ┼ ━
+┃ ┏ ┓ ┛ ┗ ┣ ┳ ┫
+┻ ╋ ┠ ┯ ┨ ┷ ┿ ┝
+┰ ┥ ┸ ╂ ① ② ③ ④
+⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫
+⑬ ⑭ ⑮ ⑯ ⑰ ⑱ ⑲ ⑳
+Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ
+Ⅸ Ⅹ ㍉ ㌔ ㌢ ㍍ ㌘ ㌧
+㌃ ㌶ ㍑ ㍗ ㌍ ㌦ ㌣ ㌫
+㍊ ㌻ ㎜ ㎝ ㎞ ㎎ ㎏ ㏄
+㎡ ㍻ 〝 〟 № ㏍ ℡ ㊤
+㊥ ㊦ ㊧ ㊨ ㈱ ㈲ ㈹ ㍾
+㍽ ㍼ ∮ ∑ ∟ ⊿
+
+ +
+ + +
+
+ + +
+
+ + diff --git a/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_03_d.html b/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_03_d.html new file mode 100644 index 0000000..4f73615 --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_03_d.html @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + +FontList + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +#no message
+ +FontSize : +S + +M + +L + + + + + + +
+ + + + + +
+ +
+ + + + + + + + + + +
+
+ Back +
+
+
+ + + + + +
+
+
+ + + + + + +
3/4
+ + + +
+
+
+ + + + + + + + + + + + + + diff --git a/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_03_index.html b/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_03_index.html new file mode 100644 index 0000000..9dc8a6a --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_03_index.html @@ -0,0 +1,10 @@ +
+

+Prototype DSi Shop but online.
Enjoy! ^^ +

+ +
+ +
\ No newline at end of file diff --git a/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_03_u.html b/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_03_u.html new file mode 100644 index 0000000..2cc5037 --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_03_u.html @@ -0,0 +1,424 @@ + + + + + + + + + +FontList + + + + + + + +
+ + + +
+ +
+
+            亜 唖
+娃 阿 哀 愛 挨 姶 逢 葵
+茜 穐 悪 握 渥 旭 葦 芦
+鯵 梓 圧 斡 扱 宛 姐 虻
+飴 絢 綾 鮎 或 粟 袷 安
+庵 按 暗 案 闇 鞍 杏 以
+伊 位 依 偉 囲 夷 委 威
+尉 惟 意 慰 易 椅 為 畏
+異 移 維 緯 胃 萎 衣 謂
+違 遺 医 井 亥 域 育 郁
+磯 一 壱 溢 逸 稲 茨 芋
+鰯 允 印 咽 員 因 姻 引
+飲 淫 胤 蔭 院 陰 隠 韻
+吋 右 宇 烏 羽 迂 雨 卯
+鵜 窺 丑 碓 臼 渦 嘘 唄
+欝 蔚 鰻 姥 厩 浦 瓜 閏
+噂 云 運 雲 荏 餌 叡 営
+嬰 影 映 曳 栄 永 泳 洩
+瑛 盈 穎 頴 英 衛 詠 鋭
+液 疫 益 駅 悦 謁 越 閲
+榎 厭 円 園 堰 奄 宴 延
+怨 掩 援 沿 演 炎 焔 煙
+燕 猿 縁 艶 苑 薗 遠 鉛
+鴛 塩 於 汚 甥 凹 央 奥
+往 応 押 旺 横 欧 殴 王
+翁 襖 鴬 鴎 黄 岡 沖 荻
+億 屋 憶 臆 桶 牡 乙 俺
+卸 恩 温 穏 音 下 化 仮
+何 伽 価 佳 加 可 嘉 夏
+嫁 家 寡 科 暇 果 架 歌
+河 火 珂 禍 禾 稼 箇 花
+苛 茄 荷 華 菓 蝦 課 嘩
+貨 迦 過 霞 蚊 俄 峨 我 +牙 画 臥 芽 蛾 賀 雅 餓 +駕 介 会 解 回 塊 壊 廻 +快 怪 悔 恢 懐 戒 拐 改 +魁 晦 械 海 灰 界 皆 絵 +芥 蟹 開 階 貝 凱 劾 外 +咳 害 崖 慨 概 涯 碍 蓋 +街 該 鎧 骸 浬 馨 蛙 垣 +柿 蛎 鈎 劃 嚇 各 廓 拡 +撹 格 核 殻 獲 確 穫 覚 +角 赫 較 郭 閣 隔 革 学 +岳 楽 額 顎 掛 笠 樫 橿 +梶 鰍 潟 割 喝 恰 括 活 +渇 滑 葛 褐 轄 且 鰹 叶 +椛 樺 鞄 株 兜 竃 蒲 釜 +鎌 噛 鴨 栢 茅 萱 粥 刈 +苅 瓦 乾 侃 冠 寒 刊 勘 +勧 巻 喚 堪 姦 完 官 寛 +干 幹 患 感 慣 憾 換 敢 +柑 桓 棺 款 歓 汗 漢 澗 +潅 環 甘 監 看 竿 管 簡 +緩 缶 翰 肝 艦 莞 観 諌 +貫 還 鑑 間 閑 関 陥 韓 +館 舘 丸 含 岸 巌 玩 癌 +眼 岩 翫 贋 雁 頑 顔 願 +企 伎 危 喜 器 基 奇 嬉 +寄 岐 希 幾 忌 揮 机 旗 +既 期 棋 棄 機 帰 毅 気 +汽 畿 祈 季 稀 紀 徽 規 +記 貴 起 軌 輝 飢 騎 鬼 +亀 偽 儀 妓 宜 戯 技 擬 +欺 犠 疑 祇 義 蟻 誼 議
+掬 菊 鞠 吉 吃 喫 桔 橘 +詰 砧 杵 黍 却 客 脚 虐 +逆 丘 久 仇 休 及 吸 宮 +弓 急 救 朽 求 汲 泣 灸 +球 究 窮 笈 級 糾 給 旧 +牛 去 居 巨 拒 拠 挙 渠 +虚 許 距 鋸 漁 禦 魚 亨 +享 京 供 侠 僑 兇 競 共 +凶 協 匡 卿 叫 喬 境 峡 +強 彊 怯 恐 恭 挟 教 橋 +況 狂 狭 矯 胸 脅 興 蕎 +郷 鏡 響 饗 驚 仰 凝 尭 +暁 業 局 曲 極 玉 桐 粁 +僅 勤 均 巾 錦 斤 欣 欽 +琴 禁 禽 筋 緊 芹 菌 衿 +襟 謹 近 金 吟 銀 九 倶 +句 区 狗 玖 矩 苦 躯 駆 +駈 駒 具 愚 虞 喰 空 偶 +寓 遇 隅 串 櫛 釧 屑 屈 +掘 窟 沓 靴 轡 窪 熊 隈 +粂 栗 繰 桑 鍬 勲 君 薫 +訓 群 軍 郡 卦 袈 祁 係 +傾 刑 兄 啓 圭 珪 型 契 +形 径 恵 慶 慧 憩 掲 携 +敬 景 桂 渓 畦 稽 系 経 +継 繋 罫 茎 荊 蛍 計 詣 +警 軽 頚 鶏 芸 迎 鯨 劇 +戟 撃 激 隙 桁 傑 欠 決 +潔 穴 結 血 訣 月 件 倹 +倦 健 兼 券 剣 喧 圏 堅 +嫌 建 憲 懸 拳 捲 検 権 +牽 犬 献 研 硯 絹 県 肩
+見 謙 賢 軒 遣 鍵 険 顕 +験 鹸 元 原 厳 幻 弦 減 +源 玄 現 絃 舷 言 諺 限 +乎 個 古 呼 固 姑 孤 己 +庫 弧 戸 故 枯 湖 狐 糊 +袴 股 胡 菰 虎 誇 跨 鈷 +雇 顧 鼓 五 互 伍 午 呉 +吾 娯 後 御 悟 梧 檎 瑚 +碁 語 誤 護 醐 乞 鯉 交 +佼 侯 候 倖 光 公 功 効 +勾 厚 口 向 后 喉 坑 垢 +好 孔 孝 宏 工 巧 巷 幸 +広 庚 康 弘 恒 慌 抗 拘 +控 攻 昂 晃 更 杭 校 梗 +構 江 洪 浩 港 溝 甲 皇 +硬 稿 糠 紅 紘 絞 綱 耕 +考 肯 肱 腔 膏 航 荒 行 +衡 講 貢 購 郊 酵 鉱 砿 +鋼 閤 降 項 香 高 鴻 剛 +劫 号 合 壕 拷 濠 豪 轟 +麹 克 刻 告 国 穀 酷 鵠 +黒 獄 漉 腰 甑 忽 惚 骨 +狛 込 此 頃 今 困 坤 墾 +婚 恨 懇 昏 昆 根 梱 混 +痕 紺 艮 魂 些 佐 叉 唆 +嵯 左 差 査 沙 瑳 砂 詐 +鎖 裟 坐 座 挫 債 催 再 +最 哉 塞 妻 宰 彩 才 採 +栽 歳 済 災 采 犀 砕 砦 +祭 斎 細 菜 裁 載 際 剤 +在 材 罪 財 冴 坂 阪 堺 +榊 肴 咲 崎 埼 碕 鷺 作
+削 咋 搾 昨 朔 柵 窄 策 +索 錯 桜 鮭 笹 匙 冊 刷 +察 拶 撮 擦 札 殺 薩 雑 +皐 鯖 捌 錆 鮫 皿 晒 三 +傘 参 山 惨 撒 散 桟 燦 +珊 産 算 纂 蚕 讃 賛 酸 +餐 斬 暫 残 仕 仔 伺 使 +刺 司 史 嗣 四 士 始 姉 +姿 子 屍 市 師 志 思 指 +支 孜 斯 施 旨 枝 止 死 +氏 獅 祉 私 糸 紙 紫 肢 +脂 至 視 詞 詩 試 誌 諮 +資 賜 雌 飼 歯 事 似 侍 +児 字 寺 慈 持 時 次 滋 +治 爾 璽 痔 磁 示 而 耳 +自 蒔 辞 汐 鹿 式 識 鴫 +竺 軸 宍 雫 七 叱 執 失 +嫉 室 悉 湿 漆 疾 質 実 +蔀 篠 偲 柴 芝 屡 蕊 縞 +舎 写 射 捨 赦 斜 煮 社 +紗 者 謝 車 遮 蛇 邪 借 +勺 尺 杓 灼 爵 酌 釈 錫 +若 寂 弱 惹 主 取 守 手 +朱 殊 狩 珠 種 腫 趣 酒 +首 儒 受 呪 寿 授 樹 綬 +需 囚 収 周 宗 就 州 修 +愁 拾 洲 秀 秋 終 繍 習 +臭 舟 蒐 衆 襲 讐 蹴 輯 +週 酋 酬 集 醜 什 住 充 +十 従 戎 柔 汁 渋 獣 縦 +重 銃 叔 夙 宿 淑 祝 縮 +粛 塾 熟 出 術 述 俊 峻
+春 瞬 竣 舜 駿 准 循 旬 +楯 殉 淳 準 潤 盾 純 巡 +遵 醇 順 処 初 所 暑 曙 +渚 庶 緒 署 書 薯 藷 諸 +助 叙 女 序 徐 恕 鋤 除 +傷 償 勝 匠 升 召 哨 商 +唱 嘗 奨 妾 娼 宵 将 小 +少 尚 庄 床 廠 彰 承 抄 +招 掌 捷 昇 昌 昭 晶 松 +梢 樟 樵 沼 消 渉 湘 焼 +焦 照 症 省 硝 礁 祥 称 +章 笑 粧 紹 肖 菖 蒋 蕉 +衝 裳 訟 証 詔 詳 象 賞 +醤 鉦 鍾 鐘 障 鞘 上 丈 +丞 乗 冗 剰 城 場 壌 嬢 +常 情 擾 条 杖 浄 状 畳 +穣 蒸 譲 醸 錠 嘱 埴 飾 +拭 植 殖 燭 織 職 色 触 +食 蝕 辱 尻 伸 信 侵 唇 +娠 寝 審 心 慎 振 新 晋 +森 榛 浸 深 申 疹 真 神 +秦 紳 臣 芯 薪 親 診 身 +辛 進 針 震 人 仁 刃 塵 +壬 尋 甚 尽 腎 訊 迅 陣 +靭 笥 諏 須 酢 図 厨 逗 +吹 垂 帥 推 水 炊 睡 粋 +翠 衰 遂 酔 錐 錘 随 瑞 +髄 崇 嵩 数 枢 趨 雛 据 +杉 椙 菅 頗 雀 裾 澄 摺 +寸 世 瀬 畝 是 凄 制 勢 +姓 征 性 成 政 整 星 晴 +棲 栖 正 清 牲 生 盛 精
+聖 声 製 西 誠 誓 請 逝 +醒 青 静 斉 税 脆 隻 席 +惜 戚 斥 昔 析 石 積 籍 +績 脊 責 赤 跡 蹟 碩 切 +拙 接 摂 折 設 窃 節 説 +雪 絶 舌 蝉 仙 先 千 占 +宣 専 尖 川 戦 扇 撰 栓 +栴 泉 浅 洗 染 潜 煎 煽 +旋 穿 箭 線 繊 羨 腺 舛 +船 薦 詮 賎 践 選 遷 銭 +銑 閃 鮮 前 善 漸 然 全 +禅 繕 膳 糎 噌 塑 岨 措 +曾 曽 楚 狙 疏 疎 礎 祖 +租 粗 素 組 蘇 訴 阻 遡 +鼠 僧 創 双 叢 倉 喪 壮 +奏 爽 宋 層 匝 惣 想 捜 +掃 挿 掻 操 早 曹 巣 槍 +槽 漕 燥 争 痩 相 窓 糟 +総 綜 聡 草 荘 葬 蒼 藻 +装 走 送 遭 鎗 霜 騒 像 +増 憎 臓 蔵 贈 造 促 側 +則 即 息 捉 束 測 足 速 +俗 属 賊 族 続 卒 袖 其 +揃 存 孫 尊 損 村 遜 他 +多 太 汰 詑 唾 堕 妥 惰 +打 柁 舵 楕 陀 駄 騨 体 +堆 対 耐 岱 帯 待 怠 態 +戴 替 泰 滞 胎 腿 苔 袋 +貸 退 逮 隊 黛 鯛 代 台 +大 第 醍 題 鷹 滝 瀧 卓 +啄 宅 托 択 拓 沢 濯 琢 +託 鐸 濁 諾 茸 凧 蛸 只
+叩 但 達 辰 奪 脱 巽 竪 +辿 棚 谷 狸 鱈 樽 誰 丹 +単 嘆 坦 担 探 旦 歎 淡 +湛 炭 短 端 箪 綻 耽 胆 +蛋 誕 鍛 団 壇 弾 断 暖 +檀 段 男 談 値 知 地 弛 +恥 智 池 痴 稚 置 致 蜘 +遅 馳 築 畜 竹 筑 蓄 逐 +秩 窒 茶 嫡 着 中 仲 宙 +忠 抽 昼 柱 注 虫 衷 註 +酎 鋳 駐 樗 瀦 猪 苧 著 +貯 丁 兆 凋 喋 寵 帖 帳 +庁 弔 張 彫 徴 懲 挑 暢 +朝 潮 牒 町 眺 聴 脹 腸 +蝶 調 諜 超 跳 銚 長 頂 +鳥 勅 捗 直 朕 沈 珍 賃 +鎮 陳 津 墜 椎 槌 追 鎚 +痛 通 塚 栂 掴 槻 佃 漬 +柘 辻 蔦 綴 鍔 椿 潰 坪 +壷 嬬 紬 爪 吊 釣 鶴 亭 +低 停 偵 剃 貞 呈 堤 定 +帝 底 庭 廷 弟 悌 抵 挺 +提 梯 汀 碇 禎 程 締 艇 +訂 諦 蹄 逓 邸 鄭 釘 鼎 +泥 摘 擢 敵 滴 的 笛 適 +鏑 溺 哲 徹 撤 轍 迭 鉄 +典 填 天 展 店 添 纏 甜 +貼 転 顛 点 伝 殿 澱 田 +電 兎 吐 堵 塗 妬 屠 徒 +斗 杜 渡 登 菟 賭 途 都 +鍍 砥 砺 努 度 土 奴 怒 +倒 党 冬 凍 刀 唐 塔 塘
+套 宕 島 嶋 悼 投 搭 東 +桃 梼 棟 盗 淘 湯 涛 灯 +燈 当 痘 祷 等 答 筒 糖 +統 到 董 蕩 藤 討 謄 豆 +踏 逃 透 鐙 陶 頭 騰 闘 +働 動 同 堂 導 憧 撞 洞 +瞳 童 胴 萄 道 銅 峠 鴇 +匿 得 徳 涜 特 督 禿 篤 +毒 独 読 栃 橡 凸 突 椴 +届 鳶 苫 寅 酉 瀞 噸 屯 +惇 敦 沌 豚 遁 頓 呑 曇 +鈍 奈 那 内 乍 凪 薙 謎 +灘 捺 鍋 楢 馴 縄 畷 南 +楠 軟 難 汝 二 尼 弐 迩 +匂 賑 肉 虹 廿 日 乳 入 +如 尿 韮 任 妊 忍 認 濡 +禰 祢 寧 葱 猫 熱 年 念 +捻 撚 燃 粘 乃 廼 之 埜 +嚢 悩 濃 納 能 脳 膿 農 +覗 蚤 巴 把 播 覇 杷 波 +派 琶 破 婆 罵 芭 馬 俳 +廃 拝 排 敗 杯 盃 牌 背 +肺 輩 配 倍 培 媒 梅 楳 +煤 狽 買 売 賠 陪 這 蝿 +秤 矧 萩 伯 剥 博 拍 柏 +泊 白 箔 粕 舶 薄 迫 曝 +漠 爆 縛 莫 駁 麦 函 箱 +硲 箸 肇 筈 櫨 幡 肌 畑 +畠 八 鉢 溌 発 醗 髪 伐 +罰 抜 筏 閥 鳩 噺 塙 蛤 +隼 伴 判 半 反 叛 帆 搬 +斑 板 氾 汎 版 犯 班 畔
+繁 般 藩 販 範 釆 煩 頒 +飯 挽 晩 番 盤 磐 蕃 蛮 +匪 卑 否 妃 庇 彼 悲 扉 +批 披 斐 比 泌 疲 皮 碑 +秘 緋 罷 肥 被 誹 費 避 +非 飛 樋 簸 備 尾 微 枇 +毘 琵 眉 美 鼻 柊 稗 匹 +疋 髭 彦 膝 菱 肘 弼 必 +畢 筆 逼 桧 姫 媛 紐 百 +謬 俵 彪 標 氷 漂 瓢 票 +表 評 豹 廟 描 病 秒 苗 +錨 鋲 蒜 蛭 鰭 品 彬 斌 +浜 瀕 貧 賓 頻 敏 瓶 不 +付 埠 夫 婦 富 冨 布 府 +怖 扶 敷 斧 普 浮 父 符 +腐 膚 芙 譜 負 賦 赴 阜 +附 侮 撫 武 舞 葡 蕪 部 +封 楓 風 葺 蕗 伏 副 復 +幅 服 福 腹 複 覆 淵 弗 +払 沸 仏 物 鮒 分 吻 噴 +墳 憤 扮 焚 奮 粉 糞 紛 +雰 文 聞 丙 併 兵 塀 幣 +平 弊 柄 並 蔽 閉 陛 米 +頁 僻 壁 癖 碧 別 瞥 蔑 +箆 偏 変 片 篇 編 辺 返 +遍 便 勉 娩 弁 鞭 保 舗 +鋪 圃 捕 歩 甫 補 輔 穂 +募 墓 慕 戊 暮 母 簿 菩 +倣 俸 包 呆 報 奉 宝 峰 +峯 崩 庖 抱 捧 放 方 朋 +法 泡 烹 砲 縫 胞 芳 萌 +蓬 蜂 褒 訪 豊 邦 鋒 飽
+鳳 鵬 乏 亡 傍 剖 坊 妨 +帽 忘 忙 房 暴 望 某 棒 +冒 紡 肪 膨 謀 貌 貿 鉾 +防 吠 頬 北 僕 卜 墨 撲 +朴 牧 睦 穆 釦 勃 没 殆 +堀 幌 奔 本 翻 凡 盆 摩 +磨 魔 麻 埋 妹 昧 枚 毎 +哩 槙 幕 膜 枕 鮪 柾 鱒 +桝 亦 俣 又 抹 末 沫 迄 +侭 繭 麿 万 慢 満 漫 蔓 +味 未 魅 巳 箕 岬 密 蜜 +湊 蓑 稔 脈 妙 粍 民 眠 +務 夢 無 牟 矛 霧 鵡 椋 +婿 娘 冥 名 命 明 盟 迷 +銘 鳴 姪 牝 滅 免 棉 綿 +緬 面 麺 摸 模 茂 妄 孟 +毛 猛 盲 網 耗 蒙 儲 木 +黙 目 杢 勿 餅 尤 戻 籾 +貰 問 悶 紋 門 匁 也 冶 +夜 爺 耶 野 弥 矢 厄 役 +約 薬 訳 躍 靖 柳 薮 鑓 +愉 愈 油 癒 諭 輸 唯 佑 +優 勇 友 宥 幽 悠 憂 揖 +有 柚 湧 涌 猶 猷 由 祐 +裕 誘 遊 邑 郵 雄 融 夕 +予 余 与 誉 輿 預 傭 幼 +妖 容 庸 揚 揺 擁 曜 楊 +様 洋 溶 熔 用 窯 羊 耀 +葉 蓉 要 謡 踊 遥 陽 養 +慾 抑 欲 沃 浴 翌 翼 淀 +羅 螺 裸 来 莱 頼 雷 洛 +絡 落 酪 乱 卵 嵐 欄 濫
+藍 蘭 覧 利 吏 履 李 梨 +理 璃 痢 裏 裡 里 離 陸 +律 率 立 葎 掠 略 劉 流 +溜 琉 留 硫 粒 隆 竜 龍 +侶 慮 旅 虜 了 亮 僚 両 +凌 寮 料 梁 涼 猟 療 瞭 +稜 糧 良 諒 遼 量 陵 領 +力 緑 倫 厘 林 淋 燐 琳 +臨 輪 隣 鱗 麟 瑠 塁 涙 +累 類 令 伶 例 冷 励 嶺 +怜 玲 礼 苓 鈴 隷 零 霊 +麗 齢 暦 歴 列 劣 烈 裂 +廉 恋 憐 漣 煉 簾 練 聯 +蓮 連 錬 呂 魯 櫓 炉 賂 +路 露 労 婁 廊 弄 朗 楼 +榔 浪 漏 牢 狼 篭 老 聾 +蝋 郎 六 麓 禄 肋 録 論 +倭 和 話 歪 賄 脇 惑 枠 +鷲 亙 亘 鰐 詫 藁 蕨 椀 +湾 碗 腕 +
+ +
+ + +
+
+ + +
+
+ + diff --git a/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_04_d.html b/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_04_d.html new file mode 100644 index 0000000..259285c --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_04_d.html @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + +FontList + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +#no message
+ +FontSize : +S + +M + +L + + + + + + +
+ + + + + +
+ +
+ + + + + + + + + + +
+
+ Back +
+
+
+ + + + + +
+
+
+ + + + + + +
4/4
+ + + +
+
+
+ + + + + + + + + + + + + + diff --git a/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_04_index.html b/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_04_index.html new file mode 100644 index 0000000..8e9c4d4 --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_04_index.html @@ -0,0 +1,10 @@ +
+

+Prototype DSi Shop but online.
Enjoy! ^^ +

+ +
+ +
\ No newline at end of file diff --git a/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_04_u.html b/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_04_u.html new file mode 100644 index 0000000..1446c9a --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/font_check/shopmock/fontlist_04_u.html @@ -0,0 +1,481 @@ + + + + + + + + + +FontList + + + + + + + +
+ + + +
+ +
+
+      弌 丐 丕 个 丱
+丶 丼 丿 乂 乖 乘 亂 亅
+豫 亊 舒 弍 于 亞 亟 亠
+亢 亰 亳 亶 从 仍 仄 仆
+仂 仗 仞 仭 仟 价 伉 佚
+估 佛 佝 佗 佇 佶 侈 侏
+侘 佻 佩 佰 侑 佯 來 侖
+儘 俔 俟 俎 俘 俛 俑 俚
+俐 俤 俥 倚 倨 倔 倪 倥
+倅 伜 俶 倡 倩 倬 俾 俯
+們 倆 偃 假 會 偕 偐 偈
+做 偖 偬 偸 傀 傚 傅 傴
+傲 僉 僊 傳 僂 僖 僞 僥
+僭 僣 僮 價 僵 儉 儁 儂
+儖 儕 儔 儚 儡 儺 儷 儼
+儻 儿 兀 兒 兌 兔 兢 竸
+兩 兪 兮 冀 冂 囘 册 冉
+冏 冑 冓 冕 冖 冤 冦 冢
+冩 冪 冫 决 冱 冲 冰 况
+冽 凅 凉 凛 几 處 凩 凭
+凰 凵 凾 刄 刋 刔 刎 刧
+刪 刮 刳 刹 剏 剄 剋 剌
+剞 剔 剪 剴 剩 剳 剿 剽
+劍 劔 劒 剱 劈 劑 辨 辧
+劬 劭 劼 劵 勁 勍 勗 勞
+勣 勦 飭 勠 勳 勵 勸 勹
+匆 匈 甸 匍 匐 匏 匕 匚
+匣 匯 匱 匳 匸 區 卆 卅
+丗 卉 卍 凖 卞 卩 卮 夘
+卻 卷 厂 厖 厠 厦 厥 厮
+厰 厶 參 簒 雙 叟 曼 燮
+叮 叨 叭 叺 吁 吽 呀 听
+吭 吼 吮 吶 吩 吝 呎 咏 +呵 咎 呟 呱 呷 呰 咒 呻 +咀 呶 咄 咐 咆 哇 咢 咸 +咥 咬 哄 哈 咨 咫 哂 咤 +咾 咼 哘 哥 哦 唏 唔 哽 +哮 哭 哺 哢 唹 啀 啣 啌 +售 啜 啅 啖 啗 唸 唳 啝 +喙 喀 咯 喊 喟 啻 啾 喘 +喞 單 啼 喃 喩 喇 喨 嗚 +嗅 嗟 嗄 嗜 嗤 嗔 嘔 嗷 +嘖 嗾 嗽 嘛 嗹 噎 噐 營 +嘴 嘶 嘲 嘸 噫 噤 嘯 噬 +噪 嚆 嚀 嚊 嚠 嚔 嚏 嚥 +嚮 嚶 嚴 囂 嚼 囁 囃 囀 +囈 囎 囑 囓 囗 囮 囹 圀 +囿 圄 圉 圈 國 圍 圓 團 +圖 嗇 圜 圦 圷 圸 坎 圻 +址 坏 坩 埀 垈 坡 坿 垉 +垓 垠 垳 垤 垪 垰 埃 埆 +埔 埒 埓 堊 埖 埣 堋 堙 +堝 塲 堡 塢 塋 塰 毀 塒 +堽 塹 墅 墹 墟 墫 墺 壞 +墻 墸 墮 壅 壓 壑 壗 壙 +壘 壥 壜 壤 壟 壯 壺 壹 +壻 壼 壽 夂 夊 夐 夛 梦 +夥 夬 夭 夲 夸 夾 竒 奕 +奐 奎 奚 奘 奢 奠 奧 奬 +奩 奸 妁 妝 佞 侫 妣 妲 +姆 姨 姜 妍 姙 姚 娥 娟 +娑 娜 娉 娚 婀 婬 婉 娵 +娶 婢 婪 媚 媼 媾 嫋 嫂 +媽 嫣 嫗 嫦 嫩 嫖 嫺 嫻
+嬌 嬋 嬖 嬲 嫐 嬪 嬶 嬾 +孃 孅 孀 孑 孕 孚 孛 孥 +孩 孰 孳 孵 學 斈 孺 宀 +它 宦 宸 寃 寇 寉 寔 寐 +寤 實 寢 寞 寥 寫 寰 寶 +寳 尅 將 專 對 尓 尠 尢 +尨 尸 尹 屁 屆 屎 屓 屐 +屏 孱 屬 屮 乢 屶 屹 岌 +岑 岔 妛 岫 岻 岶 岼 岷 +峅 岾 峇 峙 峩 峽 峺 峭 +嶌 峪 崋 崕 崗 嵜 崟 崛 +崑 崔 崢 崚 崙 崘 嵌 嵒 +嵎 嵋 嵬 嵳 嵶 嶇 嶄 嶂 +嶢 嶝 嶬 嶮 嶽 嶐 嶷 嶼 +巉 巍 巓 巒 巖 巛 巫 已 +巵 帋 帚 帙 帑 帛 帶 帷 +幄 幃 幀 幎 幗 幔 幟 幢 +幤 幇 幵 并 幺 麼 广 庠 +廁 廂 廈 廐 廏 廖 廣 廝 +廚 廛 廢 廡 廨 廩 廬 廱 +廳 廰 廴 廸 廾 弃 弉 彝 +彜 弋 弑 弖 弩 弭 弸 彁 +彈 彌 彎 弯 彑 彖 彗 彙 +彡 彭 彳 彷 徃 徂 彿 徊 +很 徑 徇 從 徙 徘 徠 徨 +徭 徼 忖 忻 忤 忸 忱 忝 +悳 忿 怡 恠 怙 怐 怩 怎 +怱 怛 怕 怫 怦 怏 怺 恚 +恁 恪 恷 恟 恊 恆 恍 恣 +恃 恤 恂 恬 恫 恙 悁 悍 +惧 悃 悚 悄 悛 悖 悗 悒 +悧 悋 惡 悸 惠 惓 悴 忰
+悽 惆 悵 惘 慍 愕 愆 惶 +惷 愀 惴 惺 愃 愡 惻 惱 +愍 愎 慇 愾 愨 愧 慊 愿 +愼 愬 愴 愽 慂 慄 慳 慷 +慘 慙 慚 慫 慴 慯 慥 慱 +慟 慝 慓 慵 憙 憖 憇 憬 +憔 憚 憊 憑 憫 憮 懌 懊 +應 懷 懈 懃 懆 憺 懋 罹 +懍 懦 懣 懶 懺 懴 懿 懽 +懼 懾 戀 戈 戉 戍 戌 戔 +戛 戞 戡 截 戮 戰 戲 戳 +扁 扎 扞 扣 扛 扠 扨 扼 +抂 抉 找 抒 抓 抖 拔 抃 +抔 拗 拑 抻 拏 拿 拆 擔 +拈 拜 拌 拊 拂 拇 抛 拉 +挌 拮 拱 挧 挂 挈 拯 拵 +捐 挾 捍 搜 捏 掖 掎 掀 +掫 捶 掣 掏 掉 掟 掵 捫 +捩 掾 揩 揀 揆 揣 揉 插 +揶 揄 搖 搴 搆 搓 搦 搶 +攝 搗 搨 搏 摧 摯 摶 摎 +攪 撕 撓 撥 撩 撈 撼 據 +擒 擅 擇 撻 擘 擂 擱 擧 +舉 擠 擡 抬 擣 擯 攬 擶 +擴 擲 擺 攀 擽 攘 攜 攅 +攤 攣 攫 攴 攵 攷 收 攸 +畋 效 敖 敕 敍 敘 敞 敝 +敲 數 斂 斃 變 斛 斟 斫 +斷 旃 旆 旁 旄 旌 旒 旛 +旙 无 旡 旱 杲 昊 昃 旻 +杳 昵 昶 昴 昜 晏 晄 晉 +晁 晞 晝 晤 晧 晨 晟 晢
+晰 暃 暈 暎 暉 暄 暘 暝 +曁 暹 曉 暾 暼 曄 暸 曖 +曚 曠 昿 曦 曩 曰 曵 曷 +朏 朖 朞 朦 朧 霸 朮 朿 +朶 杁 朸 朷 杆 杞 杠 杙 +杣 杤 枉 杰 枩 杼 杪 枌 +枋 枦 枡 枅 枷 柯 枴 柬 +枳 柩 枸 柤 柞 柝 柢 柮 +枹 柎 柆 柧 檜 栞 框 栩 +桀 桍 栲 桎 梳 栫 桙 档 +桷 桿 梟 梏 梭 梔 條 梛 +梃 檮 梹 桴 梵 梠 梺 椏 +梍 桾 椁 棊 椈 棘 椢 椦 +棡 椌 棍 棔 棧 棕 椶 椒 +椄 棗 棣 椥 棹 棠 棯 椨 +椪 椚 椣 椡 棆 楹 楷 楜 +楸 楫 楔 楾 楮 椹 楴 椽 +楙 椰 楡 楞 楝 榁 楪 榲 +榮 槐 榿 槁 槓 榾 槎 寨 +槊 槝 榻 槃 榧 樮 榑 榠 +榜 榕 榴 槞 槨 樂 樛 槿 +權 槹 槲 槧 樅 榱 樞 槭 +樔 槫 樊 樒 櫁 樣 樓 橄 +樌 橲 樶 橸 橇 橢 橙 橦 +橈 樸 樢 檐 檍 檠 檄 檢 +檣 檗 蘗 檻 櫃 櫂 檸 檳 +檬 櫞 櫑 櫟 檪 櫚 櫪 櫻 +欅 蘖 櫺 欒 欖 鬱 欟 欸 +欷 盜 欹 飮 歇 歃 歉 歐 +歙 歔 歛 歟 歡 歸 歹 歿 +殀 殄 殃 殍 殘 殕 殞 殤 +殪 殫 殯 殲 殱 殳 殷 殼
+毆 毋 毓 毟 毬 毫 毳 毯 +麾 氈 氓 气 氛 氤 氣 汞 +汕 汢 汪 沂 沍 沚 沁 沛 +汾 汨 汳 沒 沐 泄 泱 泓 +沽 泗 泅 泝 沮 沱 沾 沺 +泛 泯 泙 泪 洟 衍 洶 洫 +洽 洸 洙 洵 洳 洒 洌 浣 +涓 浤 浚 浹 浙 涎 涕 濤 +涅 淹 渕 渊 涵 淇 淦 涸 +淆 淬 淞 淌 淨 淒 淅 淺 +淙 淤 淕 淪 淮 渭 湮 渮 +渙 湲 湟 渾 渣 湫 渫 湶 +湍 渟 湃 渺 湎 渤 滿 渝 +游 溂 溪 溘 滉 溷 滓 溽 +溯 滄 溲 滔 滕 溏 溥 滂 +溟 潁 漑 灌 滬 滸 滾 漿 +滲 漱 滯 漲 滌 漾 漓 滷 +澆 潺 潸 澁 澀 潯 潛 濳 +潭 澂 潼 潘 澎 澑 濂 潦 +澳 澣 澡 澤 澹 濆 澪 濟 +濕 濬 濔 濘 濱 濮 濛 瀉 +瀋 濺 瀑 瀁 瀏 濾 瀛 瀚 +潴 瀝 瀘 瀟 瀰 瀾 瀲 灑 +灣 炙 炒 炯 烱 炬 炸 炳 +炮 烟 烋 烝 烙 焉 烽 焜 +焙 煥 煕 熈 煦 煢 煌 煖 +煬 熏 燻 熄 熕 熨 熬 燗 +熹 熾 燒 燉 燔 燎 燠 燬 +燧 燵 燼 燹 燿 爍 爐 爛 +爨 爭 爬 爰 爲 爻 爼 爿 +牀 牆 牋 牘 牴 牾 犂 犁 +犇 犒 犖 犢 犧 犹 犲 狃
+狆 狄 狎 狒 狢 狠 狡 狹 +狷 倏 猗 猊 猜 猖 猝 猴 +猯 猩 猥 猾 獎 獏 默 獗 +獪 獨 獰 獸 獵 獻 獺 珈 +玳 珎 玻 珀 珥 珮 珞 璢 +琅 瑯 琥 珸 琲 琺 瑕 琿 +瑟 瑙 瑁 瑜 瑩 瑰 瑣 瑪 +瑶 瑾 璋 璞 璧 瓊 瓏 瓔 +珱 瓠 瓣 瓧 瓩 瓮 瓲 瓰 +瓱 瓸 瓷 甄 甃 甅 甌 甎 +甍 甕 甓 甞 甦 甬 甼 畄 +畍 畊 畉 畛 畆 畚 畩 畤 +畧 畫 畭 畸 當 疆 疇 畴 +疊 疉 疂 疔 疚 疝 疥 疣 +痂 疳 痃 疵 疽 疸 疼 疱 +痍 痊 痒 痙 痣 痞 痾 痿 +痼 瘁 痰 痺 痲 痳 瘋 瘍 +瘉 瘟 瘧 瘠 瘡 瘢 瘤 瘴 +瘰 瘻 癇 癈 癆 癜 癘 癡 +癢 癨 癩 癪 癧 癬 癰 癲 +癶 癸 發 皀 皃 皈 皋 皎 +皖 皓 皙 皚 皰 皴 皸 皹 +皺 盂 盍 盖 盒 盞 盡 盥 +盧 盪 蘯 盻 眈 眇 眄 眩 +眤 眞 眥 眦 眛 眷 眸 睇 +睚 睨 睫 睛 睥 睿 睾 睹 +瞎 瞋 瞑 瞠 瞞 瞰 瞶 瞹 +瞿 瞼 瞽 瞻 矇 矍 矗 矚 +矜 矣 矮 矼 砌 砒 礦 砠 +礪 硅 碎 硴 碆 硼 碚 碌 +碣 碵 碪 碯 磑 磆 磋 磔 +碾 碼 磅 磊 磬 磧 磚 磽
+磴 礇 礒 礑 礙 礬 礫 祀 +祠 祗 祟 祚 祕 祓 祺 祿 +禊 禝 禧 齋 禪 禮 禳 禹 +禺 秉 秕 秧 秬 秡 秣 稈 +稍 稘 稙 稠 稟 禀 稱 稻 +稾 稷 穃 穗 穉 穡 穢 穩 +龝 穰 穹 穽 窈 窗 窕 窘 +窖 窩 竈 窰 窶 竅 竄 窿 +邃 竇 竊 竍 竏 竕 竓 站 +竚 竝 竡 竢 竦 竭 竰 笂 +笏 笊 笆 笳 笘 笙 笞 笵 +笨 笶 筐 筺 笄 筍 笋 筌 +筅 筵 筥 筴 筧 筰 筱 筬 +筮 箝 箘 箟 箍 箜 箚 箋 +箒 箏 筝 箙 篋 篁 篌 篏 +箴 篆 篝 篩 簑 簔 篦 篥 +籠 簀 簇 簓 篳 篷 簗 簍 +篶 簣 簧 簪 簟 簷 簫 簽 +籌 籃 籔 籏 籀 籐 籘 籟 +籤 籖 籥 籬 籵 粃 粐 粤 +粭 粢 粫 粡 粨 粳 粲 粱 +粮 粹 粽 糀 糅 糂 糘 糒 +糜 糢 鬻 糯 糲 糴 糶 糺 +紆 紂 紜 紕 紊 絅 絋 紮 +紲 紿 紵 絆 絳 絖 絎 絲 +絨 絮 絏 絣 經 綉 絛 綏 +絽 綛 綺 綮 綣 綵 緇 綽 +綫 總 綢 綯 緜 綸 綟 綰 +緘 緝 緤 緞 緻 緲 緡 縅 +縊 縣 縡 縒 縱 縟 縉 縋 +縢 繆 繦 縻 縵 縹 繃 縷 +縲 縺 繧 繝 繖 繞 繙 繚
+繹 繪 繩 繼 繻 纃 緕 繽 +辮 繿 纈 纉 續 纒 纐 纓 +纔 纖 纎 纛 纜 缸 缺 罅 +罌 罍 罎 罐 网 罕 罔 罘 +罟 罠 罨 罩 罧 罸 羂 羆 +羃 羈 羇 羌 羔 羞 羝 羚 +羣 羯 羲 羹 羮 羶 羸 譱 +翅 翆 翊 翕 翔 翡 翦 翩 +翳 翹 飜 耆 耄 耋 耒 耘 +耙 耜 耡 耨 耿 耻 聊 聆 +聒 聘 聚 聟 聢 聨 聳 聲 +聰 聶 聹 聽 聿 肄 肆 肅 +肛 肓 肚 肭 冐 肬 胛 胥 +胙 胝 胄 胚 胖 脉 胯 胱 +脛 脩 脣 脯 腋 隋 腆 脾 +腓 腑 胼 腱 腮 腥 腦 腴 +膃 膈 膊 膀 膂 膠 膕 膤 +膣 腟 膓 膩 膰 膵 膾 膸 +膽 臀 臂 膺 臉 臍 臑 臙 +臘 臈 臚 臟 臠 臧 臺 臻 +臾 舁 舂 舅 與 舊 舍 舐 +舖 舩 舫 舸 舳 艀 艙 艘 +艝 艚 艟 艤 艢 艨 艪 艫 +舮 艱 艷 艸 艾 芍 芒 芫 +芟 芻 芬 苡 苣 苟 苒 苴 +苳 苺 莓 范 苻 苹 苞 茆 +苜 茉 苙 茵 茴 茖 茲 茱 +荀 茹 荐 荅 茯 茫 茗 茘 +莅 莚 莪 莟 莢 莖 茣 莎 +莇 莊 荼 莵 荳 荵 莠 莉 +莨 菴 萓 菫 菎 菽 萃 菘 +萋 菁 菷 萇 菠 菲 萍 萢
+萠 莽 萸 蔆 菻 葭 萪 萼 +蕚 蒄 葷 葫 蒭 葮 蒂 葩 +葆 萬 葯 葹 萵 蓊 葢 蒹 +蒿 蒟 蓙 蓍 蒻 蓚 蓐 蓁 +蓆 蓖 蒡 蔡 蓿 蓴 蔗 蔘 +蔬 蔟 蔕 蔔 蓼 蕀 蕣 蕘 +蕈 蕁 蘂 蕋 蕕 薀 薤 薈 +薑 薊 薨 蕭 薔 薛 藪 薇 +薜 蕷 蕾 薐 藉 薺 藏 薹 +藐 藕 藝 藥 藜 藹 蘊 蘓 +蘋 藾 藺 蘆 蘢 蘚 蘰 蘿 +虍 乕 虔 號 虧 虱 蚓 蚣 +蚩 蚪 蚋 蚌 蚶 蚯 蛄 蛆 +蚰 蛉 蠣 蚫 蛔 蛞 蛩 蛬 +蛟 蛛 蛯 蜒 蜆 蜈 蜀 蜃 +蛻 蜑 蜉 蜍 蛹 蜊 蜴 蜿 +蜷 蜻 蜥 蜩 蜚 蝠 蝟 蝸 +蝌 蝎 蝴 蝗 蝨 蝮 蝙 蝓 +蝣 蝪 蠅 螢 螟 螂 螯 蟋 +螽 蟀 蟐 雖 螫 蟄 螳 蟇 +蟆 螻 蟯 蟲 蟠 蠏 蠍 蟾 +蟶 蟷 蠎 蟒 蠑 蠖 蠕 蠢 +蠡 蠱 蠶 蠹 蠧 蠻 衄 衂 +衒 衙 衞 衢 衫 袁 衾 袞 +衵 衽 袵 衲 袂 袗 袒 袮 +袙 袢 袍 袤 袰 袿 袱 裃 +裄 裔 裘 裙 裝 裹 褂 裼 +裴 裨 裲 褄 褌 褊 褓 襃 +褞 褥 褪 褫 襁 襄 褻 褶 +褸 襌 褝 襠 襞 襦 襤 襭 +襪 襯 襴 襷 襾 覃 覈 覊 +覓 覘 覡 覩 覦 覬 覯 覲
+覺 覽 覿 觀 觚 觜 觝 觧 +觴 觸 訃 訖 訐 訌 訛 訝 +訥 訶 詁 詛 詒 詆 詈 詼 +詭 詬 詢 誅 誂 誄 誨 誡 +誑 誥 誦 誚 誣 諄 諍 諂 +諚 諫 諳 諧 諤 諱 謔 諠 +諢 諷 諞 諛 謌 謇 謚 諡 +謖 謐 謗 謠 謳 鞫 謦 謫 +謾 謨 譁 譌 譏 譎 證 譖 +譛 譚 譫 譟 譬 譯 譴 譽 +讀 讌 讎 讒 讓 讖 讙 讚 +谺 豁 谿 豈 豌 豎 豐 豕 +豢 豬 豸 豺 貂 貉 貅 貊 +貍 貎 貔 豼 貘 戝 貭 貪 +貽 貲 貳 貮 貶 賈 賁 賤 +賣 賚 賽 賺 賻 贄 贅 贊 +贇 贏 贍 贐 齎 贓 賍 贔 +贖 赧 赭 赱 赳 趁 趙 跂 +趾 趺 跏 跚 跖 跌 跛 跋 +跪 跫 跟 跣 跼 踈 踉 跿 +踝 踞 踐 踟 蹂 踵 踰 踴 +蹊 蹇 蹉 蹌 蹐 蹈 蹙 蹤 +蹠 踪 蹣 蹕 蹶 蹲 蹼 躁 +躇 躅 躄 躋 躊 躓 躑 躔 +躙 躪 躡 躬 躰 軆 躱 躾 +軅 軈 軋 軛 軣 軼 軻 軫 +軾 輊 輅 輕 輒 輙 輓 輜 +輟 輛 輌 輦 輳 輻 輹 轅 +轂 輾 轌 轉 轆 轎 轗 轜 +轢 轣 轤 辜 辟 辣 辭 辯 +辷 迚 迥 迢 迪 迯 邇 迴 +逅 迹 迺 逑 逕 逡 逍 逞
+逖 逋 逧 逶 逵 逹 迸 遏 +遐 遑 遒 逎 遉 逾 遖 遘 +遞 遨 遯 遶 隨 遲 邂 遽 +邁 邀 邊 邉 邏 邨 邯 邱 +邵 郢 郤 扈 郛 鄂 鄒 鄙 +鄲 鄰 酊 酖 酘 酣 酥 酩 +酳 酲 醋 醉 醂 醢 醫 醯 +醪 醵 醴 醺 釀 釁 釉 釋 +釐 釖 釟 釡 釛 釼 釵 釶 +鈞 釿 鈔 鈬 鈕 鈑 鉞 鉗 +鉅 鉉 鉤 鉈 銕 鈿 鉋 鉐 +銜 銖 銓 銛 鉚 鋏 銹 銷 +鋩 錏 鋺 鍄 錮 錙 錢 錚 +錣 錺 錵 錻 鍜 鍠 鍼 鍮 +鍖 鎰 鎬 鎭 鎔 鎹 鏖 鏗 +鏨 鏥 鏘 鏃 鏝 鏐 鏈 鏤 +鐚 鐔 鐓 鐃 鐇 鐐 鐶 鐫 +鐵 鐡 鐺 鑁 鑒 鑄 鑛 鑠 +鑢 鑞 鑪 鈩 鑰 鑵 鑷 鑽 +鑚 鑼 鑾 钁 鑿 閂 閇 閊 +閔 閖 閘 閙 閠 閨 閧 閭 +閼 閻 閹 閾 闊 濶 闃 闍 +闌 闕 闔 闖 關 闡 闥 闢 +阡 阨 阮 阯 陂 陌 陏 陋 +陷 陜 陞 陝 陟 陦 陲 陬 +隍 隘 隕 隗 險 隧 隱 隲 +隰 隴 隶 隸 隹 雎 雋 雉 +雍 襍 雜 霍 雕 雹 霄 霆 +霈 霓 霎 霑 霏 霖 霙 霤 +霪 霰 霹 霽 霾 靄 靆 靈 +靂 靉 靜 靠 靤 靦 靨 勒 +靫 靱 靹 鞅 靼 鞁 靺 鞆
+鞋 鞏 鞐 鞜 鞨 鞦 鞣 鞳 +鞴 韃 韆 韈 韋 韜 韭 齏 +韲 竟 韶 韵 頏 頌 頸 頤 +頡 頷 頽 顆 顏 顋 顫 顯 +顰 顱 顴 顳 颪 颯 颱 颶 +飄 飃 飆 飩 飫 餃 餉 餒 +餔 餘 餡 餝 餞 餤 餠 餬 +餮 餽 餾 饂 饉 饅 饐 饋 +饑 饒 饌 饕 馗 馘 馥 馭 +馮 馼 駟 駛 駝 駘 駑 駭 +駮 駱 駲 駻 駸 騁 騏 騅 +駢 騙 騫 騷 驅 驂 驀 驃 +騾 驕 驍 驛 驗 驟 驢 驥 +驤 驩 驫 驪 骭 骰 骼 髀 +髏 髑 髓 體 髞 髟 髢 髣 +髦 髯 髫 髮 髴 髱 髷 髻 +鬆 鬘 鬚 鬟 鬢 鬣 鬥 鬧 +鬨 鬩 鬪 鬮 鬯 鬲 魄 魃 +魏 魍 魎 魑 魘 魴 鮓 鮃 +鮑 鮖 鮗 鮟 鮠 鮨 鮴 鯀 +鯊 鮹 鯆 鯏 鯑 鯒 鯣 鯢 +鯤 鯔 鯡 鰺 鯲 鯱 鯰 鰕 +鰔 鰉 鰓 鰌 鰆 鰈 鰒 鰊 +鰄 鰮 鰛 鰥 鰤 鰡 鰰 鱇 +鰲 鱆 鰾 鱚 鱠 鱧 鱶 鱸 +鳧 鳬 鳰 鴉 鴈 鳫 鴃 鴆 +鴪 鴦 鶯 鴣 鴟 鵄 鴕 鴒 +鵁 鴿 鴾 鵆 鵈 鵝 鵞 鵤 +鵑 鵐 鵙 鵲 鶉 鶇 鶫 鵯 +鵺 鶚 鶤 鶩 鶲 鷄 鷁 鶻 +鶸 鶺 鷆 鷏 鷂 鷙 鷓 鷸 +鷦 鷭 鷯 鷽 鸚 鸛 鸞 鹵
+鹹 鹽 麁 麈 麋 麌 麒 麕 +麑 麝 麥 麩 麸 麪 麭 靡 +黌 黎 黏 黐 黔 黜 點 黝 +黠 黥 黨 黯 黴 黶 黷 黹 +黻 黼 黽 鼇 鼈 皷 鼕 鼡 +鼬 鼾 齊 齒 齔 齣 齟 齠 +齡 齦 齧 齬 齪 齷 齲 齶 +龕 龜 龠 堯 槇 遙 瑤 凜 +熙 + + +ⅰ ⅱ ⅲ ⅳ ⅴ ⅵ ⅶ ⅷ +ⅸ ⅹ ¦ ' " +
+ +
+ + +
+
+ + +
+
+ + diff --git a/gaming/htmls/DEBUG/SMC/font_check/shopmock/index.html b/gaming/htmls/DEBUG/SMC/font_check/shopmock/index.html new file mode 100644 index 0000000..0f30181 --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/font_check/shopmock/index.html @@ -0,0 +1,10 @@ +
+

+Prototype DSi Shop but online.
Enjoy! ^^ +

+ +
+ +
\ No newline at end of file diff --git a/gaming/htmls/DEBUG/SMC/font_check/shopmock/index_d.html b/gaming/htmls/DEBUG/SMC/font_check/shopmock/index_d.html new file mode 100644 index 0000000..d3fd13a --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/font_check/shopmock/index_d.html @@ -0,0 +1,52 @@ + + + + +SMC index_u + + + + + + +

Links

+
Instead, take a look at the other pages in this directory.
+ +

fontlist

+ + + + + + + + diff --git a/gaming/htmls/DEBUG/SMC/font_check/shopmock/index_u.html b/gaming/htmls/DEBUG/SMC/font_check/shopmock/index_u.html new file mode 100644 index 0000000..9007846 --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/font_check/shopmock/index_u.html @@ -0,0 +1,28 @@ + + + + +SMC index_u + + + + + + +

NOTICE

+
This page was missing from the original app. I have no idea what it is supposed to look like or even do, so sorry.
+ + diff --git a/gaming/htmls/DEBUG/SMC/index.html b/gaming/htmls/DEBUG/SMC/index.html new file mode 100644 index 0000000..0f30181 --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/index.html @@ -0,0 +1,10 @@ +
+

+Prototype DSi Shop but online.
Enjoy! ^^ +

+ +
+ +
\ No newline at end of file diff --git a/gaming/htmls/DEBUG/SMC/index_d.html b/gaming/htmls/DEBUG/SMC/index_d.html new file mode 100644 index 0000000..83d7b34 --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/index_d.html @@ -0,0 +1,65 @@ + + + + +SMC index_d + + + + + +

Shop Server

+ + + + +

EC

+ + +

ショップモック

+ + ../shopmock/shopmock/index_x.html + + +

エラーシミュレータ

+tools/ShowErrorPage.html + +

フォントチェック

+ + font_check/shopmock/fontlist_01_x.html + + +

Topに戻る

+ + ../startup_x.html + + + diff --git a/gaming/htmls/DEBUG/SMC/index_u.html b/gaming/htmls/DEBUG/SMC/index_u.html new file mode 100644 index 0000000..f01b190 --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/index_u.html @@ -0,0 +1,81 @@ + + + + +SMC index_u + + + + + + + +

マリオクラブ

+
+Opera/9.50 (Nintendo; Opera/153; U; Nintendo DS; en)
+ + + +
+ + + + + + + +
accountId54319686
deviceId13685480607
serialWW414572520
country/reg/langCA / USA / en
block(x16[KB])5603 / 8192
MAC69:69:69:69:69:69
+
+ + diff --git a/gaming/htmls/DEBUG/SMC/tools/ShowErrorPage.html b/gaming/htmls/DEBUG/SMC/tools/ShowErrorPage.html new file mode 100644 index 0000000..aa3b2c9 --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/tools/ShowErrorPage.html @@ -0,0 +1,25 @@ + + + + +GetMessage + + + + + +

ShowErrorPage

+
+
+ + diff --git a/gaming/htmls/DEBUG/SMC/tools/default.css b/gaming/htmls/DEBUG/SMC/tools/default.css new file mode 100644 index 0000000..6db507f --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/tools/default.css @@ -0,0 +1,32 @@ +/* Common CSS */ +h1 +{ + font-size: 16px; + text-decoration: underline; + background-color: #CCFFCC; + margin: 4px 0px; +} +body +{ + font-size: 12px; +} +table +{ + border-width: 1px; + border-collapse: separate; + border-spacing: 0px; +} +td +{ + padding: 2px; +} +ul +{ + padding: 0px; + margin: 0px 12px; +} + +#up_url, #down_url +{ + width: 95%; +} \ No newline at end of file diff --git a/gaming/htmls/DEBUG/SMC/tools/default.js b/gaming/htmls/DEBUG/SMC/tools/default.js new file mode 100644 index 0000000..9bd9d2b --- /dev/null +++ b/gaming/htmls/DEBUG/SMC/tools/default.js @@ -0,0 +1,32 @@ +function MovePage( up_url, down_url, up_anim, down_anim ) +{ + if ( up_url != "" || down_url != "" ) + { + if ( up_anim == undefined ) up_anim = 0; + if ( down_anim == undefined ) down_anim = 0; + + var kong_ = new Kong(); + kong_.SetTransition( up_anim, down_anim ); + if ( up_url != "" ) + { + window.open( up_url, "UpWindow" ); + } + if ( down_url != "" ) + { + window.open( down_url, "DownWindow" ); + } + } +} + +function ActiveKeyboard( type, title, field ) +{ + var kong_ = new Kong; + kong_.KbdActive( type, title, field); +} + +function GoWeb() +{ + var up = up_url.value; + var down = down_url.value; + MovePage( up, down, 1, 1 ); +} \ No newline at end of file diff --git a/gaming/htmls/DEBUG/common/css/default.css b/gaming/htmls/DEBUG/common/css/default.css new file mode 100644 index 0000000..6fbeed2 --- /dev/null +++ b/gaming/htmls/DEBUG/common/css/default.css @@ -0,0 +1,38 @@ +/* Common CSS */ +h1 +{ + font-size: 16px; + text-decoration: underline; + background-color: #CCFFCC; + margin: 4px 0px; +} +body +{ + font-size: 12px; +} +table +{ + border-width: 1px; + border-collapse: separate; + border-spacing: 0px; +} +td +{ + padding: 2px; +} +ul +{ + padding: 0px; + margin: 0px 12px; +} + +#up_url, #down_url +{ + width: 95%; +} + +#app_version +{ + text-align: right; + background-color: #CCC; +} \ No newline at end of file diff --git a/gaming/htmls/DEBUG/common/js/default.js b/gaming/htmls/DEBUG/common/js/default.js new file mode 100644 index 0000000..9bd9d2b --- /dev/null +++ b/gaming/htmls/DEBUG/common/js/default.js @@ -0,0 +1,32 @@ +function MovePage( up_url, down_url, up_anim, down_anim ) +{ + if ( up_url != "" || down_url != "" ) + { + if ( up_anim == undefined ) up_anim = 0; + if ( down_anim == undefined ) down_anim = 0; + + var kong_ = new Kong(); + kong_.SetTransition( up_anim, down_anim ); + if ( up_url != "" ) + { + window.open( up_url, "UpWindow" ); + } + if ( down_url != "" ) + { + window.open( down_url, "DownWindow" ); + } + } +} + +function ActiveKeyboard( type, title, field ) +{ + var kong_ = new Kong; + kong_.KbdActive( type, title, field); +} + +function GoWeb() +{ + var up = up_url.value; + var down = down_url.value; + MovePage( up, down, 1, 1 ); +} \ No newline at end of file diff --git a/gaming/htmls/DEBUG/startup.html b/gaming/htmls/DEBUG/startup.html new file mode 100644 index 0000000..e8aa6fe --- /dev/null +++ b/gaming/htmls/DEBUG/startup.html @@ -0,0 +1,11 @@ +
+

+Prototype DSi Shop but online.
Enjoy! ^^ +

+ +
+ +


Note that I had to fill in dummy system info, most of the stuff is broken and won't work, and some formatting is messed up. idk how to fix that stuff, but feel free to submit a pr if you know how.
Also if a link doesn't work, it's probably because it links to a dead site or non existant page, so I stopped it from working.

This is just to give an idea of how the prototype shop looked. To experience the real thing, download the .nds file here (may only work through hiyaCFW or NAND install). +
\ No newline at end of file diff --git a/gaming/htmls/DEBUG/startup_d.html b/gaming/htmls/DEBUG/startup_d.html new file mode 100644 index 0000000..6a05781 --- /dev/null +++ b/gaming/htmls/DEBUG/startup_d.html @@ -0,0 +1,62 @@ + + + + +StartPage + + + + + +

Shop Server

+ + + + + +

Debug

+ + +

DSi Shop for China/Korea

+ + diff --git a/gaming/htmls/DEBUG/startup_u.html b/gaming/htmls/DEBUG/startup_u.html new file mode 100644 index 0000000..e004138 --- /dev/null +++ b/gaming/htmls/DEBUG/startup_u.html @@ -0,0 +1,81 @@ + + + + + + + + + + + + +

Shopping Channel

+
+Opera/9.50 (Nintendo; Opera/153; U; Nintendo DS; en)
+ + + +
+ + + + + + + +
accountId54319686
deviceId13685480607
serialWW414572520
country/reg/langCA / USA / en
block(x16[KB])5603 / 8192
MAC69:69:69:69:69:69
+
+ + diff --git a/gaming/htmls/error/E_01_d.html b/gaming/htmls/error/E_01_d.html new file mode 100644 index 0000000..8004003 --- /dev/null +++ b/gaming/htmls/error/E_01_d.html @@ -0,0 +1,234 @@ + + + + + + + + + + + + + +E_01_d + + + + + + + + + +
+
+ +
+ + + +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+ + + +
+
+
+ + + + + + + + + + + +
+
+ + +
+
+ + + +
+
+ + + + +
+
+
+ + + + + +
+
+ + + + +
+
+
+ + + + + + + + + + + +
+
+ + +
+
+ + + +
+
+ + + + +
+
+
+ + + + + +
+
+ + + + +
+
+
+ + + + + + + diff --git a/gaming/htmls/error/E_01_u.html b/gaming/htmls/error/E_01_u.html new file mode 100644 index 0000000..bc13735 --- /dev/null +++ b/gaming/htmls/error/E_01_u.html @@ -0,0 +1,55 @@ + + + + + + + + + + + + + +E_01_u + + + + + + + + + +
+ +
+ + +
+ +
+ + + +
+ +
+ +
+ +
+ + +
+ + + + diff --git a/gaming/htmls/error/E_02_d.html b/gaming/htmls/error/E_02_d.html new file mode 100644 index 0000000..44b7439 --- /dev/null +++ b/gaming/htmls/error/E_02_d.html @@ -0,0 +1,234 @@ + + + + + + + + + + + + + +E_02_d + + + + + + + + + +
+
+ +
+ + + +
+ + + + +
+
+ + + +
+
+
+ + + + + + + + + + + + + +
+
+ + +
+
+ + + +
+
+ + + + +
+
+
+ + + + + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + diff --git a/gaming/htmls/error/E_02_u.html b/gaming/htmls/error/E_02_u.html new file mode 100644 index 0000000..60f465c --- /dev/null +++ b/gaming/htmls/error/E_02_u.html @@ -0,0 +1,55 @@ + + + + + + + + + + + + + +E_02_u + + + + + + + + + +
+ +
+ + +
+ +
+ + + +
+ +
+ +
+ +
+ + +
+ + + + diff --git a/gaming/htmls/error/E_03_d.html b/gaming/htmls/error/E_03_d.html new file mode 100644 index 0000000..8d0649e --- /dev/null +++ b/gaming/htmls/error/E_03_d.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + +E_03_d + + + + + + + + + +
+
+ +
+ + + +
+ + + + +
+
+ + + +
+
+
+ + + + + + + diff --git a/gaming/htmls/error/E_03_u.html b/gaming/htmls/error/E_03_u.html new file mode 100644 index 0000000..2788456 --- /dev/null +++ b/gaming/htmls/error/E_03_u.html @@ -0,0 +1,42 @@ + + + + + + + + + + + + + +E_03_u + + + + + + + + + +
+ +
+ + +
+ +
+ +
+ +
+ + + + diff --git a/gaming/htmls/error/E_bg_d.gif b/gaming/htmls/error/E_bg_d.gif new file mode 100644 index 0000000000000000000000000000000000000000..2066705c8750b713084252d48f56811f87a06a01 GIT binary patch literal 52 zcmZ?wbhEHbWMtrEn8?8JUs3UYN5}tr_x}I?ulSRNk%57kL5BedK=KSstS#b(%B&35 E0J=O4+5i9m literal 0 HcmV?d00001 diff --git a/gaming/htmls/error/E_bg_u.gif b/gaming/htmls/error/E_bg_u.gif new file mode 100644 index 0000000000000000000000000000000000000000..e0ace554f4be939e1c85e3490412af0a362b6175 GIT binary patch literal 52 zcmZ?wbhEHbWMtrEn8?8JUs3UYN5}tr_x}I?ulSRNk%57kL5BedK=KSstXISg53n*= F0|36-4#ofg literal 0 HcmV?d00001 diff --git a/gaming/htmls/error/E_u_bar.gif b/gaming/htmls/error/E_u_bar.gif new file mode 100644 index 0000000000000000000000000000000000000000..a9b4efeb8e0c02ecf3e678da88e1f62e21e02e05 GIT binary patch literal 51 zcmZ?wbhEHbWMmLyn8?7ekb&VjJNy6t{}~t<6o0ZXGB7YP=m6OaAbAERmY)8V0Swjv DEA9%N literal 0 HcmV?d00001 diff --git a/gaming/htmls/error/Wi-Fi_on.gif b/gaming/htmls/error/Wi-Fi_on.gif new file mode 100644 index 0000000000000000000000000000000000000000..e542e38984e6c55b84f9975e5d51699e54280667 GIT binary patch literal 115 zcmZ?wbhEHb6krfw_{7Qp1PKWVKY(b1$B!Qc|Ns972{AAz{$v5uIv^6HmVw!VW7i!i zl~a<3xh-DT9RBg(IAgSBo|9J2+?AFE!DmWhwYU2`-fj2UKAw?%!_6+E;{_f(Ms;T- IbQl?|0Z!^CK>z>% literal 0 HcmV?d00001 diff --git a/gaming/htmls/error/base.js b/gaming/htmls/error/base.js new file mode 100644 index 0000000..98e3f12 --- /dev/null +++ b/gaming/htmls/error/base.js @@ -0,0 +1,1215 @@ +//======================================== +// base.js +//======================================== + + +/* #### 20080602 #### Commented out functions for debug grid. */ +/* + +//---------------------------------------------------------------- +//-- for debug only -- grid +//-- (TWL: X button toggle / PC: "G" key toggle(only when DownWindow focused)) + + +var _u_grid = null; +var _d_grid = null; + +function appendGridUD() { + + _u_grid = upWindowObject.document.createElement("img"); + _u_grid.src = "../image/256x192.gif"; + _u_grid.style.visibility = "hidden"; + _u_grid.style.position = "fixed"; + _u_grid.style.zIndex = 30; + _u_grid.style.top = 0; + _u_grid.style.left = 0; + //_u_grid.style.opacity = 0.3; + upWindowObject.document.body.appendChild(_u_grid); + + _d_grid = downWindowObject.document.createElement("img"); + _d_grid.src = "../image/256x192.gif"; + _d_grid.style.visibility = "hidden"; + _d_grid.style.position = "fixed"; + _d_grid.style.zIndex = 30; + _d_grid.style.top = 0; + _d_grid.style.left = 0; + //_d_grid.style.opacity = 0.3; + downWindowObject.document.body.appendChild(_d_grid); + +} + + +function setGridVisibility() { + if (_u_grid.style.visibility == "hidden") { + _u_grid.style.visibility = "visible"; + _d_grid.style.visibility = "visible"; + } else { + _u_grid.style.visibility = "hidden"; + _d_grid.style.visibility = "hidden"; + } +} + +function dispGrid() { + + var code = event.keyCode; + //-- "event.keyCode" returns a code of capital letter if use "onkyedown". + if ( code == OP_KEY_PAD_X || code == "G".charCodeAt(0) ) { + + if (_u_grid == null) { + appendGridUD(); + } + setGridVisibility(); + + } + +} + +// #### 20080628 #### Changed for PC Opera 9.5 +//window.onkeydown = dispGrid; //-- "event.keyCode" returns a code of capital letter if use "onkyedown". +window.addEventListener('keydown', dispGrid, false); + + + +*/ + + + + +//---------------------------------------------------------------- +//-- for debug only -- histroy back + +function historyBack() { + //hideScrollButton(); + gkong.SetTransition(WIPE_ANIM_TRANS, WIPE_ANIM_TRANS); /* #### 20080702 #### NOTE: SetTransition* MUST BE CALLED. */ + setTimeout( function() { + upWindowObject.history.back(); + downWindowObject.history.back(); + } , WAIT_FOR_SETURL); +} + + + +//---------------------------------------------------------------- +//-- for debug only -- debug counter +/* +var gDebugCounter = 0; // #### 20080628 #### Renamed. +function incDebugCounter() { + gDebugCounter += 1; + if (gDebugCounter > (1000 * 60)) { gDebugCounter = 0;} + setTimeout("incDebugCounter()", 100); +} + +incDebugCounter(); +*/ + +//---------------------------------------------------------------- +//-- for debug only -- debug print + +function dPrint(t) { + // gkong.print("[[ dPrint ]] " + t + " ---- " + gDebugCounter) + gkong.print("[[ dPrint ]] " + t ); +} + + + + + +//---------------------------------------------------------------- +//---------------------------------------------------------------- +//---------------------------------------------------------------- + + + +//---------------------------------------- +//-- define : keyboard kinds & types of field (see Kong::KbdActive) + +var KBD_KIND_TEN = 0; +var KBD_KIND_QWERTY = 1; +var KBD_KIND_NO_JAPANESE = 2; +var KBD_KIND_JAPANESE = 3; + +var KBD_FIELD_NORMAL = 0; +var KBD_FIELD_4444 = 1; + + +//---------------------------------------- +//-- define : wipe animation types of transition (see Kong::SetTransition) + +var WIPE_ANIM_NONE = 0; +var WIPE_ANIM_TRANS = 1; +var WIPE_ANIM_TRANS_LEFT = 2; +var WIPE_ANIM_TRANS_RIGHT = 3; +var WIPE_ANIM_LEFT = 4; +var WIPE_ANIM_RIGHT = 5; + +/* #### 20080628 #### Added new types. */ +var WIPE_ANIM_DOWN = 6; +var WIPE_ANIM_UP = 7; +var WIPE_ANIM_OVER_LEFT = 8; +var WIPE_ANIM_OVER_RIGHT = 9; + + +//---------------------------------------- +//-- define : TWL key code + +var OP_KEY_PAD_A = 172; +var OP_KEY_PAD_B = 173; +var OP_KEY_PAD_X = 179; +var OP_KEY_PAD_Y = 180; +var OP_KEY_PAD_L = 181; +var OP_KEY_PAD_R = 182; +var OP_KEY_PAD_UP = 175; +var OP_KEY_PAD_DOWN = 176; +var OP_KEY_PAD_RIGHT = 177; +var OP_KEY_PAD_LEFT = 178; +var OP_KEY_PAD_START = 174; +var OP_KEY_PAD_SELECT = 170; + + + + +/* #### 20080702 #### Changed. */ +//---------------------------------------- +//-- define : options of setButtonImages() + +//var SBIMG_NO_LOADING_ICON = 0; +var SBIMG_NO_LOADINGICON_NO_PARTICLE = 0; +var SBIMG_NO_CURSOR = 1; + + + +/* #### 20080709 #### Added not to init button image. */ +//---------------------------------------- +//-- define : options of clearClickedStates() + +/* #### 20081004 #### NOTE: CCS_NOT_INIT_BUTTON_IMG is used not to init button image of DownWindow if only UpWindow is transited or manual transited. */ +var CCS_NOT_INIT_BUTTON_IMG = 0; + + +/* #### 20080927 #### Defined options of afterChangeDOMforManualTransition() not to play SE. */ +//---------------------------------------- +//-- define : options of afterChangeDOMforManualTransition() + +var ACD_NO_SE = 0; +var ACD_PLAY_SE = 1; + + + +//---------------------------------------------------------------- +//-- set urls and types of animation + +//-- wait maybe required... if no wait, button images will not change before the wipe animation. + +/* #### 20080628 #### Changed wait time from 0ms to 200ms */ +var WAIT_FOR_SETURL = 200; + +/* #### 20080715 #### Moved from "multi_page_DOM.js". */ +var WAIT_FOR_MANUALTRANSITION = 300; + +/* #### 20081004 #### Added the wait time for clearClickedStates(). */ +var WAIT_FOR_CCS = 300; + +/* #### 20081004 #### Added the wait time for waitRestart() & waitReturnToMenu(). */ +var WAIT_FOR_RESTART = 300; + + + +function setUrlUD() { + var a = setUrlUD.arguments; + if (a.length == 2) { + //hideScrollButton(); + + /* #### 20080702 #### NOTE: SetTransition* MUST BE CALLED. */ + /* #### 20080926 #### Changede default of WIPE_ANIM from WIPE_ANIM_NONE to WIPE_ANIM_TRANS. */ + gkong.SetTransition(WIPE_ANIM_TRANS, WIPE_ANIM_TRANS); + setTimeout( function() { + if (a[0] != "") window.open( a[0], 'UpWindow'); + if (a[1] != "") window.open( a[1], 'DownWindow'); + } , WAIT_FOR_SETURL); + } else if (a.length == 4) { + //hideScrollButton(); + + /* #### 20080702 #### NOTE: SetTransition* MUST BE CALLED. */ + gkong.SetTransition(a[1], a[3]); + setTimeout(function() { + if (a[0] != "") window.open( a[0], 'UpWindow'); + if (a[2] != "") window.open( a[2], 'DownWindow'); + } , WAIT_FOR_SETURL); + } else { + return false; + } +} + +function setUrlU() { + var a = setUrlU.arguments; + if (a.length == 1) { + //hideScrollButton(); + + /* #### 20080702 #### NOTE: SetTransition* MUST BE CALLED. */ + /* #### 20080926 #### Changede default of WIPE_ANIM from WIPE_ANIM_NONE to WIPE_ANIM_TRANS. */ + gkong.SetTransition(WIPE_ANIM_TRANS, WIPE_ANIM_TRANS); + setTimeout( function() { + if (a[0] != "") window.open( a[0], 'UpWindow'); + } , WAIT_FOR_SETURL); + } else if (a.length == 2) { + //hideScrollButton(); + + /* #### 20080702 #### NOTE: SetTransition* MUST BE CALLED. */ + /* #### 20080926 #### Changede default of WIPE_ANIM from WIPE_ANIM_NONE to WIPE_ANIM_TRANS. */ + gkong.SetTransition(a[1], WIPE_ANIM_TRANS); + setTimeout( function() { + if (a[0] != "") window.open( a[0], 'UpWindow'); + } , WAIT_FOR_SETURL); + } else { + return false; + } +} + +function setUrlD() { + var a = setUrlD.arguments; + if (a.length == 1) { + //hideScrollButton(); + + /* #### 20080702 #### NOTE: SetTransition* MUST BE CALLED. */ + /* #### 20080926 #### Changede default of WIPE_ANIM from WIPE_ANIM_NONE to WIPE_ANIM_TRANS. */ + gkong.SetTransition(WIPE_ANIM_TRANS, WIPE_ANIM_TRANS); + setTimeout( function() { + if (a[0] != "") window.open( a[0], 'DownWindow'); + } , WAIT_FOR_SETURL); + } else if (a.length == 2) { + //hideScrollButton(); + + /* #### 20080702 #### NOTE: SetTransition* MUST BE CALLED. */ + /* #### 20080926 #### Changede default of WIPE_ANIM from WIPE_ANIM_NONE to WIPE_ANIM_TRANS. */ + gkong.SetTransition(WIPE_ANIM_TRANS, a[1]); + setTimeout( function() { + if (a[0] != "") window.open( a[0], 'DownWindow'); + } , WAIT_FOR_SETURL); + } else { + return false; + } +} + + + + + + + +//---------------------------------------------------------------- +//-- cursor + +var CURSOR_SIZE = 8; // 8px x 8px + + + + +function clearCursor() { + +/* #### 20080702 #### Commented out. */ +/* + var hp = -2 * CURSOR_SIZE; + cursor_tl.style.top = hp; + cursor_tr.style.top = hp; + cursor_bl.style.top = hp; + cursor_br.style.top = hp; +*/ + +} + + +//--- setCurser (z-index version) + +/* + +function setCursor(obj) { + + var oP = obj.offsetParent; + var cS = getComputedStyle(obj,''); + + if(oP) { //-- obj's style may be "position : absolute" + var p = "absolute"; + var t = parseInt(oP.offsetTop) + parseInt(obj.offsetTop); + var l = parseInt(oP.offsetLeft) + parseInt(obj.offsetLeft); + var w = parseInt(cS.getPropertyValue('width')); + var h = parseInt(cS.getPropertyValue('height')); + var z = parseInt(obj.style.zIndex); + } else { //-- obj's style may be "position : fixed" + var p = "fixed"; + var t = parseInt(cS.getPropertyValue('top')); + var l = parseInt(cS.getPropertyValue('left')); + var w = parseInt(cS.getPropertyValue('width')); + var h = parseInt(cS.getPropertyValue('height')); + var z = parseInt(cS.getPropertyValue('z-index')); + } + + + if( h == 0 || isNaN(h) ){ + //-- obj dose not have height value (maybe 'a' tag) ---- + h = parseInt( cS.getPropertyValue('font-size') ); + if (h == 16) { h = 21; } // font cell size 17x21 + else if (h == 12) { h = 16; } // font cell size 13x16 + else if (h == 10) { h = 13; } // font cell size 11x12 (+1) + } + + + if(isNaN(z)){ z = 1; } else { z += 1; } + + + cursor_tl.style.position = p; + cursor_tl.style.zIndex = z; + cursor_tl.style.top = t; + cursor_tl.style.left = l; + + cursor_tr.style.position = p; + cursor_tr.style.zIndex = z; + cursor_tr.style.top = t; + cursor_tr.style.left = l + w - CURSOR_SIZE; + + cursor_bl.style.position = p; + cursor_bl.style.zIndex = z; + cursor_bl.style.top = t + h - CURSOR_SIZE; + cursor_bl.style.left = l; + + cursor_br.style.position = p; + cursor_br.style.zIndex = z; + cursor_br.style.top = t + h - CURSOR_SIZE; + cursor_br.style.left = l + w - CURSOR_SIZE; + + +} + +*/ + + +function setCursor(obj) { + +/* #### 20080702 #### Commented out. */ +/* + + var oP = obj.offsetParent; + var cS = getComputedStyle(obj,''); + + var t = parseInt(oP.offsetTop) + parseInt(obj.offsetTop); + var l = parseInt(oP.offsetLeft) + parseInt(obj.offsetLeft); + var w = parseInt(cS.getPropertyValue('width')); + var h = parseInt(cS.getPropertyValue('height')); + + if( h == 0 || isNaN(h) ){ + //-- obj dose not have height value (maybe 'a' tag) ---- + h = parseInt( cS.getPropertyValue('font-size') ); + if (h == 16) { h = 21; } // 16pt font cell size = 17x21 + else if (h == 12) { h = 16; } // 12pt font cell size = 13x16 + else if (h == 10) { h = 13; } // 10pt font cell size = 11x12 (+1) + } + + cursor_tl.style.top = t; + cursor_tl.style.left = l; + + cursor_tr.style.top = t; + cursor_tr.style.left = l + w - CURSOR_SIZE; + + cursor_bl.style.top = t + h - CURSOR_SIZE; + cursor_bl.style.left = l; + + cursor_br.style.top = t + h - CURSOR_SIZE; + cursor_br.style.left = l + w - CURSOR_SIZE; +*/ + +} + + + + +//---------------------------------------------------------------- +//-- side blue lines + +/* #### 20080628 #### Deleted. */ +//function extendSideBlueLine() {} + + +//---------------------------------------------------------------- +//-- scroll buttons + + +function hideScrollButton() { + gkong.HideUpWindowScrollButton(); + //gkong.HideDownWindowScrollButton(); +} + + +function showScrollButton() { + /* #### 20080711 #### Deleted arguments of ShowUpWindowScrollButton(). */ + gkong.ShowUpWindowScrollButton(); + //gkong.ShowUpWindowScrollButton( 204, 1, 229, 1 ); + + //gkong.ShowDownWindowScrollButton( 225,110, 225,138 ); +} + + + +function hideScrollButton_debugIndex() { + //gkong.HideUpWindowScrollButton(); + gkong.HideDownWindowScrollButton(); +} + +function showScrollButton_debugIndex() { + /* #### 20080711 #### Deleted arguments of ShowUpWindowScrollButton(). */ + //gkong.ShowUpWindowScrollButton(); + + gkong.ShowDownWindowScrollButton( 210,130, 210,158 ); +} + + + + + + +//---------------------------------------------------------------- +//---------------------------------------------------------------- +//---------------------------------------------------------------- + + + + + + + +/* + +//---------------------------------------------------------------- +//-- functions for the reaction of button images + + +== note ==== + + 1. a clickable image element in HTML files must have a child or more. + (the last child will be treated as the spacer that defined hit-area) + + 2. and requires descriptions of image src in CSS files. + + 3. and requires additional JavaScript descriptions that set reactions and urls. + + 4. and an image file must contain 2 patterns. + + + + +== ex ==== + + + + ---- .html -------- + // #### 20080807 #### Changed to reduce size of css file. + + +
+ + +
+ ???????? +
+ + +
+ +
+ + + + + + + + + ---- .css -------- + // #### 20080807 #### Changed to reduce size of css file. + + #XXXX_[width]x[height] { + width : [width]px; + height : [height]px; + background-image: url(ClickableImage.gif); + } + + + + #NNNN { position : absolute; left : 52px; top : 60px; } + + + + ---- ClickableImage.gif -------- + + +--------[width]px-------+ + | | + | normal pattern [height]px + | | + +------------------------+ + | | + | selected pattern [height]px + | | + +------------------------+ + + +*/ + + +/* + +//---------------------------------------------------------------- +//-- functions for the reaction of button images + +== note ==== + + Following functions MUST BE CALLED when click & transit. + + - Kong::PlaySE ( Not necessary if use setButtonImage(). ) + - Kong::ShowLoadingIcon ( Not necessary if use setButtonImage(). ) + - Kong::ShowClickEffect ( Not necessary if use setButtonImage(). ) + - Kong::SetTransition ( Not necessary if use setOnclickUrlUD() or if call setUrl*() at once. ) + + + + Following functions MUST BE CALLED when click & input. + + - Kong::PlaySE ( Not necessary if use setButtonImage() and set SBIMG_NO_LOADINGICON_NO_PARTICLE for argument. ) + + + + Following functions MUST BE CALLED when onchange of input tag. + + - Kong::ShowLoadingIcon ( Not necessary if call setUrl*(). ) + + + + Following functions MUST BE CALLED when click & manual transit. + + -- Before Change by DOM. + + - Kong::PlaySE ( Not necessary if use setButtonImage(). ) + - Kong::ShowLoadingIcon ( Not necessary if use setButtonImage(). ) + - Kong::ShowClickEffect ( Not necessary if use setButtonImage(). ) + - Kong::SetTransitionRangeOnce ( Not necessary if call beforeChangeDOMforManualTransition() or if not use wipe animation with range specification. ) + - Kong::SetManualTransition ( Not necessary if call beforeChangeDOMforManualTransition(). ) + + -- After Change by DOM. + + - waitAllImagesComplete ( Not necessary if call afterChangeDOMforManualTransition(). ) # This funciton is Now Testing. + - gkong.StartManualTransition ( Not necessary if call afterChangeDOMforManualTransition(). ) + - gkong.HideLoadingIcon ( Not necessary if call afterChangeDOMforManualTransition(). ) + - gkong.PlaySE ( Not necessary if call afterChangeDOMforManualTransition(). ) + + + + +*/ + + +//---------------------------------------------------------------- +//-- functions for the reaction of button images + + +var BUTTON_NORMAL = 0; +var BUTTON_SELECTED = 1; + +/* #### 20080827 #### Changed arguments of bgPos() and not to use getPropertyValue(). */ +function bgPos(h, n) { dPrint("$$$$$$$$$$ Called bgPos : " + n); return "0px " + h * (-1) * n + "px"; } + + +/* #### 20080628 #### Renamed. */ +var gObjOnmousedown = null; //-- the object that the "onMouseDown" event occured. +function setObjOnmousedown(id) { gObjOnmousedown = id; } +function clearObjOnmousedown() { gObjOnmousedown = null; /* clearCursor(); */ } +function checkObjOnmousedown(id) { if(gObjOnmousedown == id) { return true;} else {return false;} } + + + +/* #### 20080628 #### Changed for PC Opera 9.5 */ +//window.onunload = clearStates; +window.addEventListener('mouseup', function(){ clearObjOnmousedown(); }, false); + + + + + +function getLastChild( o ) { return o.children[o.children.length-1] } + + + + +/* #### 20080602 #### Added functions to prevent clicking twice. */ +/* #### 20080628 #### Renamed. */ +/* +var setButtonImagesState = 0; +function getSetButtonImagesState() { return setButtonImagesState; } +function setSetButtonImagesState() { setButtonImagesState = 1; } +function clearSetButtonImagesState() { setButtonImagesState = 0; } + +var setButtonImagesObject = null; +function getSetButtonImagesObject() { return setButtonImagesObject; } +function setSetButtonImagesObject(o) { setButtonImagesObject = o; } +function clearSetButtonImagesObject() { setButtonImagesObject = null; } +*/ + +var gClickedObjectId = null; +function getClickedObjectId() { return gClickedObjectId; } +function setClickedObjectId(n) { gClickedObjectId = n; dPrint("[[[[[[[[ setClickedObjectId : " + n); } +function clearClickedObjectId() { gClickedObjectId = null; dPrint("[[[[[[[[ clearClickedObjectId : null"); } + + + +/* #### 20080714 #### Added to init button image. */ + +var gMouseEvent = document.createEvent('MouseEvents'); +gMouseEvent.initEvent('mouseout', true, true); + +var gObjectIdToInitImage = null; + +function getObjectIdToInitButtonImage() { return gObjectIdToInitImage; } +function setObjectIdToInitButtonImage( n ) { gObjectIdToInitImage = n; } +function clearObjectIdToInitButtonImage() { gObjectIdToInitImage = null; } + +function initObjectIdToInitButtonImage( n ) { + + if ( gObjectIdToInitImage != null && gObjectIdToInitImage != n ) { + var o = $(gObjectIdToInitImage); + if (o) { + // dPrint("@@@@@@@@@@@@@@@@@ : before dispatch mouseout : " + gObjectIdToInitImage + " :: gcoi:" + getClickedObjectId()); + getLastChild(o).dispatchEvent(gMouseEvent); + // dPrint("@@@@@@@@@@@@@@@@@ : after dispatch mouseout : " + gObjectIdToInitImage + " :: gcoi:" + getClickedObjectId()); + } + } + + if ( n ) { + setObjectIdToInitButtonImage(n); + } else { + clearObjectIdToInitButtonImage(); + } + +} + + + +/* #### 20080714 #### Added to init button image. */ +window.addEventListener('blur', function(){ initObjectIdToInitButtonImage(); }, false); + + + + + + + +var gSBI_dPrint = true; /* #### 20080714 #### for debug. */ + +/* #### 20080702 #### Commented out clearCusor(). */ +/* #### 20080702 #### Changed 2nd argument. */ +//function setButtonImages( o, cursor ) { +function setButtonImages( o, opt ) { + + var id = o.getAttribute("id"); + var spacer = getLastChild(o); + + /* #### 20080827 #### Changed not to use getComputedStyle(). */ + // var h = o.offsetHeight; /* #### 20080927 #### Commented out and changed the first argument of bgPos() from "h" to "o.offsetHeight". */ + + var oStyle = o.style; + var a = setButtonImages.arguments; + + var bg = BUTTON_NORMAL; + + + spacer.addEventListener('click', function( e ) { + if (gSBI_dPrint) dPrint(id+ ' click'); /* #### 20080714 #### for debug. */ + /* #### 20080628 #### Renamed functions to prevent clicking twice. */ + if (getClickedObjectId() == null) { // + if (gSBI_dPrint) dPrint(id+ ' click ---- execute'); /* #### 20080714 #### for debug. */ + + setClickedObjectId(id); + /* #### 20080714 #### Added to init button image. */ + initObjectIdToInitButtonImage(id); + /* #### 200806028 #### SE No. to macro name. */ + gkong.PlaySE(TWL_SHOP_SE_ONCLICK); + /* #### 20080702 #### Changed 2nd argument. */ + + if (a.length == 2 ) { + + /* #### 20080715 #### Changed macro name. */ + if (opt == SBIMG_NO_LOADINGICON_NO_PARTICLE ) { + + /* #### 20080702 #### Added for input tag. */ + /* #### 20080827 #### Changed arguments of bgPos(). */ + /* #### 20080927 #### Changed the first argument of bgPos() from "h" to "o.offsetHeight". */ + + if (bg != BUTTON_NORMAL) { oStyle.backgroundPosition = bgPos(o.offsetHeight, BUTTON_NORMAL); bg = BUTTON_NORMAL; } + clearClickedObjectId(); // #### 20080714 #### Currected */ + + } else if (opt == SBIMG_NO_CURSOR ){ + + /* #### 20080715 #### Added to display particle on click. */ + + /* #### 20080909 #### Now Testing to change pages by TWL Key Pad, but not fixed. */ + /* #### 20080920 #### Commented out. */ + //if ( gKeyNoParticle ) { + // gKeyNoParticle = false; + //} else { + // gkong.ShowClickEffect(e.pageX, e.pageY); + //} + + gkong.ShowClickEffect(e.pageX, e.pageY); + + /* #### 20080702 #### Added to force to show loading icon. */ + gkong.ShowLoadingIcon(); + //clearCursor(o); + + } + + } else { + /* #### 20080715 #### Added to display particle on click. */ + + /* #### 20080909 #### Now Testing to change pages by TWL Key Pad, but not fixed. */ + /* #### 20081005 #### Commented out for bug fix. */ + //if ( gKeyNoParticle ) { + // gKeyNoParticle = false; + //} else { + // gkong.ShowClickEffect(e.pageX, e.pageY); + //} + + /* #### 20081005 #### Commented out for bug fix. */ + gkong.ShowClickEffect(e.pageX, e.pageY); + + /* #### 20080702 #### Added to force to show loading icon. */ + gkong.ShowLoadingIcon(); + //setCursor(o); + } + } + + }, false); + + + spacer.addEventListener('mousedown', function() { + if (gSBI_dPrint) dPrint(id + ' mousedown'); /* #### 20080714 #### for debug. */ + /* #### 20080628 #### Renamed functions to prevent clicking twice. */ + + if (getClickedObjectId() == null) { + if (gSBI_dPrint) dPrint(id + ' mousedown ---- exceute'); /* #### 20080714 #### for debug. */ + /* #### 200806028 #### SE No. to macro name. */ + gkong.PlaySE(TWL_SHOP_SE_ONMOUSEDOWN); + /* #### 20080827 #### Changed arguments of bgPos(). */ + /* #### 20080927 #### Changed the first argument of bgPos() from "h" to "o.offsetHeight". */ + if (bg != BUTTON_SELECTED) { oStyle.backgroundPosition = bgPos(o.offsetHeight, BUTTON_SELECTED); bg = BUTTON_SELECTED; } + initObjectIdToInitButtonImage(id); + setObjOnmousedown(id); + } + + }, false); + + spacer.addEventListener('mouseover', function() { + if (gSBI_dPrint) dPrint(id + ' mouseover'); /* #### 20080714 #### for debug. */ + /* #### 20080628 #### Renamed functions to prevent clicking twice. */ + + if (getClickedObjectId() == null) { + if (gSBI_dPrint) dPrint(id + ' mouseover ---- exceute'); /* #### 20080714 #### for debug. */ + if (checkObjOnmousedown(id)) { + /* #### 200806028 #### SE No. to macro name. */ + gkong.PlaySE(TWL_SHOP_SE_ONMOUSEDOWN); + /* #### 20080827 #### Changed arguments of bgPos(). */ + /* #### 20080927 #### Changed the first argument of bgPos() from "h" to "o.offsetHeight". */ + if (bg != BUTTON_SELECTED) { oStyle.backgroundPosition = bgPos(o.offsetHeight, BUTTON_SELECTED); bg = BUTTON_SELECTED; } + initObjectIdToInitButtonImage(id); + } + } + + }, false); + + spacer.addEventListener('mouseout', function() { + if (gSBI_dPrint) dPrint(id + ' mouseout'); /* #### 20080714 #### for debug. */ + /* #### 20080628 #### Renamed functions to prevent clicking twice. */ + + if (getClickedObjectId() == null) { + if (gSBI_dPrint) dPrint(id + ' mouseout ---- exceute'); /* #### 20080714 #### for debug. */ + //clearCursor(); /* #### 20080602 #### Commented out clearCusor(). */ + /* #### 20080827 #### Changed arguments of bgPos(). */ + /* #### 20080927 #### Changed the first argument of bgPos() from "h" to "o.offsetHeight". */ + if (bg != BUTTON_NORMAL) { oStyle.backgroundPosition = bgPos(o.offsetHeight, BUTTON_NORMAL); bg = BUTTON_NORMAL; } + } + + }, false); + + + /* #### 20080717 #### Deleted functions onFocus & onBlur. (Necessary if use spatial navigation.) */ + // spacer.addEventListener('focus', function() { if (gSBI_dPrint) dPrint(id + ' focus'); }, false); + // spacer.addEventListener('blur', function() { if (gSBI_dPrint) dPrint(id + ' blur' ); }, false); + + +} + + + +//---------------------------------------------------------------- +//-- add event listener to a clickable object (set urls and types of animation) + + +/* #### 20081005 #### Added setOnclick() from BroadOn's base.js and replaced from ".onclick=" to "setOnclick" in html files. */ +function setOnclick(o, action, setTransition) { + var spacer = getLastChild(o); + spacer.onclick = function() { + + /* #### 20081006 #### CHANGED for TEST. The function to prevent clicking twice will not be called when the 3rd arg is "true". */ + // if (setTransition == false) { + if (setTransition == "FORCE_TO_EVAL_ACTION") { + + eval(action); + + } else if (getClickedTransition() == null) { + setClickedTransition(); + eval(action); + // gkong.HideLoadingIcon(); /* #### 20080717 #### Deleted HideLoadingIcon. (Wabe) */ + dPrint("---- exe ----"); + } else { + /* #### 20081005 #### Commented out. */ + // trace("not set action in setOnclick(). gClickedTransition is "+getClickedTransition()); + dPrint("---- not ---- not set action in setOnclick(). gClickedTransition is "+getClickedTransition()); + } + }; +} + + + +/* #### 20080602 #### Added functions to prevent clicking twice. */ +/* #### 20080628 #### Renamed. */ + +/* +var setOnclickUrlState = 0; +function getSetOnclickUrlState() { return setOnclickUrlState; } +function setSetOnclickUrlState() { setOnclickUrlState = 1; } +function clearSetOnclickUrlState() { setOnclickUrlState = 0; } +*/ + +var gClickedTransition = null; +function getClickedTransition() { return gClickedTransition; } +function setClickedTransition() { gClickedTransition = true; } +function clearClickedTransition() { gClickedTransition = null; } + + + +/* #### 20080712 #### Deleted functions to prevent clicking twice. */ +/* #### 20080712 #### Deleted "var spacer". */ +function setOnclickUrlUD( o, urlU, animU, urlD, animD ) { + getLastChild(o).addEventListener('click', function() { setUrlUD(urlU, animU, urlD, animD); }, false); +} + +/* #### 20080712 #### Deleted functions to prevent clicking twice. */ +/* #### 20080712 #### Deleted "var spacer". */ +function setOnclickUrlU( o, urlU, animU ) { + getLastChild(o).addEventListener('click', function() { setUrlU(urlU, animU); }, false); +} + +/* #### 20080712 #### Deleted functions to prevent clicking twice. */ +/* #### 20080712 #### Deleted "var spacer". */ +function setOnclickUrlD( o, urlD, animD ) { + getLastChild(o).addEventListener('click', function() { setUrlD(urlD, animD); }, false); +} + + +/* #### 20080712 #### Deleted "var spacer". */ +function setOnclickHideProgressBar( o ) { + getLastChild(o).addEventListener('click', function() { gkong.HideProgressBar(); }, false); +} + + + +/* #### 20080602 #### functions to prevent clicking twice. */ +/* #### 20080628 #### Renamed. */ +function clearClickedStates() { + + var a = clearClickedStates.arguments; + + /* #### 20080709 #### Added not to init button image. */ + /* #### 20080712 #### Corrected. */ + + if ( a.length == 1 ) { + if ( a[0] == CCS_NOT_INIT_BUTTON_IMG ) { + + /* #### 20081004 #### NOTE: CCS_NOT_INIT_BUTTON_IMG is used not to init button image of DownWindow if only UpWindow is transited or manual transited. */ + + /* #### 20081005 #### Added setTimeout() for wait. */ + + /* #### 20081008 #### Changed to wait only with CCS_NOT_INIT_BUTTON_IMG. */ + + setTimeout( function() { + //-- not init button image. + clearClickedObjectId(); + clearClickedTransition(); + }, WAIT_FOR_CCS ); + + } else { + clearClickedObjectId(); + clearClickedTransition(); + initObjectIdToInitButtonImage(); + } + + } else { + clearClickedObjectId(); + clearClickedTransition(); + initObjectIdToInitButtonImage(); + } + + +} + + + + + + +/* #### 20080628 #### Added sleep function. */ +function sleep(msec) { + var d1 = new Date().getTime(); + var d2 = new Date().getTime(); + while( d2 < d1 + msec ){ + d2 = new Date().getTime(); + } +} + + + +/* #### 20080628 #### Renamed functions to prevent clicking twice. */ +// #### 20080628 #### Changed for PC Opera 9.5 +//window.onunload = clearClickedStates; +window.addEventListener('unload', clearClickedStates, false); + + + + +/* #### 20080628 #### Added functions to call from HTML files onload. */ + +function onload_scroll() { + showScrollButton(); + gkong.PlaySE(TWL_SHOP_SE_TRANSIT); +} + +function onload_no_scroll() { + hideScrollButton(); + gkong.PlaySE(TWL_SHOP_SE_TRANSIT); +} + +/* #### 20080814 #### Added to show loading icon in the Waiting Page(F-01 & P-13). */ +function onload_please_wait() { + hideScrollButton(); + /* #### 20080814 #### Added setTimeout() to force to show loading icon. */ + setTimeout( function() { gkong.ShowLoadingIcon(); }, 500); + /* #### 20080921 #### Added to force to show loading icon.. */ + setTimeout( function() { gkong.ShowLoadingIcon(); }, 1000); + /* #### 20080921 #### Added to force to show loading icon.. */ + setTimeout( function() { gkong.ShowLoadingIcon(); }, 1500); + /* #### 20080921 #### Added to force to show loading icon.. */ + setTimeout( function() { gkong.ShowLoadingIcon(); }, 2000); +} + +function onload_upWindow() { + /* #### 20080709 #### Added not to init button image. */ + /* #### 20081004 #### NOTE: CCS_NOT_INIT_BUTTON_IMG is used not to init button images if only UpWindow is transited or manual transited. */ + clearClickedStates(CCS_NOT_INIT_BUTTON_IMG); + + gkong.PlaySE(TWL_SHOP_SE_TRANSIT); +} + +/* #### 20080727 #### Added. */ +function onload_error_page() { + gkong.HideProgressBar(); + gkong.HideLoadingIcon(); + showScrollButton(); + gkong.PlaySE(TWL_SHOP_SE_WARNING); +} + + + + + + + + +/* #### 20080702 #### Added for debug. */ +function dPrintEventInfo() { + var a = dPrintEventInfo.arguments; + var o = a[0]; + var n = ""; + if (a[1]) { n = a[1] + " " } + o.addEventListener('click', function(){ dPrint(n + 'click' ); }, false); + o.addEventListener('focus', function(){ dPrint(n + 'focus' ); }, false); + o.addEventListener('blur', function(){ dPrint(n + 'blur' ); }, false); + o.addEventListener('mouseup', function(){ dPrint(n + 'mouseup' ); }, false); + o.addEventListener('mousedown', function(){ dPrint(n + 'mousedown'); }, false); + o.addEventListener('mouseover', function(){ dPrint(n + 'mouseover'); }, false); + o.addEventListener('mouseout', function(){ dPrint(n + 'mouseout' ); }, false); +} + + + + + + + + + + +/* #### 20080712 #### Moved from "multi_page_DOM.js". */ +function waitImageComplete( o ) { + + /* #### 20080717 #### TEST for NO WAIT. */ + return; + + while( o.complete != true ) { + sleep(100); + } +} + +/* #### 20080712 #### Moved from "multi_page_DOM.js". */ +/* #### 20080712 #### Changed to wait for all images of both windows. */ +function waitAllImagesComplete() { + + /* #### 20080717 #### TEST for NO WAIT. */ + return; + + var imgs = new Array(); + imgs = upWindowObject.document.getElementsByTagName('img'); + for (i=0; i < imgs.length; i++) { waitImageComplete( imgs[i] ); } + imgs = downWindowObject.document.getElementsByTagName('img'); + for (i=0; i < imgs.length; i++) { waitImageComplete( imgs[i] ); } +} + + + +/* #### 20080712 #### Added for ManualTransition simply.*/ +function beforeChangeDOMforManualTransition() { + + /* #### 20081005 #### For NCL: If the return value of getClickedTransition is true, SetManualTransition will not be called in this function. */ + /* #### 20081005 #### For NCL: BroadOn's setOnclick() will call setClickedTransition() on the click event. */ + /* #### 20081005 #### For NCL: But if the 3rd arg of setOnclick() is "false", will not call setClickedTransition(), so SetManualTransition will be called. */ + /* #### 20081005 #### For NCL: In the page of DOM change with beforeChage... and afterChange... or with multi_page_DOM.js, set functions to the onclick by setOnclick() with the 3rd arg "false". */ + + + /* #### 20081006 #### Commented out the following "if" statement and setClickedTransition(). */ + /* #### 20081006 #### Changed for TEST. The function to prevent clicking twice will added to the click event in the setOnclick(). Not cared here. */ + // if (getClickedTransition() == true ) return; + // setClickedTransition(); + + /* #### 20080715 #### Added. */ + sleep(WAIT_FOR_MANUALTRANSITION); + + var a = beforeChangeDOMforManualTransition.arguments; + if (a.length == 0) { + gkong.SetManualTransition(WIPE_ANIM_TRANS, WIPE_ANIM_TRANS); + } else if (a.length == 2) { + gkong.SetManualTransition(a[0], a[1]); + } else if (a.length == 6) { + gkong.SetTransitionRangeOnce(a[2], a[3], a[4], a[5]); + gkong.SetManualTransition(a[0], a[1]); + } + + +} + +/* #### 20080712 #### Added for ManualTransition simply.*/ +/* #### 20080927 #### Changed arguments of afterChangeDOMforManualTransition() to select to play SE or not. */ +/* #### 20081004 #### Changed the order of arguments for bug fix. */ +/* #### 20081004 #### NOTE: 1st argument of afterChangeDOMforManualTransition(): null or CCS_NOT_INIT_BUTTON_IMG not to init button image. */ +/* #### 20081004 #### NOTE: 2nd argument of afterChangeDOMforManualTransition(): null or ACD_NO_SE not to play SE. */ +function afterChangeDOMforManualTransition() { + + var a = afterChangeDOMforManualTransition.arguments; + + waitAllImagesComplete(); + gkong.StartManualTransition(); + gkong.HideLoadingIcon(); + + if (a.length == 0) { + gkong.PlaySE(TWL_SHOP_SE_TRANSIT); + clearClickedStates(); + } else if (a.length == 1) { + /* #### 20081004 #### Changed the order of arguments for bug fix. */ + gkong.PlaySE(TWL_SHOP_SE_TRANSIT); + clearClickedStates( a[0] ); + } else if (a.length == 2) { + /* #### 20081004 #### Changed the order of arguments for bug fix. Please see arguments of this function in B_10_d.html also. */ + if ( a[1] != ACD_NO_SE ) { gkong.PlaySE(TWL_SHOP_SE_TRANSIT); } + clearClickedStates( a[0] ); + } + +} + + +/* #### 20080718 #### Added.*/ +function addClickEffectAndSE( o ) { + o.addEventListener('click', function(e) { + gkong.PlaySE(TWL_SHOP_SE_ONCLICK); + gkong.ShowClickEffect(e.pageX, e.pageY); + }, false); +} + + + + +/* #### 20080930 #### Added to display "Points not available" message in the 1st Period and the 2nd Period.*/ +/* #### 20080930 #### TODO: I think it is not appropriate to describe this processing in javascript file. */ +/* #### 20080930 #### TODO: Please comment out the block of "Add Points" button in ConstElements_d.jspf in the 1st Period and the 2nd Period. */ +window.addEventListener('DOMContentLoaded', function(){ if ( $('points') ) { $('points').style.display = "none"; }}, false ) + + + + +/* #### 20080909 #### Now Testing to change pages by TWL Key Pad, but not fixed. */ + +var gKeyNoParticle = false; + + +/* #### 20080920 #### Commented out. */ +/* +var gME = document.createEvent('MouseEvents'); + +function changePagesByKey() { + var code = event.keyCode; + if ( code == OP_KEY_PAD_LEFT || code == 37 ) { + var b = $('prev_button'); + if (b) { + gKeyNoParticle = true; + gME.initEvent('mousedown', true, true); + getLastChild(b).dispatchEvent(gME); + setTimeout(function(){ + gME.initEvent('click', true, true); + getLastChild(b).dispatchEvent(gME); + }, WAIT_FOR_SETURL); + } + + } else if ( code == OP_KEY_PAD_RIGHT || code == 39 ) { + var b = $('next_button'); + if (b) { + gKeyNoParticle = true; + gME.initEvent('mousedown', true, true); + getLastChild(b).dispatchEvent(gME); + setTimeout(function(){ + gME.initEvent('click', true, true); + getLastChild(b).dispatchEvent(gME); + }, WAIT_FOR_SETURL); + } + } +} +*/ + +/* #### 20080909 #### Now Testing to change pages by TWL Key Pad, but not fixed. */ +/* #### 20080920 #### Commented out. */ +// window.addEventListener('keydown', changePagesByKey, false); + + + +/* #### 20081004 #### Added wait for Kong::Restart() & Kong::ReturnToMenu(). */ +function waitRestart() { setTimeout( function() { gkong.Restart(); }, WAIT_FOR_RESTART ); } +function waitReturnToMenu() { setTimeout( function() { gkong.ReturnToMenu(); }, WAIT_FOR_RESTART ); } diff --git a/gaming/htmls/error/button_224x28_all.gif b/gaming/htmls/error/button_224x28_all.gif new file mode 100644 index 0000000000000000000000000000000000000000..0021a3f03b43207ba8450f3e2c2e64aff8bc0f5e GIT binary patch literal 748 zcmVP)~{-?spxz^r@+xCy<|GwhwsO0z5=M)j$~<` zXsWJk3m!l$&vb3yc&_h!@BhG{a9BH3Us;jK6uCK7Mva__cwzs%|p_Zk%zQ4f1!o$SCf4if-#mmgi&dg(JJ$ke3l^7Hhv=J3|_`upfEU*<^T!=Xc8Gpw5ZXeNRtW~K%hd<0Z^k#ol3Q;)vH*uYTe4UtJkk! z!-}2S)WXxTXw#})%eJjsuVpD9m`k^=-Me`6>fOt?uiw9b0}CEZxbWTy2m}OB%DA!P z$B>Z*5P+aT;>D3OYu?P+@#MLfJBuDoy7Y|zb7xEzz`C{T*RW&Do=v;9?c2C>>)y?~ zw{OKWQpcEVpt$kl$dfBy&b+zv=g^}|pH98H_3Oof#}E!c0QT?T!;2qJzI=57GPrv; z&%V9;_wd7`-~J`W`uO)%g){+RmR@tY^$fCLtJoPX*WsNjMOmWLpK_cbWtgcLIO zpbQaKsNseTUT7bOAcjbwhXIOc;)(B(m?4TRws@V2F2*S1bTH0nd51d zE&2%LkRl36P)~{-?spxz^r@+xCy<|GwhwsO0z5=M)j$~<` zXsWJk3m!l$&vb3yc&_h!@BhG{a9BH3Us;jK6uCK7Mva__cwzs%|p_Zk%zQ4f1!o$SCf4if-#mmgi&dg(JJ$ke3l^7Hhv=J3|_`up))vH*u3K>A4Lev3Z z!-^eCwyfE+Xw#})%eJlCw{YXi9oyBy*SUD}>fOt?uV1%yDIge3xUk{Fh!ZPb%($`R z$B-jSo=my&;t2=@1klR4v**vCu?7%;ph4!%p;N0~&D!(m!Khoyo=v;$dfBy&b+yE%`yxmySLB3zyJRL#>0o-dSAq_Uw{ZEsNjP14LC-D?J+3fgcMeI zorC&WsNsej)`ua42X-jph$M3Np$s9GsN#woo@gM8FvdusixJ9b7|%vTB!sP00299*Qw0p;s2P#&!*k%g5m$P?*9M) z00000000000000000000A^8LW000UAEC2ui0Du5E000F3P{~QFy*TU5yZ>M)j$~%MR-&vb3yM|B86@BhG{a7Zi~kI1A_kel$7(5Q4ug$gLos&>om0-&Ise}RN?gN2A>hlz|_i;a*|kCBu~la-i6mzkVD zo1LAXpqZkhm8GVUsHu%^1^}#}00tGW0Jpfgy1Tr+zQ4f1!o$O~C&$Ri%FE2n&d<=% z(i;f~*4NnC+S}aS-rwNi;^Wo{6V(Li>g(+7?(gvN^7Hid_UQ=b3JCZ8{{H|2(nBDD zpTL6%6Dm|kaNoj*5F^HGXi%cXiwY@X+{p2t#*SSeL&EzgvSdk;CR1`msj{U+mM&vv zEGV<)LYOvl_QR>O=RBT1gSrDMv?xBBMw7N9s?;abraGTOwJCL~%&JyhV$G_uAv&%> Z3+Pi&jhxxDXw$0oHg=lZw;&<_06RRx+erWb literal 0 HcmV?d00001 diff --git a/gaming/htmls/error/violet_128x40_all.gif b/gaming/htmls/error/violet_128x40_all.gif new file mode 100644 index 0000000000000000000000000000000000000000..1c7880d81904e70c0641883f73caf71372e308f2 GIT binary patch literal 512 zcmV+b0{{I-Nk%w1VSoTo0P_F<3y7!;pvGjo(sjn$L(>0p;s2P#&!*k%g5m$P?*9M) z00000000000000000000A^8LW000UAEC2ui0Du5c000F3P{~QFy*TU5yZ>M)j$~%MR-&vb3yM|B86@BhG{a7Zi~kI1A_kel$7(5Q4ug$gLos&>om0-&Ise}RN?gN2A>hlz|_i;a*|kCBu~la-i6mzkVD zo1LAXpqZkhm8GVUsHu&stck9#g|V`Mw6%S=xPo=Nn7Y1mz`=&S#E`?sYRSrq#?6Rs z1_02A00tG)0NdQ%-rwNi;^XAy=I7_wC+qC(?(gvN^7Hid_8SQZ`uqI-{{H|23LHqV zpuvOs5=_WPprONu5F<*QNU@^Dix@L%Y=}Ui0tBubLy8>fGrPC(oZiNBRs(v?#@)Mw2E*s?jVyUD<;s39V-Bo&GvUsj4}%V^SOP=RO$&HbkPo5j*RW&D7P$JJ?b{$C00292 Cw*zMY literal 0 HcmV?d00001