Index: branches/dev/data/install.inc
===================================================================
--- branches/dev/data/install.inc	(revision 8)
+++ branches/dev/data/install.inc	(revision 11460)
@@ -1,2 +1,15 @@
 <?php
+    define ('ECCUBE_INSTALL', 'ON');
+    define ('HTML_PATH', 'C:\eclipse\workspace\dev.ec-cube.net\html/');
+    define ('SITE_URL', 'http://localhost/eccube/');
+    define ('SSL_URL', 'http://localhost/eccube/');
+    define ('URL_DIR', '/eccube/');
+    define ('DOMAIN_NAME', '');
+    define ('DB_TYPE', 'mysql');
+    define ('DB_USER', 'eccube');
+    define ('DB_PASSWORD', 'eccube');
+    define ('DB_SERVER', '127.0.0.1');
+    define ('DB_NAME', 'eccube');
+    define ('DB_PORT', '');
+    define ('DATA_PATH', 'C:\eclipse\workspace\dev.ec-cube.net\html/../data/');
 ?>
Index: branches/dev/data/Smarty/templates/mobile/site_frame.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/site_frame.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/site_frame.tpl	(revision 11460)
@@ -0,0 +1,12 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
+<title><!--{$arrSiteInfo.shop_name|escape}-->/<!--{$tpl_title|escape}--></title>
+<meta name="author" content="<!--{$arrPageLayout.author|escape}-->">
+<meta name="description" content="<!--{$arrPageLayout.description|escape}-->">
+<meta name="keywords" content="<!--{$arrPageLayout.keyword|escape}-->">
+</head>
+<!-- ¢§ £Â£Ï£Ä£ÙÉô ¥¹¥¿¡¼¥È -->
+<!--{include file='./site_main.tpl'}-->
+<!-- ¢¥ £Â£Ï£Ä£ÙÉô ¥¨¥ó¥É -->
+</html>
Index: branches/dev/data/Smarty/templates/mobile/mypage/change.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/mypage/change.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/mypage/change.tpl	(revision 11460)
@@ -0,0 +1,59 @@
+<div align="center">ÅÐÏ¿ÆâÍÆÊÑ¹¹ 1/3</div>
+<hr>
+<form name="form1" method="post" action="<!--{$smarty.server.PHP_SELF|escape}-->">
+	<input type="hidden" name="mode" value="set1">
+
+	<font color="#FF0000">*¤ÏÉ¬¿Ü¹àÌÜ¤Ç¤¹¡£</font><br>
+	<br>
+
+	¡Ú¥á¡¼¥ë¥¢¥É¥ì¥¹¡Û<font color="#FF0000">¢¨</font><br>
+	<font color="#FF0000"><!--{$arrErr.email}--></font>
+	<input type="text" name="email" value="<!--{$arrForm.email|escape}-->" istyle="3">
+	<br>
+
+	¡Ú¥Ñ¥¹¥ï¡¼¥É¡Û<font color="#FF0000">¢¨</font><br>
+	¡ÊÈ¾³Ñ±Ñ¿ô»ú<!--{$smarty.const.PASSWORD_LEN1}-->Ê¸»ú°Ê¾å<!--{$smarty.const.PASSWORD_LEN2}-->Ê¸»ú°ÊÆâ¡Ë<br>
+	<font color="#FF0000"><!--{$arrErr.password}--></font>
+	<!--{assign var="size" value="`$smarty.const.PASSWORD_LEN2+2`"}-->
+	<input type="password" name="password" value="<!--{$arrForm.password}-->" istyle="4" maxlength="<!--{$smarty.const.PASSWORD_LEN2}-->" size="<!--{$size}-->"><br>
+
+	¡Ú¥Ñ¥¹¥ï¡¼¥É³ÎÇ§ÍÑ¤Î¼ÁÌä¡Û<font color="#FF0000">¢¨</font><br>
+	<font color="#FF0000"><!--{$arrErr.reminder}--></font>
+	<select name="reminder">
+		<option value="" selected>ÁªÂò¤·¤Æ¤¯¤À¤µ¤¤</option>
+		<!--{html_options options=$arrReminder selected=$arrForm.reminder}-->
+	</select><br>
+
+	¡Ú¼ÁÌä¤ÎÅú¤¨¡Û<font color="#FF0000">¢¨</font><br>
+	<font color="#FF0000"><!--{$arrErr.reminder_answer}--></font>
+	<input type="text" name="reminder_answer" value="<!--{$arrForm.reminder_answer|escape}-->" istyle="1"><br>
+
+	¡Ú¤ªÌ¾Á°¡Û<font color="#FF0000">¢¨</font><br>
+	<font color="#FF0000"><!--{$arrErr.name01}--><!--{$arrErr.name02}--></font>
+	À«¡ÊÎã¡§½ÂÃ«¡Ë<br>
+	<input type="text" name="name01" value="<!--{$arrForm.name01|escape}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" istyle="1"><br>
+
+	Ì¾¡ÊÎã¡§²Ö»Ò¡Ë<br>
+	<input type="text" name="name02" value="<!--{$arrForm.name02|escape}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" istyle="1"><br>
+	<font color="#FF0000"><!--{$arrErr.kana01}--><!--{$arrErr.kana02}--></font>
+
+	¥«¥Ê/À«¡ÊÎã¡§¥·¥Ö¥ä¡Ë<br>
+	<input type="text" name="kana01" value="<!--{$arrForm.kana01|escape}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" istyle="2"><br>
+
+	¥«¥Ê/Ì¾¡ÊÎã¡§¥Ï¥Ê¥³¡Ë<br>
+	<input type="text" name="kana02" value="<!--{$arrForm.kana02|escape}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" istyle="2"><br>
+
+	<input type="submit" name="confirm" value="¼¡¤Ø">
+</form>
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/mypage/index.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/mypage/index.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/mypage/index.tpl	(revision 11460)
@@ -0,0 +1,20 @@
+<div align="center">MY¥Ú¡¼¥¸TOP</div>
+<hr>
+
+<!--{$CustomerName1|escape}--> <!--{$CustomerName2|escape}-->ÍÍ<br>
+¤¤¤Ä¤â¤´ÍøÍÑ¤¤¤¿¤À¤­¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤¹¡£<br>
+<br>
+<a href="history.php" accesskey="1"><!--{1|numeric_emoji}-->¹ØÆþÍúÎò<br>
+<a href="change.php" accesskey="2"><!--{2|numeric_emoji}-->ÅÐÏ¿ÆâÍÆÊÑ¹¹<br>
+<a href="refusal.php" accesskey="3"><!--{3|numeric_emoji}-->Âà²ñ<br>
+
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/mypage/login.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/mypage/login.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/mypage/login.tpl	(revision 11460)
@@ -0,0 +1,36 @@
+<div align="center">¥í¥°¥¤¥ó</div>
+<hr>
+
+<!--¢§CONTENTS-->
+<form name="login_mypage" id="login_mypage" method="post" action="./index.php">
+	<input type="hidden" name="mode" value="login" >
+<!--{if !$tpl_valid_phone_id}-->
+	¢£°ÊÁ°¤Ë¤´ÃíÊ¸¤µ¤ì¤¿Êý<br>
+	(¥â¥Ð¥¤¥ëËô¤ÏPC¤Ç¤´ÅÐÏ¿ºÑ¤ß)<br>
+	¢§¥á¡¼¥ë¥¢¥É¥ì¥¹<br>
+	<!--{assign var=key value="login_email"}-->
+	<font color="#FF0000"><!--{$arrErr[$key]}--></font>
+	<input type="text" name="<!--{$key}-->" value="<!--{$login_email|escape}-->" 
+		maxlength="<!--{$arrForm[$key].length}-->" size="40" istyle="3"><br>
+<!--{else}-->
+	<input type="hidden" name="login_email" value="dummy">
+<!--{/if}-->
+	¢§¥Ñ¥¹¥ï¡¼¥É<br>
+	<!--{assign var=key value="login_pass"}--><font color="#FF0000"><!--{$arrErr[$key]}--></font>
+	<input type="password" name="<!--{$key}-->" maxlength="<!--{$arrForm[$key].length}-->" size="40" istyle="3"><br>
+	<center><input type="submit" value="Á÷¿®" name="log"></center><br>
+	<a href="<!--{$smarty.const.URL_DIR}-->forgot/index.php">¥Ñ¥¹¥ï¡¼¥É¤ò¤ªËº¤ì¤ÎÊý¤Ï¤³¤Á¤é</a><br>
+</form>
+<!--¢¥CONTENTS-->
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/mypage/refusal_complete.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/mypage/refusal_complete.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/mypage/refusal_complete.tpl	(revision 11460)
@@ -0,0 +1,16 @@
+<div align="center">Âà²ñ´°Î»</div>
+<hr>
+
+Âà²ñ¼êÂ³¤­¤¬´°Î»Ã×¤·¤Þ¤·¤¿¡£¤Þ¤¿¤Î¤´ÍøÍÑ¤ò¤ª¤Þ¤Á¤·¤Æ¤ª¤ê¤Þ¤¹¡£<br>
+<br>
+
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<hr>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
+
+
+
Index: branches/dev/data/Smarty/templates/mobile/mypage/set1.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/mypage/set1.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/mypage/set1.tpl	(revision 11460)
@@ -0,0 +1,55 @@
+<div align="center">ÅÐÏ¿ÆâÍÆÊÑ¹¹ 2/3</div>
+<hr>
+<form name="form1" method="post" action="<!--{$smarty.server.PHP_SELF|escape}-->">
+	<input type="hidden" name="mode" value="set2">
+
+	<font color="#FF0000">*¤ÏÉ¬¿Ü¹àÌÜ¤Ç¤¹¡£</font><br>
+	<br>
+
+	¡ÚÀ­ÊÌ¡Û<font color="#FF0000">*</font><br>
+	<font color="#FF0000"><!--{$arrErr.sex}--></font>
+	<input type="radio" name="sex" value="1" <!--{if $arrForm.sex eq "1"}-->checked<!--{/if}--> />ÃËÀ­&nbsp;
+	<input type="radio" name="sex" value="2" <!--{if $arrForm.sex eq "2"}-->checked<!--{/if}--> />½÷À­<br>
+
+	¡ÚÀ¸Ç¯·îÆü¡Û<font color="#FF0000">*</font><br>
+	<font color="#FF0000"><!--{$arrErr.year}--><!--{$arrErr.month}--><!--{$arrErr.day}--></font>
+	<select name="year">
+		<!--{html_options options=$arrYear selected=$arrForm.year}-->
+	</select>Ç¯<br>
+	<select name="month">
+		<option value="">--</option>
+		<!--{html_options options=$arrMonth selected=$arrForm.month}-->
+	</select>·î<br>
+	<select value="" name="day">
+		<option value="">--</option>
+		<!--{html_options options=$arrDay selected=$arrForm.day}-->
+	</select>Æü<br>
+
+	<!--{assign var=key1 value="zip01"}-->
+	<!--{assign var=key2 value="zip02"}-->
+	¡ÚÍ¹ÊØÈÖ¹æ¡Û<font color="#FF0000">*</font><br>
+	<font color="#FF0000"><!--{$arrErr[$key1]}--><!--{$arrErr[$key2]}--></font>
+	<!--{assign var="size1" value="`$smarty.const.ZIP01_LEN+2`"}-->
+	<!--{assign var="size2" value="`$smarty.const.ZIP02_LEN+2`"}-->
+	<input size="<!--{$size1}-->" type="text" name="zip01" value="<!--{if $arrForm.zip01 == ""}--><!--{$arrForm.zip01|escape}--><!--{else}--><!--{$arrForm.zip01|escape}--><!--{/if}-->" maxlength="<!--{$smarty.const.ZIP01_LEN}-->" istyle="4">
+	&nbsp;-&nbsp;
+	<input size="<!--{$size2}-->" type="text" name="zip02" value="<!--{if $arrForm.zip02 == ""}--><!--{$arrForm.zip02|escape}--><!--{else}--><!--{$arrForm.zip02|escape}--><!--{/if}-->" maxlength="<!--{$smarty.const.ZIP02_LEN}-->" istyle="4"><br>
+
+	<input type="submit" name="confirm" value="¼¡¤Ø">
+
+	<!--{foreach from=$list_data key=key item=item}-->
+		<input type="hidden" name="<!--{$key|escape}-->" value="<!--{$item|escape}-->">
+	<!--{/foreach}-->
+</form>
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/mypage/change_complete.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/mypage/change_complete.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/mypage/change_complete.tpl	(revision 11460)
@@ -0,0 +1,18 @@
+<div align="center">ÊÑ¹¹´°Î»</div>
+<hr>
+
+²ñ°÷ÅÐÏ¿ÆâÍÆ¤ÎÊÑ¹¹¤¬´°Î»¤¤¤¿¤·¤Þ¤·¤¿¡£<br>
+º£¸å¤È¤â¤´°¦¸Ü»ò¤ê¤Þ¤¹¤è¤¦¤è¤í¤·¤¯¤ª´ê¤¤¿½¤·¾å¤²¤Þ¤¹¡£<br>
+
+<br>
+
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/mypage/set2.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/mypage/set2.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/mypage/set2.tpl	(revision 11460)
@@ -0,0 +1,54 @@
+<div align="center">ÅÐÏ¿ÆâÍÆÊÑ¹¹ 3/3</div>
+<hr>
+<form name="form1" method="post" action="<!--{$smarty.server.PHP_SELF|escape}-->">
+	<input type="hidden" name="mode" value="confirm">
+
+	<font color="#FF0000">*¤ÏÉ¬¿Ü¹àÌÜ¤Ç¤¹¡£</font><br>
+	<br>
+
+	¡ÚÅÔÆ»ÉÜ¸©¡Û<font color="#FF0000">*</font><br>
+	<font color="#FF0000"><!--{$arrErr.pref}--><!--{$arrErr.addr01}--><!--{$arrErr.addr02}--></font>
+	<select name="pref">
+		<option value="" selected>ÅÔÆ»ÉÜ¸©¤òÁªÂò</option>
+		<!--{html_options options=$arrPref selected=$arrForm.pref}-->
+	</select><br>
+
+	¡Ú»Ô¶èÄ®Â¼¡Û<font color="#FF0000">*</font><br>
+	<input type="text" name="addr01" value="<!--{$arrForm.addr01|escape}-->" istyle="1"><br>
+
+	¡ÚÈÖÃÏ¡Û<font color="#FF0000">*</font><br>
+	<input type="text" name="addr02" value="<!--{$arrForm.addr02|escape}-->" istyle="1"><br>
+
+	¡ÚÅÅÏÃÈÖ¹æ¡Û<font color="#FF0000">*</font><br>
+	<font color="#FF0000"><!--{$arrErr.tel01}--><!--{$arrErr.tel02}--><!--{$arrErr.tel03}--></font>
+	<!--{assign var="size" value="`$smarty.const.TEL_ITEM_LEN+2`"}-->
+	<input type="text" size="<!--{$size}-->" name="tel01" value="<!--{$arrForm.tel01|escape}-->" maxlength="<!--{$smarty.const.TEL_ITEM_LEN}-->" istyle="4">
+	&nbsp;-&nbsp;
+	<input type="text" size="<!--{$size}-->" name="tel02" value="<!--{$arrForm.tel02|escape}-->" maxlength="<!--{$smarty.const.TEL_ITEM_LEN}-->" istyle="4">
+	&nbsp;-&nbsp;
+	<input type="text" size="<!--{$size}-->" name="tel03" value="<!--{$arrForm.tel03|escape}-->" maxlength="<!--{$smarty.const.TEL_ITEM_LEN}-->" istyle="4"><br>
+
+	¡Ú¥á¡¼¥ë¥Þ¥¬¥¸¥ó¡Û<br>
+	¤ªÆÀ¤Ê¾ðÊó¤ò´õË¾¤µ¤ì¤Þ¤¹¤«¡©<br>
+	ÇÛ¿®´õË¾<input type="checkbox" name="mail_flag" value="on" <!--{if $arrForm.mail_flag eq '2'}-->checked<!--{/if}--> /><br>
+	¡Ê´õË¾¤µ¤ì¤Ê¤¤¾ì¹ç¤Ï¥Á¥§¥Ã¥¯¤ò¤Ï¤º¤·¤Æ¤¯¤À¤µ¤¤¡Ë<br>
+	<br>
+
+	<input type="submit" name="confirm" value="¼¡¤Ø">
+
+	<!--{foreach from=$list_data key=key item=item}-->
+		<input type="hidden" name="<!--{$key|escape}-->" value="<!--{$item|escape}-->">
+	<!--{/foreach}-->
+</form>
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/mypage/history.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/mypage/history.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/mypage/history.tpl	(revision 11460)
@@ -0,0 +1,31 @@
+<div align="center">¹ØÆþÍúÎò</div>
+<hr>
+
+<!--{section name=cnt loop=$arrOrder}-->
+	¢£<!--{$arrOrder[cnt].create_date|sfDispDBDate}--><br>
+	ÃíÊ¸ÈÖ¹æ:<!--{$arrOrder[cnt].order_id}--><br>
+	<!--{assign var=payment_id value="`$arrOrder[cnt].payment_id`"}-->
+	¹ç·×¶â³Û:<!--{$arrOrder[cnt].payment_total|number_format}-->±ß<br>
+
+	<div align="center">
+	<form name="form1" method="post" action="history_detail.php">
+		<input type="hidden" name="order_id" value="<!--{$arrOrder[cnt].order_id}-->">
+		<input type="submit" name="submit" value="¾ÜºÙ¤ò¸«¤ë">
+	</form>
+	</div>
+	<br>
+<!--{/section}-->
+<br>
+
+<!--{$tpl_strnavi}-->
+
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/mypage/refusal.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/mypage/refusal.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/mypage/refusal.tpl	(revision 11460)
@@ -0,0 +1,22 @@
+<div align="center">Âà²ñ³ÎÇ§</div>
+<hr>
+<!--{$CustomerName1|escape}--> <!--{$CustomerName2|escape}-->ÍÍ¡¢²ñ°÷¤«¤éÂà²ñ¤ò¤µ¤ì¤Þ¤¹¤È¡¢ÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¤ªÆÏ¤±Àè¤Î¾ðÊó¤Ê¤ÉÁ´¤Æºï½ü¤µ¤ì¤Þ¤¹¤¬¤è¤í¤·¤¤¤Ç¤·¤ç¤¦¤«¡£<br>
+<br>
+<div align="center">
+<form action="<!--{$smarty.server.PHP_SELF|escape}-->" method="post">
+	<input type="submit" name="no" value="¤¤¤¤¤¨">
+	<input type="submit" name="complete" value="¤Ï¤¤">
+</form>
+</div>
+<br>
+
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/mypage/change_confirm.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/mypage/change_confirm.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/mypage/change_confirm.tpl	(revision 11460)
@@ -0,0 +1,49 @@
+<div align="center">ÊÑ¹¹³ÎÇ§</div>
+<hr>
+<form name="form1" id="form1" method="post" action="<!--{$smarty.server.PHP_SELF|escape}-->">
+	<input type="hidden" name="mode" value="complete">
+	<!--{foreach from=$list_data key=key item=item}-->
+		<input type="hidden" name="<!--{$key|escape}-->" value="<!--{$item|escape}-->">
+	<!--{/foreach}-->
+	²¼µ­¤ÎÆâÍÆ¤Ç¤´ÅÐÏ¿¤·¤Æ¤â¤è¤í¤·¤¤¤Ç¤¹¤«¡©<br>
+	<br>
+	¡ÚÒ°Ù±ÄÞÚ½¡Û<br>
+	<!--{$list_data.email|escape}--><br>
+	<br>
+
+	¡ÚÊß½Ü°ÄÞ³ÎÇ§ÍÑ¼ÁÌä¡Û<br>
+	<!--{$arrReminder[$list_data.reminder]|escape}--><br>
+	<br>
+
+	¡Ú¼ÁÌä¤ÎÅú¤¨¡Û<br>
+	<!--{$list_data.reminder_answer|escape}--><br>
+	<br>
+
+	¡Ú¸Ä¿Í¾ðÊó¡Û<br>
+	<!--{$list_data.name01|escape}-->¡¡<!--{$list_data.name02|escape}--><br>
+	<!--{$list_data.kana01|escape}-->¡¡<!--{$list_data.kana02|escape}--><br>
+	<!--{if $list_data.sex eq 1}-->ÃËÀ­<!--{else}-->½÷À­<!--{/if}--><br>
+	<!--{if strlen($list_data.year) > 0 && strlen($list_data.month) > 0 && strlen($list_data.day) > 0}--><!--{$list_data.year|escape}-->Ç¯<!--{$list_data.month|escape}-->·î<!--{$list_data.day|escape}-->ÆüÀ¸¤Þ¤ì<!--{else}-->Ì¤ÅÐÏ¿<!--{/if}--><br>
+	¢©<!--{$list_data.zip01|escape}--> - <!--{$list_data.zip02|escape}--><br>
+	<!--{$arrPref[$list_data.pref]|escape}--><!--{$list_data.addr01|escape}--><!--{$list_data.addr02|escape}--><br>
+	<!--{$list_data.tel01|escape}-->-<!--{$list_data.tel02|escape}-->-<!--{$list_data.tel03|escape}--><br>
+	<br>
+	
+	¡ÚÒ°ÙÏ¶Þ¼ÞÝÞ¡Û<br>
+	<!--{if $list_data.mail_flag eq 2}-->´õË¾¤¹¤ë<!--{else}-->´õË¾¤·¤Ê¤¤<!--{/if}--><br>
+	<br>
+
+	<input type="submit" name="submit" value="ÊÑ¹¹">
+</form>
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/mypage/history_detail.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/mypage/history_detail.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/mypage/history_detail.tpl	(revision 11460)
@@ -0,0 +1,54 @@
+<div align="center">¹ØÆþÍúÎò¾ÜºÙ</div>
+<hr>
+
+¢£<!--{$arrDisp.create_date|sfDispDBDate}--><br>
+ÃíÊ¸ÈÖ¹æ:<!--{$arrDisp.order_id}--><br>
+<br>
+¡ÚÇÛÁ÷Àè¡Û<br>
+	<!--{assign var=key1 value="deliv_name01"}--><!--{assign var=key2 value="deliv_name02"}-->
+	<!--{$arrDisp[$key1]|escape}-->&nbsp;<!--{$arrDisp[$key2]|escape}--><br>
+	<!--{assign var=key1 value="deliv_zip01"}--><!--{assign var=key2 value="deliv_zip02"}-->
+	¢©<!--{$arrDisp[$key1]}-->-<!--{$arrDisp[$key2]}--><br>
+	<!--{assign var=pref value=`$arrDisp.deliv_pref`}--><!--{$arrPref[$pref]}-->
+	<!--{assign var=key value="deliv_addr01"}--><!--{$arrDisp[$key]|escape}-->
+	<!--{assign var=key value="deliv_addr02"}--><!--{$arrDisp[$key]|escape}--><br>
+<br>
+¡ÚÇÛÁ÷Æü»þ»ØÄê¡Û<br>
+<!--{if $arrDisp.deliv_date eq "" and $arrDelivTime[$arrDisp.deliv_time_id] eq ""}-->
+	»ØÄê¤Ê¤·<br>
+<!--{else}-->
+	<!--{$arrDisp.deliv_date|escape}--> <!--{$arrDelivTime[$arrDisp.deliv_time_id]|escape}--><br>
+<!--{/if}-->
+<br>
+¡Ú¤ª»ÙÊ§¤¤ÊýË¡¡Û<br>
+<!--{$arrPayment[$arrDisp.payment_id]|escape}--><br>
+<br>
+¡Ú¤´ÃíÊ¸ÆâÍÆ¡Û<br>
+<!--{section name=cnt loop=$arrDisp.quantity}-->
+<!--{$arrDisp.product_name[cnt]|escape}--><br>
+<a href="<!--{$smarty.const.URL_DIR}-->products/detail.php?product_id=<!--{$arrDisp.product_id[cnt]}-->">¾¦ÉÊ¹ØÆþ¾ÜºÙ¢ª</a><br>
+<!--{/section}-->
+<br>
+¡Ú¹ØÆþ¶â³Û¡Û<br>
+¾¦ÉÊ¹ç·×:<!--{$arrDisp.subtotal|number_format}-->±ß<br>
+Á÷ÎÁ:<!--{assign var=key value="deliv_fee"}--><!--{$arrDisp[$key]|escape|number_format}-->±ß<br>
+¹ç·×:<!--{$arrDisp.payment_total|number_format}-->±ß<br>
+<br>
+
+<form action="order.php" method="post">
+	<input type="hidden" name="order_id" value="<!--{$arrDisp.order_id}-->">
+	<div align="center"><input type="submit" name="submit" value="ºÆÃíÊ¸"></div>
+</form>
+
+<br>
+
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/error.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/error.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/error.tpl	(revision 11460)
@@ -0,0 +1,8 @@
+<!--¢§CONTENTS-->
+<!--¢§MAIN ONTENTS-->
+<!--¡ú¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸--><!--{$tpl_error}--><br>
+<!--{if $return_top}-->
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a>
+<!--{/if}-->
+<!--¢¥MAIN ONTENTS-->
+<!--¢¥CONTENTS-->
Index: branches/dev/data/Smarty/templates/mobile/shopping/deliv.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/shopping/deliv.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/shopping/deliv.tpl	(revision 11460)
@@ -0,0 +1,49 @@
+<center>ÇÛÁ÷Àè»ØÄê</center>
+
+<hr>
+
+<!--{if $arrErr.deli != ""}-->
+<font color="#ff0000"><!--{$arrErr.deli}--></font>
+<!--{/if}-->
+
+<!--¢§CONTENTS-->
+<!--{section name=cnt loop=$arrAddr}-->
+<form method="post" action="<!--{$smarty.server.PHP_SELF|escape}-->">
+<input type="hidden" name="uniqid" value="<!--{$tpl_uniqid}-->">
+<input type="hidden" name="deli" value="<!--{$smarty.section.cnt.iteration}-->">
+<!--{if $smarty.section.cnt.first}-->
+<input type="hidden" name="mode" value="customer_addr">
+<input type="hidden" name="other_deliv_id" value="">
+<!--{else}-->
+<input type="hidden" name="mode" value="other_addr">
+<input type="hidden" name="other_deliv_id" value="<!--{$arrAddr[cnt].other_deliv_id}-->">
+<!--{/if}-->
+¢£ÇÛÁ÷Àè<!--{$smarty.section.cnt.iteration}--><br>
+¢©<!--{$arrAddr[cnt].zip01}-->-<!--{$arrAddr[cnt].zip02}--><br>
+<!--{assign var=key value=$arrAddr[cnt].pref}--><!--{$arrPref[$key]}--><!--{$arrAddr[cnt].addr01|escape}--><br>
+<!--{if $arrAddr[cnt].addr02 != ""}-->
+<!--{$arrAddr[cnt].addr02|escape}--><br>
+<!--{/if}-->
+<center><input type="submit" value="¤³¤³¤ËÁ÷¤ë"></center>
+</form>
+<!--{/section}-->
+
+<br>
+
+¢£¤½¤ÎÂ¾¤Î¤ªÆÏ¤±Àè¤ò»ØÄê<br>
+<form method="get" action="deliv_addr.php">
+<center><input type="submit" value="¿·µ¬ÅÐÏ¿"></center>
+</form>
+<!--¢¥CONTENTS-->
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<center>LOCKON CO.,LTD.</center>
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/shopping/index.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/shopping/index.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/shopping/index.tpl	(revision 11460)
@@ -0,0 +1,49 @@
+<!--¢§CONTENTS-->
+<!--¢§MAIN ONTENTS-->
+<div align="center"><font color="#000080">¤´ÃíÊ¸¼êÂ³¤­</font></div><br>
+<hr>
+<!--{if !$tpl_valid_phone_id}-->
+<!--¢§²ñ°÷ÅÐÏ¿¤¬¤ªºÑ¤ß¤Ç¤Ê¤¤¤ªµÒÍÍ-->
+¢£½é¤á¤Æ¤´ÃíÊ¸¤ÎÊý<br>
+(¿·µ¬¤´ÅÐÏ¿)<br>
+<form name="member_form" id="member_form" method="post" action="<!--{$smarty.const.URL_DIR}-->entry/kiyaku.php">
+	<div align="center"><input type="submit" value="¿·µ¬ÅÐÏ¿"></div><br>
+</form>
+<!--¢¥¤Þ¤À²ñ°÷ÅÐÏ¿¤µ¤ì¤Æ¤¤¤Ê¤¤¤ªµÒÍÍ-->
+<!--{/if}-->
+
+<!--¢§²ñ°÷ÅÐÏ¿¤¬¤ªºÑ¤ß¤Î¤ªµÒÍÍ-->
+<form name="member_form" id="member_form" method="post" action="./deliv.php">
+	<input type="hidden" name="mode" value="login">
+<!--{if !$tpl_valid_phone_id}-->
+	¢£°ÊÁ°¤Ë¤´ÃíÊ¸¤µ¤ì¤¿Êý<br>
+	(¥â¥Ð¥¤¥ëËô¤ÏPC¤Ç¤´ÅÐÏ¿ºÑ¤ß)<br>
+	¢§¥á¡¼¥ë¥¢¥É¥ì¥¹<br>
+	<!--{assign var=key value="login_email"}-->
+	<font color="#FF0000"><!--{$arrErr[$key]}--></font>
+	<input type="text" name="<!--{$key}-->" value="<!--{$tpl_login_email|escape}-->" 
+		maxlength="<!--{$arrForm[$key].length}-->" size="40" istyle="3"><br>
+<!--{else}-->
+<input type="hidden" name="login_email" value="dummy">
+<!--{/if}-->
+	¢§¥Ñ¥¹¥ï¡¼¥É<br>
+	<!--{assign var=key value="login_pass"}--><font color="#FF0000"><!--{$arrErr[$key]}--></font>
+	<input type="password" name="<!--{$key}-->" maxlength="<!--{$arrForm[$key].length}-->" size="40" istyle="3"><br>
+	<center><input type="submit" value="Á÷¿®" name="log"></center><br>
+	<a href="<!--{$smarty.const.URL_DIR}-->forgot/index.php">¥Ñ¥¹¥ï¡¼¥É¤ò¤ªËº¤ì¤ÎÊý¤Ï¤³¤Á¤é</a><br>
+</form>
+<!--¢¥²ñ°÷ÅÐÏ¿¤¬¤ªºÑ¤Î¤ªµÒÍÍ-->
+<!--¢¥MAIN ONTENTS-->
+<!--¢¥CONTENTS-->
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/shopping/complete.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/shopping/complete.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/shopping/complete.tpl	(revision 11460)
@@ -0,0 +1,18 @@
+<center>¤´ÃíÊ¸´°Î»</center>
+
+<hr>
+
+¤´ÃíÊ¸¡¢Í­¤êÆñ¤¦¤´¤¶¤¤¤Þ¤·¤¿¡£<br>
+¾¦ÉÊÅþÃå¤ò¤ª³Ú¤·¤ß¤Ë¤ªÂÔ¤Á²¼¤µ¤¤¤Þ¤»¡£<br>
+¤É¤¦¤¾¡¢º£¸å¤È¤â¡¢<!--{$arrInfo.shop_name|escape}-->¤ò¤è¤í¤·¤¯¤ª´ê¤¤¤·¤Þ¤¹¡£<br>
+
+<br>
+
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->">TOP¥Ú¡¼¥¸¤ËÌá¤ë</a><br>
+
+<br>
+<hr>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<center>LOCKON CO.,LTD.</center>
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/shopping/set1.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/shopping/set1.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/shopping/set1.tpl	(revision 11460)
@@ -0,0 +1,50 @@
+<div align="center">¤ªÆÏ¤±ÀèÅÐÏ¿</div>
+<hr>
+<form name="form1" method="post" action="<!--{$smarty.server.PHP_SELF|escape}-->">
+	<input type="hidden" name="mode" value="set2">
+
+	<font color="#FF0000">*¤ÏÉ¬¿Ü¹àÌÜ¤Ç¤¹¡£</font><br>
+	<br>
+
+	¡ÚÅÔÆ»ÉÜ¸©¡Û<font color="#FF0000">*</font><br>
+	<font color="#FF0000"><!--{$arrErr.pref}--><!--{$arrErr.addr01}--><!--{$arrErr.addr02}--></font>
+	<select name="pref">
+		<option value="" selected>ÅÔÆ»ÉÜ¸©¤òÁªÂò</option>
+		<!--{html_options options=$arrPref selected=$arrForm.pref}-->
+	</select><br>
+
+	¡Ú»Ô¶èÄ®Â¼¡Û<font color="#FF0000">*</font><br>
+	<input type="text" name="addr01" value="<!--{$arrForm.addr01|escape}-->" istyle="1"><br>
+
+	¡ÚÈÖÃÏ¡Û<font color="#FF0000">*</font><br>
+	<input type="text" name="addr02" value="<!--{$arrForm.addr02|escape}-->" istyle="1"><br>
+
+	¡ÚÅÅÏÃÈÖ¹æ¡Û<font color="#FF0000">*</font><br>
+	<font color="#FF0000"><!--{$arrErr.tel01}--><!--{$arrErr.tel02}--><!--{$arrErr.tel03}--></font>
+	<!--{assign var="size" value="`$smarty.const.TEL_ITEM_LEN+2`"}-->
+	<input type="text" size="<!--{$size}-->" name="tel01" value="<!--{$arrForm.tel01|escape}-->" maxlength="<!--{$smarty.const.TEL_ITEM_LEN}-->" istyle="4">
+	&nbsp;-&nbsp;
+	<input type="text" size="<!--{$size}-->" name="tel02" value="<!--{$arrForm.tel02|escape}-->" maxlength="<!--{$smarty.const.TEL_ITEM_LEN}-->" istyle="4">
+	&nbsp;-&nbsp;
+	<input type="text" size="<!--{$size}-->" name="tel03" value="<!--{$arrForm.tel03|escape}-->" maxlength="<!--{$smarty.const.TEL_ITEM_LEN}-->" istyle="4"><br>
+
+	<br>
+
+	<div align="center"><input type="submit" name="submit" value="¼¡¤Ø"></div>
+
+	<!--{foreach from=$list_data key=key item=item}-->
+		<input type="hidden" name="<!--{$key|escape}-->" value="<!--{$item|escape}-->">
+	<!--{/foreach}-->
+</form>
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/shopping/confirm.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/shopping/confirm.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/shopping/confirm.tpl	(revision 11460)
@@ -0,0 +1,66 @@
+<center>¤´ÃíÊ¸ÆâÍÆ³ÎÇ§</center>
+
+<hr>
+
+<form method="post" action="<!--{$smarty.server.PHP_SELF|escape}-->">
+<input type="hidden" name="mode" value="confirm">
+<input type="hidden" name="uniqid" value="<!--{$tpl_uniqid}-->">
+
+²¼µ­¤Î¤´ÃíÊ¸ÆâÍÆ¤Ë´Ö°ã¤¤¤Ï¤´¤¶¤¤¤Þ¤»¤ó¤«¡©<br>
+
+<br>
+
+¡ÚÇÛÁ÷Àè¡Û<br>
+<!--{if $arrData.deliv_check == 1}-->
+<!--{$arrData.deliv_name01|escape}--> <!--{$arrData.deliv_name02|escape}--><br>
+¢©<!--{$arrData.deliv_zip01|escape}-->-<!--{$arrData.deliv_zip02|escape}--><br>
+<!--{$arrPref[$arrData.deliv_pref]}--><!--{$arrData.deliv_addr01|escape}--><!--{$arrData.deliv_addr02|escape}--><br>
+<!--{else}-->
+<!--{$arrData.order_name01|escape}--> <!--{$arrData.order_name02|escape}--><br>
+¢©<!--{$arrData.order_zip01|escape}-->-<!--{$arrData.order_zip02|escape}--><br>
+<!--{$arrPref[$arrData.order_pref]}--><!--{$arrData.order_addr01|escape}--><!--{$arrData.order_addr02|escape}--><br>
+<!--{/if}-->
+
+<br>
+
+¡ÚÇÛÁ÷Æü»þ»ØÄê¡Û<br>
+Æü¡§<!--{$arrData.deliv_date|escape|default:"»ØÄê¤Ê¤·"}--><br>
+»þ´Ö¡§<!--{$arrData.deliv_time|escape|default:"»ØÄê¤Ê¤·"}--><br>
+
+<br>
+
+¡Ú¤ª»ÙÊ§¤¤ÊýË¡¡Û<br>
+<!--{$arrData.payment_method|escape}--><br>
+
+<br>
+
+¡Ú¤´ÃíÊ¸ÆâÍÆ¡Û<br>
+<!--{section name=cnt loop=$arrProductsClass}-->
+<!--{$arrProductsClass[cnt].name}--> <!--{$arrProductsClass[cnt].quantity|number_format}-->¸Ä<br>
+<!--{/section}-->
+
+<br>
+
+¡Ú¹ØÆþ¶â³Û¡Û<br>
+¾¦ÉÊ¹ç·×¡§<!--{$tpl_total_pretax|number_format}--><br>
+Á÷ÎÁ¡§<!--{$arrData.deliv_fee|number_format}--><br>
+<!--{if $arrData.charge > 0}-->¼ê¿ôÎÁ¡§<!--{$arrData.charge|number_format}--><br><!--{/if}-->
+¹ç·×¡§<!--{$arrData.payment_total|number_format}--><br>
+(Æâ¾ÃÈñÀÇ¡§<!--{$arrData.tax|number_format}-->)<br>
+
+<br>
+
+<center><input type="submit" value="ÃíÊ¸"></center>
+</form>
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<center>LOCKON CO.,LTD.</center>
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/shopping/deliv_addr.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/shopping/deliv_addr.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/shopping/deliv_addr.tpl	(revision 11460)
@@ -0,0 +1,53 @@
+<div align="center">¤ªÆÏ¤±ÀèÅÐÏ¿</div>
+<hr>
+<form name="form1" method="post" action="<!--{$smarty.server.PHP_SELF|escape}-->">
+	<input type="hidden" name="mode" value="set1">
+
+	<font color="#FF0000">*¤ÏÉ¬¿Ü¹àÌÜ¤Ç¤¹¡£</font><br>
+	<br>
+
+	¡Ú¤ªÌ¾Á°¡Û<font color="#FF0000">¢¨</font><br>
+	<font color="#FF0000"><!--{$arrErr.name01}--><!--{$arrErr.name02}--></font>
+	À«¡ÊÎã¡§½ÂÃ«¡Ë<br>
+	<input type="text" name="name01" value="<!--{$arrForm.name01|escape}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" istyle="1"><br>
+
+	Ì¾¡ÊÎã¡§²Ö»Ò¡Ë<br>
+	<input type="text" name="name02" value="<!--{$arrForm.name02|escape}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" istyle="1"><br>
+	<font color="#FF0000"><!--{$arrErr.kana01}--><!--{$arrErr.kana02}--></font>
+
+	¥«¥Ê/À«¡ÊÎã¡§¥·¥Ö¥ä¡Ë<br>
+	<input type="text" name="kana01" value="<!--{$arrForm.kana01|escape}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" istyle="2"><br>
+
+	¥«¥Ê/Ì¾¡ÊÎã¡§¥Ï¥Ê¥³¡Ë<br>
+	<input type="text" name="kana02" value="<!--{$arrForm.kana02|escape}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" istyle="2"><br>
+
+	<br>
+
+	<!--{assign var=key1 value="zip01"}-->
+	<!--{assign var=key2 value="zip02"}-->
+	¡ÚÍ¹ÊØÈÖ¹æ¡Û<font color="#FF0000">*</font><br>
+	<font color="#FF0000"><!--{$arrErr[$key1]}--><!--{$arrErr[$key2]}--></font>
+	<!--{assign var="size1" value="`$smarty.const.ZIP01_LEN+2`"}-->
+	<!--{assign var="size2" value="`$smarty.const.ZIP02_LEN+2`"}-->
+	<input size="<!--{$size1}-->" type="text" name="zip01" value="<!--{if $arrForm.zip01 == ""}--><!--{$arrForm.zip01|escape}--><!--{else}--><!--{$zip01|escape}--><!--{/if}-->" maxlength="<!--{$smarty.const.ZIP01_LEN}-->" istyle="4">
+	&nbsp;-&nbsp;
+	<input size="<!--{$size2}-->" type="text" name="zip02" value="<!--{if $arrForm.zip02 == ""}--><!--{$arrForm.zip02|escape}--><!--{else}--><!--{$zip02|escape}--><!--{/if}-->" maxlength="<!--{$smarty.const.ZIP02_LEN}-->" istyle="4"><br>
+
+	<br>
+
+	<div align="center"><input type="submit" name="confirm" value="¼¡¤Ø"></div>
+
+</form>
+
+<br>
+
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/shopping/payment.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/shopping/payment.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/shopping/payment.tpl	(revision 11460)
@@ -0,0 +1,69 @@
+<center>ÇÛÃ£Æü¡¦»ÙÊ§¤¤»ØÄê</center>
+
+<hr>
+
+<form method="post" action="<!--{$smarty.server.PHP_SELF|escape}-->">
+<input type="hidden" name="mode" value="confirm">
+<input type="hidden" name="uniqid" value="<!--{$tpl_uniqid}-->">
+<!--<input type="hidden" name="message" value="">-->
+<!--{if $tpl_login == 1}-->
+<!--<input type="hidden" name="point_check" value="2">-->
+<!--{/if}-->
+
+¢£ÇÛÃ£Æü»þ»ØÄê<br>
+ÇÛÁ÷Æü»ØÄê<br>
+<!--{assign var=key value="deliv_date"}-->
+<!--{if $arrErr[$key] != ""}-->
+<font color="red"><!--{$arrErr[$key]}--></font>
+<!--{/if}-->
+<!--{if $arrDelivDate}-->
+<select name="<!--{$key}-->">
+<option value="" selected="">»ØÄê¤Ê¤·</option>
+<!--{html_options options=$arrDelivDate selected=$arrForm[$key].value}-->
+</select>
+<!--{else}-->
+¤´»ØÄêÄº¤±¤Þ¤»¤ó¡£
+<!--{/if}-->
+<br>
+
+»þ´ÖÂÓ»ØÄê<br>
+<!--{assign var=key value="deliv_time_id"}-->
+<!--{if $arrErr[$key] != ""}-->
+<font color="red"><!--{$arrErr[$key]}--></font>
+<!--{/if}-->
+<select name="<!--{$key}-->">
+<option value="" selected="">»ØÄê¤Ê¤·</option>
+<!--{html_options options=$arrDelivTime selected=$arrForm[$key].value}-->
+</select>
+<br>
+
+<br>
+
+<center>»ÙÊ§¤¤ÊýË¡»ØÄê</center>
+
+<hr>
+
+<!--{assign var=key value="payment_id"}-->
+<!--{if $arrErr[$key] != ""}-->
+<font color="red"><!--{$arrErr[$key]}--></font>
+<!--{/if}-->
+<!--{section name=cnt loop=$arrPayment}-->
+<input type="radio" name="<!--{$key}-->" value="<!--{$arrPayment[cnt].payment_id}-->" <!--{$arrPayment[cnt].payment_id|sfGetChecked:$arrForm[$key].value}-->>
+<!--{$arrPayment[cnt].payment_method|escape}-->
+<br>
+<!--{/section}-->
+
+<center><input type="submit" value="¼¡¤Ø"></center>
+</form>
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<center>LOCKON CO.,LTD.</center>
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/shopping/set2.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/shopping/set2.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/shopping/set2.tpl	(revision 11460)
@@ -0,0 +1,30 @@
+<div align="center">¤ªÆÏ¤±ÀèÅÐÏ¿³ÎÇ§</div>
+<hr>
+<form name="form1" method="post" action="<!--{$smarty.server.PHP_SELF|escape}-->">
+	<input type="hidden" name="mode" value="complete">
+
+	¡Ú¸Ä¿Í¾ðÊó¡Û<br>
+	<!--{$list_data.name01|escape}-->¡¡<!--{$list_data.name02|escape}--><br>
+	<!--{$list_data.kana01|escape}-->¡¡<!--{$list_data.kana02|escape}--><br>
+	¢©<!--{$list_data.zip01|escape}--> - <!--{$list_data.zip02|escape}--><br>
+	<!--{$arrPref[$list_data.pref]|escape}--><!--{$list_data.addr01|escape}--><!--{$list_data.addr02|escape}--><br>
+	<!--{$list_data.tel01|escape}-->-<!--{$list_data.tel02|escape}-->-<!--{$list_data.tel03|escape}--><br>
+
+	<div align="center"><input type="submit" name="submit" value="¼¡¤Ø"></div>
+
+	<!--{foreach from=$list_data key=key item=item}-->
+		<input type="hidden" name="<!--{$key|escape}-->" value="<!--{$item|escape}-->">
+	<!--{/foreach}-->
+</form>
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/unsupported/index.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/unsupported/index.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/unsupported/index.tpl	(revision 11460)
@@ -0,0 +1,5 @@
+<!--¢§CONTENTS-->
+<!--¢§MAIN ONTENTS-->
+ÈóÂÐ±þµ¡¼ï¤Ç¤¹¡£
+<!--¢¥MAIN ONTENTS-->
+<!--¢¥CONTENTS-->
Index: branches/dev/data/Smarty/templates/mobile/cart/index.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/cart/index.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/cart/index.tpl	(revision 11460)
@@ -0,0 +1,65 @@
+<!--¢§CONTENTS-->
+<!--¢§MAIN ONTENTS-->
+<div align="center"><font color="#000080">¤«¤´É½¼¨</font></div>
+<!--{if $tpl_message != ""}-->
+	<!--{$tpl_message}--><br>
+<!--{/if}-->
+<!--{if count($arrProductsClass) > 0}-->
+<form name="form1" id="form1" method="post" action="<!--{$smarty.server.PHP_SELF|escape}-->" utn>
+	<input type="hidden" name="mode" value="confirm">
+	<input type="hidden" name="cart_no" value="">
+	<!--¤´ÃíÊ¸ÆâÍÆ¤³¤³¤«¤é-->
+	<hr>
+	<!--{section name=cnt loop=$arrProductsClass}-->
+		<!--{* ¾¦ÉÊÌ¾ *}--><!--{$arrProductsClass[cnt].name|escape}--><br>
+		<!--{* ²Á³Ê *}-->
+		<!--{if $arrProductsClass[cnt].price02 != ""}-->
+			\<!--{$arrProductsClass[cnt].price02|sfPreTax:$arrInfo.tax:$arrInfo.tax_rule|number_format}-->
+		<!--{else}-->
+			\<!--{$arrProductsClass[cnt].price01|sfPreTax:$arrInfo.tax:$arrInfo.tax_rule|number_format}-->
+		<!--{/if}-->
+		¡ß <!--{$arrProductsClass[cnt].quantity}--><br>
+		<!--{* ¾ÜºÙ *}-->
+		<!--{if $arrProductsClass[cnt].classcategory_name1 != ""}-->
+			<!--{$arrProductsClass[cnt].class_name1}-->:<!--{$arrProductsClass[cnt].classcategory_name1}--><br>
+		<!--{/if}-->
+		<!--{if $arrProductsClass[cnt].classcategory_name2 != ""}-->
+			<!--{$arrProductsClass[cnt].class_name2}-->:<!--{$arrProductsClass[cnt].classcategory_name2}--><br>
+		<!--{/if}-->
+		<br>
+		<!--{* ¿ôÎÌ *}-->
+    ¿ôÎÌ:<!--{$arrProductsClass[cnt].quantity}--><br>
+		<!--{* ¹ç·× *}-->
+		¾®·×:<!--{$arrProductsClass[cnt].total_pretax|number_format}-->±ß<br>
+		<div align="right"><a href="<!--{$smarty.const.DETAIL_P_HTML}--><!--{$arrProductsClass[cnt].product_id}-->">¾¦ÉÊ¹ØÆþ¾ÜºÙ¤Ø¢ª</a></div>
+		<HR>
+	<!--{/section}-->
+	¾¦ÉÊ¹ç·×:<!--{$tpl_total_pretax|number_format}-->±ß<br>
+	¹ç·×:<!--{$arrData.total-$arrData.deliv_fee|number_format}-->±ß<br>
+	<!--{if $arrData.birth_point > 0}-->
+		¤ªÃÂÀ¸·îÎß²ÝÄ<br>
+		<!--{$arrData.birth_point|number_format}-->pt<br>
+	<!--{/if}-->
+	<br>
+	<center><input type="submit" value="ÃíÊ¸¤¹¤ë" name="confirm"></center>
+</form>
+<form method="post" action="<!--{$smarty.server.PHP_SELF|escape}-->">
+	<center><input type="submit" value="¤ªÇãÊª¤òÂ³¤±¤ë" name="continue"></center>
+</form>
+<!--{else}-->
+	¢¨¸½ºß¶°ÄÆâ¤Ë¾¦ÉÊ¤Ï¤´¤¶¤¤¤Þ¤»¤ó¡<br>
+<!--{/if}-->
+<!--¢¥CONTENTS-->
+<!--¢¥MAIN CONTENTS-->
+<!--¢¥CONTENTS-->
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/contact/index.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/contact/index.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/contact/index.tpl	(revision 11460)
@@ -0,0 +1,24 @@
+<div align="center">¤ªÌä¤¤¹ç¤ï¤»</div>
+
+<hr>
+
+³Æ¼ï¤ªÌä¤¤¹ç¤»¤Ï¡¢²¼µ­¤Î¤ªÅÅÏÃËô¤Ï¥á¡¼¥ë¤Ë¤Æ¤´Ï¢Íí²¼¤µ¤¤¤Þ¤»¡£<br>
+¢£<!--{$company_name}--><br>
+¡ÚÅÅÏÃ¡Û<br>
+±Ä¶È»þ´Ö¡§<br>
+<!--{$business_hour}--><br>
+ÅÅÏÃÈÖ¹æ¡§<br>
+<!--{$tel01}-->-<!--{$tel02}-->-<!--{$tel02}--><br>
+¡ÚE-mail¡Û<br>
+<a href="mailto:<!--{$email01}-->"><!--{$email01}--></a><br>
+¢¨¤ªµÞ¤®¤Î¾ì¹ç¤Ë¤Ï¡¢¤ªÅÅÏÃ¤Ë¤Æ¤ªÌä¤¤¹ç¤»²¼¤µ¤¤¡£<br>
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/magazine/cancel.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/magazine/cancel.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/magazine/cancel.tpl	(revision 11460)
@@ -0,0 +1,17 @@
+<div align="center">²ò½ü´°Î»</div>
+<hr>
+
+¥á¡¼¥ë¥Þ¥¬¥¸¥ó¤Î²ò½ü¤¬´°Î»Ã×¤·¤Þ¤·¤¿¡£<br>
+º£¸å¤È¤â¤´°¦¸Ü»ò¤ê¤Þ¤¹¤è¤¦¤è¤í¤·¤¯¤ª´ê¤¤¿½¤·¾å¤²¤Þ¤¹¡£<br>
+<br>
+
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/magazine/index.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/magazine/index.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/magazine/index.tpl	(revision 11460)
@@ -0,0 +1,35 @@
+<div align="center">¥á¥ë¥Þ¥¬ÅÐÏ¿</div>
+<hr>
+¤´ÅÐÏ¿¤¤¤¿¤À¤¤¤¿¤ªµÒÍÍ¤Ø¤Ï<!--{if $arrSiteInfo.shop_name != ""}--><!--{$arrSiteInfo.shop_name|escape}-->¤è¤ê<!--{/if}-->¾¦ÉÊ¤ä¥­¥ã¥ó¥Ú¡¼¥ó¾ðÊó¤ò¥á¡¼¥ë¤Ç¤ªÆÏ¤±¤¤¤¿¤·¤Þ¤¹¡£<br>
+¢¨<!--{if $arrSiteInfo.shop_name != ""}--><!--{$arrSiteInfo.shop_name|escape}-->¤Ç¤Ï<!--{/if}-->¤´ÍøÍÑµ¬Ìó¤Ë½¾¤¤ÍøÍÑ¼Ô¤Î¥¢¥É¥ì¥¹¤òÊÝ¸î¤·¤Æ¤¤¤Þ¤¹¡£<br>
+<br>
+<form action="confirm.php" method="post">
+	¢£ÅÐÏ¿<br>
+	<font color="#FF0000"><!--{$arrErr.regist}--></font>
+	<input type="text" name="regist" value="<!--{$arrForm.regist|escape}-->" istyle="3"><br>
+	<div align="center"><input type="submit" name="btnRegist" value="¼¡¤Ø"></div>
+	<br>
+
+	¢£²ò½ü<br>
+	<font color="#FF0000"><!--{$arrErr.cancel}--></font>
+	<input type="text" name="cancel" value="<!--{$arrForm.cancel|escape}-->" istyle="3"><br>
+	<div align="center"><input type="submit" name="btnCancel" value="¼¡¤Ø"></div>
+	<br>
+</form>
+<br>
+
+¢£¥á¡¼¥ë¥¢¥É¥ì¥¹ÊÑ¹¹<br>
+¥á¡¼¥ë¥¢¥É¥ì¥¹ÊÑ¹¹´õË¾¤ÎÊý¤Ï°ìÅÙ¡¢ÅÐÏ¿²ò½ü¤·¤Æ¤«¤é¡¢¤â¤¦°ìÅÙÅÐÏ¿¤·Ä¾¤·¤Æ¤¯¤À¤µ¤¤¡£<br>
+
+<br>
+
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/magazine/complete.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/magazine/complete.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/magazine/complete.tpl	(revision 11460)
@@ -0,0 +1,17 @@
+<div align="center">´°Î»</div>
+<hr>
+
+¤´ÆþÎÏ¤¤¤¿¤À¤¤¤¿¥á¡¼¥ë¥¢¥É¥ì¥¹°¸¤Æ¤Ë¡¢¤´Ï¢Íí¤¬ÆÏ¤¤¤Æ¤ª¤ê¤Þ¤¹¤Î¤Ç¤´³ÎÇ§²¼¤µ¤¤¡£<br>
+º£¸å¤È¤â¤´°¦¸Ü»ò¤ê¤Þ¤¹¤è¤¦¤è¤í¤·¤¯¤ª´ê¤¤¿½¤·¾å¤²¤Þ¤¹¡£<br>
+<br>
+
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/magazine/confirm.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/magazine/confirm.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/magazine/confirm.tpl	(revision 11460)
@@ -0,0 +1,26 @@
+<div align="center"><!--{$arrForm.kind|escape}-->³ÎÇ§</div>
+<hr>
+<!--{$arrForm.kind|escape}-->¤ò¹Ô¤¤¤Þ¤¹¡£<br>
+°Ê²¼¤ÎÆâÍÆ¤Ç¤è¤í¤·¤¤¤Ç¤·¤ç¤¦¤«¡£<br>
+
+<br>
+<form action="confirm.php" method="post">
+	<input type="hidden" name="mode" value="<!--{$arrForm.type}-->">
+	<input type="hidden" name="email" value="<!--{$arrForm.mail|escape}-->">
+	¢£¥á¡¼¥ë¥¢¥É¥ì¥¹<br>
+	<!--{$arrForm.mail|escape}--><br>
+	<br>
+	<div align="center"><input type="submit" name="submit" value="·èÄê"></div>
+</form>
+<br>
+
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/magazine/regist.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/magazine/regist.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/magazine/regist.tpl	(revision 11460)
@@ -0,0 +1,17 @@
+<div align="center">ÅÐÏ¿´°Î»</div>
+<hr>
+
+¥á¡¼¥ë¥Þ¥¬¥¸¥ó¤ÎÅÐÏ¿¤¬´°Î»Ã×¤·¤Þ¤·¤¿¡£<br>
+º£¸å¤È¤â¤´°¦¸Ü»ò¤ê¤Þ¤¹¤è¤¦¤è¤í¤·¤¯¤ª´ê¤¤¿½¤·¾å¤²¤Þ¤¹¡£<br>
+<br>
+
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/footer.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/footer.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/footer.tpl	(revision 11460)
@@ -0,0 +1,1 @@
+<center>LOCKON CO.,LTD.</center>
Index: branches/dev/data/Smarty/templates/mobile/guide/kiyaku.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/guide/kiyaku.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/guide/kiyaku.tpl	(revision 11460)
@@ -0,0 +1,30 @@
+<center>¤´ÍøÍÑµ¬Ìó(<!--{$tpl_kiyaku_index+1}-->/<!--{$tpl_kiyaku_last_index+1}-->)</center>
+
+<hr>
+
+<!-- ¢§ËÜÊ¸ ¤³¤³¤«¤é -->
+<font color="#ff0000"><!--{$tpl_kiyaku_title|escape}--></font><br>
+<!--{$tpl_kiyaku_text|escape}--><br>
+<!-- ¢¥ËÜÊ¸ ¤³¤³¤Þ¤Ç -->
+
+<!--{if !$tpl_kiyaku_is_first || !$tpl_kiyaku_is_last}-->
+<br>
+<!--{if !$tpl_kiyaku_is_first}-->
+<a href="kiyaku.php?page=<!--{$tpl_kiyaku_index-1}-->" accesskey="1"><!--{1|numeric_emoji}-->Ìá¤ë</a><br>
+<!--{/if}-->
+<!--{if !$tpl_kiyaku_is_last}-->
+<a href="kiyaku.php?page=<!--{$tpl_kiyaku_index+1}-->" accesskey="2"><!--{2|numeric_emoji}-->¿Ê¤à</a><br>
+<!--{/if}-->
+<!--{/if}-->
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/guide/privacy.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/guide/privacy.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/guide/privacy.tpl	(revision 11460)
@@ -0,0 +1,21 @@
+<center>¥×¥é¥¤¥Ð¥·¡¼¥Ý¥ê¥·¡¼</center>
+
+<hr>
+
+<!-- ¢§ËÜÊ¸ ¤³¤³¤«¤é -->
+<!--{$arrSiteInfo.company_name|escape}-->¤Ï¡¢¸Ä¿Í¾ðÊóÊÝ¸î¤Î½ÅÍ×À­¤Ë´Õ¤ß¡¢¡Ö¸Ä¿Í¾ðÊó¤ÎÊÝ¸î¤Ë´Ø¤¹¤ëË¡Î§¡×µÚ¤ÓËÜ¥×¥é¥¤¥Ð¥·¡¼¥Ý¥ê¥·¡¼¤ò½å¼é¤·¡¢¤ªµÒ¤µ¤Þ¤Î¥×¥é¥¤¥Ð¥·¡¼ÊÝ¸î¤ËÅØ¤á¤Þ¤¹¡£<br>
+¡¡¸Ä¿Í¾ðÊó¤ÎÄêµÁ<br>
+¤ªµÒ¤µ¤Þ¸Ä¿Í¤Ë´Ø¤¹¤ë¾ðÊó(°Ê²¼¡Ö¸Ä¿Í¾ðÊó¡×¤È¤¤¤¤¤Þ¤¹)¤Ç¤¢¤Ã¤Æ¡¢¤ªµÒ¤µ¤Þ¤Î¤ªÌ¾Á°¡¢¤´½»½ê¡¢ÅÅÏÃÈÖ¹æ¤Ê¤ÉÅö³º¤ªµÒ¤µ¤Þ¸Ä¿Í¤ò¼±ÊÌ¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¾ðÊó¤ò¤µ¤·¤Þ¤¹¡£Â¾¤Î¾ðÊó¤ÈÁÈ¤ß¹ç¤ï¤»¤Æ¾È¹ç¤¹¤ë¤³¤È¤Ë¤è¤ê¸Ä¿Í¤ò¼±ÊÌ¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¾ðÊó¤â´Þ¤Þ¤ì¤Þ¤¹¡£<br>
+<!-- ¢¥ËÜÊ¸ ¤³¤³¤Þ¤Ç -->
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/guide/usage.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/guide/usage.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/guide/usage.tpl	(revision 11460)
@@ -0,0 +1,22 @@
+<center>¤´ÍøÍÑÊýË¡</center>
+
+<hr>
+
+<!-- ¢§¥á¥Ë¥å¡¼ ¤³¤³¤«¤é -->
+<a href="usage.php?page=1" accesskey="1"><!--{1|numeric_emoji}-->¾¦ÉÊ¤ÎÃµ¤·Êý</a><br>
+<a href="usage.php?page=2" accesskey="2"><!--{2|numeric_emoji}-->¤´ÃíÊ¸ÊýË¡</a><br>
+<a href="usage.php?page=3" accesskey="3"><!--{3|numeric_emoji}-->¤´ÃíÊ¸¸å</a><br>
+<a href="usage.php?page=4" accesskey="4"><!--{4|numeric_emoji}-->¾¦ÉÊÅþÃå¸å</a><br>
+<!-- ¢¥¥á¥Ë¥å¡¼ ¤³¤³¤Þ¤Ç -->
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/guide/usage1.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/guide/usage1.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/guide/usage1.tpl	(revision 11460)
@@ -0,0 +1,19 @@
+<center>¾¦ÉÊ¤ÎÃµ¤·Êý</center>
+
+<hr>
+
+<!-- ¢§ËÜÊ¸ ¤³¤³¤«¤é -->
+¡Ö¾¦ÉÊ¤ÎÃµ¤·Êý¡×¤ÎËÜÊ¸<br>
+<!-- ¢¥ËÜÊ¸ ¤³¤³¤Þ¤Ç -->
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/guide/usage2.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/guide/usage2.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/guide/usage2.tpl	(revision 11460)
@@ -0,0 +1,19 @@
+<center>¤´ÃíÊ¸ÊýË¡</center>
+
+<hr>
+
+<!-- ¢§ËÜÊ¸ ¤³¤³¤«¤é -->
+¡Ö¤´ÃíÊ¸ÊýË¡¡×¤ÎËÜÊ¸<br>
+<!-- ¢¥ËÜÊ¸ ¤³¤³¤Þ¤Ç -->
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/guide/index.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/guide/index.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/guide/index.tpl	(revision 11460)
@@ -0,0 +1,23 @@
+<center>¤´ÍøÍÑ¥¬¥¤¥É</center>
+
+<hr>
+
+<!-- ¢§¥á¥Ë¥å¡¼ ¤³¤³¤«¤é -->
+<a href="usage.php" accesskey="1"><!--{1|numeric_emoji}-->¤´ÍøÍÑÊýË¡</a><br>
+<a href="privacy.php" accesskey="2"><!--{2|numeric_emoji}-->¥×¥é¥¤¥Ð¥·¡¼¥Ý¥ê¥·¡¼</a><br>
+<a href="charge.php" accesskey="3"><!--{3|numeric_emoji}-->ÄÌ¿®ÎÁ¤Ë¤Ä¤¤¤Æ</a><br>
+<a href="kiyaku.php" accesskey="4"><!--{4|numeric_emoji}-->¤´ÍøÍÑµ¬Ìó</a><br>
+<a href="about.php" accesskey="5"><!--{5|numeric_emoji}-->±¿±Ä²ñ¼Ò¾Ò²ð</a><br>
+<!-- ¢¥¥á¥Ë¥å¡¼ ¤³¤³¤Þ¤Ç -->
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/guide/usage3.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/guide/usage3.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/guide/usage3.tpl	(revision 11460)
@@ -0,0 +1,19 @@
+<center>¤´ÃíÊ¸¸å</center>
+
+<hr>
+
+<!-- ¢§ËÜÊ¸ ¤³¤³¤«¤é -->
+¡Ö¤´ÃíÊ¸¸å¡×¤ÎËÜÊ¸<br>
+<!-- ¢¥ËÜÊ¸ ¤³¤³¤Þ¤Ç -->
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/guide/usage4.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/guide/usage4.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/guide/usage4.tpl	(revision 11460)
@@ -0,0 +1,19 @@
+<center>¾¦ÉÊÅþÃå¸å</center>
+
+<hr>
+
+<!-- ¢§ËÜÊ¸ ¤³¤³¤«¤é -->
+¡Ö¾¦ÉÊÅþÃå¸å¡×¤ÎËÜÊ¸<br>
+<!-- ¢¥ËÜÊ¸ ¤³¤³¤Þ¤Ç -->
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/guide/charge.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/guide/charge.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/guide/charge.tpl	(revision 11460)
@@ -0,0 +1,22 @@
+<center>ÄÌ¿®ÎÁ¤Ë¤Ä¤¤¤Æ</center>
+
+<hr>
+
+<!-- ¢§ËÜÊ¸ ¤³¤³¤«¤é -->
+Åö¥µ¥¤¥È¤Î¥³¥ó¥Æ¥ó¥Ä¤Ï¡¢²¼µ­ÌÈÀÕ»ö¹à¤ò¤ªÆÉ¤ß¤Ë¤Ê¤ê¡¢¤´Î»¾µ¤¤¤¿¤À¤¤¤¿Êý¤Ë¤ª»È¤¤Äº¤±¤Þ¤¹¡£<br>
+<br>
+¥Ñ¥±¥Ã¥ÈÄÌ¿®¤Ë¤Ï·ÈÂÓ¥­¥ã¥ê¥¢»ØÄê¤ÎÄÌ¿®ÎÁ¤¬È¯À¸¤·¤Þ¤¹¡£<br>
+ÅÅÇÈ¾õ¶·¤Ê¤É¤Ë¤è¤ê¡¢¥Ñ¥±¥Ã¥ÈÄÌ¿®¤ò¤ä¤êÄ¾¤¹¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£<br>
+<!-- ¢¥ËÜÊ¸ ¤³¤³¤Þ¤Ç -->
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/guide/about.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/guide/about.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/guide/about.tpl	(revision 11460)
@@ -0,0 +1,55 @@
+<center>±¿±Ä²ñ¼Ò¾Ò²ð</center>
+
+<hr>
+
+<!-- ¢§ËÜÊ¸ ¤³¤³¤«¤é -->
+<!--{if $arrSiteInfo.shop_name != ""}-->
+[emoji:38]<font color="#800000">Å¹Ì¾</font><br>
+<!--{$arrSiteInfo.shop_name|escape}--><br>
+<!--{/if}-->
+<!--{if $arrSiteInfo.company_name != ""}-->
+[emoji:39]<font color="#800000">²ñ¼ÒÌ¾</font><br>
+<!--{$arrSiteInfo.company_name|escape}--><br>
+<!--{/if}-->
+<!--{if $arrSiteInfo.zip01 != ""}-->
+[emoji:121]<font color="#800000">½»½ê</font><br>
+¢©<!--{$arrSiteInfo.zip01|escape}-->-<!--{$arrSiteInfo.zip02|escape}--><br>
+<!--{$arrSiteInfo.pref|escape}--><!--{$arrSiteInfo.addr01|escape}--><!--{$arrSiteInfo.addr02|escape}--><br>
+<!--{/if}-->
+<!--{if $arrSiteInfo.tel01 != ""}-->
+[emoji:74]<font color="#800000">ÅÅÏÃÈÖ¹æ</font><br>
+<!--{$arrSiteInfo.tel01|escape}-->-<!--{$arrSiteInfo.tel02|escape}-->-<!--{$arrSiteInfo.tel03|escape}--><br>
+<!--{/if}-->
+<!--{if $arrSiteInfo.fax01 != ""}-->
+[emoji:76]<font color="#800000">FAXÈÖ¹æ</font><br>
+<!--{$arrSiteInfo.fax01|escape}-->-<!--{$arrSiteInfo.fax02|escape}-->-<!--{$arrSiteInfo.fax03|escape}--><br>
+<!--{/if}-->
+<!--{if $arrSiteInfo.business_hour != ""}-->
+[emoji:176]<font color="#800000">±Ä¶È»þ´Ö</font><br>
+<!--{$arrSiteInfo.business_hour|escape}--><br>
+<!--{/if}-->
+<!--{if $arrSiteInfo.email02 != ""}-->
+[emoji:110]<font color="#800000">¥á¡¼¥ë¥¢¥É¥ì¥¹</font><br>
+<a href="mailto:<!--{$arrSiteInfo.email02|escape}-->"><!--{$arrSiteInfo.email02|escape}--></a><br>
+<!--{/if}-->
+<!--{if $arrSiteInfo.good_traded != ""}-->
+[emoji:72]<font color="#800000">¼è°·¾¦ÉÊ</font><br>
+<!--{$arrSiteInfo.good_traded|escape|nl2br}--><br>
+<!--{/if}-->
+<!--{if $arrSiteInfo.message != ""}-->
+[emoji:70]<font color="#800000">¥á¥Ã¥»¡¼¥¸</font><br>
+<!--{$arrSiteInfo.message|escape|nl2br}--><br>
+<!--{/if}-->
+<!-- ¢¥ËÜÊ¸ ¤³¤³¤Þ¤Ç -->
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/regist/complete.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/regist/complete.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/regist/complete.tpl	(revision 11460)
@@ -0,0 +1,31 @@
+<center>ËÜ²ñ°÷ÅÐÏ¿´°Î»</center>
+
+<hr>
+
+ËÜÅÐÏ¿¤¬´°Î»¤¤¤¿¤·¤Þ¤·¤¿¡£<br>
+¤½¤ì¤Ç¤Ï¥·¥ç¥Ã¥Ô¥ó¥°¤ò¤ª³Ú¤·¤ß¤¯¤À¤µ¤¤¡£<br>
+
+<br>
+
+º£¸å¤È¤â¤´°¦¸Ü»ò¤ê¤Þ¤¹¤è¤¦¤è¤í¤·¤¯¤ª´ê¤¤¿½¤·¾å¤²¤Þ¤¹¡£<br>
+
+<br>
+
+<!--{$arrSiteInfo.company_name|escape}--><br>
+TEL¡§<!--{$arrSiteInfo.tel01}-->-<!--{$arrSiteInfo.tel02}-->-<!--{$arrSiteInfo.tel03}--> <!--{if $arrSiteInfo.business_hour != ""}-->¡Ê¼õÉÕ»þ´Ö/<!--{$arrSiteInfo.business_hour}-->¡Ë<!--{/if}--><br>
+E-mail¡§<a href="mailto:<!--{$arrSiteInfo.email02|escape}-->"><!--{$arrSiteInfo.email02|escape}--></a><br>
+
+<br>
+
+<!--{if !$tpl_cart_empty}-->
+<a href="<!--{$smarty.const.URL_DIR}-->shopping/deliv.php">¤´ÃíÊ¸¼êÂ³¤­¤Ø¿Ê¤à</a><br>
+<!--{/if}-->
+
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->">TOP¥Ú¡¼¥¸¤ËÌá¤ë</a><br>
+
+<br>
+<hr>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<center>LOCKON CO.,LTD.</center>
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/regist/error.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/regist/error.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/regist/error.tpl	(revision 11460)
@@ -0,0 +1,17 @@
+<center>ËÜ²ñ°÷ÅÐÏ¿</center>
+
+<hr>
+
+<font color="#ff0000"><!--{$arrErr.id}--></font>
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<center>LOCKON CO.,LTD.</center>
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/top.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/top.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/top.tpl	(revision 11460)
@@ -0,0 +1,36 @@
+<!-- ¢§¥í¥´ ¤³¤³¤«¤é -->
+<center><img src="<!--{$smarty.const.PC_URL_DIR}-->img/header/logo.gif"></center>
+<!-- ¢¥¥í¥´ ¤³¤³¤Þ¤Ç -->
+
+<br>
+
+<!-- ¢§¿·Ãå¾ðÊó ¤³¤³¤«¤é -->
+<!--{include_php file=`$smarty.const.HTML_PATH`frontparts/bloc/news.php}-->
+<!-- ¢¥¿·Ãå¾ðÊó ¤³¤³¤Þ¤Ç -->
+
+<br>
+
+<!-- ¢§¥Ô¥Ã¥¯¥¢¥Ã¥×¾¦ÉÊ ¤³¤³¤«¤é -->
+<hr>
+<!--{include_php file=`$smarty.const.HTML_PATH`frontparts/bloc/best5.php}-->
+<hr>
+<!-- ¢¥¥Ô¥Ã¥¯¥¢¥Ã¥×¾¦ÉÊ ¤³¤³¤Þ¤Ç -->
+
+<br>
+
+<!-- ¢§¥á¥Ë¥å¡¼ ¤³¤³¤«¤é -->
+<!--{1|numeric_emoji}-->¾¦ÉÊ¥«¥Æ¥´¥ê<br>
+<!--{include_php file=`$smarty.const.HTML_PATH`frontparts/bloc/category.php}-->
+<a href="products/search.php" accesskey="2"><!--{2|numeric_emoji}-->¾¦ÉÊ¸¡º÷</a><br>
+<a href="magazine/index.php" accesskey="3"><!--{3|numeric_emoji}-->¥á¥ë¥Þ¥¬ÅÐÏ¿</a><br>
+<a href="entry/new.php" accesskey="4"><!--{4|numeric_emoji}-->²ñ°÷ÅÐÏ¿¡¦Âà²ñ</a><br>
+<a href="guide/index.php" accesskey="5"><!--{5|numeric_emoji}-->¤´ÍøÍÑ¥¬¥¤¥É</a><br>
+<a href="contact/index.php" accesskey="6"><!--{6|numeric_emoji}-->¤ªÌä¤¤¹ç¤»</a><br>
+<a href="mypage/index.php" accesskey="7"><!--{7|numeric_emoji}-->My¥Ú¡¼¥¸</a><br>
+<!-- ¢¥¥á¥Ë¥å¡¼ ¤³¤³¤Þ¤Ç -->
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/forgot/secret.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/forgot/secret.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/forgot/secret.tpl	(revision 11460)
@@ -0,0 +1,30 @@
+<center>¥Ñ¥¹¥ï¡¼¥É¤òËº¤ì¤¿Êý</center>
+
+<hr>
+
+<!--{if $errmsg}-->
+<font color="#ff0000"><!--{$errmsg}--></font><br>
+<!--{/if}-->
+
+¤´ÅÐÏ¿»þ¤ËÆþÎÏ¤·¤¿²¼µ­¼ÁÌä¤ÎÅú¤¨¤òÆþÎÏ¤·¤Æ¡Ö¼¡¤Ø¡×¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£<br>
+¢¨²¼µ­¼ÁÌä¤ÎÅú¤¨¤ò¤ªËº¤ì¤Ë¤Ê¤é¤ì¤¿¾ì¹ç¤Ï¡¢<a href="mailto:<!--{$arrSiteInfo.email02|escape}-->"><!--{$arrSiteInfo.email02|escape}--></a>¤Þ¤Ç¤´Ï¢Íí¤¯¤À¤µ¤¤¡£<br>
+
+<form action="<!--{$smarty.server.PHP_SELF|escape}-->" method="post">
+<input type="hidden" name="mode" value="secret_check">
+
+<!--{$Reminder|escape}-->¡§<input type="text" name="input_reminder" value="" size="40"><br>
+
+<center><input type="submit" value="¼¡¤Ø" name="next"></center>
+</form>
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/forgot/index.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/forgot/index.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/forgot/index.tpl	(revision 11460)
@@ -0,0 +1,40 @@
+<center>¥Ñ¥¹¥ï¡¼¥É¤òËº¤ì¤¿Êý</center>
+
+<font color="#ff0000">¢¨¿·¤·¤¯¥Ñ¥¹¥ï¡¼¥É¤òÈ¯¹Ô¤¤¤¿¤·¤Þ¤¹¤Î¤Ç¡¢¤ªËº¤ì¤Ë¤Ê¤Ã¤¿¥Ñ¥¹¥ï¡¼¥É¤Ï¤´ÍøÍÑ¤Ç¤­¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£</font>
+
+<hr>
+
+<!--{if $errmsg}-->
+<font color="#ff0000"><!--{$errmsg}--></font><br>
+<!--{/if}-->
+
+<!--{if @$tpl_kara_mail_to != ''}-->
+¢£¤´ÅÐÏ¿»þ¤Î¥á¡¼¥ë¥¢¥É¥ì¥¹¤«¤é¥á¡¼¥ë¤òÁ÷¤ì¤ëÊý¤Ï¡¢¼¡¤Î¥ê¥ó¥¯¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¶õ¥á¡¼¥ë¤òÁ÷¿®¤·¤Æ¤¯¤À¤µ¤¤¡£<br>
+<center><a href="mailto:<!--{$tpl_kara_mail_to|escape:'url'}-->">¥á¡¼¥ëÁ÷¿®</a></center>
+
+<br>
+
+¢£¥á¡¼¥ë¤òÁ÷¤ì¤Ê¤¤Êý¤Ï¡¢¤´ÅÐÏ¿»þ¤Î¥á¡¼¥ë¥¢¥É¥ì¥¹¤òÆþÎÏ¤·¤Æ¡Ö¼¡¤Ø¡×¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£<br>
+<!--{else}-->
+¤´ÅÐÏ¿»þ¤Î¥á¡¼¥ë¥¢¥É¥ì¥¹¤òÆþÎÏ¤·¤Æ¡Ö¼¡¤Ø¡×¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£<br>
+<!--{/if}-->
+
+<form action="<!--{$smarty.server.PHP_SELF|escape}-->" method="post">
+<input type="hidden" name="mode" value="mail_check">
+
+¥á¡¼¥ë¥¢¥É¥ì¥¹¡§<input type="text" name="email" value="<!--{$tpl_login_email|escape}-->" size="50" istyle="3"><br>
+
+<center><input type="submit" value="¼¡¤Ø" name="next"></center>
+</form>
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/forgot/complete.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/forgot/complete.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/forgot/complete.tpl	(revision 11460)
@@ -0,0 +1,22 @@
+<center>¥Ñ¥¹¥ï¡¼¥É¤òËº¤ì¤¿Êý</center>
+
+<hr>
+
+¥Ñ¥¹¥ï¡¼¥É¤ÎÈ¯¹Ô¤¬´°Î»¤¤¤¿¤·¤Þ¤·¤¿¡£¥í¥°¥¤¥ó¤Ë¤Ï²¼µ­¤Î¥Ñ¥¹¥ï¡¼¥É¤ò¤´ÍøÍÑ¤¯¤À¤µ¤¤¡£<br>
+¢¨²¼µ­¥Ñ¥¹¥ï¡¼¥É¤Ï¡¢MY¥Ú¡¼¥¸¤Î¡Ö²ñ°÷ÅÐÏ¿ÆâÍÆÊÑ¹¹¡×¤è¤ê¤´ÊÑ¹¹¤¤¤¿¤À¤±¤Þ¤¹¡£<br>
+
+<br>
+
+<center><font color="red"><!--{$temp_password}--></font></center>
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/mail_templates/mailmagazine_regist.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/mail_templates/mailmagazine_regist.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/mail_templates/mailmagazine_regist.tpl	(revision 11460)
@@ -0,0 +1,11 @@
+¢¨ËÜÒ°Ù¤Ï¼«Æ°ÇÛ¿®Ò°Ù¤Ç¤¹¡
+<!--{$tpl_shopname}-->¤è¤ê¤ÒÙÏ¶Þ¹ØÆÉÅÐÏ¿¤ò´õË¾¤µ¤ì¤¿Êý¤Ë¤ªÁ÷¤ê¤·¤Æ¤¤¤Þ¤¹¡
+¤â¤·¤ª¿´Åö¤¿¤ê¤¬Ìµ¤¤¾ì¹ç¤Ï¤¤³¤Î¤Þ¤Þ¤³¤ÎÒ°Ù¤òÇË´þ¤·¤Æ¤¤¤¿¤À¤±¤ì¤ÐÒÙÏ¶Þ¹ØÆÉÅÐÏ¿¤Ï¤Ê¤µ¤ì¤Þ¤»¤ó¡
+¤Þ¤¿¤½¤Î»Ý¤<!--{$tpl_infoemail}-->¤Þ¤Ç¤´Ï¢Íí¤¤¤¿¤À¤±¤ì¤Ð¹¬¤¤¤Ç¤¹¡
+
+¤³¤ÎÅÙ¤Ï¤ÒÙÏ¶Þ¹ØÆÉ°ÍÍê¤ò¤¤¤¿¤À¤­¤Þ¤·¤Æ¤Í­¤êÆñ¤¦¤´¤¶¤¤¤Þ¤¹¡
+¸½ºß¤Ï²¾ÅÐÏ¿¤Î¾õÂÖ¤Ç¤¹¡
+´°Î»¤¹¤ë¤Ë¤Ï²¼µ­URL¤Ë±¸¾½¤·¤Æ¤¯¤À¤µ¤¤¡
+¢¨ÆþÎÏ¤µ¤ì¤¿¤ªµÒÍÍ¤Î¾ðÊó¤ÏSSL°Å¹æ²½ÄÌ¿®¤Ë¤è¤êÊÝ¸î¤µ¤ì¤Þ¤¹¡
+
+<!--{$tpl_url}-->
Index: branches/dev/data/Smarty/templates/mobile/mail_templates/order_mail.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/mail_templates/order_mail.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/mail_templates/order_mail.tpl	(revision 11460)
@@ -0,0 +1,21 @@
+<!--{$arrOrder.order_name01}--> <!--{$arrOrder.order_name02}--> ÍÍ
+
+¢£ÇÛÁ÷¾ðÊó¤È¤´ÀÁµá¶â³Û
+¤´ÃíÊ¸ÈÖ¹æ¡§<!--{$arrOrder.order_id}-->
+¤ª»ÙÊ§¹ç·×¡§¡ï <!--{$arrOrder.payment_total|number_format|default:0}-->
+¤´·èºÑÊýË¡¡§<!--{$arrOrder.payment_method}-->
+¡¡¤ªÆÏ¤±Æü¡§<!--{$arrOrder.deliv_date|default:"»ØÄê¤Ê¤·"}-->
+¤ªÆÏ¤±»þ´Ö¡§<!--{$arrOrder.deliv_time|default:"»ØÄê¤Ê¤·"}-->
+¡ý¤ªÆÏ¤±Àè
+¡¡¤ªÌ¾Á°¡¡¡§<!--{$arrOrder.deliv_name01}--> <!--{$arrOrder.deliv_name02}-->¡¡ÍÍ
+¡¡Í¹ÊØÈÖ¹æ¡§¢©<!--{$arrOrder.deliv_zip01}-->-<!--{$arrOrder.deliv_zip02}-->
+¡¡¤´½»½ê¡¡¡§<!--{$arrOrder.deliv_pref}--><!--{$arrOrder.deliv_addr01}--><!--{$arrOrder.deliv_addr02}-->
+¡¡ÅÅÏÃÈÖ¹æ¡§<!--{$arrOrder.deliv_tel01}-->-<!--{$arrOrder.deliv_tel02}-->-<!--{$arrOrder.deliv_tel03}-->
+
+¢£¤´ÃíÊ¸¾¦ÉÊÌÀºÙ
+<!--{section name=cnt loop=$arrOrderDetail}-->
+¾¦ÉÊÌ¾: <!--{$arrOrderDetail[cnt].product_name}--> <!--{$arrOrderDetail[cnt].classcategory_name1}--> <!--{$arrOrderDetail[cnt].classcategory_name2}-->
+¿ôÎÌ¡§<!--{$arrOrderDetail[cnt].quantity}--> ¸Ä
+¶â³Û¡§¡ï <!--{$arrOrderDetail[cnt].price|sfPreTax:$arrInfo.tax:$arrInfo.tax_rule|number_format}-->
+
+<!--{/section}-->
Index: branches/dev/data/Smarty/templates/mobile/mail_templates/customer_regist_mail.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/mail_templates/customer_regist_mail.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/mail_templates/customer_regist_mail.tpl	(revision 11460)
@@ -0,0 +1,10 @@
+<!--{$name01}--><!--{$name02}--> ÍÍ
+
+<!--{$CONF.shop_name}-->¤Ç¤´¤¶¤¤¤Þ¤¹¡£
+
+¤³¤ÎÅÙ¤Ï²ñ°÷ÅÐÏ¿°ÍÍê¤ò¤¤¤¿¤À¤­¤Þ¤·¤Æ¤Þ¤³¤È¤ËÍ­¤êÆñ¤¦¤´¤¶¤¤¤Þ¤¹¡£
+
+ËÜ²ñ°÷ÅÐÏ¿¤¬´°Î»¤¤¤¿¤·¤Þ¤·¤¿¡£
+¥·¥ç¥Ã¥Ô¥ó¥°¤ò¤ª³Ú¤·¤ß¤¯¤À¤µ¤¤¤Þ¤»¡£
+
+º£¸å¤È¤â¤É¤¦¤¾<!--{$CONF.shop_name}-->¤ò¤è¤í¤·¤¯¤ª´ê¤¤¿½¤·¾å¤²¤Þ¤¹¡£
Index: branches/dev/data/Smarty/templates/mobile/mail_templates/customer_mail.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/mail_templates/customer_mail.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/mail_templates/customer_mail.tpl	(revision 11460)
@@ -0,0 +1,14 @@
+¢¨ËÜ¥á¡¼¥ë¤Ï¡¢
+<!--{$CONF.shop_name}-->¤è¤ê²ñ°÷ÅÐÏ¿¤ò´õË¾¤µ¤ì¤¿Êý¤Ë¤ªÁ÷¤ê¤·¤Æ¤¤¤Þ¤¹¡£
+¤â¤·¤ª¿´Åö¤¿¤ê¤¬Ìµ¤¤¾ì¹ç¤Ï¤³¤Î¤Þ¤Þ¤³¤Î¥á¡¼¥ë¤òÇË´þ¤·¤Æ¤¤¤¿¤À¤±¤ì¤Ð²ñ°÷ÅÐÏ¿¤Ï¤Ê¤µ¤ì¤Þ¤»¤ó¡£
+
+<!--{$to_name01}--> <!--{$to_name02}--> ÍÍ
+
+<!--{$CONF.shop_name}-->¤Ç¤´¤¶¤¤¤Þ¤¹¡£
+¤³¤ÎÅÙ¤Ï²ñ°÷ÅÐÏ¿°ÍÍê¤ò¤¤¤¿¤À¤­¤Þ¤·¤Æ¡¢Í­¤êÆñ¤¦¤´¤¶¤¤¤Þ¤¹¡£
+¸½ºß¤Ï²¾ÅÐÏ¿¤Î¾õÂÖ¤Ç¤¹¡£
+¡¡¡¡¡¡~~~~~~
+ËÜ²ñ°÷ÅÐÏ¿¤ò´°Î»¤¹¤ë¤Ë¤Ï²¼µ­URL¤Ë¥¢¥¯¥»¥¹¤·¤Æ¤¯¤À¤µ¤¤¡£
+<!--{$smarty.const.SSL_URL}-->regist/index.php?mode=regist&id=<!--{$uniqid}-->
+
+¾åµ­URL¤Ë¤ÆËÜ²ñ°÷ÅÐÏ¿¤¬´°Î»¤¤¤¿¤·¤Þ¤·¤¿¤é²þ¤á¤Æ¤´ÅÐÏ¿ÆâÍÆ¤´³ÎÇ§¥á¡¼¥ë¤ò¤ªÁ÷¤êÃ×¤·¤Þ¤¹¡£
Index: branches/dev/data/Smarty/templates/mobile/mail_templates/mail_title.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/mail_templates/mail_title.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/mail_templates/mail_title.tpl	(revision 11460)
@@ -0,0 +1,1 @@
+¡Ú<!--{$tpl_shopname}-->¡Û <!--{$tpl_mailtitle}-->
Index: branches/dev/data/Smarty/templates/mobile/mail_templates/mailmagazine_cancel.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/mail_templates/mailmagazine_cancel.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/mail_templates/mailmagazine_cancel.tpl	(revision 11460)
@@ -0,0 +1,10 @@
+¢¨ËÜÒ°Ù¤Ï¼«Æ°ÇÛ¿®Ò°Ù¤Ç¤¹¡
+<!--{$tpl_shopname}-->¤è¤ê¤ÒÙÏ¶Þ¹ØÆÉ²ò½ü¤ò´õË¾¤µ¤ì¤¿Êý¤Ë¤ªÁ÷¤ê¤·¤Æ¤¤¤Þ¤¹¡
+¤â¤·¤ª¿´Åö¤¿¤ê¤¬Ìµ¤¤¾ì¹ç¤Ï¤¤³¤Î¤Þ¤Þ¤³¤ÎÒ°Ù¤òÇË´þ¤·¤Æ¤¤¤¿¤À¤±¤ì¤ÐÒÙÏ¶Þ¹ØÆÉ²ò½ü¤Ï¤Ê¤µ¤ì¤Þ¤»¤ó¡
+¤Þ¤¿¤½¤Î»Ý¤<!--{$tpl_infoemail}-->¤Þ¤Ç¤´Ï¢Íí¤¤¤¿¤À¤±¤ì¤Ð¹¬¤¤¤Ç¤¹¡
+
+¸½ºß¤Ï¤Þ¤À¹ØÆÉ¤µ¤ì¤¿¾õÂÖ¤Ç¤¹¡
+´°Î»¤¹¤ë¤Ë¤Ï²¼µ­URL¤Ë±¸¾½¤·¤Æ¤¯¤À¤µ¤¤¡
+¢¨ÆþÎÏ¤µ¤ì¤¿¤ªµÒÍÍ¤Î¾ðÊó¤ÏSSL°Å¹æ²½ÄÌ¿®¤Ë¤è¤êÊÝ¸î¤µ¤ì¤Þ¤¹¡
+
+<!--{$tpl_url}-->
Index: branches/dev/data/Smarty/templates/mobile/entry/mail.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/entry/mail.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/entry/mail.tpl	(revision 11460)
@@ -0,0 +1,24 @@
+<center>¥á¡¼¥ë¥¢¥É¥ì¥¹ÅÐÏ¿</center>
+
+<hr>
+
+¼¡¤Î¥ê¥ó¥¯¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¶õ¥á¡¼¥ë¤òÁ÷¿®¤·¤Æ¤¯¤À¤µ¤¤¡£
+¤¹¤°¤Ë¤´°ÆÆâ¤Î¥á¡¼¥ë¤¬Á÷¿®¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢¥á¡¼¥ëÆâ¤Î¥ê¥ó¥¯¤ò¥¯¥ê¥Ã¥¯¤·¤Æ²ñ°÷¾ðÊó¤ÎÆþÎÏ¤Ë¿Ê¤ó¤Ç¤¯¤À¤µ¤¤¡£<br>
+<font color="#ff0000">¢¨¥É¥á¥¤¥ó»ØÄê¼õ¿®µ¡Ç½¤òÍøÍÑ¤µ¤ì¤Æ¤¤¤ëÊý¤Ï¡¢¥á¡¼¥ë¤òÁ÷¿®¤¹¤ëÁ°¤ËÉ¬¤º¡Ö<!--{$tpl_from_address|escape}-->¡×¤«¤é¤Î¥á¡¼¥ë¤¬¼õ¿®¤Ç¤­¤ë¤è¤¦¤ËÀßÄê¤·¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡£</font><br>
+<br>
+
+<br>
+
+<center><a href="mailto:<!--{$tpl_kara_mail_to|escape:'url'}-->">¥á¡¼¥ëÁ÷¿®</a></center>
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/entry/email_mobile_complete.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/entry/email_mobile_complete.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/entry/email_mobile_complete.tpl	(revision 11460)
@@ -0,0 +1,17 @@
+<center>·ÈÂÓ¥á¡¼¥ëÅÐÏ¿´°Î»</center>
+
+<hr>
+
+·ÈÂÓÅÅÏÃ¤Î¥á¡¼¥ë¥¢¥É¥ì¥¹¤ÎÅÐÏ¿¤¬´°Î»¤¤¤¿¤·¤Þ¤·¤¿¡£<br>
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/entry/index.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/entry/index.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/entry/index.tpl	(revision 11460)
@@ -0,0 +1,63 @@
+<div align="center">²ñ°÷¾ðÊóÆþÎÏ 1/3</div>
+<hr>
+<form name="form1" method="post" action="<!--{$smarty.server.PHP_SELF|escape}-->">
+	<input type="hidden" name="mode" value="set1">
+
+	<font color="#FF0000">*¤ÏÉ¬¿Ü¹àÌÜ¤Ç¤¹¡£</font><br>
+	<br>
+
+	¡Ú¥á¡¼¥ë¥¢¥É¥ì¥¹¡Û<font color="#FF0000">¢¨</font><br>
+	<font color="#FF0000"><!--{$arrErr.email}--></font>
+<!--{if @$tpl_kara_mail_from}-->
+  <!--{$tpl_kara_mail_from|escape}-->
+<!--{else}-->
+	<input type="text" name="email" value="<!--{$email|escape}-->" istyle="3">
+<!--{/if}-->
+  <br>
+
+	¡Ú¥Ñ¥¹¥ï¡¼¥É¡Û<font color="#FF0000">¢¨</font><br>
+	¡ÊÈ¾³Ñ±Ñ¿ô»ú<!--{$smarty.const.PASSWORD_LEN1}-->Ê¸»ú°Ê¾å<!--{$smarty.const.PASSWORD_LEN2}-->Ê¸»ú°ÊÆâ¡Ë<br>
+	<font color="#FF0000"><!--{$arrErr.password}--></font>
+	<!--{assign var="size" value="`$smarty.const.PASSWORD_LEN2+2`"}-->
+	<input type="text" name="password" value="<!--{$arrForm.password}-->" istyle="4" maxlength="<!--{$smarty.const.PASSWORD_LEN2}-->" size="<!--{$size}-->"><br>
+
+	¡Ú¥Ñ¥¹¥ï¡¼¥É³ÎÇ§ÍÑ¤Î¼ÁÌä¡Û<font color="#FF0000">¢¨</font><br>
+	<font color="#FF0000"><!--{$arrErr.reminder}--></font>
+	<select name="reminder">
+		<option value="" selected>ÁªÂò¤·¤Æ¤¯¤À¤µ¤¤</option>
+		<!--{html_options options=$arrReminder selected=$reminder}-->
+	</select><br>
+
+	¡Ú¼ÁÌä¤ÎÅú¤¨¡Û<font color="#FF0000">¢¨</font><br>
+	<font color="#FF0000"><!--{$arrErr.reminder_answer}--></font>
+	<input type="text" name="reminder_answer" value="<!--{$reminder_answer|escape}-->" istyle="1"><br>
+
+	¡Ú¤ªÌ¾Á°¡Û<font color="#FF0000">¢¨</font><br>
+	<font color="#FF0000"><!--{$arrErr.name01}--><!--{$arrErr.name02}--></font>
+	À«¡ÊÎã¡§½ÂÃ«¡Ë<br>
+	<input type="text" name="name01" value="<!--{$name01|escape}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" istyle="1"><br>
+
+	Ì¾¡ÊÎã¡§²Ö»Ò¡Ë<br>
+	<input type="text" name="name02" value="<!--{$name02|escape}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" istyle="1"><br>
+	<font color="#FF0000"><!--{$arrErr.kana01}--><!--{$arrErr.kana02}--></font>
+
+	¥«¥Ê/À«¡ÊÎã¡§¥·¥Ö¥ä¡Ë<br>
+	<input type="text" name="kana01" value="<!--{$kana01|escape}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" istyle="2"><br>
+
+	¥«¥Ê/Ì¾¡ÊÎã¡§¥Ï¥Ê¥³¡Ë<br>
+	<input type="text" name="kana02" value="<!--{$kana02|escape}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" istyle="2"><br>
+
+	<input type="submit" name="confirm" value="¼¡¤Ø">
+</form>
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/entry/complete.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/entry/complete.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/entry/complete.tpl	(revision 11460)
@@ -0,0 +1,20 @@
+<div align="center">²ñ°÷ÅÐÏ¿´°Î»</div>
+<hr>
+
+²ñ°÷ÅÐÏ¿¤Î¼õÉÕ¤¬´°Î»¤¤¤¿¤·¤Þ¤·¤¿¡£<br>
+¸½ºß<font color="#FF0000">²¾²ñ°÷</font>¤Î¾õÂÖ¤Ç¤¹¡£<br>
+¤´ÆþÎÏ¤¤¤¿¤À¤¤¤¿¥á¡¼¥ë¥¢¥É¥ì¥¹°¸¤Æ¤Ë¡¢¤´Ï¢Íí¤¬ÆÏ¤¤¤Æ¤ª¤ê¤Þ¤¹¤Î¤Ç¡¢ËÜ²ñ°÷ÅÐÏ¿¤Ë¤Ê¤Ã¤¿¾å¤Ç¤ªÇã¤¤Êª¤ò¤ª³Ú¤·¤ß¤¯¤À¤µ¤¤¡£<br>
+º£¸å¤È¤â¤´°¦¸Ü»ò¤ê¤Þ¤¹¤è¤¦¤è¤í¤·¤¯¤ª´ê¤¤¿½¤·¾å¤²¤Þ¤¹¡£<br>
+
+<br>
+
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/entry/new.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/entry/new.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/entry/new.tpl	(revision 11460)
@@ -0,0 +1,20 @@
+<div align="center">¿·µ¬¤´ÅÐÏ¿</div>
+<hr>
+
+¤´ÃíÊ¸¤ËºÝ¤·¤ÆÉ¬Í×¤ÊÆâÍÆ¡Ê¤´¼«Âð½»½êÅù¡Ë¤ò¤´ÅÐÏ¿¤·¤Æ¤¤¤¿¤À¤­¤Þ¤¹¡£<br>
+¤´ÍøÍÑ¤Îµ¬Ìó¤ò¤è¤¯¤ªÆÉ¤ß¤Î¾å¡¢¤´ÅÐÏ¿²¼¤µ¤¤¡£<br>
+<a href="kiyaku.php" accesskey="1"><!--{1|numeric_emoji}-->²ñ°÷µ¬Ìó¤òÆÉ¤à<br>
+<a href="index.php" accesskey="2"><!--{2|numeric_emoji}-->Æ±°Õ¤·¤ÆÅÐÏ¿¤Ø<br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="3"><!--{3|numeric_emoji}-->Æ±°Õ¤·¤Ê¤¤<br>
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/entry/set1.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/entry/set1.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/entry/set1.tpl	(revision 11460)
@@ -0,0 +1,54 @@
+<div align="center">²ñ°÷¾ðÊóÆþÎÏ 2/3</div>
+<hr>
+<form name="form1" method="post" action="<!--{$smarty.server.PHP_SELF|escape}-->">
+	<input type="hidden" name="mode" value="set2">
+
+	<font color="#FF0000">*¤ÏÉ¬¿Ü¹àÌÜ¤Ç¤¹¡£</font><br>
+	<br>
+
+	¡ÚÀ­ÊÌ¡Û<font color="#FF0000">*</font><br>
+	<font color="#FF0000"><!--{$arrErr.sex}--></font>
+	<input type="radio" name="sex" value="1" <!--{if $sex eq 1}-->checked<!--{/if}--> />ÃËÀ­&nbsp;<input type="radio" name="sex" value="2" <!--{if $sex eq 2}-->checked<!--{/if}--> />½÷À­<br>
+
+	¡ÚÀ¸Ç¯·îÆü¡Û<font color="#FF0000">*</font><br>
+	<font color="#FF0000"><!--{$arrErr.year}--><!--{$arrErr.month}--><!--{$arrErr.day}--></font>
+	<select name="year">
+		<!--{html_options options=$arrYear selected=$year}-->
+	</select>Ç¯<br>
+	<select name="month">
+		<option value="">--</option>
+		<!--{html_options options=$arrMonth selected=$month}-->
+	</select>·î<br>
+	<select value="" name="day">
+		<option value="">--</option>
+		<!--{html_options options=$arrDay selected=$day}-->
+	</select>Æü<br>
+
+	<!--{assign var=key1 value="zip01"}-->
+	<!--{assign var=key2 value="zip02"}-->
+	¡ÚÍ¹ÊØÈÖ¹æ¡Û<font color="#FF0000">*</font><br>
+	<font color="#FF0000"><!--{$arrErr[$key1]}--><!--{$arrErr[$key2]}--></font>
+	<!--{assign var="size1" value="`$smarty.const.ZIP01_LEN+2`"}-->
+	<!--{assign var="size2" value="`$smarty.const.ZIP02_LEN+2`"}-->
+	<input size="<!--{$size1}-->" type="text" name="zip01" value="<!--{if $zip01 == ""}--><!--{$arrOtherDeliv.zip01|escape}--><!--{else}--><!--{$zip01|escape}--><!--{/if}-->" maxlength="<!--{$smarty.const.ZIP01_LEN}-->" istyle="4">
+	&nbsp;-&nbsp;
+	<input size="<!--{$size2}-->" type="text" name="zip02" value="<!--{if $zip02 == ""}--><!--{$arrOtherDeliv.zip02|escape}--><!--{else}--><!--{$zip02|escape}--><!--{/if}-->" maxlength="<!--{$smarty.const.ZIP02_LEN}-->" istyle="4"><br>
+
+	<input type="submit" name="confirm" value="¼¡¤Ø">
+
+	<!--{foreach from=$list_data key=key item=item}-->
+		<input type="hidden" name="<!--{$key|escape}-->" value="<!--{$item|escape}-->">
+	<!--{/foreach}-->
+</form>
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/entry/confirm.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/entry/confirm.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/entry/confirm.tpl	(revision 11460)
@@ -0,0 +1,45 @@
+<div align="center">ÅÐÏ¿³ÎÇ§</div>
+<hr>
+<form name="form1" id="form1" method="post" action="<!--{$smarty.server.PHP_SELF|escape}-->">
+	<input type="hidden" name="mode" value="complete">
+	<!--{foreach from=$list_data key=key item=item}-->
+		<input type="hidden" name="<!--{$key|escape}-->" value="<!--{$item|escape}-->">
+	<!--{/foreach}-->
+	²¼µ­¤ÎÆâÍÆ¤Ç¤´ÅÐÏ¿¤·¤Æ¤â¤è¤í¤·¤¤¤Ç¤¹¤«¡©<br>
+	<br>
+	¡ÚÒ°Ù±ÄÞÚ½¡Û<br>
+	<!--{$list_data.email|escape}--><br>
+
+	¡ÚÊß½Ü°ÄÞ³ÎÇ§ÍÑ¼ÁÌä¡Û<br>
+	<!--{$arrReminder[$list_data.reminder]|escape}--><br>
+
+	¡Ú¼ÁÌä¤ÎÅú¤¨¡Û<br>
+	<!--{$list_data.reminder_answer|escape}--><br>
+
+	¡Ú¸Ä¿Í¾ðÊó¡Û<br>
+	<!--{$list_data.name01|escape}-->¡¡<!--{$list_data.name02|escape}--><br>
+	<!--{$list_data.kana01|escape}-->¡¡<!--{$list_data.kana02|escape}--><br>
+	<!--{if $list_data.sex eq 1}-->ÃËÀ­<!--{else}-->½÷À­<!--{/if}--><br>
+	<!--{if strlen($list_data.year) > 0 && strlen($list_data.month) > 0 && strlen($list_data.day) > 0}--><!--{$list_data.year|escape}-->Ç¯<!--{$list_data.month|escape}-->·î<!--{$list_data.day|escape}-->ÆüÀ¸¤Þ¤ì<!--{else}-->Ì¤ÅÐÏ¿<!--{/if}--><br>
+	¢©<!--{$list_data.zip01|escape}--> - <!--{$list_data.zip02|escape}--><br>
+	<!--{$arrPref[$list_data.pref]|escape}--><!--{$list_data.addr01|escape}--><!--{$list_data.addr02|escape}--><br>
+	<!--{$list_data.tel01|escape}-->-<!--{$list_data.tel02|escape}-->-<!--{$list_data.tel03|escape}--><br>
+	
+	¡ÚÒ°ÙÏ¶Þ¼ÞÝÞ¡Û<br>
+	<!--{if $list_data.mail_flag eq 2}-->´õË¾¤¹¤ë<!--{else}-->´õË¾¤·¤Ê¤¤<!--{/if}--><br>
+	<br>
+
+	<input type="submit" name="submit" value="ÅÐÏ¿">
+</form>
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/entry/kiyaku.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/entry/kiyaku.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/entry/kiyaku.tpl	(revision 11460)
@@ -0,0 +1,23 @@
+<div align="center">¤´ÍøÍÑµ¬Ìó</div>
+<hr>
+<!--{$tpl_kiyaku_text}--><br>
+
+<BR>
+<!--{if $offset != -1}-->
+	<a href="kiyaku.php?offset=<!--{$offset}-->">¼¡¤Ø¢ª</a><br><br>
+<!--{/if}-->
+
+<a href="index.php" accesskey="1"><!--{1|numeric_emoji}-->Æ±°Õ¤·¤ÆÅÐÏ¿¤Ø</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="2"><!--{2|numeric_emoji}-->Æ±°Õ¤·¤Ê¤¤</a><br>
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/entry/set2.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/entry/set2.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/entry/set2.tpl	(revision 11460)
@@ -0,0 +1,54 @@
+<div align="center">²ñ°÷¾ðÊóÆþÎÏ 3/3</div>
+<hr>
+<form name="form1" method="post" action="<!--{$smarty.server.PHP_SELF|escape}-->">
+	<input type="hidden" name="mode" value="confirm">
+
+	<font color="#FF0000">*¤ÏÉ¬¿Ü¹àÌÜ¤Ç¤¹¡£</font><br>
+	<br>
+
+	¡ÚÅÔÆ»ÉÜ¸©¡Û<font color="#FF0000">*</font><br>
+	<font color="#FF0000"><!--{$arrErr.pref}--><!--{$arrErr.addr01}--><!--{$arrErr.addr02}--></font>
+	<select name="pref">
+		<option value="" selected>ÅÔÆ»ÉÜ¸©¤òÁªÂò</option>
+		<!--{html_options options=$arrPref selected=$pref}-->
+	</select><br>
+
+	¡Ú»Ô¶èÄ®Â¼¡Û<font color="#FF0000">*</font><br>
+	<input type="text" name="addr01" value="<!--{$addr01|escape}-->" istyle="1"><br>
+
+	¡ÚÈÖÃÏ¡Û<font color="#FF0000">*</font><br>
+	<input type="text" name="addr02" value="<!--{$addr02|escape}-->" istyle="1"><br>
+
+	¡ÚÅÅÏÃÈÖ¹æ¡Û<font color="#FF0000">*</font><br>
+	<font color="#FF0000"><!--{$arrErr.tel01}--><!--{$arrErr.tel02}--><!--{$arrErr.tel03}--></font>
+	<!--{assign var="size" value="`$smarty.const.TEL_ITEM_LEN+2`"}-->
+	<input type="text" size="<!--{$size}-->" name="tel01" value="<!--{$tel01|escape}-->" maxlength="<!--{$smarty.const.TEL_ITEM_LEN}-->" istyle="4">
+	&nbsp;-&nbsp;
+	<input type="text" size="<!--{$size}-->" name="tel02" value="<!--{$tel02|escape}-->" maxlength="<!--{$smarty.const.TEL_ITEM_LEN}-->" istyle="4">
+	&nbsp;-&nbsp;
+	<input type="text" size="<!--{$size}-->" name="tel03" value="<!--{$tel03|escape}-->" maxlength="<!--{$smarty.const.TEL_ITEM_LEN}-->" istyle="4"><br>
+
+	¡Ú¥á¡¼¥ë¥Þ¥¬¥¸¥ó¡Û<br>
+	¤ªÆÀ¤Ê¾ðÊó¤ò´õË¾¤µ¤ì¤Þ¤¹¤«¡©<br>
+	ÇÛ¿®´õË¾<input type="checkbox" name="mail_flag" value="on" <!--{if $mail_flag eq 'on'}-->checked<!--{/if}--> /><br>
+	¡Ê´õË¾¤µ¤ì¤Ê¤¤¾ì¹ç¤Ï¥Á¥§¥Ã¥¯¤ò¤Ï¤º¤·¤Æ¤¯¤À¤µ¤¤¡Ë<br>
+	<br>
+
+	<input type="submit" name="confirm" value="¼¡¤Ø">
+
+	<!--{foreach from=$list_data key=key item=item}-->
+		<input type="hidden" name="<!--{$key|escape}-->" value="<!--{$item|escape}-->">
+	<!--{/foreach}-->
+</form>
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/entry/email_mobile.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/entry/email_mobile.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/entry/email_mobile.tpl	(revision 11460)
@@ -0,0 +1,33 @@
+<center>·ÈÂÓ¥á¡¼¥ëÅÐÏ¿</center>
+
+<hr>
+
+<!--{$tpl_name|escape}-->ÍÍ<br>
+¤¤¤Ä¤â¤´ÍøÍÑ¤¤¤¿¤À¤­¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤¹¡£¤´»ÈÍÑ¤Î·ÈÂÓÅÅÏÃ¤Î¥á¡¼¥ë¥¢¥É¥ì¥¹¤ò¤´ÅÐÏ¿²¼¤µ¤¤¡£<br>
+
+<br>
+
+<!--{if @$tpl_kara_mail_to != ''}-->
+¼¡¤Î¥ê¥ó¥¯¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¶õ¥á¡¼¥ë¤òÁ÷¿®¤·¤Æ¤¯¤À¤µ¤¤¡£<br>
+<center><a href="mailto:<!--{$tpl_kara_mail_to|escape:'url'}-->">¥á¡¼¥ëÁ÷¿®</a></center>
+<!--{else}-->
+<form method="post" action="<!--{$smarty.server.PHP_SELF|escape}-->">
+<!--{assign var=key value='email_mobile'}-->
+¢§¥á¡¼¥ë¥¢¥É¥ì¥¹<br>
+<font color="#ff0000"><!--{$arrErr[$key]|default:''}--></font>
+<input type="text" name="email_mobile" value="<!--{$arrForm[$key].value|escape}-->" size="40" maxlength="<!--{$arrForm[$key].length}-->" istyle="3"><br>
+<center><input type="submit" value="Á÷¿®"></center>
+</form>
+<!--{/if}-->
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/frontparts/bloc/news.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/frontparts/bloc/news.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/frontparts/bloc/news.tpl	(revision 11460)
@@ -0,0 +1,11 @@
+<!--{if count($arrNews) > 0}-->
+<center>
+¡½¡½¡½¡½¡½¡½¡½¡½¡½<br>
+<marquee>
+<!--{if $arrNews[0].news_url}--><a href="<!--{$arrNews[0].news_url|escape}-->"><!--{/if}-->
+<!--{$arrNews[0].news_title|escape}-->
+<!--{if $arrNews[0].news_url}--></a><!--{/if}-->
+</marquee>
+¡½¡½¡½¡½¡½¡½¡½¡½¡½<br>
+</center>
+<!--{/if}-->
Index: branches/dev/data/Smarty/templates/mobile/frontparts/bloc/category.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/frontparts/bloc/category.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/frontparts/bloc/category.tpl	(revision 11460)
@@ -0,0 +1,11 @@
+<!--¢§¾¦ÉÊ¥«¥Æ¥´¥ê¡¼¤³¤³¤«¤é-->
+<!--{section name=cnt loop=$arrCat}-->
+<!--{assign var=disp_name value="`$arrCat[cnt].category_name`"}-->
+<!--{if $arrCat[cnt].has_children}-->
+<!--{assign var=path value="`$smarty.const.URL_DIR`products/category_list.php"}-->
+<!--{else}-->
+<!--{assign var=path value="`$smarty.const.URL_DIR`products/list.php"}-->
+<!--{/if}-->
+¡¡<font color="<!--{cycle values="#000000,#880000,#8888ff,#88ff88,#ff0000"}-->">¢£</font><a href="<!--{$path}-->?category_id=<!--{$arrCat[cnt].category_id}-->"><!--{$disp_name|sfCutString:20|escape}--></a><br>
+<!--{/section}-->
+<!--¢¥¾¦ÉÊ¥«¥Æ¥´¥ê¡¼¤³¤³¤Þ¤Ç-->
Index: branches/dev/data/Smarty/templates/mobile/frontparts/bloc/best5.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/frontparts/bloc/best5.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/frontparts/bloc/best5.tpl	(revision 11460)
@@ -0,0 +1,14 @@
+<!--{if count($arrBestProducts) > 0}-->
+<center>
+<!--{foreach from=$arrBestProducts item=arrProduct name=best_products}-->
+
+<!-- ¢§¥ª¥¹¥¹¥á¥³¥á¥ó¥È ¤³¤³¤«¤é -->
+<a href="<!--{$smarty.const.DETAIL_P_HTML}--><!--{$arrProduct.product_id}-->">
+<!--{$arrProduct.comment|escape|nl2br}-->
+</a>
+<!-- ¢¥¥ª¥¹¥¹¥á¥³¥á¥ó¥È ¤³¤³¤Þ¤Ç -->
+
+<!--{if !$smarty.foreach.best_products.last}--><br><br><!--{/if}-->
+<!--{/foreach}-->
+</center>
+<!--{/if}-->
Index: branches/dev/data/Smarty/templates/mobile/products/search.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/products/search.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/products/search.tpl	(revision 11460)
@@ -0,0 +1,25 @@
+<center>¾¦ÉÊ¸¡º÷</center>
+
+<hr>
+
+¤ªÃµ¤·¤Î¾¦ÉÊÌ¾¡¦·¿ÈÖ¤òÆþÎÏ¤·¤Æ¤¯¤À¤µ¤¤¡£<br>
+
+<form method="get" action="<!--{$smarty.const.URL_DIR}-->products/list.php">
+<center>
+<input type="hidden" name="mode" value="search">
+<input type="text" name="name" size="18" maxlength="50" value="<!--{$smarty.get.name|escape}-->"><br>
+<input type="submit" name="search" value="¸¡º÷">
+</center>
+</form>
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/products/category_list.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/products/category_list.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/products/category_list.tpl	(revision 11460)
@@ -0,0 +1,28 @@
+<center><!--{$arrCategory.category_name|escape}--></center>
+
+<hr>
+
+<!--{foreach from=$arrChildren key=i item=arrChild}-->
+<!--{if $arrChild.has_children}-->
+<!--{assign var=path value="`$smarty.const.URL_DIR`products/category_list.php"}-->
+<!--{else}-->
+<!--{assign var=path value="`$smarty.const.URL_DIR`products/list.php"}-->
+<!--{/if}-->
+<!--{if $i+1<9}-->
+<a href="<!--{$path}-->?category_id=<!--{$arrChild.category_id}-->" accesskey="<!--{$i+1}-->"><!--{$i+1|numeric_emoji}--><!--{$arrChild.category_name|escape}-->(<!--{$arrChild.product_count}-->)</a><br>
+<!--{else}-->
+[<!--{$i+1}-->]<a href="<!--{$path}-->?category_id=<!--{$arrChild.category_id}-->"><!--{$arrChild.category_name|escape}-->(<!--{$arrChild.product_count}-->)</a><br>
+<!--{/if}-->
+<!--{/foreach}-->
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/products/list.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/products/list.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/products/list.tpl	(revision 11460)
@@ -0,0 +1,42 @@
+<!-- ¢§¥¿¥¤¥È¥ë ¤³¤³¤«¤é -->
+<center><!--{$tpl_subtitle|escape}--></center>
+<!-- ¢¥¥¿¥¤¥È¥ë ¤³¤³¤Þ¤Ç -->
+
+<hr>
+
+<!--{foreach from=$arrProducts key=i item=arrProduct}-->
+<!-- ¢§¾¦ÉÊ ¤³¤³¤«¤é -->
+<!--{if $i+1<9}--><!--{$i+1|numeric_emoji}--><!--{else}-->[<!--{$i+1}-->]<!--{/if}-->
+<!-- ¾¦ÉÊÌ¾ --><!--{$arrProduct.name|escape}--><br>
+
+²Á³Ê¡§
+<!--{if $arrProduct.price02_min == $arrProduct.price02_max}-->
+¡ï<!--{$arrProduct.price02_min|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->
+<!--{else}-->
+¡ï<!--{$arrProduct.price02_min|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->¡Á¡ï<!--{$arrProduct.price02_max|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->
+<!--{/if}-->
+<br>
+
+<div align="right">
+<!--{if $i+1<9}-->
+<a href="<!--{$smarty.const.DETAIL_P_HTML}--><!--{$arrProduct.product_id}-->" accesskey="<!--{$i+1}-->">¾¦ÉÊ¾ÜºÙ¤Ø¢ª</a>
+<!--{else}-->
+<a href="<!--{$smarty.const.DETAIL_P_HTML}--><!--{$arrProduct.product_id}-->">¾¦ÉÊ¾ÜºÙ¤Ø¢ª</a>
+<!--{/if}-->
+</div>
+
+<br>
+<!-- ¢¥¾¦ÉÊ ¤³¤³¤Þ¤Ç -->
+<!--{/foreach}-->
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/products/select_item.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/products/select_item.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/products/select_item.tpl	(revision 11460)
@@ -0,0 +1,26 @@
+<div align="center">¿ôÎÌ»ØÄê</div>
+<hr>
+
+<!--{if $arrErr.classcategory_id2 != ""}-->
+	<font color="#FF0000">¢¨¿ôÎÌ¤òÆþÎÏ¤·¤Æ²¼¤µ¤¤¡</font><br>
+<!--{/if}-->
+<form method="post" action="<!--{$smarty.server.REQUEST_URI|escape}-->">
+	<input type="text" name="quantity" size="3" value="<!--{$arrForm.quantity.value|default:1}-->" maxlength=<!--{$smarty.const.INT_LEN}--> istyle="4"><br>
+	<input type="hidden" name="mode" value="cart">
+	<input type="hidden" name="classcategory_id1" value="<!--{$arrForm.classcategory_id1.value}-->">
+	<input type="hidden" name="classcategory_id2" value="<!--{$arrForm.classcategory_id2.value}-->">
+	<input type="hidden" name="product_id" value="<!--{$tpl_product_id}-->">
+	<center><input type="submit" name="submit" value="¤«¤´¤ËÆþ¤ì¤ë"></center>
+</form>
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/products/select_find1.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/products/select_find1.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/products/select_find1.tpl	(revision 11460)
@@ -0,0 +1,27 @@
+<div align="center"><!--{$tpl_class_name1}--></div>
+<hr>
+
+<!--{if $arrErr.classcategory_id1 != ""}-->
+	<font color="#FF0000">¢¨<!--{$tpl_class_name1}-->¤òÆþÎÏ¤·¤Æ²¼¤µ¤¤¡</font><br>
+<!--{/if}-->
+<form method="post" action="<!--{$smarty.server.REQUEST_URI|escape}-->">
+	<select name="classcategory_id1">
+		<option value="">ÁªÂò¤·¤Æ¤¯¤À¤µ¤¤</option>
+		<!--{html_options options=$arrClassCat1 selected=$arrForm.classcategory_id1.value}-->
+	</select><br>
+	<input type="hidden" name="mode" value="select2">
+	<input type="hidden" name="product_id" value="<!--{$tpl_product_id}-->">
+	<center><input type="submit" name="submit" value="¼¡¤Ø"></center>
+</form>
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/products/select_find2.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/products/select_find2.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/products/select_find2.tpl	(revision 11460)
@@ -0,0 +1,28 @@
+<div align="center"><!--{$tpl_class_name2}--></div>
+<hr>
+
+<!--{if $arrErr.classcategory_id2 != ""}-->
+	<font color="#FF0000">¢¨<!--{$tpl_class_name2}-->¤òÆþÎÏ¤·¤Æ²¼¤µ¤¤¡</font><br>
+<!--{/if}-->
+<form method="post" action="<!--{$smarty.server.REQUEST_URI|escape}-->">
+	<select name="classcategory_id2">
+		<option value="">ÁªÂò¤·¤Æ¤¯¤À¤µ¤¤</option>
+		<!--{html_options options=$arrClassCat2 selected=$arrForm.classcategory_id2.value}-->
+	</select><br>
+	<input type="hidden" name="mode" value="selectItem">
+	<input type="hidden" name="classcategory_id1" value="<!--{$arrForm.classcategory_id1.value}-->">
+	<input type="hidden" name="product_id" value="<!--{$tpl_product_id}-->">
+	<center><input type="submit" name="submit" value="¼¡¤Ø"></center>
+</form>
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/products/detail.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/products/detail.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/products/detail.tpl	(revision 11460)
@@ -0,0 +1,55 @@
+<!--¢§CONTENTS-->
+<!--¢§MAIN CONTENTS-->
+<!--À²ÄÙ¤³¤³¤«¤é-->
+<!--¡ú¾¦ÉÊÌ¾¡ú-->
+<div align="center"><!--{$arrProduct.name|escape}--></div>
+<hr>
+<!--À²ÄÙ¤³¤³¤Þ¤Ç-->
+<!--¾ÜºÙ¤³¤³¤«¤é-->
+<!--{assign var=key value="main_image"}-->
+<img src="<!--{$arrFile[$key].filepath}-->"><br>
+<!--¡ú¾ÜºÙÒ²ÝºÒÝÄ¡ú-->
+[emoji:76]<!--{$arrProduct.main_comment|nl2br}--><br>
+<br>
+<!--±²ºÝ-->
+<!--¡ú²Á³Ê¡ú-->
+<font color="#FF0000">²Á³Ê(ÀÇ¹þ):
+<!--{if $arrProduct.price02_min == $arrProduct.price02_max}-->
+	<!--{$arrProduct.price02_min|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->
+<!--{else}-->
+	<!--{$arrProduct.price02_min|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->¥<!--{$arrProduct.price02_max|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->
+<!--{/if}-->
+±ß</font><br/>
+<!--{if $arrProduct.price01_max > 0}-->
+<font color="#FF0000">»²¹Í»Ô¾ì²Á³Ê:
+<!--{if $arrProduct.price01_min == $arrProduct.price01_max}-->
+<!--{$arrProduct.price01_min|number_format}-->
+<!--{else}-->
+<!--{$arrProduct.price01_min|number_format}-->¥<!--{$arrProduct.price01_max|number_format}-->
+<!--{/if}-->
+±ß</font><br>
+<!--{/if}-->
+<form name="form1" method="post" action="<!--{$smarty.server.REQUEST_URI|escape}-->">
+	<input type="hidden" name="mode" value="select">
+	<input type="hidden" name="product_id" value="<!--{$tpl_product_id}-->">
+<!--{if $tpl_stock_find}-->
+	<!--¡ú¾¦ÉÊ¤òÁª¤Ö¡ú-->
+	<center><input type="submit" name="select" id="cart" value="¤³¤Î¾¦ÉÊ¤òÁª¤Ö"></center>
+<!--{else}-->
+	<font color="#FF0000">¿½¤·Ìõ¤´¤¶¤¤¤Þ¤»¤ó¤¬¤Âþº£ÉÊÀÚ¤ìÃæ¤Ç¤¹¡</font>
+<!--{/if}-->
+</form>
+<!--¾ÜºÙ¤³¤³¤Þ¤Ç-->
+<!--¢¥CONTENTS-->
+
+<br>
+<hr>
+
+<a href="<!--{$smarty.const.URL_CART_TOP}-->" accesskey="9"><!--{9|numeric_emoji}-->¤«¤´¤ò¸«¤ë</a><br>
+<a href="<!--{$smarty.const.URL_SITE_TOP}-->" accesskey="0"><!--{0|numeric_emoji}-->TOP¥Ú¡¼¥¸¤Ø</a><br>
+
+<br>
+
+<!-- ¢§¥Õ¥Ã¥¿¡¼ ¤³¤³¤«¤é -->
+<!--{include file='footer.tpl'}-->
+<!-- ¢¥¥Õ¥Ã¥¿¡¼ ¤³¤³¤Þ¤Ç -->
Index: branches/dev/data/Smarty/templates/mobile/site_main.tpl
===================================================================
--- branches/dev/data/Smarty/templates/mobile/site_main.tpl	(revision 11460)
+++ branches/dev/data/Smarty/templates/mobile/site_main.tpl	(revision 11460)
@@ -0,0 +1,9 @@
+<body bgcolor="#ffffff" text="#555555" link="#3a75af" vlink="#3a75af" alink="#3a75af">
+<!--¢§MAIN-->
+<!--{include file=$tpl_mainpage}-->
+<!--¢¥MAIN-->
+<!--{* EBiS¥¿¥°É½¼¨ÍÑ *}-->
+<!--{$tpl_mainpage|sfPrintEbisTag}-->
+<!--{* ¥¢¥Õ¥£¥ê¥¨¥¤¥È¥¿¥°É½¼¨ÍÑ *}-->
+<!--{$tpl_conv_page|sfPrintAffTag:$tpl_aff_option}-->
+</body>
Index: branches/dev/data/include/mobile_emoji_map_softbank.inc
===================================================================
--- branches/dev/data/include/mobile_emoji_map_softbank.inc	(revision 11460)
+++ branches/dev/data/include/mobile_emoji_map_softbank.inc	(revision 11460)
@@ -0,0 +1,260 @@
+<?php
+/**
+ * SoftBankÍÑ³¨Ê¸»ú¥³¡¼¥É (Shift JIS)
+ */
+
+return array(
+	'1'   => "\x1b\$Gj\x0f",
+	'2'   => "\x1b\$Gi\x0f",
+	'3'   => "\x1b\$Gk\x0f",
+	'4'   => "\x1b\$Gh\x0f",
+	'5'   => "\x1b\$E]\x0f",
+	'6'   => "\x1b\$Pc\x0f",
+	'7'   => "[\x96\xb6]", // [Ì¸]
+	'8'   => "\x1b\$P\\\x0f",
+	'9'   => "\x1b\$F_\x0f",
+	'10'  => "\x1b\$F`\x0f",
+	'11'  => "\x1b\$Fa\x0f",
+	'12'  => "\x1b\$Fb\x0f",
+	'13'  => "\x1b\$Fc\x0f",
+	'14'  => "\x1b\$Fd\x0f",
+	'15'  => "\x1b\$Fe\x0f",
+	'16'  => "\x1b\$Ff\x0f",
+	'17'  => "\x1b\$Fg\x0f",
+	'18'  => "\x1b\$Fh\x0f",
+	'19'  => "\x1b\$Fi\x0f",
+	'20'  => "\x1b\$Fj\x0f",
+	'21'  => null,
+	'22'  => "\x1b\$G6\x0f",
+	'23'  => "\x1b\$G4\x0f",
+	'24'  => "\x1b\$G5\x0f",
+	'25'  => "\x1b\$G8\x0f",
+	'26'  => "\x1b\$G3\x0f",
+	'27'  => "\x1b\$PJ\x0f",
+	'28'  => "\x1b\$ER\x0f",
+	'29'  => "[\xce\xdf\xb9\xaf\xc4\xcd\xde\xd9]", // [¥Ý¥±¥Ã¥È¥Ù¥ë]
+	'30'  => "\x1b\$G>\x0f",
+	'31'  => "\x1b\$PT\x0f",
+	'32'  => "\x1b\$PU\x0f",
+	'33'  => "\x1b\$G;\x0f",
+	'34'  => "\x1b\$PN\x0f",
+	'35'  => "\x1b\$Ey\x0f",
+	'36'  => "\x1b\$F\"\x0f",
+	'37'  => "\x1b\$G=\x0f",
+	'38'  => "\x1b\$GV\x0f",
+	'39'  => "\x1b\$GX\x0f",
+	'40'  => "\x1b\$Es\x0f",
+	'41'  => "\x1b\$Eu\x0f",
+	'42'  => "\x1b\$Em\x0f",
+	'43'  => "\x1b\$Et\x0f",
+	'44'  => "\x1b\$Ex\x0f",
+	'45'  => "\x1b\$Ev\x0f",
+	'46'  => "\x1b\$GZ\x0f",
+	'47'  => "\x1b\$Eo\x0f",
+	'48'  => "\x1b\$En\x0f",
+	'49'  => "\x1b\$Eq\x0f",
+	'50'  => "\x1b\$Gc\x0f",
+	'51'  => "\x1b\$Ge\x0f",
+	'52'  => "\x1b\$Gd\x0f",
+	'53'  => "\x1b\$Gg\x0f",
+	'54'  => "\x1b\$E@\x0f",
+	'55'  => "\x1b\$E^\x0f",
+	'56'  => "\x1b\$O3\x0f",
+	'57'  => "\x1b\$G\\\x0f",
+	'58'  => "\x1b\$G]\x0f",
+	'59'  => "\x1b\$FV\x0f",
+	'60'  => null,
+	'61'  => "\x1b\$O*\x0f",
+	'62'  => "\x1b\$Q\"\x0f",
+	'63'  => "\x1b\$Q#\x0f",
+	'64'  => null,
+	'65'  => "\x1b\$EE\x0f",
+	'66'  => "\x1b\$O.\x0f",
+	'67'  => "\x1b\$F(\x0f",
+	'68'  => "\x1b\$G(\x0f",
+	'69'  => "\x1b\$OC\x0f",
+	'70'  => "\x1b\$Eh\x0f",
+	'71'  => "\x1b\$O4\x0f",
+	'72'  => "\x1b\$E2\x0f",
+	'73'  => "\x1b\$Ok\x0f",
+	'74'  => "\x1b\$G)\x0f",
+	'75'  => "\x1b\$G*\x0f",
+	'76'  => "\x1b\$O!\x0f",
+	'77'  => "\x1b\$EJ\x0f",
+	'78'  => "[\xb9\xde\xb0\xd1]", // [¥²¡¼¥à]
+	'79'  => "\x1b\$EF\x0f",
+	'80'  => "\x1b\$F,\x0f",
+	'81'  => "\x1b\$F.\x0f",
+	'82'  => "\x1b\$F-\x0f",
+	'83'  => "\x1b\$F/\x0f",
+	'84'  => "\x1b\$P9\x0f",
+	'85'  => "\x1b\$P;\x0f",
+	'86'  => "\x1b\$G0\x0f",
+	'87'  => "\x1b\$G1\x0f",
+	'88'  => "\x1b\$G2\x0f",
+	'89'  => "\x1b\$FX\x0f",
+	'90'  => "\x1b\$FW\x0f",
+	'91'  => "\x1b\$QV\x0f",
+	'92'  => "\x1b\$G'\x0f",
+	'93'  => "[\xd2\xb6\xde\xc8]", // [¥á¥¬¥Í]
+	'94'  => "\x1b\$F*\x0f",
+	'95'  => "\x81\x9c", // ¡ü
+	'96'  => "\x1b\$Gl\x0f",
+	'97'  => "\x1b\$Gl\x0f",
+	'98'  => "\x1b\$Gl\x0f",
+	'99'  => "\x81\x9b", // ¡û
+	'100' => "\x1b\$Gr\x0f",
+	'101' => "\x1b\$Go\x0f",
+	'102' => "\x1b\$G<\x0f",
+	'103' => "\x1b\$GS\x0f",
+	'104' => "\x1b\$FY\x0f",
+	'105' => "\x1b\$E\$\x0f",
+	'106' => "\x1b\$E#\x0f",
+	'107' => "\x1b\$G+\x0f",
+	'108' => "[i\xd3\xb0\xc4\xde]", // [i¥â¡¼¥É]
+	'109' => "[i\xd3\xb0\xc4\xde]", // [i¥â¡¼¥É]
+	'110' => "\x1b\$E#\x0f",
+	'111' => "[\xc4\xde\xba\xd3]", // [¥É¥³¥â]
+	'112' => "[\xc4\xde\xba\xd3\xce\xdf\xb2\xdd\xc4]", // [¥É¥³¥â¥Ý¥¤¥ó¥È]
+	'113' => '\\',
+	'114' => '[FREE]',
+	'115' => "\x1b\$FI\x0f",
+	'116' => "\x1b\$G_\x0f",
+	'117' => null,
+	'118' => '[CL]',
+	'119' => "\x1b\$E4\x0f",
+	'120' => "\x1b\$F2\x0f",
+	'121' => null,
+	'122' => "\x1b\$F1\x0f",
+	'123' => "\x1b\$F0\x0f",
+	'124' => '[Q]',
+	'125' => "\x1b\$F<\x0f",
+	'126' => "\x1b\$F=\x0f",
+	'127' => "\x1b\$F>\x0f",
+	'128' => "\x1b\$F?\x0f",
+	'129' => "\x1b\$F@\x0f",
+	'130' => "\x1b\$FA\x0f",
+	'131' => "\x1b\$FB\x0f",
+	'132' => "\x1b\$FC\x0f",
+	'133' => "\x1b\$FD\x0f",
+	'134' => "\x1b\$FE\x0f",
+	'135' => "\x1b\$Fm\x0f",
+	'136' => "\x1b\$GB\x0f",
+	'137' => "\x1b\$OG\x0f",
+	'138' => "\x1b\$GC\x0f",
+	'139' => "\x1b\$OG\x0f",
+	'140' => "\x1b\$Gw\x0f",
+	'141' => "\x1b\$Gy\x0f",
+	'142' => "\x1b\$Gx\x0f",
+	'143' => "\x1b\$P'\x0f",
+	'144' => "\x1b\$P&\x0f",
+	'145' => "\x1b\$FV\x0f",
+	'146' => "\x1b\$G^\x0f",
+	'147' => "\x1b\$EC\x0f",
+	'148' => null,
+	'149' => "\x1b\$G#\x0f",
+	'150' => "\x1b\$ON\x0f",
+	'151' => "\x1b\$E/\x0f",
+	'152' => "\x1b\$OT\x0f",
+	'153' => "\x1b\$G-\x0f",
+	'154' => "\x1b\$O1\x0f",
+	'155' => "\x1b\$OF\x0f",
+	'156' => "\x1b\$FX\x0f",
+	'157' => "\x1b\$E\\\x0f",
+	'158' => "\x1b\$GA\x0f",
+	'159' => '!?',
+	'160' => '!!',
+	'161' => null,
+	'162' => "\x1b\$OQ\x0f",
+	'163' => "\x1b\$OQ\x0f",
+	'164' => "\x1b\$OP\x0f",
+	'165' => null,
+	'166' => null,
+	'167' => "\x1b\$OD\x0f",
+	'168' => "[\x82\xd3\x82\xad\x82\xeb]", // [¤Õ¤¯¤í]
+	'169' => "[\xcd\xdf\xdd]", // [¥Ú¥ó]
+	'170' => null,
+	'171' => "\x1b\$E?\x0f",
+	'172' => "\x1b\$Pk\x0f",
+	'173' => '[SOON]',
+	'174' => '[ON]',
+	'175' => '[end]',
+	'176' => "\x1b\$GM\x0f",
+	'e1'  => "[i\xb1\xcc\xdf\xd8]", // [i¥¢¥×¥ê]
+	'e2'  => "[i\xb1\xcc\xdf\xd8]", // [i¥¢¥×¥ê]
+	'e3'  => "\x1b\$G&\x0f",
+	'e4'  => "[\x8d\xe0\x95\x7a]", // [ºâÉÛ]
+	'e5'  => "\x1b\$O<\x0f",
+	'e6'  => "[\xbc\xde\xb0\xdd\xbd\xde]", // [¥¸¡¼¥ó¥º]
+	'e7'  => "[\xbd\xc9\xce\xde]", // [¥¹¥Î¥Ü]
+	'e8'  => "\x1b\$OE\x0f",
+	'e9'  => "[\xc4\xde\xb1]", // [¥É¥¢]
+	'e10' => "\x1b\$EO\x0f",
+	'e11' => "\x1b\$G,\x0f",
+	'e12' => "\x1b\$E#\x0f\x1b\$OH\x0f",
+	'e13' => "[\xda\xdd\xc1]", // [¥ì¥ó¥Á]
+	'e14' => "\x1b\$O!\x0f",
+	'e15' => "\x1b\$E.\x0f",
+	'e16' => "\x1b\$GT\x0f",
+	'e17' => "[\x8d\xbb\x8e\x9e\x8c\x76]", // [º½»þ·×]
+	'e18' => "\x1b\$EV\x0f",
+	'e19' => "\x1b\$OX\x0f",
+	'e20' => "[\x98\x72\x8e\x9e\x8c\x76]", // [ÏÓ»þ·×]
+	'e21' => "\x1b\$P#\x0f",
+	'e22' => "\x1b\$P*\x0f",
+	'e23' => "\x1b\$P5\x0f\x1b\$OQ\x0f",
+	'e24' => "\x1b\$E(\x0f",
+	'e25' => "\x1b\$P6\x0f",
+	'e26' => "\x1b\$P.\x0f",
+	'e27' => "\x1b\$E&\x0f",
+	'e28' => "\x1b\$G.\x0f",
+	'e29' => "\x1b\$E%\x0f",
+	'e30' => "\x1b\$P%\x0f",
+	'e31' => "\x1b\$P*\x0f",
+	'e32' => "\x1b\$P&\x0f",
+	'e33' => "\x1b\$P\"\x0f",
+	'e34' => "\x1b\$P1\x0f",
+	'e35' => "\x1b\$P3\x0f",
+	'e36' => '[NG]',
+	'e37' => "[\xb8\xd8\xaf\xcc\xdf]", // [¥¯¥ê¥Ã¥×]
+	'e38' => "\x1b\$Fn\x0f",
+	'e39' => "\x1b\$QW\x0f",
+	'e40' => "\x1b\$E5\x0f",
+	'e41' => "\x1b\$O5\x0f",
+	'e42' => null,
+	'e43' => "\x1b\$Fo\x0f",
+	'e44' => "\x1b\$Fr\x0f",
+	'e45' => "[\x8b\xd6]", // [¶Ø]
+	'e46' => "\x1b\$FK\x0f",
+	'e47' => "[\x8d\x87]", // [¹ç]
+	'e48' => "\x1b\$FJ\x0f",
+	'e49' => "\x81\xcc", // ¢Î
+	'e50' => "\x81\xaa\x81\xab", // ¢¬¢­
+	'e51' => "\x1b\$Ew\x0f",
+	'e52' => "\x1b\$P^\x0f",
+	'e53' => "\x1b\$G[\x0f",
+	'e54' => "\x1b\$E0\x0f",
+	'e55' => "[\xc1\xaa\xd8\xb0]", // [¥Á¥§¥ê¡¼]
+	'e56' => "\x1b\$O\$\x0f",
+	'e57' => "[\xca\xde\xc5\xc5]", // [¥Ð¥Ê¥Ê]
+	'e58' => "\x1b\$Oe\x0f",
+	'e59' => "\x1b\$E0\x0f",
+	'e60' => "\x1b\$E8\x0f",
+	'e61' => "\x1b\$GP\x0f",
+	'e62' => "\x1b\$Ob\x0f",
+	'e63' => "\x1b\$Gf\x0f",
+	'e64' => "\x1b\$O+\x0f",
+	'e65' => "\x1b\$O`\x0f",
+	'e66' => "\x1b\$OY\x0f",
+	'e67' => "[\xb6\xc0\xc2\xd1\xd8]", // [¥«¥¿¥Ä¥à¥ê]
+	'e68' => "\x1b\$QC\x0f",
+	'e69' => "\x1b\$Gu\x0f",
+	'e70' => "\x1b\$G9\x0f",
+	'e71' => "\x1b\$Gv\x0f",
+	'e72' => "\x1b\$P\$\x0f",
+	'e73' => "\x1b\$G:\x0f",
+	'e74' => "\x1b\$E+\x0f",
+	'e75' => "\x1b\$Gd\x0f",
+	'e76' => "\x1b\$E'\x0f"
+);
+?>
Index: branches/dev/data/include/mobile_image_map_softbank.csv
===================================================================
--- branches/dev/data/include/mobile_image_map_softbank.csv	(revision 11460)
+++ branches/dev/data/include/mobile_image_map_softbank.csv	(revision 11460)
@@ -0,0 +1,146 @@
+705P,705P,300000,Y,240,240,jpg,15000,Y
+705SC,705SC,300000,Y,230,230,jpg,15000,Y
+706SC,706SC,300000,Y,230,230,jpg,15000,Y
+707SC,707SC,300000,Y,230,230,jpg,15000,Y
+810SH,810SH,300000,Y,480,480,jpg,15000,Y
+810T,810T,300000,Y,240,240,jpg,15000,Y
+811SH,811SH,300000,Y,480,480,jpg,15000,Y
+811T,811T,300000,Y,240,240,jpg,15000,Y
+910SH,910SH,300000,Y,480,480,jpg,15000,Y
+910T,910T,300000,Y,240,240,jpg,15000,Y
+911SH,911SH,300000,Y,234,232,jpg,15000,Y
+J-D03,J-D03,6000,N,120,120,jpg,5000,N
+J-D04,J-D04,6000,N,120,120,jpg,5000,N
+J-D05,J-D05,6000,N,132,132,jpg,5000,N
+J-D06,J-D06,6000,N,132,132,jpg,5000,N
+J-D07,J-D07,6000,N,128,128,jpg,5000,N
+J-D08,J-D08,6000,N,132,132,jpg,5000,N
+J-D31,J-D31,6000,N,120,120,jpg,5000,N
+J-DN02,J-DN02,6000,N,116,112,png,5000,N
+J-DN02_a,J-DN02_a,6000,N,116,112,png,5000,N
+J-DN02_b,J-DN02_b,6000,N,116,112,png,5000,N
+J-DN03,J-DN03,6000,N,120,120,jpg,5000,N
+J-DN03_a,J-DN03_a,6000,N,120,120,jpg,5000,N
+J-K03,J-K03,6000,N,120,120,jpg,5000,N
+J-K04,J-K04,6000,N,120,120,jpg,5000,N
+J-K05,J-K05,6000,N,120,120,jpg,5000,N
+J-K51,J-K51,12000,Y,128,128,jpg,10000,Y
+J-N03,J-N03,6000,N,120,120,jpg,5000,N
+J-N03II,J-N03B,6000,N,120,120,jpg,5000,N
+J-N04,J-N04,6000,N,120,120,jpg,5000,N
+J-N05,J-N05,6000,N,160,160,jpg,5000,N
+J-N51,J-N51,12000,Y,160,160,jpg,10000,Y
+J-NM01,J-NM01,6000,N,120,120,jpg,5000,N
+J-NM01_a,J-NM01_a,6000,N,120,120,jpg,5000,N
+J-NM01_b,J-NM01_b,6000,N,120,120,jpg,5000,N
+J-NM02,J-NM02,6000,N,120,120,jpg,5000,N
+J-P02,J-P02,6000,N,96,96,png,5000,N
+J-P02_a,J-P02_a,6000,N,96,96,png,5000,N
+J-P03,J-P03,6000,N,96,96,png,5000,N
+J-P51,J-P51,12000,Y,120,120,jpg,10000,Y
+J-PE03,J-PE03,6000,N,120,120,jpg,5000,N
+J-PE03_a,J-PE03_a,6000,N,120,120,jpg,5000,N
+J-PE03_b,J-PE03_b,6000,N,120,120,jpg,5000,N
+J-PE03_c,J-PE03_c,6000,N,120,120,jpg,5000,N
+J-PE03II,J-PE03B,6000,N,120,120,jpg,5000,N
+J-PE03II(J-PE03B_a),J-PE03B_a,6000,N,120,120,jpg,5000,N
+J-SA02,J-SA02,6000,N,96,96,png,5000,N
+J-SA03,J-SA03,6000,N,120,120,jpg,5000,N
+J-SA03_a,J-SA03_a,6000,N,120,120,jpg,5000,N
+J-SA03_b,J-SA03_b,6000,N,120,120,jpg,5000,N
+J-SA04,J-SA04,6000,N,120,120,jpg,5000,N
+J-SA04_a,J-SA04_a,6000,N,120,120,jpg,5000,N
+J-SA05,J-SA05,6000,N,120,120,jpg,5000,N
+J-SA06,J-SA06,6000,N,132,132,jpg,5000,N
+J-SA51,J-SA51,12000,Y,132,132,jpg,10000,Y
+J-SA51_a,J-SA51_a,12000,Y,132,132,jpg,10000,Y
+J-SH02,J-SH02,6000,N,96,96,png,5000,N
+J-SH02_a,J-SH02_a,6000,N,96,96,png,5000,N
+J-SH03,J-SH03,6000,N,96,96,png,5000,N
+J-SH03_a,J-SH03_a,6000,N,96,96,png,5000,N
+J-SH04,J-SH04,6000,N,96,96,jpg,5000,N
+J-SH04_a,J-SH04_a,6000,N,96,96,jpg,5000,N
+J-SH04_b,J-SH04_b,6000,N,96,96,jpg,5000,N
+J-SH04_c,J-SH04_c,6000,N,96,96,jpg,5000,N
+J-SH04B,J-SH04B,6000,N,96,96,jpg,5000,N
+J-SH04B_a,J-SH04B_a,6000,N,96,96,jpg,5000,N
+J-SH05,J-SH05,6000,N,120,120,jpg,5000,N
+J-SH05_a,J-SH05_a,6000,N,120,120,jpg,5000,N
+J-SH06,J-SH06,6000,N,96,96,jpg,5000,N
+J-SH07,J-SH07,6000,N,120,120,jpg,5000,N
+J-SH08,J-SH08,6000,N,120,120,jpg,5000,N
+J-SH09,J-SH09,6000,N,120,120,jpg,5000,N
+J-SH09_a,J-SH09_a,6000,N,120,120,jpg,5000,N
+J-SH010,J-SH10,6000,N,240,240,jpg,5000,N
+J-SH010_a,J-SH10_a,6000,N,240,240,jpg,5000,N
+J-SH51,J-SH51,12000,Y,120,120,jpg,10000,Y
+J-SH51_a,J-SH51_a,12000,Y,120,120,jpg,10000,Y
+J-SH52,J-SH52,12000,Y,120,120,jpg,10000,Y
+J-SH53,J-SH53,12000,Y,240,240,jpg,10000,Y
+J-SH53_a,J-SH53_a,12000,Y,240,240,jpg,10000,Y
+J-T04,J-T04,6000,N,96,96,png,5000,N
+J-T04_a,J-T04_a,6000,N,96,96,png,5000,N
+J-T05,J-T05,6000,N,120,120,jpg,5000,N
+J-T06,J-T06,6000,N,120,120,jpg,5000,N
+J-T06_a,J-T06_a,6000,N,120,120,jpg,5000,N
+J-T07,J-T07,6000,N,144,144,jpg,5000,N
+J-T08,J-T08,6000,N,222,222,jpg,5000,N
+J-T09,J-T09,6000,N,144,144,jpg,5000,N
+J-T010,J-T10,6000,N,240,240,jpg,5000,N
+J-T51,J-T51,12000,Y,144,144,jpg,10000,Y
+V702sMO,MOT-C980,300000,Y,176,176,jpg,15000,Y
+V702MO,MOT-V980,300000,Y,176,176,jpg,15000,Y
+V102D,V102D,6000,N,128,128,jpg,5000,N
+V201SH,V201SH,6000,N,240,240,jpg,5000,N
+V301D,V301D,6000,N,132,132,jpg,5000,N
+V301D_n,V301D_n,6000,N,132,132,jpg,5000,N
+V301SH,V301SH,6000,N,240,240,jpg,5000,N
+V301T,V301T,6000,N,222,216,jpg,5000,N
+V302SH,V302SH,6000,N,240,240,jpg,5000,N
+V302T,V302T,6000,N,144,144,jpg,5000,N
+V303T(KOTO),V303T,6000,N,222,216,jpg,5000,N
+V304T,V304T,6000,N,221,216,jpg,5000,N
+V401D,V401D,6000,N,240,240,jpg,5000,N
+V401SA,V401SA,6000,N,240,240,jpg,5000,N
+V401SH,V401SH,6000,N,240,240,jpg,5000,N
+V401T,V401T,6000,N,240,240,jpg,5000,N
+V402SH,V402SH,6000,N,240,240,jpg,5000,N
+V403SH,V403SH,6000,N,240,240,jpg,5000,N
+V501SH,V501SH,30000,Y,240,240,jpg,10000,Y
+V501T,V501T,30000,Y,240,240,jpg,10000,Y
+V502T,V502T,30000,Y,240,240,jpg,10000,Y
+V601N,V601N,12000,Y,160,160,jpg,10000,Y
+V601SH,V601SH,12000,Y,240,240,jpg,10000,Y
+V601T,V601T,30000,Y,240,240,jpg,10000,Y
+V602SH,V602SH,30000,Y,240,240,jpg,10000,Y
+V602T,V602T,30000,Y,240,240,jpg,10000,Y
+V603SH,V603SH,30000,Y,240,240,jpg,10000,Y
+V603T,V603T,30000,Y,240,240,jpg,10000,Y
+V604SH,V604SH,30000,Y,240,240,jpg,10000,Y
+V604T,V604T,30000,Y,240,240,jpg,10000,Y
+V702NK,V702NK,300000,Y,176,176,jpg,15000,Y
+V702NKII(V702NK2),V702NK2,300000,Y,176,176,jpg,15000,Y
+V703N,V703N,300000,Y,240,240,jpg,15000,Y
+V703SH,V703SH,300000,Y,240,240,jpg,15000,Y
+V703SHf,V703SHf,300000,Y,240,240,jpg,15000,Y
+V705SH,V705SH,300000,Y,240,240,jpg,15000,Y
+V705T,V705T,300000,Y,240,240,jpg,15000,Y
+V801SA,V801SA,200000,Y,240,240,jpg,18000,Y
+V801SA_a,V801SA_a,200000,Y,240,240,jpg,18000,Y
+V801SH,V801SH,200000,Y,240,240,jpg,18000,Y
+V802N,V802N,300000,Y,240,240,jpg,15000,Y
+V802SE,V802SE,300000,Y,176,176,jpg,15000,Y
+V802SH,V802SH,300000,Y,240,240,jpg,15000,Y
+V803T,V803T,300000,Y,240,240,jpg,15000,Y
+V804N,V804N,300000,Y,240,240,jpg,15000,Y
+V804NK,V804NK,300000,Y,240,240,jpg,15000,Y
+V804SH,V804SH,300000,Y,240,240,jpg,15000,Y
+V804SS,V804SS,300000,Y,240,240,jpg,15000,Y
+V902SH,V902SH,300000,Y,240,240,jpg,15000,Y
+V902T,V902T,300000,Y,240,240,jpg,15000,Y
+V903SH,V903SH,300000,Y,240,240,jpg,15000,Y
+V903T,V903T,300000,Y,240,240,jpg,15000,Y
+V904SH,V904SH,300000,Y,240,240,jpg,15000,Y
+V904T,V904T,300000,Y,240,240,jpg,15000,Y
+V905SH,V905SH,300000,Y,240,240,jpg,15000,Y
+*,*,300000,Y,240,240,jpg,15000,Y
Index: branches/dev/data/include/mobile_emoji_map_ezweb.inc
===================================================================
--- branches/dev/data/include/mobile_emoji_map_ezweb.inc	(revision 11460)
+++ branches/dev/data/include/mobile_emoji_map_ezweb.inc	(revision 11460)
@@ -0,0 +1,260 @@
+<?php
+/**
+ * EZwebÍÑ³¨Ê¸»ú¥³¡¼¥É (Shift JIS)
+ */
+
+return array(
+	'1'   => '<img localsrc="44">',
+	'2'   => '<img localsrc="107">',
+	'3'   => '<img localsrc="95">',
+	'4'   => '<img localsrc="191">',
+	'5'   => '<img localsrc="16">',
+	'6'   => '<img localsrc="190">',
+	'7'   => '<img localsrc="305">',
+	'8'   => '<img localsrc="481">',
+	'9'   => '<img localsrc="192">',
+	'10'  => '<img localsrc="193">',
+	'11'  => '<img localsrc="194">',
+	'12'  => '<img localsrc="195">',
+	'13'  => '<img localsrc="196">',
+	'14'  => '<img localsrc="197">',
+	'15'  => '<img localsrc="198">',
+	'16'  => '<img localsrc="199">',
+	'17'  => '<img localsrc="200">',
+	'18'  => '<img localsrc="201">',
+	'19'  => '<img localsrc="202">',
+	'20'  => '<img localsrc="203">',
+	'21'  => null,
+	'22'  => '<img localsrc="45">',
+	'23'  => '<img localsrc="306">',
+	'24'  => '<img localsrc="220">',
+	'25'  => '<img localsrc="219">',
+	'26'  => '<img localsrc="421">',
+	'27'  => '<img localsrc="307">',
+	'28'  => '<img localsrc="222">',
+	'29'  => '<img localsrc="308">',
+	'30'  => '<img localsrc="172">',
+	'31'  => '<img localsrc="341">',
+	'32'  => '<img localsrc="217">',
+	'33'  => '<img localsrc="125">',
+	'34'  => '<img localsrc="125">',
+	'35'  => '<img localsrc="216">',
+	'36'  => '<img localsrc="379">',
+	'37'  => '<img localsrc="168">',
+	'38'  => '<img localsrc="112">',
+	'39'  => '<img localsrc="156">',
+	'40'  => '<img localsrc="375">',
+	'41'  => '<img localsrc="376">',
+	'42'  => '<img localsrc="212">',
+	'43'  => '<img localsrc="205">',
+	'44'  => '<img localsrc="378">',
+	'45'  => '<img localsrc="206">',
+	'46'  => '<img localsrc="213">',
+	'47'  => '<img localsrc="208">',
+	'48'  => '<img localsrc="99">',
+	'49'  => '<img localsrc="207">',
+	'50'  => '<img localsrc="146">',
+	'51'  => '<img localsrc="93">',
+	'52'  => '<img localsrc="52">',
+	'53'  => '<img localsrc="65">',
+	'54'  => '<img localsrc="245">',
+	'55'  => '<img localsrc="124">',
+	'56'  => '<img localsrc="104">',
+	'57'  => '<img localsrc="289">',
+	'58'  => '<img localsrc="110">',
+	'59'  => '<img localsrc="70">',
+	'60'  => null,
+	'61'  => '<img localsrc="294">',
+	'62'  => '<img localsrc="309">',
+	'63'  => '<img localsrc="494">',
+	'64'  => '<img localsrc="311">',
+	'65'  => '<img localsrc="106">',
+	'66'  => '<img localsrc="176">',
+	'67'  => '<img localsrc="177">',
+	'68'  => '<img localsrc="94">',
+	'69'  => '<img localsrc="83">',
+	'70'  => '<img localsrc="122">',
+	'71'  => '<img localsrc="312">',
+	'72'  => '<img localsrc="144">',
+	'73'  => '<img localsrc="313">',
+	'74'  => '<img localsrc="85">',
+	'75'  => '<img localsrc="161">',
+	'76'  => '<img localsrc="395">',
+	'77'  => '<img localsrc="288">',
+	'78'  => '<img localsrc="232">',
+	'79'  => '<img localsrc="300">',
+	'80'  => '<img localsrc="414">',
+	'81'  => '<img localsrc="314">',
+	'82'  => '<img localsrc="315">',
+	'83'  => '<img localsrc="316">',
+	'84'  => '<img localsrc="317">',
+	'85'  => '<img localsrc="318">',
+	'86'  => '<img localsrc="817">',
+	'87'  => '<img localsrc="319">',
+	'88'  => '<img localsrc="320">',
+	'89'  => '<img localsrc="43">',
+	'90'  => '<img localsrc="42">',
+	'91'  => '<img localsrc="728">',
+	'92'  => '<img localsrc="729">',
+	'93'  => '<img localsrc="116">',
+	'94'  => '<img localsrc="178">',
+	'95'  => '<img localsrc="321">',
+	'96'  => '<img localsrc="322">',
+	'97'  => '<img localsrc="323">',
+	'98'  => '<img localsrc="15">',
+	'99'  => "\x81\x9b", // ¡û
+	'100' => '<img localsrc="134">',
+	'101' => '<img localsrc="251">',
+	'102' => '<img localsrc="169">',
+	'103' => '<img localsrc="234">',
+	'104' => '<img localsrc="71">',
+	'105' => '<img localsrc="513">',
+	'106' => '<img localsrc="784">',
+	'107' => '<img localsrc="166">',
+	'108' => "[i\xd3\xb0\xc4\xde]", // [i¥â¡¼¥É]
+	'109' => "[i\xd3\xb0\xc4\xde]", // [i¥â¡¼¥É]
+	'110' => '<img localsrc="108">',
+	'111' => "[\xc4\xde\xba\xd3]", // [¥É¥³¥â]
+	'112' => "[\xc4\xde\xba\xd3\xce\xdf\xb2\xdd\xc4]", // [¥É¥³¥â¥Ý¥¤¥ó¥È]
+	'113' => '<img localsrc="109">',
+	'114' => '<img localsrc="299">',
+	'115' => '<img localsrc="385">',
+	'116' => '<img localsrc="120">',
+	'117' => '<img localsrc="118">',
+	'118' => '<img localsrc="324">',
+	'119' => '<img localsrc="119">',
+	'120' => '<img localsrc="334">',
+	'121' => '<img localsrc="730">',
+	'122' => "[\xcc\xd8\xb0\xc0\xde\xb2\xd4\xd9]", // [¥Õ¥ê¡¼¥À¥¤¥ä¥ë]
+	'123' => '<img localsrc="818">',
+	'124' => '<img localsrc="4">',
+	'125' => '<img localsrc="180">',
+	'126' => '<img localsrc="181">',
+	'127' => '<img localsrc="182">',
+	'128' => '<img localsrc="183">',
+	'129' => '<img localsrc="184">',
+	'130' => '<img localsrc="185">',
+	'131' => '<img localsrc="186">',
+	'132' => '<img localsrc="187">',
+	'133' => '<img localsrc="188">',
+	'134' => '<img localsrc="325">',
+	'135' => '<img localsrc="326">',
+	'136' => '<img localsrc="51">',
+	'137' => '<img localsrc="803">',
+	'138' => '<img localsrc="265">',
+	'139' => '<img localsrc="266">',
+	'140' => '<img localsrc="257">',
+	'141' => '<img localsrc="258">',
+	'142' => '<img localsrc="441">',
+	'143' => '<img localsrc="444">',
+	'144' => '<img localsrc="327">',
+	'145' => '<img localsrc="731">',
+	'146' => '<img localsrc="343">',
+	'147' => '<img localsrc="224">',
+	'148' => null,
+	'149' => '<img localsrc="273">',
+	'150' => '<img localsrc="420">',
+	'151' => '<img localsrc="77">',
+	'152' => '<img localsrc="262">',
+	'153' => '<img localsrc="281">',
+	'154' => '<img localsrc="268">',
+	'155' => '<img localsrc="291">',
+	'156' => '<img localsrc="732">',
+	'157' => '<img localsrc="261">',
+	'158' => '<img localsrc="2">',
+	'159' => '<img localsrc="733">',
+	'160' => '<img localsrc="734">',
+	'161' => '<img localsrc="329">',
+	'162' => '<img localsrc="330">',
+	'163' => '<img localsrc="263">',
+	'164' => '<img localsrc="282">',
+	'165' => null,
+	'166' => '<img localsrc="735">',
+	'167' => '<img localsrc="226">',
+	'168' => "[\x82\xd3\x82\xad\x82\xeb]", // [¤Õ¤¯¤í]
+	'169' => '<img localsrc="508">',
+	'170' => null,
+	'171' => "[\x82\xa2\x82\xb7]", // [¤¤¤¹]
+	'172' => '<img localsrc="490">',
+	'173' => '[SOON]',
+	'174' => '[ON]',
+	'175' => '[end]',
+	'176' => '<img localsrc="46">',
+	'e1'  => "[i\xb1\xcc\xdf\xd8]", // [i¥¢¥×¥ê]
+	'e2'  => "[i\xb1\xcc\xdf\xd8]", // [i¥¢¥×¥ê]
+	'e3'  => '<img localsrc="335">',
+	'e4'  => '<img localsrc="290">',
+	'e5'  => '<img localsrc="295">',
+	'e6'  => '<img localsrc="805">',
+	'e7'  => '<img localsrc="221">',
+	'e8'  => '<img localsrc="48">',
+	'e9'  => "[\xc4\xde\xb1]", // [¥É¥¢]
+	'e10' => '<img localsrc="233">',
+	'e11' => '<img localsrc="337">',
+	'e12' => '<img localsrc="806">',
+	'e13' => '<img localsrc="152">',
+	'e14' => '<img localsrc="149">',
+	'e15' => '<img localsrc="354">',
+	'e16' => '<img localsrc="72">',
+	'e17' => '<img localsrc="58">',
+	'e18' => '<img localsrc="215">',
+	'e19' => '<img localsrc="423">',
+	'e20' => '<img localsrc="25">',
+	'e21' => '<img localsrc="441">',
+	'e22' => '<img localsrc="446">',
+	'e23' => '<img localsrc="257"><img localsrc="330">',
+	'e24' => '<img localsrc="351">',
+	'e25' => '<img localsrc="779">',
+	'e26' => '<img localsrc="450">',
+	'e27' => '<img localsrc="349">',
+	'e28' => '<img localsrc="287">',
+	'e29' => '<img localsrc="264">',
+	'e30' => '<img localsrc="348">',
+	'e31' => '<img localsrc="446">',
+	'e32' => '<img localsrc="443">',
+	'e33' => '<img localsrc="440">',
+	'e34' => '<img localsrc="259">',
+	'e35' => '<img localsrc="791">',
+	'e36' => '[NG]',
+	'e37' => '<img localsrc="143">',
+	'e38' => '<img localsrc="81">',
+	'e39' => '<img localsrc="54">',
+	'e40' => '<img localsrc="218">',
+	'e41' => '<img localsrc="279">',
+	'e42' => '<img localsrc="807">',
+	'e43' => '<img localsrc="82">',
+	'e44' => '<img localsrc="1">',
+	'e45' => "[\x8b\xd6]", // [¶Ø]
+	'e46' => '<img localsrc="387">',
+	'e47' => "[\x8d\x87]", // [¹ç]
+	'e48' => '<img localsrc="386">',
+	'e49' => '<img localsrc="808">',
+	'e50' => '<img localsrc="809">',
+	'e51' => '<img localsrc="377">',
+	'e52' => '<img localsrc="810">',
+	'e53' => '<img localsrc="342">',
+	'e54' => '<img localsrc="53">',
+	'e55' => '<img localsrc="241">',
+	'e56' => '<img localsrc="113">',
+	'e57' => '<img localsrc="739">',
+	'e58' => '<img localsrc="434">',
+	'e59' => '<img localsrc="811">',
+	'e60' => '<img localsrc="133">',
+	'e61' => '<img localsrc="235">',
+	'e62' => '<img localsrc="244">',
+	'e63' => '<img localsrc="239">',
+	'e64' => '<img localsrc="400">',
+	'e65' => '<img localsrc="333">',
+	'e66' => '<img localsrc="424">',
+	'e67' => '<img localsrc="812">',
+	'e68' => '<img localsrc="78">',
+	'e69' => '<img localsrc="252">',
+	'e70' => '<img localsrc="203">',
+	'e71' => '<img localsrc="454">',
+	'e72' => '<img localsrc="814">',
+	'e73' => '<img localsrc="248">',
+	'e74' => '<img localsrc="254">',
+	'e75' => '<img localsrc="12">',
+	'e76' => '<img localsrc="350">'
+);
+?>
Index: branches/dev/data/include/mobile_image_map_ezweb.csv
===================================================================
--- branches/dev/data/include/mobile_image_map_ezweb.csv	(revision 11460)
+++ branches/dev/data/include/mobile_image_map_ezweb.csv	(revision 11460)
@@ -0,0 +1,194 @@
+C303CA,CA11,1400,Y,120,120,bmp,1300,N
+C311CA,CA12,1400,Y,120,120,bmp,1300,N
+C409CA,CA13,7500,Y,120,120,png,6000,Y
+C452CA,CA14,7500,Y,120,120,png,6000,Y
+A3012CA,CA21,9000,Y,125,120,jpg,8000,Y
+A5302CA,CA22,9000,Y,125,120,jpg,20000,Y
+A5401CA A5401CA II(A5401CA),CA23,9000,Y,123,120,jpg,20000,Y
+A5403CA,CA24,9000,Y,230,224,jpg,20000,Y
+A5406CA,CA25,9000,Y,230,224,jpg,20000,Y
+A5407CA,CA26,9000,Y,230,224,jpg,20000,Y
+A5512CA,CA27,9000,Y,230,224,jpg,20000,Y
+A5513CA(G'zOne TYPE-R),CA28,9000,Y,230,224,jpg,20000,Y
+W21CA W21CA II(W21CA),CA31,9000,Y,123,120,jpg,20000,Y
+W31CA,CA32,9000,Y,230,224,jpg,20000,Y
+W41CA,CA33,9000,Y,230,224,jpg,20000,Y
+W42CA,CA34,9000,Y,232,232,jpg,20000,Y
+W43CA,CA35,9000,Y,232,232,jpg,20000,Y
+C202DE,DN01,1400,Y,108,104,bmp,1300,N
+C402DE,DN11,7500,Y,120,120,png,6000,Y
+C201H(C201H_A),HI01,1400,Y,120,120,bmp,1300,N
+C201H(C201H_A),HI02,1400,Y,120,120,bmp,1300,N
+C302H,HI11,1400,Y,120,120,bmp,1300,N
+C309H,HI12,7500,Y,120,120,png,6000,N
+C407H,HI13,7500,Y,120,120,png,6000,Y
+C451H,HI14,7500,Y,120,120,png,6000,Y
+C3001H,HI21,9000,Y,120,120,jpg,8000,Y
+A5303H,HI23,9000,Y,125,120,jpg,20000,Y
+A5303H II(A5303H2),HI24,9000,Y,125,120,jpg,20000,Y
+W11H,HI31,9000,Y,233,232,jpg,20000,Y
+W21H,HI32,9000,Y,123,120,jpg,20000,Y
+W22H,HI33,9000,Y,230,224,jpg,20000,Y
+W31H(PENCK),HI34,9000,Y,230,224,jpg,20000,Y
+W32H,HI35,9000,Y,230,224,jpg,20000,Y
+W41H,HI36,9000,Y,230,224,jpg,20000,Y
+W42H,HI37,9000,Y,232,232,jpg,20000,Y
+W43H,HI38,9000,Y,232,232,jpg,20000,Y
+C307K,KC11,1400,Y,121,120,bmp,1300,N
+C313K,KC12,1400,Y,120,120,png,1300,N
+C414K,KC13,7500,Y,120,120,jpg,6000,Y
+A1012K A1012K II(A1012K),KC14,7500,Y,120,120,jpg,6000,Y
+A1013K,KC15,7500,Y,120,120,jpg,6000,Y
+C3002K,KC21,9000,Y,128,128,jpg,7000,Y
+A5305K,KC22,9000,Y,125,120,jpg,20000,Y
+A1401K,KC23,9000,Y,126,120,jpg,20000,Y
+A5502K(A5502K_A),KC24,9000,Y,234,232,jpg,20000,Y
+A5502K(A5502K_B),KC25,9000,Y,234,232,jpg,20000,Y
+A1403KB01K(A1403K),KC26,9000,Y,234,232,jpg,20000,Y
+A5515K,KC27,9000,Y,234,232,jpg,20000,Y
+A5521K,KC28,9000,Y,234,232,jpg,20000,Y
+W11K,KC31,9000,Y,233,232,jpg,20000,Y
+W21K,KC32,9000,Y,234,232,jpg,20000,Y
+W31K W31K II(W31K),KC33,9000,Y,234,232,jpg,20000,Y
+W32K,KC34,9000,Y,234,232,jpg,20000,Y
+W41K,KC35,9000,Y,232,232,jpg,20000,Y
+W42K,KC36,9000,Y,232,232,jpg,20000,Y
+W43K,KC37,9000,Y,232,232,jpg,20000,Y
+W44K,KC38,9000,Y,232,232,jpg,20000,Y
+D303K,KCC1,1400121,120,bmp,1300,N
+D304K,KCC2,1400121,120,bmp,1300,N
+702G,KCI1,1400121,120,bmp,1300,N
+703G,KCI2,1400121,120,bmp,1300,N
+TK01,KCT1,1400,Y,121,120,bmp,1300,Y
+TK02,KCT2,1400,Y,121,120,bmp,1300,Y
+TK0K,KCT3,1400,Y,121,120,bmp,1300,Y
+TK03,KCT4,7500,Y,96,96,png,6000,Y
+TK04,KCT5,7500,Y,96,96,png,6000,Y
+TK05,KCT6,7500,Y,96,96,png,6000,Y
+TK11,KCT7,7500,Y,96,96,png,6000,Y
+TK12,KCT8,7500,Y,120,120,png,6000,Y
+TK21,KCT9,7500,Y,120,120,jpg,6000,Y
+TK22,KCTA,7500,Y,120,120,jpg,6000,Y
+TK23,KCTB,7500,Y,120,120,png,6000,Y
+TK31,KCTC,7500,Y,120,120,jpg,6000,Y
+TK40,KCTD,7500,Y,120,120,jpg,6000,Y
+TK51,KCTE,7500,Y,120,120,jpg,6000,Y
+TK41,KCU1,9000,Y,114,112,jpg,8000,Y
+C308P(C308P_A),MA11,1400,Y,122,120,bmp,1300,N
+C308P(C308P_B),MA12,1400,Y,122,120,bmp,1300,N
+C408P,MA13,7500,Y,115,112,png,6000,Y
+C3003P,MA21,9000,Y,132,132,jpg,8000,Y
+D305P(D305P_A),MAC1,1400122,120,bmp,1300,N
+D305P(D305P_B),MAC2,1400122,120,bmp,1300,N
+704G(704G_A),MAI1,1400122,120,bmp,1300,N
+D704G(704G_B),MAI2,1400122,120,bmp,1300,N
+TP01(TP01_A),MAT1,1400,Y,122,120,bmp,1300,Y
+TP01(TP01_B),MAT2,1400,Y,122,120,bmp,1300,Y
+TP11,MAT3,7500,Y,96,96,png,6000,Y
+TD11,MIT1,7500,Y,120,120,png,6000,Y
+A1405PT,PT21,9000,Y,240,240,jpg,20000,Y
+A1406PT,PT22,9000,Y,240,240,jpg,20000,Y
+A3011SA,SA21,9000,Y,126,120,jpg,8000,Y
+A3015SA,SA22,9000,Y,126,120,jpg,8000,Y
+A1302SA,SA24,9000,Y,132,132,jpg,20000,Y
+A1303SA,SA25,9000,Y,132,132,jpg,20000,Y
+A5503SA,SA26,9000,Y,225,224,jpg,20000,Y
+A5505SA,SA27,9000,Y,225,224,jpg,20000,Y
+A1305SA,SA28,9000,Y,124,120,jpg,20000,Y
+A5522SA,SA29,9000,Y,235,232,jpg,20000,Y
+W21SA,SA31,9000,Y,225,224,jpg,20000,Y
+W22SA,SA32,9000,Y,230,224,jpg,20000,Y
+W31SA W31SA II(W31SA),SA33,9000,Y,230,224,jpg,20000,Y
+W32SA,SA34,9000,Y,228,224,jpg,20000,Y
+W33SA,SA35,9000,Y,228,224,jpg,20000,Y
+W41SA,SA36,9000,Y,228,224,jpg,20000,Y
+E02SA,SA37,9000,Y,228 ,224 ,jpg,20000,Y
+W43SA,SA38,9000,Y,228,224,jpg,20000,Y
+W41SH,SH31,9000,Y,229,224,jpg,20000,Y
+C305S,SN11,1400,Y,120,120,bmp,1300,N
+C404S(C404S_A),SN12,7500,Y,120,120,png,6000,Y
+C406S,SN13,7500,Y,120,120,png,6000,Y
+C404S(C404S_B),SN14,7500,Y,120,120,png,6000,Y
+C413S(C413S_B),SN15,7500,Y,120,120,png,6000,Y
+C413S(C413S_A),SN16,7500,Y,120,120,png,6000,Y
+C1002S,SN17,7500,Y,120,120,png,6000,Y
+A3014S,SN21,9000,Y,120,120,jpg,8000,Y
+A1101S,SN22,9000,Y,120,120,jpg,8000,Y
+A1301S,SN23,9000,Y,120,120,jpg,20000,Y
+A5402S,SN24,9000,Y,120,120,jpg,20000,Y
+A5404S,SN25,9000,Y,240,240,jpg,20000,Y
+A1402S,SN26,9000,Y,228,224,jpg,20000,Y
+A1402S II(A1402S2_A),SN27,9000,Y,228,224,jpg,20000,Y
+A1402S II ¥«¥á¥éÌµ¤·(A1402S2_B),SN28,9000,Y,228,224,jpg,20000,Y
+A1404S A1404S II(A1404S),SN29,9000,Y,228,224,jpg,20000,Y
+W21S,SN31,9000,Y,228,224,jpg,20000,Y
+W31S,SN32,9000,Y,228,224,jpg,20000,Y
+W32S,SN33,9000,Y,228,224,jpg,20000,Y
+W41S,SN34,9000,Y,228,224,jpg,20000,Y
+W32S,SN35,9000,Y,228,224,jpg,20000,Y
+W42S,SN36,9000,Y,228,224,jpg,20000,Y
+W43S,SN37,9000,Y,228,224,jpg,20000,Y
+D306S,SNC1,1400120,120,bmp,1300,N
+705G,SNI1,1400120,120,bmp,1300,N
+C403ST,ST11,7500,Y,120,120,png,6000,Y
+C411ST,ST12,7500,Y,120,120,png,6000,Y
+A1011ST,ST13,7500,Y,120,120,jpg,6000,Y
+A1014ST,ST14,7500,Y,120,120,jpg,6000,Y
+A5306ST,ST21,9000,Y,125,120,jpg,20000,Y
+A5307ST(INFOBAR),ST22,9000,Y,125,120,jpg,20000,Y
+A5405SA,ST23,9000,Y,127,120,jpg,20000,Y
+A5507SA,ST24,9000,Y,235,232,jpg,20000,Y
+A5508SA(talby),ST25,9000,Y,235,232,jpg,20000,Y
+A5510SA(Sweets),ST26,9000,Y,235,232,jpg,20000,Y
+A5514SA,ST27,9000,Y,235,232,jpg,20000,Y
+A5518SA,ST28,9000,Y,235,232,jpg,20000,Y
+A5519SA(Sweets pure),ST29,9000,Y,235,232,jpg,20000,Y
+A5520SA,ST2A,9000,Y,235,232,jpg,20000,Y
+W42SA,ST31,9000,Y,235,232,jpg,20000,Y
+C304SA,SY11,1400,Y,128,128,bmp,1300,N
+C401SA,SY12,7500,Y,120,120,png,6000,Y
+C405SA,SY13,1400,Y,120,120,png,1300,Y
+C412SA,SY14,7500,Y,120,120,png,6000,Y
+C1001SA,SY15,7500,Y,120,120,png,6000,Y
+D301SA,SYC1,1400128,128,bmp,1300,N
+TS01,SYT1,1400,Y,128,128,bmp,1300,Y
+TS02,SYT2,7500,Y,96,96,png,6000,Y
+TS11,SYT3,7500,Y,120,120,jpg,6000,Y
+TS31,SYT4,7500,Y,120,120,jpg,6000,Y
+TS41,SYT5,7500,Y,132,132,jpg,6000,Y
+C301T,TS11,1400,Y,120,120,bmp,1300,N
+C310T,TS12,7500,Y,96,96,png,6000,N
+C410T,TS13,7500,Y,96,96,png,6000,Y
+C415T,TS14,7500,Y,96,96,png,6000,Y
+C5001T,TS21,9000,Y,144,144,jpg,20000,Y
+A3013T,TS22,9000,Y,144,144,jpg,7740,Y
+A5301T,TS23,9000,Y,144,144,jpg,20000,Y
+A5304T,TS24,9000,Y,144,144,jpg,20000,Y
+A1304T A1304T II(A1304T),TS25,9000,Y,144,144,jpg,20000,Y
+A5501T,TS26,9000,Y,240,240,jpg,20000,Y
+A5504T,TS27,9000,Y,229,224,jpg,20000,Y
+A5506T,TS28,9000,Y,229,224,jpg,20000,Y
+A5509T,TS29,9000,Y,229,224,jpg,20000,Y
+A5511T,TS2A,9000,Y,229,224,jpg,20000,Y
+A5516T,TS2B,9000,Y,229,224,jpg,20000,Y
+A5517T,TS2C,9000,Y,229,224,jpg,20000,Y
+W21T,TS31,9000,Y,229,224,jpg,20000,Y
+W31T,TS32,9000,Y,229,224,jpg,20000,Y
+W32T,TS33,9000,Y,229,224,jpg,20000,Y
+W41T,TS34,9000,Y,229,224,jpg,20000,Y
+W42T(neon),TS35,9000,Y,229,224,jpg,20000,Y
+W43T,TS36,9000,Y,229,224,jpg,20000,Y
+W44T,TS37,9000,Y,229,224,jpg,20000,Y
+W45T,TS38,9000,Y,229,224,jpg,20000,Y
+D302T,TSC1,1400120,120,bmp,1300,N
+701G,TSI1,1400120,120,bmp,1300,N
+TT01,TST1,1400,Y,120,120,bmp,1300,Y
+TT02,TST2,1400,Y,120,120,bmp,1300,Y
+TT03,TST3,7500,Y,120,120,png,6000,Y
+TT11,TST4,7500,Y,120,120,jpg,6000,Y
+TT21,TST5,7500,Y,140,140,jpg,6000,Y
+TT22,TST6,7500,Y,140,140,jpg,6000,Y
+TT31,TST7,7500,Y,140,140,jpg,6000,Y
+TT32,TST8,7500,Y,140,140,jpg,6000,Y
+TT51,TST9,7500,Y,120,120,jpg,6000,Y
+*,*,9000,Y,229,224,jpg,20000,Y
Index: branches/dev/data/include/mobile.inc
===================================================================
--- branches/dev/data/include/mobile.inc	(revision 11460)
+++ branches/dev/data/include/mobile.inc	(revision 11460)
@@ -0,0 +1,414 @@
+<?php
+/**
+ * ¥â¥Ð¥¤¥ë¥µ¥¤¥È¶¦Í­´Ø¿ô¥Õ¥¡¥¤¥ë
+ */
+
+require_once DATA_PATH . 'module/Net/URL.php';
+require_once DATA_PATH . 'class/SC_DbConn.php';
+require_once DATA_PATH . 'class/SC_Query.php';
+
+/**
+ * EC-CUBE ¤¬¥µ¥Ý¡¼¥È¤¹¤ë·ÈÂÓÃ¼Ëö¤«¤É¤¦¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£
+ * ÈóÂÐ±þÃ¼Ëö¤Î¾ì¹ç¤Ï unsupported/index.php ¤Ø¥ê¥À¥¤¥ì¥¯¥È¤¹¤ë¡£
+ *
+ * @return void
+ */
+function lfMobileCheckCompatibility() {
+	if (!GC_MobileUserAgent::isSupported()) {
+		header('Location: ' . URL_DIR . 'unsupported/index.php');
+		exit;
+	}
+}
+
+/**
+ * ÆþÎÏ¥Ç¡¼¥¿¤òÆâÉô¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ËÊÑ´¹¤·¡¢³¨Ê¸»ú¤ò½üµî¤¹¤ë¡£
+ *
+ * @param string &$value ÆþÎÏ¥Ç¡¼¥¿¤Ø¤Î»²¾È
+ * @return void
+ */
+function lfMobileConvertInputValue(&$value) {
+	// Shift JIS ¤«¤éÆâÉô¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ËÊÑ´¹¤¹¤ë¡£
+	// SoftBank °Ê³°¤Î³¨Ê¸»ú¤Ï³°»úÎÎ°è¤Ë´Þ¤Þ¤ì¤ë¤¿¤á¡¢¤³¤ÎÃÊ³¬¤Ç½üµî¤µ¤ì¤ë¡£
+	$value = mb_convert_encoding($value, CHAR_CODE, 'SJIS');
+
+	// SoftBank ¤Î³¨Ê¸»ú¤ò½üµî¤¹¤ë¡£
+	$value = preg_replace('/\\x1b\\$[^\\x0f]*\\x0f/', '', $value);
+}
+
+/**
+ * ¥â¥Ð¥¤¥ë¥µ¥¤¥ÈÍÑ¤ÎÆþÎÏ¤Î½é´ü½èÍý¤ò¹Ô¤¦¡£
+ *
+ * @return void
+ */
+function lfMobileInitInput() {
+	array_walk($_GET, 'lfMobileConvertInputValue');
+	array_walk($_POST, 'lfMobileConvertInputValue');
+	array_walk($_REQUEST, 'lfMobileConvertInputValue');
+}
+
+/**
+ * dtb_mobile_ext_session_id ¥Æ¡¼¥Ö¥ë¤ò¸¡º÷¤·¤Æ¥»¥Ã¥·¥ç¥óID¤ò¼èÆÀ¤¹¤ë¡£
+ *
+ * @return string|null ¼èÆÀ¤·¤¿¥»¥Ã¥·¥ç¥óID¤òÊÖ¤¹¡£
+ *                     ¼èÆÀ¤Ç¤­¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï null ¤òÊÖ¤¹¡£
+ */
+function lfMobileGetExtSessionId() {
+	if (!preg_match('|^' . URL_DIR . '(.*)$|', $_SERVER['SCRIPT_NAME'], $matches)) {
+		return null;
+	}
+
+	$url = $matches[1];
+	$time = date('Y-m-d H:i:s', time() - MOBILE_SESSION_LIFETIME);
+	$objQuery = new SC_Query;
+
+	foreach ($_REQUEST as $key => $value) {
+		$session_id = $objQuery->get('dtb_mobile_ext_session_id', 'session_id',
+		                             'param_key = ? AND param_value = ? AND url = ? AND create_date >= ?',
+		                             array($key, $value, $url, $time));
+		if (isset($session_id)) {
+			return $session_id;
+		}
+	}
+
+	return null;
+}
+
+/**
+ * ¥Ñ¥é¥á¡¼¥¿¡¼¤«¤éÍ­¸ú¤Ê¥»¥Ã¥·¥ç¥óID¤ò¼èÆÀ¤¹¤ë¡£
+ *
+ * @return string|false ¼èÆÀ¤·¤¿Í­¸ú¤Ê¥»¥Ã¥·¥ç¥óID¤òÊÖ¤¹¡£
+ *                      ¼èÆÀ¤Ç¤­¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï false ¤òÊÖ¤¹¡£
+ */
+function lfMobileGetSessionId() {
+	// ¥Ñ¥é¥á¡¼¥¿¡¼¤«¤é¥»¥Ã¥·¥ç¥óID¤ò¼èÆÀ¤¹¤ë¡£
+	$sessionId = @$_POST[session_name()];
+	if (!isset($sessionId)) {
+		$sessionId = @$_GET[session_name()];
+	}
+	if (!isset($sessionId)) {
+		$sessionId = lfMobileGetExtSessionId();
+	}
+	if (!isset($sessionId)) {
+		return false;
+	}
+
+	// ¥»¥Ã¥·¥ç¥óID¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£
+	if (preg_match('/^[0-9a-zA-Z,-]{32,}$/', $sessionId) < 1) {
+		gfPrintLog("Invalid session id : sid=$sessionId");
+		return false;
+	}
+
+	// ¥»¥Ã¥·¥ç¥óID¤ÎÂ¸ºß¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£
+	if (sfSessRead($sessionId) === null) {
+		gfPrintLog("Non-existent session id : sid=$sessionId");
+		return false;
+	}
+
+	return session_id($sessionId);
+}
+
+/**
+ * ¥»¥Ã¥·¥ç¥ó¥Ç¡¼¥¿¤¬Í­¸ú¤«¤É¤¦¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£
+ *
+ * @return boolean ¥»¥Ã¥·¥ç¥ó¥Ç¡¼¥¿¤¬Í­¸ú¤Ê¾ì¹ç¤Ï true¡¢Ìµ¸ú¤Ê¾ì¹ç¤Ï false ¤òÊÖ¤¹¡£
+ */
+function lfMobileValidateSession() {
+	// ÇÛÎó mobile ¤¬ÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£
+	if (!is_array(@$_SESSION['mobile'])) {
+		return false;
+	}
+
+	// Í­¸ú´ü¸Â¤ò²á¤®¤Æ¤¤¤Ê¤¤¤«¤É¤¦¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£
+	if (intval(@$_SESSION['mobile']['expires']) < time()) {
+		gfPrintLog("Session expired at " .
+		           date('Y/m/d H:i:s', @$_SESSION['mobile']['expires']) .
+		           ' : sid=' . session_id());
+
+		return false;
+	}
+
+	// ·ÈÂÓÃ¼Ëö¤Îµ¡¼ï¤¬°ìÃ×¤¹¤ë¤«¤É¤¦¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£
+	$model = GC_MobileUserAgent::getModel();
+	if (@$_SESSION['mobile']['model'] != $model) {
+		gfPrintLog("User agent model mismatch : " .
+		           "\"$model\" != \"" . @$_SESSION['mobile']['model'] .
+		           '" (expected), sid=' . session_id());
+		return false;
+	}
+
+	return true;
+}
+
+/**
+ * ¥â¥Ð¥¤¥ë¥µ¥¤¥ÈÍÑ¤Î¥»¥Ã¥·¥ç¥ó´ØÏ¢¤Î½é´ü½èÍý¤ò¹Ô¤¦¡£
+ *
+ * @return void
+ */
+function lfMobileInitSession() {
+	// ¥»¥Ã¥·¥ç¥óID¤Î¼õ¤±ÅÏ¤·¤Ë¥¯¥Ã¥­¡¼¤ò»ÈÍÑ¤·¤Ê¤¤¡£
+	ini_set('session.use_cookies', '0');
+
+	// ¥Ñ¥é¥á¡¼¥¿¡¼¤«¤éÍ­¸ú¤Ê¥»¥Ã¥·¥ç¥óID¤ò¼èÆÀ¤¹¤ë¡£
+	$sessionId = lfMobileGetSessionId();
+
+	session_start();
+
+	// ¥»¥Ã¥·¥ç¥óID¤Þ¤¿¤Ï¥»¥Ã¥·¥ç¥ó¥Ç¡¼¥¿¤¬Ìµ¸ú¤Ê¾ì¹ç¤Ï¡¢¥»¥Ã¥·¥ç¥óID¤òºÆÀ¸À®
+	// ¤·¡¢¥»¥Ã¥·¥ç¥ó¥Ç¡¼¥¿¤ò½é´ü²½¤¹¤ë¡£
+	if ($sessionId === false || !lfMobileValidateSession()) {
+		session_regenerate_id();
+		$_SESSION = array('mobile' => array('model'    => GC_MobileUserAgent::getModel(),
+		                                    'phone_id' => GC_MobileUserAgent::getId(),
+		                                    'expires'  => time() + MOBILE_SESSION_LIFETIME));
+
+		// ¿·¤·¤¤¥»¥Ã¥·¥ç¥óID¤òÉÕ²Ã¤·¤Æ¥ê¥À¥¤¥ì¥¯¥È¤¹¤ë¡£
+		if ($_SERVER['REQUEST_METHOD'] == 'GET') {
+			// GET ¤Î¾ì¹ç¤ÏÆ±¤¸¥Ú¡¼¥¸¤Ë¥ê¥À¥¤¥ì¥¯¥È¤¹¤ë¡£
+			header('Location: ' . gfAddSessionId());
+		} else {
+			// GET °Ê³°¤Î¾ì¹ç¤Ï¥È¥Ã¥×¥Ú¡¼¥¸¤Ø¥ê¥À¥¤¥ì¥¯¥È¤¹¤ë¡£
+			header('Location: ' . URL_SITE_TOP . '?' . SID);
+		}
+		exit;
+	}
+
+	// ·ÈÂÓÃ¼ËöID¤ò¼èÆÀ¤Ç¤­¤¿¾ì¹ç¤Ï¥»¥Ã¥·¥ç¥ó¥Ç¡¼¥¿¤ËÊÝÂ¸¤¹¤ë¡£
+	$phoneId = GC_MobileUserAgent::getId();
+	if ($phoneId !== false) {
+		$_SESSION['mobile']['phone_id'] = $phoneId;
+	}
+
+	// ¥»¥Ã¥·¥ç¥ó¤ÎÍ­¸ú´ü¸Â¤ò¹¹¿·¤¹¤ë¡£
+	$_SESSION['mobile']['expires'] = time() + MOBILE_SESSION_LIFETIME;
+}
+
+/**
+ * ¥â¥Ð¥¤¥ë¥µ¥¤¥ÈÍÑ¤Î½ÐÎÏ¤Î½é´ü½èÍý¤ò¹Ô¤¦¡£
+ *
+ * ½ÐÎÏ¤ÎÎ®¤ì
+ * 1. Smarty
+ * 2. ÆâÉô¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤«¤é Shift JIS ¤ËÊÑ´¹¤¹¤ë¡£
+ * 3. Á´³Ñ¥«¥¿¥«¥Ê¤òÈ¾³Ñ¥«¥¿¥«¥Ê¤ËÊÑ´¹¤¹¤ë¡£
+ * 4. ²èÁüÍÑ¤Î¥¿¥°¤òÄ´À°¤¹¤ë¡£
+ * 5. ³¨Ê¸»ú¥¿¥°¤ò³¨Ê¸»ú¥³¡¼¥É¤ËÊÑ´¹¤¹¤ë¡£
+ * 6. ½ÐÎÏ
+ *
+ * @return void
+ */
+function lfMobileInitOutput() {
+	// Smarty ÍÑ¤Î¥Ç¥£¥ì¥¯¥È¥ê¡¼¤òºîÀ®¤¹¤ë¡£
+	@mkdir(COMPILE_DIR);
+
+	// ½ÐÎÏÍÑ¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ò Shift JIS ¤Ë¸ÇÄê¤¹¤ë¡£
+	mb_http_output('SJIS-win');
+
+	// ³¨Ê¸»ú¥¿¥°¤ò³¨Ê¸»ú¥³¡¼¥É¤ËÊÑ´¹¤¹¤ë¡£
+	ob_start(array('GC_MobileEmoji', 'handler'));
+
+	// Ã¼Ëö¤Ë¹ç¤ï¤»¤Æ²èÁü¥µ¥¤¥º¤òÊÑ´¹¤¹¤ë¡£
+	ob_start(array('GC_MobileImage', 'handler'));
+
+	// Á´³Ñ¥«¥¿¥«¥Ê¤òÈ¾³Ñ¥«¥¿¥«¥Ê¤ËÊÑ´¹¤¹¤ë¡£
+	ob_start(create_function('$buffer', 'return mb_convert_kana($buffer, "k", "SJIS-win");'));
+
+	// ÆâÉô¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤«¤é Shift JIS ¤ËÊÑ´¹¤¹¤ë¡£
+	ob_start('mb_output_handler');
+}
+
+/**
+ * ¥â¥Ð¥¤¥ë¥µ¥¤¥ÈÍÑ¤Î½é´ü½èÍý¤ò¹Ô¤¦¡£
+ *
+ * @return void
+ */
+function sfMobileInit() {
+	lfMobileInitInput();
+
+	if (basename(dirname($_SERVER['SCRIPT_NAME'])) != 'unsupported') {
+		lfMobileCheckCompatibility();
+		lfMobileInitSession();
+	}
+
+	lfMobileInitOutput();
+}
+
+/**
+ * LocationÅù¤Ç¥»¥Ã¥·¥ç¥óID¤òÉÕ²Ã¤¹¤ëÉ¬Í×¤¬¤¢¤ëURL¤Ë¥»¥Ã¥·¥ç¥óID¤òÉÕ²Ã¤¹¤ë¡£
+ *
+ * @return String
+ */
+function gfAddSessionId($url = null) {
+	$objURL = new Net_URL($url);
+	$objURL->addQueryString(session_name(), session_id());
+	return $objURL->getURL();
+}
+
+/**
+ * ¶õ¥á¡¼¥ëÍÑ¤Î¥È¡¼¥¯¥ó¤òÀ¸À®¤¹¤ë¡£
+ *
+ * @return string À¸À®¤·¤¿¥È¡¼¥¯¥ó¤òÊÖ¤¹¡£
+ */
+function lfGenerateKaraMailToken() {
+	$token_chars = '0123456789abcdefghijklmnopqrstuvwxyz';
+	$token_chars_length = strlen($token_chars);
+	$token_length = 10;
+	$token = '';
+
+	while ($token_length > 0) {
+		$token .= $token_chars{mt_rand(0, $token_chars_length - 1)};
+		--$token_length;
+	}
+
+	return $token;
+}
+
+/**
+ * ¶õ¥á¡¼¥ë´ÉÍý¥Æ¡¼¥Ö¥ë¤Ë¿·µ¬¥¨¥ó¥È¥ê¡¼¤òÅÐÏ¿¤·¡¢¥È¡¼¥¯¥ó¤òÊÖ¤¹¡£
+ *
+ * @param string $next_url ¶õ¥á¡¼¥ë¼õ¤±ÉÕ¤±¸å¤ËÁ«°Ü¤µ¤»¤ë¥Ú¡¼¥¸ (¥â¥Ð¥¤¥ë¥µ¥¤¥È¥È¥Ã¥×¤«¤é¤ÎÁêÂÐURL)
+ * @param string $session_id ¥»¥Ã¥·¥ç¥óID (¾ÊÎ¬¤·¤¿¾ì¹ç¤Ï¸½ºß¤Î¥»¥Ã¥·¥ç¥óID)
+ * @return string|false ¥È¡¼¥¯¥ó¤òÊÖ¤¹¡£¥¨¥é¡¼¤¬È¯À¸¤·¤¿¾ì¹ç¤Ïfalse¤òÊÖ¤¹¡£
+ */
+function gfPrepareKaraMail($next_url, $session_id = null) {
+	if (!isset($session_id)) {
+		$session_id = session_id();
+	}
+
+	$objQuery = new SC_Query;
+
+	// GC
+	$time = date('Y-m-d H:i:s', time() - MOBILE_SESSION_LIFETIME);
+	$objQuery->delete('dtb_mobile_kara_mail', 'email IS NULL AND create_date < ?', array($time));
+
+	$objQuery->delete('dtb_mobile_kara_mail', 'session_id = ?', array($session_id));
+
+	$arrValues = array('session_id' => $session_id,
+	                   'next_url'   => $next_url);
+
+	$try = 10;
+
+	while ($try > 0) {
+		$arrValues['token'] = $token = lfGenerateKaraMailToken();
+
+		$objQuery->insert('dtb_mobile_kara_mail', $arrValues);
+		$count = $objQuery->count('dtb_mobile_kara_mail', 'token = ?', array($token));
+
+		if ($count == 1) {
+			break;
+		}
+
+		$objQuery->delete('dtb_mobile_kara_mail', 'session_id = ?', array($session_id));
+		$token = false;
+		--$try;
+	}
+
+	return $token;
+}
+
+/**
+ * ¶õ¥á¡¼¥ë¤«¤é¼èÆÀ¤·¤¿¥á¡¼¥ë¥¢¥É¥ì¥¹¤ò¶õ¥á¡¼¥ë´ÉÍý¥Æ¡¼¥Ö¥ë¤ËÅÐÏ¿¤¹¤ë¡£
+ *
+ * @param string $token ¥È¡¼¥¯¥ó
+ * @param string $email ¥á¡¼¥ë¥¢¥É¥ì¥¹
+ * @return boolean À®¸ù¤·¤¿¾ì¹ç¤Ïtrue¡¢¼ºÇÔ¤·¤¿¾ì¹ç¤Ïfalse¤òÊÖ¤¹¡£
+ */
+function gfRegisterKaraMail($token, $email) {
+	$objQuery = new SC_Query;
+
+	// GC
+	$time = date('Y-m-d H:i:s', time() - MOBILE_SESSION_LIFETIME);
+	$objQuery->delete('dtb_mobile_kara_mail',
+	                  '(email IS NULL AND create_date < ?) OR (email IS NOT NULL AND receive_date < ?)',
+	                  array($time, $time));
+
+	$kara_mail_id = $objQuery->get('dtb_mobile_kara_mail', 'kara_mail_id', 'token = ?', array($token));
+	if (!isset($kara_mail_id)) {
+		return false;
+	}
+
+	$arrValues = array('email' => $email);
+	$arrRawValues = array('receive_date' => 'now()');
+	$objQuery->update('dtb_mobile_kara_mail', $arrValues, 'kara_mail_id = ?', array($kara_mail_id), $arrRawValues);
+
+	return true;
+}
+
+/**
+ * ¶õ¥á¡¼¥ë´ÉÍý¥Æ¡¼¥Ö¥ë¤«¤é¥È¡¼¥¯¥ó¤¬°ìÃ×¤¹¤ë¹Ô¤òºï½ü¤·¡¢
+ * ¼¡¤ËÁ«°Ü¤µ¤»¤ë¥Ú¡¼¥¸¤ÎURL¤òÊÖ¤¹¡£¡¡
+ *
+ * ¥á¡¼¥ë¥¢¥É¥ì¥¹¤Ï $_SESSION['mobile']['kara_mail_from'] ¤ËÅÐÏ¿¤µ¤ì¤ë¡£
+ *
+ * @param string $token ¥È¡¼¥¯¥ó
+ * @return string|false URL¤òÊÖ¤¹¡£¥¨¥é¡¼¤¬È¯À¸¤·¤¿¾ì¹ç¤Ïfalse¤òÊÖ¤¹¡£
+ */
+function gfFinishKaraMail($token) {
+	$objQuery = new SC_Query;
+
+	$arrRow = $objQuery->getrow('dtb_mobile_kara_mail', 'session_id, next_url, email',
+	                            'token = ? AND email IS NOT NULL AND receive_date >= ?',
+	                            array($token, date('Y-m-d H:i:s', time() - MOBILE_SESSION_LIFETIME)));
+	if (!isset($arrRow)) {
+		return false;
+	}
+
+	$objQuery->delete('dtb_mobile_kara_mail', 'token = ?', array($token));
+
+	list($session_id, $next_url, $email) = $arrRow;
+	$objURL = new Net_URL(SITE_URL . $next_url);
+	$objURL->addQueryString(session_name(), $session_id);
+	$url = $objURL->getURL();
+
+	session_id($session_id);
+	session_start();
+	$_SESSION['mobile']['kara_mail_from'] = $email;
+	session_write_close();
+
+	return $url;
+}
+
+/**
+ * ³°Éô¥µ¥¤¥ÈÏ¢·ÈÍÑ¤Ë¥»¥Ã¥·¥ç¥óID¤È¥Ñ¥é¥á¡¼¥¿¡¼¤ÎÁÈ¤ß¹ç¤ï¤»¤òÊÝÂ¸¤¹¤ë¡£
+ *
+ * @param string $param_key ¥Ñ¥é¥á¡¼¥¿¡¼Ì¾
+ * @param string $param_value ¥Ñ¥é¥á¡¼¥¿¡¼ÃÍ
+ * @param string $url URL
+ * @return void
+ */
+function sfMobileSetExtSessionId($param_key, $param_value, $url) {
+	$objQuery = new SC_Query;
+
+	// GC
+	$time = date('Y-m-d H:i:s', time() - MOBILE_SESSION_LIFETIME);
+	$objQuery->delete('dtb_mobile_ext_session_id', 'create_date < ?', array($time));
+
+	$arrValues = array('session_id'  => session_id(),
+	                   'param_key'   => $param_key,
+	                   'param_value' => $param_value,
+	                   'url'         => $url);
+
+	$objQuery->insert('dtb_mobile_ext_session_id', $arrValues);
+}
+
+/**
+ * ¥á¡¼¥ë¥¢¥É¥ì¥¹¤¬·ÈÂÓ¤Î¤â¤Î¤«¤É¤¦¤«¤òÈ½ÊÌ¤¹¤ë¡£
+ *
+ * @param string $address ¥á¡¼¥ë¥¢¥É¥ì¥¹
+ * @return boolean ·ÈÂÓ¤Î¥á¡¼¥ë¥¢¥É¥ì¥¹¤Î¾ì¹ç¤Ïtrue¡¢¤½¤ì°Ê³°¤Î¾ì¹ç¤Ïfalse¤òÊÖ¤¹¡£
+ */
+function gfIsMobileMailAddress($address) {
+	$arrMobileMailDomains = array('docomo.ne.jp', 'ezweb.ne.jp', 'softbank.ne.jp', 'vodafone.ne.jp');
+
+	if (defined('MOBILE_ADDITIONAL_MAIL_DOMAINS')) {
+		$arrMobileMailDomains = array_merge($arrMobileMailDomains, split('[ ,]+', MOBILE_ADDITIONAL_MAIL_DOMAINS));
+	}
+
+	foreach ($arrMobileMailDomains as $domain) {
+		$domain = str_replace('.', '\\.', $domain);
+		if (preg_match("/@([^@]+\\.)?$domain\$/", $address)) {
+			return true;
+		}
+	}
+
+	return false;
+}
+?>
Index: branches/dev/data/include/mobile_emoji_map_docomo.inc
===================================================================
--- branches/dev/data/include/mobile_emoji_map_docomo.inc	(revision 11460)
+++ branches/dev/data/include/mobile_emoji_map_docomo.inc	(revision 11460)
@@ -0,0 +1,260 @@
+<?php
+/**
+ * i¥â¡¼¥ÉÍÑ³¨Ê¸»ú¥³¡¼¥É (Shift JIS)
+ */
+
+return array(
+	'1'   => "\xf8\x9f",
+	'2'   => "\xf8\xa0",
+	'3'   => "\xf8\xa1",
+	'4'   => "\xf8\xa2",
+	'5'   => "\xf8\xa3",
+	'6'   => "\xf8\xa4",
+	'7'   => "\xf8\xa5",
+	'8'   => "\xf8\xa6",
+	'9'   => "\xf8\xa7",
+	'10'  => "\xf8\xa8",
+	'11'  => "\xf8\xa9",
+	'12'  => "\xf8\xaa",
+	'13'  => "\xf8\xab",
+	'14'  => "\xf8\xac",
+	'15'  => "\xf8\xad",
+	'16'  => "\xf8\xae",
+	'17'  => "\xf8\xaf",
+	'18'  => "\xf8\xb0",
+	'19'  => "\xf8\xb1",
+	'20'  => "\xf8\xb2",
+	'21'  => "\xf8\xb3",
+	'22'  => "\xf8\xb4",
+	'23'  => "\xf8\xb5",
+	'24'  => "\xf8\xb6",
+	'25'  => "\xf8\xb7",
+	'26'  => "\xf8\xb8",
+	'27'  => "\xf8\xb9",
+	'28'  => "\xf8\xba",
+	'29'  => "\xf8\xbb",
+	'30'  => "\xf8\xbc",
+	'31'  => "\xf8\xbd",
+	'32'  => "\xf8\xbe",
+	'33'  => "\xf8\xbf",
+	'34'  => "\xf8\xc0",
+	'35'  => "\xf8\xc1",
+	'36'  => "\xf8\xc2",
+	'37'  => "\xf8\xc3",
+	'38'  => "\xf8\xc4",
+	'39'  => "\xf8\xc5",
+	'40'  => "\xf8\xc6",
+	'41'  => "\xf8\xc7",
+	'42'  => "\xf8\xc8",
+	'43'  => "\xf8\xc9",
+	'44'  => "\xf8\xca",
+	'45'  => "\xf8\xcb",
+	'46'  => "\xf8\xcc",
+	'47'  => "\xf8\xcd",
+	'48'  => "\xf8\xce",
+	'49'  => "\xf8\xcf",
+	'50'  => "\xf8\xd0",
+	'51'  => "\xf8\xd1",
+	'52'  => "\xf8\xd2",
+	'53'  => "\xf8\xd3",
+	'54'  => "\xf8\xd4",
+	'55'  => "\xf8\xd5",
+	'56'  => "\xf8\xd6",
+	'57'  => "\xf8\xd7",
+	'58'  => "\xf8\xd8",
+	'59'  => "\xf8\xd9",
+	'60'  => "\xf8\xda",
+	'61'  => "\xf8\xdb",
+	'62'  => "\xf8\xdc",
+	'63'  => "\xf8\xdd",
+	'64'  => "\xf8\xde",
+	'65'  => "\xf8\xdf",
+	'66'  => "\xf8\xe0",
+	'67'  => "\xf8\xe1",
+	'68'  => "\xf8\xe2",
+	'69'  => "\xf8\xe3",
+	'70'  => "\xf8\xe4",
+	'71'  => "\xf8\xe5",
+	'72'  => "\xf8\xe6",
+	'73'  => "\xf8\xe7",
+	'74'  => "\xf8\xe8",
+	'75'  => "\xf8\xe9",
+	'76'  => "\xf8\xea",
+	'77'  => "\xf8\xeb",
+	'78'  => "\xf8\xec",
+	'79'  => "\xf8\xed",
+	'80'  => "\xf8\xee",
+	'81'  => "\xf8\xef",
+	'82'  => "\xf8\xf0",
+	'83'  => "\xf8\xf1",
+	'84'  => "\xf8\xf2",
+	'85'  => "\xf8\xf3",
+	'86'  => "\xf8\xf4",
+	'87'  => "\xf8\xf5",
+	'88'  => "\xf8\xf6",
+	'89'  => "\xf8\xf7",
+	'90'  => "\xf8\xf8",
+	'91'  => "\xf8\xf9",
+	'92'  => "\xf8\xfa",
+	'93'  => "\xf8\xfb",
+	'94'  => "\xf8\xfc",
+	'95'  => "\xf9\x40",
+	'96'  => "\xf9\x41",
+	'97'  => "\xf9\x42",
+	'98'  => "\xf9\x43",
+	'99'  => "\xf9\x44",
+	'100' => "\xf9\x45",
+	'101' => "\xf9\x46",
+	'102' => "\xf9\x47",
+	'103' => "\xf9\x48",
+	'104' => "\xf9\x49",
+	'105' => "\xf9\x72",
+	'106' => "\xf9\x73",
+	'107' => "\xf9\x74",
+	'108' => "\xf9\x75",
+	'109' => "\xf9\x76",
+	'110' => "\xf9\x77",
+	'111' => "\xf9\x78",
+	'112' => "\xf9\x79",
+	'113' => "\xf9\x7a",
+	'114' => "\xf9\x7b",
+	'115' => "\xf9\x7c",
+	'116' => "\xf9\x7d",
+	'117' => "\xf9\x7e",
+	'118' => "\xf9\x80",
+	'119' => "\xf9\x81",
+	'120' => "\xf9\x82",
+	'121' => "\xf9\x83",
+	'122' => "\xf9\x84",
+	'123' => "\xf9\x85",
+	'124' => "\xf9\x86",
+	'125' => "\xf9\x87",
+	'126' => "\xf9\x88",
+	'127' => "\xf9\x89",
+	'128' => "\xf9\x8a",
+	'129' => "\xf9\x8b",
+	'130' => "\xf9\x8c",
+	'131' => "\xf9\x8d",
+	'132' => "\xf9\x8e",
+	'133' => "\xf9\x8f",
+	'134' => "\xf9\x90",
+	'135' => "\xf9\xb0",
+	'136' => "\xf9\x91",
+	'137' => "\xf9\x92",
+	'138' => "\xf9\x93",
+	'139' => "\xf9\x94",
+	'140' => "\xf9\x95",
+	'141' => "\xf9\x96",
+	'142' => "\xf9\x97",
+	'143' => "\xf9\x98",
+	'144' => "\xf9\x99",
+	'145' => "\xf9\x9a",
+	'146' => "\xf9\x9b",
+	'147' => "\xf9\x9c",
+	'148' => "\xf9\x9d",
+	'149' => "\xf9\x9e",
+	'150' => "\xf9\x9f",
+	'151' => "\xf9\xa0",
+	'152' => "\xf9\xa1",
+	'153' => "\xf9\xa2",
+	'154' => "\xf9\xa3",
+	'155' => "\xf9\xa4",
+	'156' => "\xf9\xa5",
+	'157' => "\xf9\xa6",
+	'158' => "\xf9\xa7",
+	'159' => "\xf9\xa8",
+	'160' => "\xf9\xa9",
+	'161' => "\xf9\xaa",
+	'162' => "\xf9\xab",
+	'163' => "\xf9\xac",
+	'164' => "\xf9\xad",
+	'165' => "\xf9\xae",
+	'166' => "\xf9\xaf",
+	'167' => "\xf9\x50",
+	'168' => "\xf9\x51",
+	'169' => "\xf9\x52",
+	'170' => "\xf9\x55",
+	'171' => "\xf9\x56",
+	'172' => "\xf9\x57",
+	'173' => "\xf9\x5b",
+	'174' => "\xf9\x5c",
+	'175' => "\xf9\x5d",
+	'176' => "\xf9\x5e",
+	'e1'  => "\xf9\xb1",
+	'e2'  => "\xf9\xb2",
+	'e3'  => "\xf9\xb3",
+	'e4'  => "\xf9\xb4",
+	'e5'  => "\xf9\xb5",
+	'e6'  => "\xf9\xb6",
+	'e7'  => "\xf9\xb7",
+	'e8'  => "\xf9\xb8",
+	'e9'  => "\xf9\xb9",
+	'e10' => "\xf9\xba",
+	'e11' => "\xf9\xbb",
+	'e12' => "\xf9\xbc",
+	'e13' => "\xf9\xbd",
+	'e14' => "\xf9\xbe",
+	'e15' => "\xf9\xbf",
+	'e16' => "\xf9\xc0",
+	'e17' => "\xf9\xc1",
+	'e18' => "\xf9\xc2",
+	'e19' => "\xf9\xc3",
+	'e20' => "\xf9\xc4",
+	'e21' => "\xf9\xc5",
+	'e22' => "\xf9\xc6",
+	'e23' => "\xf9\xc7",
+	'e24' => "\xf9\xc8",
+	'e25' => "\xf9\xc9",
+	'e26' => "\xf9\xca",
+	'e27' => "\xf9\xcb",
+	'e28' => "\xf9\xcc",
+	'e29' => "\xf9\xcd",
+	'e30' => "\xf9\xce",
+	'e31' => "\xf9\xcf",
+	'e32' => "\xf9\xd0",
+	'e33' => "\xf9\xd1",
+	'e34' => "\xf9\xd2",
+	'e35' => "\xf9\xd3",
+	'e36' => "\xf9\xd4",
+	'e37' => "\xf9\xd5",
+	'e38' => "\xf9\xd6",
+	'e39' => "\xf9\xd7",
+	'e40' => "\xf9\xd8",
+	'e41' => "\xf9\xd9",
+	'e42' => "\xf9\xda",
+	'e43' => "\xf9\xdb",
+	'e44' => "\xf9\xdc",
+	'e45' => "\xf9\xdd",
+	'e46' => "\xf9\xde",
+	'e47' => "\xf9\xdf",
+	'e48' => "\xf9\xe0",
+	'e49' => "\xf9\xe1",
+	'e50' => "\xf9\xe2",
+	'e51' => "\xf9\xe3",
+	'e52' => "\xf9\xe4",
+	'e53' => "\xf9\xe5",
+	'e54' => "\xf9\xe6",
+	'e55' => "\xf9\xe7",
+	'e56' => "\xf9\xe8",
+	'e57' => "\xf9\xe9",
+	'e58' => "\xf9\xea",
+	'e59' => "\xf9\xeb",
+	'e60' => "\xf9\xec",
+	'e61' => "\xf9\xed",
+	'e62' => "\xf9\xee",
+	'e63' => "\xf9\xef",
+	'e64' => "\xf9\xf0",
+	'e65' => "\xf9\xf1",
+	'e66' => "\xf9\xf2",
+	'e67' => "\xf9\xf3",
+	'e68' => "\xf9\xf4",
+	'e69' => "\xf9\xf5",
+	'e70' => "\xf9\xf6",
+	'e71' => "\xf9\xf7",
+	'e72' => "\xf9\xf8",
+	'e73' => "\xf9\xf9",
+	'e74' => "\xf9\xfa",
+	'e75' => "\xf9\xfb",
+	'e76' => "\xf9\xfc"
+);
+?>
Index: branches/dev/data/include/mobile_image_map_docomo.csv
===================================================================
--- branches/dev/data/include/mobile_image_map_docomo.csv	(revision 11460)
+++ branches/dev/data/include/mobile_image_map_docomo.csv	(revision 11460)
@@ -0,0 +1,226 @@
+D209i(D209i_B),D209i,5000,N,96,96,gif,3000,N
+D209i(D209i_A),D209i/c10,10000,N,96,96,gif,8000,N
+D2101V,D2101V,100000,Y,120,120,jpg,20000,Y
+D210i,D210i,10000,N,96,96,gif,8000,N
+D211i,D211i,10000,Y,100,100,gif,8000,Y
+D251i,D251i,10000,Y,132,132,jpg,8000,Y
+D251iS,D251iS,10000,Y,132,132,jpg,8000,Y
+D252i,D252i,10000,Y,176,176,jpg,8000,Y
+D253i,D253i,10000,Y,176,176,jpg,8000,Y
+D253iWM(MusicPORTER),D253iWM,10000,Y,220,216,jpg,8000,Y
+D501i,D501i,5000,N,96,96,gif,3000,N
+D502i(D502i_B),D502i,5000,N,96,96,gif,3000,N
+D502i(D502i_A),D502i/c10,10000,N,96,96,gif,5000,N
+D503i,D503i,10000,Y,132,132,gif,8000,Y
+D503iS,D503iS,10000,Y,132,132,gif,8000,Y
+D504i,D504i,10000,Y,132,132,jpg,8000,Y
+D505i,D505i,20000,Y,240,240,jpg,18000,Y
+D505iS,D505iS,20000,Y,240,240,jpg,18000,Y
+D506i,D506i,20000,Y,240,240,jpg,18000,Y
+D701i,D701i,100000,Y,230,224,jpg,20000,Y
+D701iWM(Music Porter II),D701iWM,100000,Y,230,224,jpg,20000,Y
+D702i,D702i,100000,Y,230,224,jpg,20000,Y
+D702iBCL,D702iBCL,100000,Y,230,224,jpg,20000,Y
+D702iF,D702iF,100000,Y,230,224,jpg,20000,Y
+D851iWM(Music Porter X),D851iWM,100000,Y,230,224,jpg,20000,Y
+D900i,D900i,100000,Y,240,240,jpg,20000,Y
+D901i,D901i,100000,Y,230,224,jpg,20000,Y
+D901iS,D901iS,100000,Y,230,224,jpg,20000,Y
+D902i,D902i,100000,Y,230,224,jpg,20000,Y
+D902iS,D902iS,100000,Y,230,224,jpg,20000,Y
+D903i,D903i,100000,Y,230,224,jpg,20000,Y
+ER209i(ER209i_B),ER209i,5000,N,120,120,gif,3000,N
+ER209i(ER209i_A),ER209i/c15,15000,N,120,120,gif,8000,N
+F2051,F2051,100000,Y,176,176,jpg,20000,Y
+F209i(F209i_B),F209i,5000,N,96,96,gif,3000,N
+F209i(F209i_A),F209i/c10,10000,N,96,96,gif,8000,N
+F2102V,F2102V,100000,Y,176,176,jpg,20000,Y
+F210i,F210i,10000,N,96,96,gif,8000,N
+F211i,F211i,10000,Y,96,96,gif,8000,Y
+F212i,F212i,10000,Y,132,132,jpg,8000,Y
+F251i,F251i,10000,Y,132,132,jpg,8000,Y
+F501i,F501i,5000,N,112,112,gif,3000,N
+F502i(F502i_B),F502i,5000,N,96,96,gif,3000,N
+F502i(F502i_A),F502i/c10,10000,N,96,96,gif,8000,N
+F502it(F502it_B),F502it,5000,N,96,96,gif,3000,N
+F502it(F502it_A),F502it/c10,10000,N,96,96,gif,8000,N
+F503i,F503i,10000,Y,120,120,gif,8000,Y
+F503iS,F503iS,10000,Y,120,120,gif,8000,Y
+F504i,F504i,10000,Y,132,132,jpg,8000,Y
+F504iS,F504iS,10000,Y,132,132,jpg,8000,Y
+F505i,F505i,20000,Y,240,240,jpg,18000,Y
+F505iGPS,F505iGPS,20000,Y,240,240,jpg,18000,Y
+F506i,F506i,20000,Y,240,240,jpg,18000,Y
+F661i,F661i,10000,Y,132,132,jpg,8000,Y
+F671i,F671i,10000,N,120,120,gif,8000,N
+F671iS,F671iS,10000,Y,160,160,jpg,8000,Y
+F672i,F672i,10000,Y,160,160,jpg,8000,Y
+F700i,F700i,100000,Y,230,224,jpg,20000,Y
+F700iS,F700iS,100000,Y,230,224,jpg,20000,Y
+F702iD,F702iD,100000,Y,230,224,jpg,20000,Y
+F880iES(FOMA¤é¤¯¤é¤¯¥Û¥ó),F880iES,100000,Y,240,240,jpg,20000,Y
+F881iES(FOMA¤é¤¯¤é¤¯¥Û¥óII),F881iES,100000,Y,240,240,jpg,20000,Y
+F882iES,F882iES,100000,Y,240,240,jpg,20000,Y
+F900i,F900i,100000,Y,230,224,jpg,20000,Y
+F900iC,F900iC,100000,Y,230,224,jpg,20000,Y
+F900iT,F900iT,100000,Y,230,224,jpg,20000,Y
+F901iC,F901iC,100000,Y,230,224,jpg,20000,Y
+F901iS,F901iS,100000,Y,230,224,jpg,20000,Y
+F902i,F902i,100000,Y,230,224,jpg,20000,Y
+F902iS,F902iS,100000,Y,230,224,jpg,20000,Y
+F903i,F903i,100000,Y,230,224,jpg,20000,Y
+ISIM101,ISIM101,-,-,240,240,jpg,20000,N
+ISIM60,ISIM60,-,-,176,176,jpg,20000,N
+ISIM70,ISIM70,-,-,240,240,jpg,20000,N
+KO209i,KO209i,5000,N,96,96,gif,3000,N
+KO210i(KO210i_B),KO210i,5000,N,96,96,gif,3000,N
+KO210i(KO210i_A),KO210i/c10,10000,N,96,96,gif,8000,N
+L600i,L600i,100000,Y,176,176,jpg,20000,Y
+L601i (SIMPURE L1),L601i,100000,Y,176,176,jpg,20000,Y
+SH2101V,MST_v_SH2101V,100000,Y,240,240,jpg,20000,Y
+N2001,N2001,10000,Y,118,112,jpg,8000,Y
+N2002,N2002,100000,Y,118,112,jpg,20000,Y
+N2051,N2051,100000,Y,176,176,jpg,20000,Y
+N209i(N209i_B),N209i,5000,N,108,108,gif,3000,N
+N209i(N209i_A),N209i/c08,8000,N,108,108,gif,6000,N
+N2102V,N2102V,100000,Y,176,176,jpg,20000,Y
+N210i(N210i_B),N210i,5000,N,118,112,gif,3000,N
+N210i(N210i_A),N210i/c10,10000,N,118,112,gif,8000,N
+N211i,N211i,10000,Y,118,112,jpg,8000,Y
+N211iS,N211iS,10000,Y,118,112,jpg,8000,Y
+N251i,N251i,10000,Y,132,132,jpg,8000,Y
+N251iS,N251iS,10000,Y,132,132,jpg,8000,Y
+N252i,N252i,10000,Y,132,132,jpg,8000,Y
+N253i,N253i,10000,Y,160,160,jpg,8000,Y
+N2701(N2701_B),N2701,100000,Y,176,176,jpg,20000,Y
+N2701(N2701_A),N2701/c10,10000,Y,176,176,jpg,8000,Y
+N501i,N501i,5000,N,118,112,gif,3000,N
+N502i(N502i_B),N502i,5000,N,118,112,gif,3000,N
+N502i(N502i_A),N502i/c08,8000,N,118,112,gif,6000,N
+N502it(N502it_B),N502it,5000,N,118,112,gif,3000,N
+N502it(N502it_A),N502it/c10,10000,N,118,112,gif,8000,N
+N503i,N503i,10000,Y,118,112,jpg,8000,Y
+N503iS,N503iS,10000,Y,118,112,jpg,8000,Y
+N504i,N504i,10000,Y,160,160,jpg,8000,Y
+N504iS,N504iS,10000,Y,160,160,jpg,8000,Y
+N505i,N505i,20000,Y,240,240,jpg,18000,Y
+N505iS,N505iS,20000,Y,240,240,jpg,18000,Y
+N506i,N506i,20000,Y,240,240,jpg,18000,Y
+N506iS,N506iS,20000,Y,240,240,jpg,18000,Y
+N506iSII(N506iS2),N506iS2,20000,Y,240,240,jpg,18000,Y
+N600i,N600i,100000,Y,176,176,jpg,20000,Y
+N601i,N601i,100000,Y,240,240,jpg,20000,Y
+N700i,N700i,100000,Y,240,240,jpg,20000,Y
+N701i,N701i,100000,Y,240,240,jpg,20000,Y
+N701iECO,N701iECO,100000,Y,240,240,jpg,20000,Y
+N702iD,N702iD,100000,Y,240,240,jpg,20000,Y
+N702iS,N702iS,100000,Y,240,240,jpg,20000,Y
+N821i(N821i_B),N821i,5000,N,118,112,gif,3000,N
+N821i(N821i_A),N821i/c08,8000,N,118,112,gif,6000,N
+N900i,N900i,100000,Y,240,240,jpg,20000,Y
+N900iG,N900iG,100000,Y,240,240,jpg,20000,Y
+N900iL,N900iL,100000,Y,240,240,jpg,20000,Y
+N900iS,N900iS,100000,Y,240,240,jpg,20000,Y
+N901iC,N901iC,100000,Y,240,240,jpg,20000,Y
+N901iS,N901iS,100000,Y,240,240,jpg,20000,Y
+N902i,N902i,100000,Y,240,240,jpg,20000,Y
+N902iS,N902iS,100000,Y,240,240,jpg,20000,Y
+N902iX(HIGH SPEED),N902iX,100000,Y,240,240,jpg,20000,Y
+N903i,N903i,100000,Y,240,240,jpg,20000,Y
+NM502i(NM502i_B),NM502i,5000,N,111,104,gif,3000,N
+NM502i(NM502i_A),NM502i/c10,10000,N,111,104,gif,8000,N
+NM850iG,NM850iG,100000,Y,176,176,jpg,20000,Y
+P2002,P2002,100000,Y,118,112,jpg,20000,Y
+P209i(P209i_B),P209i,5000,N,96,96,gif,3000,N
+P209i(P209i_A),P209i/c10,10000,N,96,96,gif,8000,N
+P209iS(P209iS_B),P209is,5000,N,96,96,gif,3000,N
+P209iS(P209iS_A),P209is/c10,10000,N,96,96,gif,8000,N
+P2101V,P2101V,100000,Y,163,160,jpg,20000,Y
+P2102V,P2102V,100000,Y,176,176,jpg,20000,Y
+P210i(P210i_B),P210i,5000,N,96,96,gif,3000,N
+P210i(P210i_A),P210i/c10,10000,N,96,96,gif,8000,N
+P211i,P211i,10000,Y,120,120,jpg,8000,Y
+P211iS,P211iS,10000,Y,120,120,jpg,8000,Y
+P213i(prosolid),P213i,10000,Y,132,132,jpg,8000,Y
+P251iS,P251iS,10000,Y,132,132,jpg,8000,Y
+P252i,P252i,10000,Y,132,132,jpg,8000,Y
+P252iS,P252iS,10000,Y,132,132,jpg,8000,Y
+P253i,P253i,10000,Y,132,132,jpg,8000,Y
+P253iS(Lechiffon),P253iS,10000,Y,132,132,jpg,8000,Y
+P501i,P501i,5000,N,96,96,gif,3000,N
+P502i(P502i_B),P502i,5000,N,96,96,gif,3000,N
+P502i(P502i_A),P502i/c10,10000,N,96,96,gif,8000,N
+P503i,P503i,10000,Y,120,120,jpg,8000,Y
+P503iS,P503iS,10000,Y,120,120,jpg,8000,Y
+P504i,P504i,10000,Y,132,132,jpg,8000,Y
+P504iS,P504iS,10000,Y,132,132,jpg,8000,Y
+P505i,P505i,20000,Y,240,240,jpg,18000,Y
+P505iS,P505iS,20000,Y,240,240,jpg,18000,Y
+P506iC,P506iC,20000,Y,240,240,jpg,18000,Y
+P651ps(P651ps_B),P651ps,500096,96,gif,3000,N
+P651ps(P651ps_A),P651ps/c10,1000096,96,gif,3000,N
+P700i,P700i,100000,Y,240,240,jpg,20000,Y
+P701iD,P701iD,100000,Y,240,240,jpg,20000,Y
+P702i,P702i,100000,Y,240,240,jpg,20000,Y
+P702iD,P702iD,100000,Y,240,240,jpg,20000,Y
+P821i(P821i_B),P821i,5000,N,118,112,gif,3000,N
+P821i(P821i_A),P821i/c08,8000,N,118,112,gif,6000,N
+P851i(prosolidII),P851i,100000,Y,240,240,jpg,20000,Y
+P900i,P900i,100000,Y,240,240,jpg,20000,Y
+P900iV,P900iV,100000,Y,240,240,jpg,20000,Y
+P901i,P901i,100000,Y,240,240,jpg,20000,Y
+P901iS,P901iS,100000,Y,240,240,jpg,20000,Y
+P901iTV,P901iTV,100000,Y,240,240,jpg,20000,Y
+P902i,P902i,100000,Y,240,240,jpg,20000,Y
+P902iS,P902iS,100000,Y,240,240,jpg,20000,Y
+P903i,P903i,100000,Y,240,240,jpg,20000,Y
+R209i,R209i,5000,N,96,96,gif,3000,N
+R211i,R211i,10000,Y,96,96,jpg,8000,Y
+R691i,R691i,5000,N,96,96,gif,3000,N
+R692i,R692i,10000,Y,96,96,jpg,8000,Y
+SA700iS,SA700iS,100000,Y,240,240,jpg,20000,Y
+SA702i,SA702i,100000,Y,240,240,jpg,20000,Y
+SA800i,SA800i,100000,Y,240,240,jpg,20000,Y
+SH251i,SH251i,10000,N,120,120,jpg,8000,N
+SH251iS,SH251iS,10000,N,176,176,jpg,8000,N
+SH252i,SH252i,20000,Y,240,240,jpg,18000,Y
+SH505i,SH505i,20000,Y,240,240,jpg,18000,Y
+SH505i,SH505i2,20000,Y,240,240,jpg,18000,Y
+SH505iS,SH505iS,20000,Y,240,240,jpg,18000,Y
+SH506iC,SH506iC,20000,Y,240,240,jpg,18000,Y
+SH700i,SH700i,100000,Y,230,230,jpg,20000,Y
+SH700iS,SH700iS,100000,Y,240,240,jpg,20000,Y
+SH702iD,SH702iD,100000,Y,240,240,jpg,20000,Y
+SH702iS,SH702iS,100000,Y,240,240,jpg,20000,Y
+SH821i(SH821i_B),SH821i,5000,N,96,96,gif,3000,N
+SH821i(SH821i_A),SH821i/c10,10000,N,96,96,gif,8000,N
+SH851i(DOLCE),SH851i,100000,Y,240,240,jpg,20000,Y
+SH900i,SH900i,100000,Y,240,240,jpg,20000,Y
+SH901iC,SH901iC,100000,Y,240,240,jpg,20000,Y
+SH901iS,SH901iS,100000,Y,240,240,jpg,20000,Y
+SH902i,SH902i,100000,Y,240,240,jpg,20000,Y
+SH902iS,SH902iS,100000,Y,240,240,jpg,20000,Y
+SH902iSL,SH902iSL,100000,Y,240,240,jpg,20000,Y
+SH903i,SH903i,100000,Y,240,240,jpg,20000,Y
+SO210i,SO210i,10000,N,120,120,gif,8000,N
+SO211i,SO211i,10000,Y,120,120,jpg,8000,Y
+SO212i,SO212i,10000,Y,120,120,jpg,8000,Y
+SO213i(premini),SO213i,10000,Y,120,120,jpg,8000,Y
+SO213iS(premini-S),SO213iS,10000,Y,120,120,jpg,8000,Y
+SO213iWR(RADIDEN),SO213iWR,10000,Y,120,120,jpg,8000,Y
+SO502i,SO502i,5000,N,120,120,gif,3000,N
+SO502iWM,SO502iWM,10000,N,120,120,gif,8000,N
+SO503i,SO503i,10000,Y,120,120,gif,8000,Y
+SO503iS,SO503iS,10000,Y,120,120,gif,8000,Y
+SO504i,SO504i,10000,Y,120,120,jpg,8000,Y
+SO505i,SO505i,20000,Y,256,256,jpg,18000,Y
+SO505iS,SO505iS,20000,Y,240,240,jpg,18000,Y
+SO506i(premini-II),SO506i,20000,Y,240,240,jpg,18000,Y
+SO506iC,SO506iC,20000,Y,240,240,jpg,18000,Y
+SO506iS(premini-IIS),SO506iS,20000,Y,240,240,jpg,18000,Y
+SO702i,SO702i,100000,Y,240,240,jpg,20000,Y
+SO902i,SO902i,100000,Y,240,240,jpg,20000,Y
+SO902iWP+,SO902iWP+,100000,Y,240,240,jpg,20000,Y
+SO903i,SO903i,100000,Y,240,240,jpg,20000,Y
+T2101V,T2101V,100000,Y,176,176,jpg,20000,Y
+*,*,100000,Y,240,240,jpg,20000,Y
Index: branches/dev/data/include/image_converter.inc
===================================================================
--- branches/dev/data/include/image_converter.inc	(revision 11460)
+++ branches/dev/data/include/image_converter.inc	(revision 11460)
@@ -0,0 +1,144 @@
+<?php
+/**
+ * ²èÁü¥Õ¥¡¥¤¥ë¤ÎÊÑ´¹¤ò¹Ô¤¦
+ */
+class ImageConverter {
+	var $outputImageDir;		// ÊÑ´¹¸å¤Î²èÁü¤ÎÊÝÂ¸Àè
+	var $outputImageType;		// ÊÑ´¹¸å¤Î²èÁü¤Î·Á¼°
+	var $outputImageWidth;		// ÊÑ´¹¸å¤Î²èÁü¤Î²£Éý
+	var $outputImageHeight;		// ÊÑ´¹¸å¤Î²èÁü¤Î¹â¤µ
+	var $outputImageFileSize;	// ÊÑ´¹¸å¤Î²èÁü¤Î¥Õ¥¡¥¤¥ë¥µ¥¤¥º
+
+	// ¥³¥ó¥¹¥È¥é¥¯¥¿
+	function ImageConverter() {
+		$this->outputImageDir    = realpath(realpath(dirname(__FILE__)));
+		$this->outputImageType   = 'jpeg';
+		$this->outputImageWidth  = 320;
+		$this->outputImageHeight = NULL;
+		$this->outputFileSize    = 20000;
+	}
+
+	// ÊÑ´¹¼Â¹Ô
+	function execute($inputImagePath) {
+		// Á°½èÍý
+		$filestat         = @stat($inputImagePath);
+		$imagesize        = getimagesize($inputImagePath);
+		$inputImageWidth  = $imagesize[0];
+		$inputImageHeight = $imagesize[1];
+		$inputImageType   = $imagesize[2];
+		$outputImageName  = sha1($inputImagePath . '_' . $this->outputImageWidth . '_' . $this->outputFileSize . '_' . $filestat['mtime']) . '.' . $this->outputImageType;
+		$outputImagePath  = $this->outputImageDir . '/' . $outputImageName;
+
+		// ÊÑ´¹¸å¤Î²èÁü¤Î¹â¤µ¤¬»ØÄê¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢ÊÑ´¹¸å¤Î²èÁü¤Î²£Éý¤«¤éµá¤á¤ë
+		if (is_null($this->outputImageHeight)) {
+			$this->outputImageHeight = $inputImageHeight * ($this->outputImageWidth / $inputImageWidth);
+		}
+
+		// ¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹¤ë¤«³ÎÇ§¤·¡¢Â¸ºß¤·¤Ê¤¤¾ì¹ç¤Î¤ßºîÀ®¤¹¤ë
+		if (file_exists($outputImagePath)) {
+			$info['convert'] = FALSE;
+		} else {
+			// ¸µ¥Õ¥¡¥¤¥ëºîÀ®
+			switch($inputImageType) {
+			case 1:
+				// gif
+				$tempImage = imagecreatefromgif($inputImagePath);
+				break;
+			case 2:
+				// jpeg
+				$tempImage = imagecreatefromjpeg($inputImagePath);
+				break;
+			case 3:
+				// png
+				$tempImage = imagecreatefrompng($inputImagePath);
+				break;
+			case 6:
+				// bmp
+				$tempImage = imagecreatefromwbmp($inputImagePath);
+				break;
+			}
+
+			if (!$tempImage) {
+				return false;
+			}
+
+			$scale = 1.0;
+			$outputImagePathTemp = $outputImagePath . '.tmp-' . rand();
+			do {
+				// ¶õ¥Õ¥¡¥¤¥ëºîÀ®
+				$outputImage = ImageCreateTruecolor($this->outputImageWidth * $scale, $this->outputImageHeight * $scale);
+				ImageCopyResampled($outputImage, $tempImage, 0, 0, 0, 0, $this->outputImageWidth * $scale, $this->outputImageHeight * $scale, $inputImageWidth, $inputImageHeight);
+
+				// ¥Õ¥¡¥¤¥ë½ÐÎÏ
+
+				@unlink($outputImagePathTemp);
+
+				switch ($this->outputImageType) {
+				case 1:
+				case 'gif':
+					imagegif($outputImage, $outputImagePathTemp);
+					break;
+				default:
+				case 2:
+				case 'jpg':
+				case 'jpeg':
+					$quality = 75;
+					// É½¼¨²ÄÇ½¤Ê¥Õ¥¡¥¤¥ë¥µ¥¤¥º°Ê²¼¤Ë¤Ê¤ë¤Þ¤Ç¡¢10%¤º¤Ä¥¯¥ª¥ê¥Æ¥£¤òÄ´À°¤¹¤ë
+					do {
+						@unlink($outputImagePathTemp);
+						imagejpeg($outputImage, $outputImagePathTemp, $quality);
+						$quality -= 10;
+						clearstatcache();
+					} while (filesize($outputImagePathTemp) > $this->outputFileSize && $quality > 0);
+					break;
+				case 3:
+				case 'png':
+					imagepng($outputImage, $outputImagePathTemp);
+					break;
+				case 6:
+				case 'bmp':
+					imagewbmp($outputImage, $outputImagePathTemp);
+					break;
+				}
+
+				// ¥á¥â¥ê³«Êü
+				imagedestroy($outputImage);
+
+				$scale -= 0.1;
+				clearstatcache();
+			} while (filesize($outputImagePathTemp) > $this->outputFileSize && $scale >= 0.5);
+
+			rename($outputImagePathTemp, $outputImagePath);
+
+			// ¥á¥â¥ê³«Êü
+			imagedestroy($tempImage);
+
+			$info['convert'] = TRUE;
+		}
+
+		$info['outputImagePath']  = $outputImagePath;
+		$info['outputImageName']  = $outputImageName;
+		return $info;
+
+	}
+
+	// Setter
+	function setOutputDir($outputDir)   { $this->outputImageDir   = $outputDir;  }
+	function setImageType($imageType)   { $this->outputImageType  = $imageType;  }
+	function setImageWidth($imageWidth) { $this->outputImageWidth = $imageWidth; }
+	function setFileSize($fileSize)     { $this->outputFileSize   = $fileSize;   }
+	// function setImageHeight($imageHeight) { $this->outputImageHeight = $imageHeight; }
+
+	// Getter
+	function getOutputDir()   { return $this->outputDir;         }
+	function getImageType()   { return $this->outputImageType;   }
+	function getImageWidth()  { return $this->outputImageWidth;  }
+	function getImageHeight() { return $this->outputImageHeight; }
+
+	/*
+	 * PrivateMethod
+	 */
+	function beforeExecute() {
+	}
+}
+?>
Index: branches/dev/data/script/receive_kara_mail.php
===================================================================
--- branches/dev/data/script/receive_kara_mail.php	(revision 11460)
+++ branches/dev/data/script/receive_kara_mail.php	(revision 11460)
@@ -0,0 +1,38 @@
+#!/usr/bin/env php
+<?php
+/**
+ * ¥â¥Ð¥¤¥ë¥µ¥¤¥È/¶õ¥á¡¼¥ë¼õ¤±ÉÕ¤±¥¹¥¯¥ê¥×¥È
+ */
+
+require_once dirname(__FILE__) . '/../conf/mobile.conf';
+require_once DATA_PATH . '/include/php_ini.inc';
+require_once DATA_PATH . '/include/mobile.inc';
+require_once DATA_PATH . '/lib/slib.php';
+require_once DATA_PATH . '/class/GC_MobileKaraMail.php';
+require_once DATA_PATH . '/class/GC_SendMail.php';
+
+$CONF = sf_getBasisData();
+
+$objMail =& GC_MobileKaraMail::factory();
+$objMail->parse();
+$token = $objMail->getToken();
+$sender = $objMail->getSender();
+
+if (gfRegisterKaraMail($token, $sender)) {
+	$subject = '¶õ¥á¡¼¥ë¤ò¼õ¤±ÉÕ¤±¤Þ¤·¤¿';
+	$reply_body = "²¼µ­¤Î¥ê¥ó¥¯¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¡¢¼¡¤Î¼êÂ³¤­¤Ë¿Ê¤ó¤Ç¤¯¤À¤µ¤¤¡£\n" .
+	              SITE_URL . "redirect.php?token=$token";
+} else {
+	$subject = '¶õ¥á¡¼¥ë¼êÂ³¤­¤¬¼ºÇÔ¤·¤Þ¤·¤¿';
+	$reply_body = "»þ´ÖÀÚ¤ì¤Ê¤É¤Ë¤è¤ê¡¢¶õ¥á¡¼¥ë¼êÂ³¤­¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿¡£\n" .
+	              "¥µ¥¤¥È¤Î¥È¥Ã¥×¤ØÌá¤Ã¤Æ¤ä¤êÄ¾¤·¤Æ¤¯¤À¤µ¤¤¡£\n" .
+	              SITE_URL . "\n";
+}
+
+$objReply = new GC_SendMail;
+$objReply->setItem($sender, "¡Ú{$CONF["shop_name"]}¡Û$subject", $reply_body,
+                   $CONF['email03'], $CONF['shop_name'], $CONF['email03'], $CONF['email04']);
+$objReply->sendMail();
+
+$objMail->success();
+?>
Index: branches/dev/data/script/send_kara_mail.php
===================================================================
--- branches/dev/data/script/send_kara_mail.php	(revision 11460)
+++ branches/dev/data/script/send_kara_mail.php	(revision 11460)
@@ -0,0 +1,26 @@
+#!/usr/bin/env php
+<?php
+/**
+ * ¥â¥Ð¥¤¥ë¥µ¥¤¥È/¶õ¥á¡¼¥ë¥Æ¥¹¥ÈÁ÷¿®¥¹¥¯¥ê¥×¥È
+ */
+
+require_once dirname(__FILE__) . '/../conf/mobile.conf';
+
+if ($argc != 4) {
+	echo "Usage: $argv[0] sender command token\n";
+	exit(1);
+}
+
+$receive_kara_mail = dirname(__FILE__) . '/receive_kara_mail.php';
+$from = $argv[1];
+$command = $argv[2];
+$token = $argv[3];
+$to = MOBILE_KARA_MAIL_ADDRESS_USER . MOBILE_KARA_MAIL_ADDRESS_DELIMITER . $command . '_' . $token . '@' . MOBILE_KARA_MAIL_ADDRESS_DOMAIN;
+
+$pipe = popen($receive_kara_mail, 'w');
+fwrite($pipe, "From $from " . date('D M j H:i:s Y') . "\n");
+fwrite($pipe, "From: $from\n");
+fwrite($pipe, "To: $to\n");
+fwrite($pipe, "\n");
+pclose($pipe);
+?>
Index: branches/dev/data/class/SC_FormParam.php
===================================================================
--- branches/dev/data/class/SC_FormParam.php	(revision 17)
+++ branches/dev/data/class/SC_FormParam.php	(revision 11460)
@@ -155,4 +155,5 @@
 				case 'DOMAIN_CHECK':
 				case 'FILE_NAME_CHECK':
+				case 'MOBILE_EMAIL_CHECK':
 				
 					if(!is_array($this->param[$cnt])) {
Index: branches/dev/data/class/SC_CheckError.php
===================================================================
--- branches/dev/data/class/SC_CheckError.php	(revision 17)
+++ branches/dev/data/class/SC_CheckError.php	(revision 11460)
@@ -378,5 +378,5 @@
 			return;
 		}
-		if(strlen($this->arrParam[$value[1]]) > 0 && ! mb_ereg("^([¥¡-¥ö]|[¡¼])+$", $this->arrParam[$value[1]])) {
+		if(strlen($this->arrParam[$value[1]]) > 0 && ! mb_ereg("^[¥¡-¥ö¦-ß¡¼]+$", $this->arrParam[$value[1]])) {
 			$this->arrErr[$value[1]] = "¢¨ " . $value[0] . "¤Ï¥«¥¿¥«¥Ê¤ÇÆþÎÏ¤·¤Æ¤¯¤À¤µ¤¤¡£<br />";	
 		}
@@ -780,4 +780,15 @@
 		}
 	}	
+	
+	/*¡¡·ÈÂÓ¥á¡¼¥ë¥¢¥É¥ì¥¹¤ÎÈ½Äê¡¡*/
+	// value[0] = ¹àÌÜÌ¾ value[1] = È½ÄêÂÐ¾Ý¥á¡¼¥ë¥¢¥É¥ì¥¹
+	function MOBILE_EMAIL_CHECK( $value ){				//¡¡¥á¡¼¥ë¥¢¥É¥ì¥¹¤òÀµµ¬É½¸½¤ÇÈ½Äê¤¹¤ë
+		if(isset($this->arrErr[$value[1]])) {
+			return;
+		}
+		if(strlen($this->arrParam[$value[1]]) > 0 && !gfIsMobileMailAddress($this->arrParam[$value[1]])) {
+			$this->arrErr[$value[1]] = "¢¨ " . $value[0] . "¤Ï·ÈÂÓÅÅÏÃ¤Î¤â¤Î¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£<br />";
+		}
+	}		
 }
 ?>
Index: branches/dev/data/class/GC_MobileKaraMail.php
===================================================================
--- branches/dev/data/class/GC_MobileKaraMail.php	(revision 11460)
+++ branches/dev/data/class/GC_MobileKaraMail.php	(revision 11460)
@@ -0,0 +1,200 @@
+<?php
+
+/**
+ * ¶õ¥á¡¼¥ë¼õ¤±ÉÕ¤±¥¢¥É¥ì¥¹¤Î¥³¥Þ¥ó¥ÉÌ¾¤È¥È¡¼¥¯¥ó¤Î´Ö¤Î¶èÀÚ¤êÊ¸»ú
+ */
+define('MOBILE_KARA_MAIL_EXTENSION_DELIMITER', '_');
+
+/**
+ * ¥â¥Ð¥¤¥ë¥µ¥¤¥È¤Î¶õ¥á¡¼¥ë¤ò°·¤¦¥¯¥é¥¹
+ */
+class GC_MobileKaraMail {
+	/**
+	 * ´Ä¶­ÊÑ¿ô¤«¤é MTA ¤òÈ½ÊÌ¤·¡¢ÂÐ±þ¤¹¤ë GC_MobileKaraMail ¤Þ¤¿¤Ï¤½¤Î¥µ¥Ö¥¯¥é¥¹
+	 * ¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤òºîÀ®¤¹¤ë¡£
+	 *
+	 * @return object GC_MobileKaraMail ¤Þ¤¿¤Ï¤½¤Î¥µ¥Ö¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤òÊÖ¤¹¡£
+	 */
+	function &factory() {
+		if (isset($_ENV['EXTENSION'])) {
+			$objInstance = new GC_MobileKaraMail_Postfix;
+		} elseif (isset($_ENV['DEFAULT'])) {
+			$objInstance = new GC_MobileKaraMail_Qmail;
+		} else {
+			$objInstance = new GC_MobileKaraMail;
+		}
+
+		return $objInstance;
+	}
+
+	/**
+	 * É¸½àÆþÎÏ¤«¤é¥á¡¼¥ë¤òÆÉ¤ß¹þ¤ß¡¢É¬Í×¤Ê¾ðÊó¤ò¼èÆÀ¤¹¤ë¡£
+	 *
+	 * @return void
+	 */
+	function parse() {
+		if (@$this->parsed) {
+			return;
+		}
+
+		require_once DATA_PATH . '/module/Mail/mimeDecode.php';
+
+		$fp = fopen('php://stdin', 'r');
+
+		// From ¹Ô¤ò²òÀÏ¤¹¤ë¡£
+		$from_line = rtrim(fgets($fp));
+		if (preg_match('/^From\\s+"?([^\\s"@]+)"?@([^\\s@]+)/', $from_line, $matches)) {
+			$this->sender = $matches[1] . '@' . $matches[2];
+		} else {
+			trigger_error("Invalid from line: $from_line");
+			$this->sender = null;
+		}
+
+		// »Ä¤ê¤Î¥Ø¥Ã¥À¡¼¤ò²òÀÏ¤¹¤ë¡£
+		$data = '';
+		while (!feof($fp)) {
+			$data .= fgets($fp);
+			if (rtrim($data, "\r\n") == '') {
+				break;
+			}
+		}
+		$structure = Mail_mimeDecode::decode(array('input' => $data));
+		$this->recipient = @$structure->headers['to'];
+
+		// °¸Àè¥¢¥É¥ì¥¹¤«¤é³ÈÄ¥ÉôÊ¬¤ò¼èÆÀ¤¹¤ë¡£
+		$pos = strpos($this->recipient, MOBILE_KARA_MAIL_ADDRESS_DELIMITER);
+		if ($pos !== false) {
+			$extension_and_domain = substr($this->recipient, $pos + 1);
+			$pos = strpos($extension_and_domain, '@');
+			if ($pos !== false) {
+				$this->extension = substr($extension_and_domain, 0, $pos);
+			} else {
+				$this->extension = $extension_and_domain;
+			}
+		} else {
+			trigger_error("Invalid recipient: {$this->recipient}");
+			$this->extension = null;
+		}
+
+		$this->parsed = true;
+	}
+
+	/**
+	 * ÇÛ¿®¤¬´°Î»¤·¤¿¤³¤È¤ò¼¨¤¹½ªÎ»¥¹¥Æ¡¼¥¿¥¹¤Ç¥×¥í¥°¥é¥à¤ò½ªÎ»¤¹¤ë¡£
+	 *
+	 * @return void
+	 */
+	function success() {
+		exit(0);
+	}
+
+	/**
+	 * °ì»þÅª¤Ê¥¨¥é¡¼¤ò¼¨¤¹½ªÎ»¥¹¥Æ¡¼¥¿¥¹¤Ç¥×¥í¥°¥é¥à¤ò½ªÎ»¤¹¤ë¡£
+	 *
+	 * @return void
+	 */
+	function temporaryFailure() {
+		exit(75);
+	}
+
+	/**
+	 * Á÷¿®¼Ô¤Î¥á¡¼¥ë¥¢¥É¥ì¥¹¤ò¼èÆÀ¤¹¤ë¡£
+	 *
+	 * parse() ¼Â¹Ô¸å¤Ë»ÈÍÑ¤¹¤ë¤³¤È¡£
+	 *
+	 * @return string|false Á÷¿®¼Ô¤Î¥á¡¼¥ë¥¢¥É¥ì¥¹¤òÊÖ¤¹¡£¼èÆÀ¤Ç¤­¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï false ¤òÊÖ¤¹¡£
+	 */
+	function getSender() {
+		return isset($this->sender) ? $this->sender : false;
+	}
+
+	/**
+	 * °¸Àè¤Î¥á¡¼¥ë¥¢¥É¥ì¥¹¤Î³ÈÄ¥ÉôÊ¬¤«¤é¥³¥Þ¥ó¥ÉÌ¾¤ò¼èÆÀ¤¹¤ë¡£
+	 *
+	 * parse() ¼Â¹Ô¸å¤Ë»ÈÍÑ¤¹¤ë¤³¤È¡£
+	 *
+	 * @return string|false ¥³¥Þ¥ó¥ÉÌ¾¤òÊÖ¤¹¡£¼èÆÀ¤Ç¤­¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï false ¤òÊÖ¤¹¡£
+	 */
+	function getCommand() {
+		if (!isset($this->extension)) {
+			return false;
+		}
+
+		$pos = strpos($this->extension, MOBILE_KARA_MAIL_EXTENSION_DELIMITER);
+		if ($pos === false) {
+			return false;
+		}
+
+		return substr($this->extension, 0, $pos);
+	}
+
+	/**
+	 * °¸Àè¤Î¥á¡¼¥ë¥¢¥É¥ì¥¹¤Î³ÈÄ¥ÉôÊ¬¤«¤é¥È¡¼¥¯¥ó¤ò¼èÆÀ¤¹¤ë¡£
+	 *
+	 * parse() ¼Â¹Ô¸å¤Ë»ÈÍÑ¤¹¤ë¤³¤È¡£
+	 *
+	 * @return string|false ¥È¡¼¥¯¥ó¤òÊÖ¤¹¡£¼èÆÀ¤Ç¤­¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï false ¤òÊÖ¤¹¡£
+	 */
+	function getToken() {
+		if (!isset($this->extension)) {
+			return false;
+		}
+
+		$pos = strpos($this->extension, MOBILE_KARA_MAIL_EXTENSION_DELIMITER);
+		if ($pos === false) {
+			return false;
+		}
+
+		return substr($this->extension, $pos + 1);
+	}
+}
+
+/**
+ * ¥â¥Ð¥¤¥ë¥µ¥¤¥È¤Î¶õ¥á¡¼¥ë¤ò°·¤¦¥¯¥é¥¹ (PostfixÍÑ)
+ */
+class GC_MobileKaraMail_Postfix extends GC_MobileKaraMail {
+	/**
+	 * @see GC_MobileKaraMail::parse()
+	 */
+	function parse() {
+		if (@$this->parsed) {
+			return;
+		}
+
+		$this->sender = $_ENV['SENDER'];
+		$this->recipient = $_ENV['RECIPIENT'];
+		$this->extension = $_ENV['EXTENSION'];
+
+		$this->parsed = true;
+	}
+}
+
+/**
+ * ¥â¥Ð¥¤¥ë¥µ¥¤¥È¤Î¶õ¥á¡¼¥ë¤ò°·¤¦¥¯¥é¥¹ (qmailÍÑ)
+ */
+class GC_MobileKaraMail_Qmail extends GC_MobileKaraMail {
+	/**
+	 * @see GC_MobileKaraMail::parse()
+	 */
+	function parse() {
+		if (@$this->parsed) {
+			return;
+		}
+
+		$this->sender = $_ENV['SENDER'];
+		$this->recipient = $_ENV['RECIPIENT'];
+		$this->extension = $_ENV['DEFAULT'];
+
+		$this->parsed = true;
+	}
+
+	/**
+	 * °ì»þÅª¤Ê¥¨¥é¡¼¤ò¼¨¤¹½ªÎ»¥¹¥Æ¡¼¥¿¥¹¤Ç¥×¥í¥°¥é¥à¤ò½ªÎ»¤¹¤ë¡£
+	 *
+	 * @return void
+	 */
+	function temporaryFailure() {
+		exit(111);
+	}
+}
+?>
Index: branches/dev/data/class/GC_MobileImage.php
===================================================================
--- branches/dev/data/class/GC_MobileImage.php	(revision 11460)
+++ branches/dev/data/class/GC_MobileImage.php	(revision 11460)
@@ -0,0 +1,77 @@
+<?php
+/**
+ * Ã¼Ëö¤Î²èÌÌ²òÁüÅÙ¤Ë¤¢¤ï¤»¤Æ²èÁü¤òÊÑ´¹¤¹¤ë
+ */
+
+define("MOBILE_IMAGE_INC_PATH", realpath(dirname( __FILE__)) . "/../include");
+require_once(MOBILE_IMAGE_INC_PATH . "/image_converter.inc");
+
+/**
+ * ²èÁüÊÑ´¹¥¯¥é¥¹
+ */
+class GC_MobileImage {
+	/**
+	 * ²èÁü¤òÃ¼Ëö¤Î²òÁüÅÙ¤Ë¹ç¤ï¤»¤ÆÊÑ´¹¤¹¤ë
+	 * output buffering ÍÑ¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô
+	 *
+	 * @param string ÆþÎÏ
+	 * @return string ½ÐÎÏ
+	 */
+	function handler($buffer) {
+
+		// Ã¼Ëö¾ðÊó¤ò¼èÆÀ¤¹¤ë
+		$carrier = GC_MobileUserAgent::getCarrier();
+		$model   = GC_MobileUserAgent::getModel();
+
+		// ·ÈÂÓÅÅÏÃ¤Î¾ì¹ç¤Î¤ß½èÍý¤ò¹Ô¤¦
+		if ($carrier !== FALSE) {
+
+			// HTMLÃæ¤ÎIMG¥¿¥°¤ò¼èÆÀ¤¹¤ë
+			$pattern = '/<img\s+src=[\'"]([^>"]+)[\'"]\s*\/*>/i';
+			$result = preg_match_all($pattern, $buffer, $images);
+
+			// Ã¼Ëö¤Î¾ðÊó¤ò¼èÆÀ¤¹¤ë
+			$fp = fopen(MOBILE_IMAGE_INC_PATH . "/mobile_image_map_$carrier.csv", "r");
+			while (($data = fgetcsv($fp, 1000, ",")) !== FALSE) {
+				if ($data[1] == $model || $data[1] == '*') {
+					$cacheSize     = $data[2];
+					$imageFileSize = $data[7];
+					$imageType     = $data[6];
+					$imageWidth    = $data[5];
+					break;
+				}
+			}
+			fclose($fp);
+
+			// docomo¤Èsoftbank¤Î¾ì¹ç¤Ï²èÁü¥Õ¥¡¥¤¥ë°ì¤Ä¤ËÍøÍÑ²ÄÇ½¤Ê¥µ¥¤¥º¤Î¾å¸Â¤ò·×»»¤¹¤ë
+			// au¤ÏHTML¤Îbyte¿ô¾å¸Â¤Ë²èÁü¥Õ¥¡¥¤¥ë¥µ¥¤¥º¤¬´Þ¤Þ¤ì¤Ê¤¤¤Î¤ÇimageFileSize¤Î¤Þ¤Þ¡£
+			if ($carrier == "docomo" or $carrier == "softbank") {
+				// ·×»»¼°¡§(ÍøÍÑÃ¼Ëö¤ÇÉ½¼¨²ÄÇ½¤Êcache¥µ¥¤¥º - HTML¤Î¥Ð¥¤¥È¿ô - ÊÑ´¹¸å¤Î²èÁüÌ¾¤Î¥Ð¥¤¥È¿ô(ÌÜ°ÂÃÍ) ) / HTMLÃæ¤Î²èÁü¿ô
+				$temp_imagefilesize = ($cacheSize - strlen($buffer) - (140 * $result) ) / $result;
+				// ·×»»·ë²Ì¤¬Ã¼Ëö¤ÎÉ½¼¨²ÄÇ½¥Õ¥¡¥¤¥ë¥µ¥¤¥º¾å¸Â¤è¤ê¾®¤µ¤¤¾ì¹ç¤Ï·×»»·ë²Ì¤ÎÃÍ¤òÍ­¸ú¤Ë¤¹¤ë
+				if ($temp_imagefilesize < $imageFileSize) {
+					$imageFileSize = $temp_imagefilesize;
+				}
+			}
+
+			// ²èÁüÊÑ´¹¤Î¾ðÊó¤ò¥»¥Ã¥È¤¹¤ë
+			$imageConverter = New ImageConverter();
+			$imageConverter->setOutputDir(MOBILE_IMAGE_DIR);
+			$imageConverter->setImageType($imageType);
+			$imageConverter->setImageWidth($imageWidth);
+			$imageConverter->setFileSize($imageFileSize);
+
+			// HTMLÃæ¤ÎIMG¥¿¥°¤òÊÑ´¹¸å¤Î¥Õ¥¡¥¤¥ë¥Ñ¥¹¤ËÃÖ´¹¤¹¤ë
+			foreach ($images[1] as $key => $value) {
+				$converted = $imageConverter->execute(preg_replace('|^' . PC_URL_DIR . '|', PC_HTML_PATH, $value));
+				if (isset($converted['outputImageName'])) {
+					$buffer = str_replace($value, MOBILE_IMAGE_URL . '/' . $converted['outputImageName'], $buffer);
+				} else {
+					$buffer = str_replace($images[0][$key], '<!--No image-->', $buffer);
+				}
+			}
+		}
+		return $buffer;
+	}
+}
+?>
Index: branches/dev/data/class/SC_Customer.php
===================================================================
--- branches/dev/data/class/SC_Customer.php	(revision 17)
+++ branches/dev/data/class/SC_Customer.php	(revision 11460)
@@ -50,8 +50,13 @@
 	}
 	
-	function getCustomerDataFromEmailPass( $pass, $email ) {
+	function getCustomerDataFromEmailPass( $pass, $email, $mobile = false ) {
+		$sql_mobile = $mobile ? ' OR email_mobile ILIKE ?' : '';
+		$arrValues = array($email);
+		if ($mobile) {
+			$arrValues[] = $email;
+		}
 		// ËÜÅÐÏ¿¤µ¤ì¤¿²ñ°÷¤Î¤ß
-		$sql = "SELECT * FROM dtb_customer WHERE email ILIKE ? AND del_flg = 0 AND status = 2";
-		$result = $this->conn->getAll($sql, array($email));
+		$sql = "SELECT * FROM dtb_customer WHERE (email ILIKE ?" . $sql_mobile . ") AND del_flg = 0 AND status = 2";
+		$result = $this->conn->getAll($sql, $arrValues);
 		$data = $result[0];
 		
@@ -63,4 +68,94 @@
 		}
 		return false;
+	}
+
+	/**
+	 * ·ÈÂÓÃ¼ËöID¤¬°ìÃ×¤¹¤ë²ñ°÷¤¬Â¸ºß¤¹¤ë¤«¤É¤¦¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£
+	 *
+	 * @return boolean ³ºÅö¤¹¤ë²ñ°÷¤¬Â¸ºß¤¹¤ë¾ì¹ç¤Ï true¡¢¤½¤ì°Ê³°¤Î¾ì¹ç
+	 *                 ¤Ï false ¤òÊÖ¤¹¡£
+	 */
+	function checkMobilePhoneId() {
+		if (!isset($_SESSION['mobile']['phone_id']) || $_SESSION['mobile']['phone_id'] === false) {
+			return false;
+		}
+
+		// ·ÈÂÓÃ¼ËöID¤¬°ìÃ×¤·¡¢ËÜÅÐÏ¿¤µ¤ì¤¿²ñ°÷¤ò¸¡º÷¤¹¤ë¡£
+		$sql = 'SELECT count(*) FROM dtb_customer WHERE mobile_phone_id = ? AND del_flg = 0 AND status = 2';
+		$result = $this->conn->getOne($sql, array($_SESSION['mobile']['phone_id']));
+		return $result > 0;
+	}
+
+	/**
+	 * ·ÈÂÓÃ¼ËöID¤ò»ÈÍÑ¤·¤Æ²ñ°÷¤ò¸¡º÷¤·¡¢¥Ñ¥¹¥ï¡¼¥É¤Î¾È¹ç¤ò¹Ô¤¦¡£
+	 * ¥Ñ¥¹¥ï¡¼¥É¤¬¹ç¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ï¸ÜµÒ¾ðÊó¤ò¼èÆÀ¤¹¤ë¡£
+	 *
+	 * @param string $pass ¥Ñ¥¹¥ï¡¼¥É
+	 * @return boolean ³ºÅö¤¹¤ë²ñ°÷¤¬Â¸ºß¤·¡¢¥Ñ¥¹¥ï¡¼¥É¤¬¹ç¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ï true¡¢
+	 *                 ¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï false ¤òÊÖ¤¹¡£
+	 */
+	function getCustomerDataFromMobilePhoneIdPass($pass) {
+		if (!isset($_SESSION['mobile']['phone_id']) || $_SESSION['mobile']['phone_id'] === false) {
+			return false;
+		}
+
+		// ·ÈÂÓÃ¼ËöID¤¬°ìÃ×¤·¡¢ËÜÅÐÏ¿¤µ¤ì¤¿²ñ°÷¤ò¸¡º÷¤¹¤ë¡£
+		$sql = 'SELECT * FROM dtb_customer WHERE mobile_phone_id = ? AND del_flg = 0 AND status = 2';
+		@list($data) = $this->conn->getAll($sql, array($_SESSION['mobile']['phone_id']));
+
+		// ¥Ñ¥¹¥ï¡¼¥É¤¬¹ç¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¸ÜµÒ¾ðÊó¤òcustomer_data¤Ë³ÊÇ¼¤·¤Ætrue¤òÊÖ¤¹¡£
+		if (sha1($pass . ':' . AUTH_MAGIC) == @$data['password']) {
+			$this->customer_data = $data;
+			$this->startSession();
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * ·ÈÂÓÃ¼ËöID¤òÅÐÏ¿¤¹¤ë¡£
+	 *
+	 * @return void
+	 */
+	function updateMobilePhoneId() {
+		if (!isset($_SESSION['mobile']['phone_id']) || $_SESSION['mobile']['phone_id'] === false) {
+			return;
+		}
+
+		if ($this->customer_data['mobile_phone_id'] == $_SESSION['mobile']['phone_id']) {
+			return;
+		}
+
+		$objQuery = new SC_Query;
+		$sqlval = array('mobile_phone_id' => $_SESSION['mobile']['phone_id']);
+		$where = 'customer_id = ? AND del_flg = 0 AND status = 2';
+		$objQuery->update('dtb_customer', $sqlval, $where, array($this->customer_data['customer_id']));
+
+		$this->customer_data['mobile_phone_id'] = $_SESSION['mobile']['phone_id'];
+	}
+
+	/**
+	 * email ¤«¤é email_mobile ¤Ø·ÈÂÓ¤Î¥á¡¼¥ë¥¢¥É¥ì¥¹¤ò¥³¥Ô¡¼¤¹¤ë¡£
+	 *
+	 * @return void
+	 */
+	function updateEmailMobile() {
+		// ¤¹¤Ç¤Ë email_mobile ¤ËÃÍ¤¬Æþ¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ï²¿¤â¤·¤Ê¤¤¡£
+		if ($this->customer_data['email_mobile'] != '') {
+			return;
+		}
+
+		// email ¤¬·ÈÂÓ¤Î¥á¡¼¥ë¥¢¥É¥ì¥¹¤Ç¤Ï¤Ê¤¤¾ì¹ç¤Ï²¿¤â¤·¤Ê¤¤¡£
+		if (!gfIsMobileMailAddress($this->customer_data['email'])) {
+			return;
+		}
+
+		// email ¤«¤é email_mobile ¤Ø¥³¥Ô¡¼¤¹¤ë¡£
+		$objQuery = new SC_Query;
+		$sqlval = array('email_mobile' => $this->customer_data['email']);
+		$where = 'customer_id = ? AND del_flg = 0 AND status = 2';
+		$objQuery->update('dtb_customer', $sqlval, $where, array($this->customer_data['customer_id']));
+
+		$this->customer_data['email_mobile'] = $this->customer_data['email'];
 	}
 	
@@ -101,5 +196,5 @@
 	
 	// ¥í¥°¥¤¥ó¤ËÀ®¸ù¤·¤Æ¤¤¤ë¤«È½Äê¤¹¤ë¡£
-	function isLoginSuccess() {
+	function isLoginSuccess($dont_check_email_mobile = false) {
 		// ¥í¥°¥¤¥ó»þ¤Î¥á¡¼¥ë¥¢¥É¥ì¥¹¤ÈDB¤Î¥á¡¼¥ë¥¢¥É¥ì¥¹¤¬°ìÃ×¤·¤Æ¤¤¤ë¾ì¹ç
 		if(sfIsInt($_SESSION['customer']['customer_id'])) {
@@ -107,4 +202,10 @@
 			$email = $objQuery->get("dtb_customer", "email", "customer_id = ?", array($_SESSION['customer']['customer_id']));
 			if($email == $_SESSION['customer']['email']) {
+				// ¥â¥Ð¥¤¥ë¥µ¥¤¥È¤Î¾ì¹ç¤Ï·ÈÂÓ¤Î¥á¡¼¥ë¥¢¥É¥ì¥¹¤¬ÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¤³¤È¤â¥Á¥§¥Ã¥¯¤¹¤ë¡£
+				// ¤¿¤À¤· $dont_check_email_mobile ¤¬ true ¤Î¾ì¹ç¤Ï¥Á¥§¥Ã¥¯¤·¤Ê¤¤¡£
+				if (defined('MOBILE_SITE') && !$dont_check_email_mobile) {
+					$email_mobile = $objQuery->get("dtb_customer", "email_mobile", "customer_id = ?", array($_SESSION['customer']['customer_id']));
+					return isset($email_mobile);
+				}
 				return true;
 			}
@@ -121,4 +222,9 @@
 	function setValue($keyname, $val) {
 		$_SESSION['customer'][$keyname] = $val;
+	}
+
+	// ¥Ñ¥é¥á¡¼¥¿¤¬NULL¤«¤É¤¦¤«¤ÎÈ½Äê
+	function hasValue($keyname) {
+		return isset($_SESSION['customer'][$keyname]);
 	}
 	
Index: branches/dev/data/class/GC_MobileUserAgent.php
===================================================================
--- branches/dev/data/class/GC_MobileUserAgent.php	(revision 11460)
+++ branches/dev/data/class/GC_MobileUserAgent.php	(revision 11460)
@@ -0,0 +1,127 @@
+<?php
+require_once(dirname(__FILE__) . '/../module/Net/UserAgent/Mobile.php');
+
+/**
+ * ·ÈÂÓÃ¼Ëö¤Î¾ðÊó¤ò°·¤¦¥¯¥é¥¹
+ *
+ * ÂÐ¾Ý¤È¤¹¤ë·ÈÂÓÃ¼Ëö¤Ï $_SERVER ¤«¤é·èÄê¤¹¤ë¡£
+ * ¤¹¤Ù¤Æ¤Î¥á¥½¥Ã¥É¤Ï¥¯¥é¥¹¥á¥½¥Ã¥É¡£
+ */
+class GC_MobileUserAgent {
+	/**
+	 * ·ÈÂÓÃ¼Ëö¤Î¥­¥ã¥ê¥¢¤òÉ½¤¹Ê¸»úÎó¤ò¼èÆÀ¤¹¤ë¡£
+	 *
+	 * Ê¸»úÎó¤Ï docomo, ezweb, softbank ¤Î¤¤¤º¤ì¤«¡£
+	 *
+	 * @return string|false ·ÈÂÓÃ¼Ëö¤Î¥­¥ã¥ê¥¢¤òÉ½¤¹Ê¸»úÎó¤òÊÖ¤¹¡£
+	 *                      ·ÈÂÓÃ¼Ëö¤Ç¤Ï¤Ê¤¤¾ì¹ç¤Ï false ¤òÊÖ¤¹¡£
+	 */
+	function getCarrier() {
+		$objAgent =& Net_UserAgent_Mobile::singleton();
+		if (Net_UserAgent_Mobile::isError($objAgent)) {
+			return false;
+		}
+
+		switch ($objAgent->getCarrierShortName()) {
+		case 'I':
+			return 'docomo';
+		case 'E':
+			return 'ezweb';
+		case 'V':
+			return 'softbank';
+		default:
+			return false;
+		}
+	}
+
+	/**
+	 * ¾¡¼ê¥µ¥¤¥È¤ÇÍøÍÑ²ÄÇ½¤Ê·ÈÂÓÃ¼Ëö/ÍøÍÑ¼Ô¤ÎID¤ò¼èÆÀ¤¹¤ë¡£
+	 *
+	 * ³Æ¥­¥ã¥ê¥¢¤Ç»ÈÍÑ¤¹¤ëID¤Î¼ïÎà:
+	 * + docomo   ... UTN
+	 * + ezweb    ... EZÈÖ¹æ
+	 * + softbank ... Ã¼Ëö¥·¥ê¥¢¥ëÈÖ¹æ
+	 *
+	 * @return string|false ¼èÆÀ¤·¤¿ID¤òÊÖ¤¹¡£¼èÆÀ¤Ç¤­¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï false ¤òÊÖ¤¹¡£
+	 */
+	function getId() {
+		$objAgent =& Net_UserAgent_Mobile::singleton();
+		if (Net_UserAgent_Mobile::isError($objAgent)) {
+			return false;
+		} elseif ($objAgent->isDoCoMo() || $objAgent->isVodafone()) {
+			$id = $objAgent->getSerialNumber();
+		} elseif ($objAgent->isEZweb()) {
+			$id = @$_SERVER['HTTP_X_UP_SUBNO'];
+		}
+		return isset($id) ? $id : false;
+	}
+
+	/**
+	 * ·ÈÂÓÃ¼Ëö¤Îµ¡¼ï¤òÉ½¤¹Ê¸»úÎó¤ò¼èÆÀ¤¹¤ë¡£
+	 * ·ÈÂÓÃ¼Ëö¤Ç¤Ï¤Ê¤¤¾ì¹ç¤Ï¥æ¡¼¥¶¡¼¥¨¡¼¥¸¥§¥ó¥È¤ÎÌ¾Á°¤ò¼èÆÀ¤¹¤ë¡£(Îã: "Mozilla")
+	 *
+	 * @return string ·ÈÂÓÃ¼Ëö¤Î¥â¥Ç¥ë¤òÉ½¤¹Ê¸»úÎó¤òÊÖ¤¹¡£
+	 */
+	function getModel() {
+		$objAgent =& Net_UserAgent_Mobile::singleton();
+		if (Net_UserAgent_Mobile::isError($objAgent)) {
+			return 'Unknown';
+		} elseif ($objAgent->isNonMobile()) {
+			return $objAgent->getName();
+		} else {
+			return $objAgent->getModel();
+		}
+	}
+
+	/**
+	 * EC-CUBE ¤¬¥µ¥Ý¡¼¥È¤¹¤ë·ÈÂÓ¥­¥ã¥ê¥¢¤«¤É¤¦¤«¤òÈ½ÊÌ¤¹¤ë¡£
+	 *
+	 * @return boolean ¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¾ì¹ç¤Ï true¡¢¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï false ¤òÊÖ¤¹¡£
+	 */
+	function isMobile() {
+		$objAgent =& Net_UserAgent_Mobile::singleton();
+		if (Net_UserAgent_Mobile::isError($objAgent)) {
+			return false;
+		} else {
+			return $objAgent->isDoCoMo() || $objAgent->isEZweb() || $objAgent->isVodafone();
+		}
+	}
+
+	/**
+	 * EC-CUBE ¤¬¥µ¥Ý¡¼¥È¤¹¤ë·ÈÂÓ¥­¥ã¥ê¥¢¤«¤É¤¦¤«¤òÈ½ÊÌ¤¹¤ë¡£
+	 *
+	 * @return boolean ·ÈÂÓÃ¼Ëö¤Ç¤Ï¤Ê¤¤¾ì¹ç¤Ï true¡¢¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï false ¤òÊÖ¤¹¡£
+	 */
+	function isNonMobile() {
+		return !GC_MobileUserAgent::isMobile();
+	}
+
+	/**
+	 * EC-CUBE ¤¬¥µ¥Ý¡¼¥È¤¹¤ë·ÈÂÓÃ¼Ëö¤«¤É¤¦¤«¤òÈ½ÊÌ¤¹¤ë¡£
+	 *
+	 * @return boolean ¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¾ì¹ç¤Ï true¡¢¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï false ¤òÊÖ¤¹¡£
+	 */
+	function isSupported() {
+		$objAgent =& Net_UserAgent_Mobile::singleton();
+
+		// ·ÈÂÓÃ¼Ëö¤À¤ÈÇ§¼±¤µ¤ì¤¿¤¬¡¢User-Agent ¤Î·Á¼°¤¬Ì¤ÃÎ¤Î¾ì¹ç
+		if (Net_UserAgent_Mobile::isError($objAgent)) {
+			gfPrintLog($objAgent->toString());
+			return false;
+		}
+
+		if ($objAgent->isDoCoMo()) {
+			$arrUnsupportedSeries = array('501i', '502i', '209i', '210i');
+			$arrUnsupportedModels = array('SH821i', 'N821i', 'P821i ', 'P651ps', 'R691i', 'F671i', 'SH251i', 'SH251iS');
+			return !in_array($objAgent->getSeries(), $arrUnsupportedSeries) && !in_array($objAgent->getModel(), $arrUnsupportedModels);
+		} elseif ($objAgent->isEZweb()) {
+			return $objAgent->isWAP2();
+		} elseif ($objAgent->isVodafone()) {
+			return $objAgent->isPacketCompliant();
+		} else {
+			// ·ÈÂÓÃ¼Ëö¤Ç¤Ï¤Ê¤¤¾ì¹ç¤Ï¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¤³¤È¤Ë¤¹¤ë¡£
+			return true;
+		}
+	}
+}
+?>
Index: branches/dev/data/class/GC_MobileEmoji.php
===================================================================
--- branches/dev/data/class/GC_MobileEmoji.php	(revision 11460)
+++ branches/dev/data/class/GC_MobileEmoji.php	(revision 11460)
@@ -0,0 +1,45 @@
+<?php
+
+/**
+ * 表示できない絵文字を置き換える文字列 (Shift JIS)
+ * デフォルトは空文字列。
+ */
+define('MOBILE_EMOJI_SUBSTITUTE', '');
+
+/**
+ * 携帯端末の絵文字を扱うクラス
+ */
+class GC_MobileEmoji {
+	/**
+	 * 絵文字タグを各キャリア用の文字コードに変換する
+	 * output buffering 用コールバック関数
+	 *
+	 * @param string 入力
+	 * @return string 出力
+	 */
+	function handler($buffer) {
+		$replace_callback = create_function('$matches', 'return GC_MobileEmoji::indexToCode($matches[1]);');
+		return preg_replace_callback('/\[emoji:(e?\d+)\]/', $replace_callback, $buffer);
+	}
+
+	/**
+	 * 絵文字番号を絵文字を表す Shift JIS の文字列に変換する。
+	 *
+	 * @param string $index 絵文字番号
+	 * @return string 絵文字を表す Shift JIS の文字列を返す。
+	 */
+	function indexToCode($index) {
+		$carrier = GC_MobileUserAgent::getCarrier();
+		if ($carrier === false) {
+			return MOBILE_EMOJI_SUBSTITUTE;
+		}
+
+		static $arrMap;
+		if (!isset($arrMap)) {
+			$arrMap = @include_once(dirname(__FILE__) . "/../include/mobile_emoji_map_$carrier.inc");
+		}
+
+		return isset($arrMap[$index]) ? $arrMap[$index] : MOBILE_EMOJI_SUBSTITUTE;
+	}
+}
+?>
Index: branches/dev/data/conf/mobile.conf
===================================================================
--- branches/dev/data/conf/mobile.conf	(revision 11460)
+++ branches/dev/data/conf/mobile.conf	(revision 11460)
@@ -0,0 +1,77 @@
+<?php
+/**
+ * ¥â¥Ð¥¤¥ë¥µ¥¤¥È¶¦Í­ÀßÄê¥Õ¥¡¥¤¥ë
+ */
+
+// ¥â¥Ð¥¤¥ë¥µ¥¤¥ÈÀßÄê¥Õ¥¡¥¤¥ë¤òÆÉ¤ß¹þ¤à¡£
+require_once(dirname(__FILE__) . '/../install_mobile.inc');
+
+
+//--------------------------------------------------------------------------------------------------------
+// conf.php ¤ÇÄêµÁ¤µ¤ì¤ëÄê¿ô¤Î¤¦¤Á¡¢¥â¥Ð¥¤¥ë¥µ¥¤¥ÈÍÑ¤ËÊÑ¹¹¤¬É¬Í×¤Ê¤â¤Î
+
+define('TEMPLATE_DIR', DATA_PATH . 'Smarty/templates/mobile');	// SMARTY¥Æ¥ó¥×¥ì¡¼¥È
+define('COMPILE_DIR', DATA_PATH . 'Smarty/templates_c/mobile');	// SMARTY¥³¥ó¥Ñ¥¤¥ë
+define('IMAGE_TEMP_DIR', PC_HTML_PATH . 'upload/temp_image/');	// ²èÁü°ì»þÊÝÂ¸
+define('IMAGE_SAVE_DIR', PC_HTML_PATH . 'upload/save_image/');	// ²èÁüÊÝÂ¸Àè
+define('IMAGE_TEMP_URL', PC_URL_DIR . 'upload/temp_image/');	// ²èÁü°ì»þÊÝÂ¸URL
+define('IMAGE_SAVE_URL', PC_URL_DIR . 'upload/save_image/');	// ²èÁüÊÝÂ¸ÀèURL
+
+
+//--------------------------------------------------------------------------------------------------------
+// ¥â¥Ð¥¤¥ë¥µ¥¤¥ÈÀìÍÑ¤ÎÀßÄê
+
+/**
+ * ¥â¥Ð¥¤¥ë¥µ¥¤¥È¤Ç¤¢¤ë¤³¤È¤òÉ½¤¹Äê¿ô
+ */
+define('MOBILE_SITE', true);
+
+/**
+ * ¥»¥Ã¥·¥ç¥ó¤ÎÂ¸Â³»þ´Ö (ÉÃ)
+ */
+define('MOBILE_SESSION_LIFETIME', 1800);
+
+/**
+ * ¶õ¥á¡¼¥ëµ¡Ç½¤ò»ÈÍÑ¤¹¤ë¤«¤É¤¦¤«
+ */
+define('MOBILE_USE_KARA_MAIL', false);
+
+/**
+ * ¶õ¥á¡¼¥ë¼õ¤±ÉÕ¤±¥¢¥É¥ì¥¹¤Î¥æ¡¼¥¶¡¼Ì¾ÉôÊ¬
+ */
+define('MOBILE_KARA_MAIL_ADDRESS_USER', 'eccube');
+
+/**
+ * ¶õ¥á¡¼¥ë¼õ¤±ÉÕ¤±¥¢¥É¥ì¥¹¤Î¥æ¡¼¥¶¡¼Ì¾¤È¥³¥Þ¥ó¥É¤Î´Ö¤Î¶èÀÚ¤êÊ¸»ú
+ * qmail ¤Î¾ì¹ç¤Ï '-'
+ */
+define('MOBILE_KARA_MAIL_ADDRESS_DELIMITER', '+');
+
+/**
+ * ¶õ¥á¡¼¥ë¼õ¤±ÉÕ¤±¥¢¥É¥ì¥¹¤Î¥É¥á¥¤¥óÉôÊ¬
+ */
+define('MOBILE_KARA_MAIL_ADDRESS_DOMAIN', 'mobile.ec-cube.net');
+
+/**
+ * ·ÈÂÓ¤Î¥á¡¼¥ë¥¢¥É¥ì¥¹¤Ç¤Ï¤Ê¤¤¤¬¡¢·ÈÂÓ¤À¤È¤ß¤Ê¤¹¥É¥á¥¤¥ó¤Î¥ê¥¹¥È
+ * Ç¤°Õ¤Î¿ô¤Î¡Ö,¡×¡Ö ¡×¤Ç¶èÀÚ¤ë¡£
+ */
+define('MOBILE_ADDITIONAL_MAIL_DOMAINS', 'lockon.co.jp, rebelt.co.jp');
+
+/**
+ * ·ÈÂÓÅÅÏÃ¸þ¤±ÊÑ´¹²èÁüÊÝÂ¸¥Ç¥£¥ì¥¯¥È¥ê
+ */
+define('MOBILE_IMAGE_DIR', HTML_PATH . 'converted_images');
+define('MOBILE_IMAGE_URL', URL_DIR . 'converted_images');
+
+
+//--------------------------------------------------------------------------------------------------------
+// conf.php ¤«¤é»Ä¤ê¤ÎÀßÄê¤òÆÉ¤ß¹þ¤à¡£
+// Äê¿ô¤ÎÄêµÁ¤¬½ÅÊ£¤¹¤ë¤¿¤á¡¢error_reporting ¤Î¥ì¥Ù¥ë¤òÄ´À°¤¹¤ë¡£
+
+$error_reporting = error_reporting();
+error_reporting($error_reporting & ~E_NOTICE);
+require_once(DATA_PATH . 'conf/conf.php');
+error_reporting($error_reporting);
+unset($error_reporting);
+?>
Index: branches/dev/data/install_mobile.inc
===================================================================
--- branches/dev/data/install_mobile.inc	(revision 11460)
+++ branches/dev/data/install_mobile.inc	(revision 11460)
@@ -0,0 +1,19 @@
+<?php
+    define ('ECCUBE_INSTALL', 'ON');
+    define ('HTML_PATH', '/home/web/mobile.ec-cube.net/html/mobile/');
+    define ('PC_HTML_PATH', '/home/web/mobile.ec-cube.net/html/');
+    define ('SITE_URL', 'http://mobile.ec-cube.net/mobile/');
+    define ('PC_SITE_URL', 'http://mobile.ec-cube.net/');
+    define ('SSL_URL', 'http://mobile.ec-cube.net/mobile/');
+    define ('PC_SSL_URL', 'http://mobile.ec-cube.net/');
+    define ('URL_DIR', '/mobile/');
+    define ('PC_URL_DIR', '/');
+    define ('DOMAIN_NAME', '');
+    define ('DB_TYPE', 'mysql');
+    define ('DB_USER', 'mobile_db_user');
+    define ('DB_PASSWORD', 'password');
+    define ('DB_SERVER', '127.0.0.1');
+    define ('DB_NAME', 'mobile_db');
+    define ('DB_PORT', '3307');
+    define ('DATA_PATH', '/home/web/mobile.ec-cube.net/html/../data/');
+?>
Index: branches/dev/data/module/Mail/mime.php
===================================================================
--- branches/dev/data/module/Mail/mime.php	(revision 11460)
+++ branches/dev/data/module/Mail/mime.php	(revision 11460)
@@ -0,0 +1,713 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+// +-----------------------------------------------------------------------+
+// | Copyright (c) 2002-2003  Richard Heyes                                |
+// | Copyright (c) 2003-2005  The PHP Group                                |
+// | All rights reserved.                                                  |
+// |                                                                       |
+// | Redistribution and use in source and binary forms, with or without    |
+// | modification, are permitted provided that the following conditions    |
+// | are met:                                                              |
+// |                                                                       |
+// | o Redistributions of source code must retain the above copyright      |
+// |   notice, this list of conditions and the following disclaimer.       |
+// | o Redistributions in binary form must reproduce the above copyright   |
+// |   notice, this list of conditions and the following disclaimer in the |
+// |   documentation and/or other materials provided with the distribution.|
+// | o The names of the authors may not be used to endorse or promote      |
+// |   products derived from this software without specific prior written  |
+// |   permission.                                                         |
+// |                                                                       |
+// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   |
+// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     |
+// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
+// | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  |
+// | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
+// | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      |
+// | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
+// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
+// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   |
+// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
+// | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  |
+// |                                                                       |
+// +-----------------------------------------------------------------------+
+// | Author: Richard Heyes <richard@phpguru.org>                           |
+// |         Tomas V.V.Cox <cox@idecnet.com> (port to PEAR)                |
+// +-----------------------------------------------------------------------+
+//
+// $Id: mime.php,v 1.39 2005/06/13 21:24:16 cipri Exp $
+
+require_once(dirname(__FILE__) . '/../PEAR.php');
+require_once(dirname(__FILE__) . '/mimePart.php');
+
+/**
+ * Mime mail composer class. Can handle: text and html bodies, embedded html
+ * images and attachments.
+ * Documentation and examples of this class are avaible here:
+ * http://pear.php.net/manual/
+ *
+ * @notes This class is based on HTML Mime Mail class from
+ *   Richard Heyes <richard@phpguru.org> which was based also
+ *   in the mime_mail.class by Tobias Ratschiller <tobias@dnet.it> and
+ *   Sascha Schumann <sascha@schumann.cx>
+ *
+ * @author   Richard Heyes <richard.heyes@heyes-computing.net>
+ * @author   Tomas V.V.Cox <cox@idecnet.com>
+ * @package  Mail
+ * @access   public
+ */
+class Mail_mime
+{
+    /**
+     * Contains the plain text part of the email
+     * @var string
+     */
+    var $_txtbody;
+    /**
+     * Contains the html part of the email
+     * @var string
+     */
+    var $_htmlbody;
+    /**
+     * contains the mime encoded text
+     * @var string
+     */
+    var $_mime;
+    /**
+     * contains the multipart content
+     * @var string
+     */
+    var $_multipart;
+    /**
+     * list of the attached images
+     * @var array
+     */
+    var $_html_images = array();
+    /**
+     * list of the attachements
+     * @var array
+     */
+    var $_parts = array();
+    /**
+     * Build parameters
+     * @var array
+     */
+    var $_build_params = array();
+    /**
+     * Headers for the mail
+     * @var array
+     */
+    var $_headers = array();
+    /**
+     * End Of Line sequence (for serialize)
+     * @var string
+     */
+    var $_eol;
+
+
+    /**
+     * Constructor function
+     *
+     * @access public
+     */
+    function Mail_mime($crlf = "\r\n")
+    {
+        $this->_setEOL($crlf);
+        $this->_build_params = array(
+                                     'text_encoding' => '7bit',
+                                     'html_encoding' => 'quoted-printable',
+                                     '7bit_wrap'     => 998,
+                                     'html_charset'  => 'ISO-8859-1',
+                                     'text_charset'  => 'ISO-8859-1',
+                                     'head_charset'  => 'ISO-8859-1'
+                                    );
+    }
+
+    /**
+     * Wakeup (unserialize) - re-sets EOL constant
+     *
+     * @access private
+     */
+    function __wakeup()
+    {
+        $this->_setEOL($this->_eol);
+    }
+
+    /**
+     * Accessor function to set the body text. Body text is used if
+     * it's not an html mail being sent or else is used to fill the
+     * text/plain part that emails clients who don't support
+     * html should show.
+     *
+     * @param  string  $data   Either a string or
+     *                         the file name with the contents
+     * @param  bool    $isfile If true the first param should be treated
+     *                         as a file name, else as a string (default)
+     * @param  bool    $append If true the text or file is appended to
+     *                         the existing body, else the old body is
+     *                         overwritten
+     * @return mixed   true on success or PEAR_Error object
+     * @access public
+     */
+    function setTXTBody($data, $isfile = false, $append = false)
+    {
+        if (!$isfile) {
+            if (!$append) {
+                $this->_txtbody = $data;
+            } else {
+                $this->_txtbody .= $data;
+            }
+        } else {
+            $cont = $this->_file2str($data);
+            if (PEAR::isError($cont)) {
+                return $cont;
+            }
+            if (!$append) {
+                $this->_txtbody = $cont;
+            } else {
+                $this->_txtbody .= $cont;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * Adds a html part to the mail
+     *
+     * @param  string  $data   Either a string or the file name with the
+     *                         contents
+     * @param  bool    $isfile If true the first param should be treated
+     *                         as a file name, else as a string (default)
+     * @return mixed   true on success or PEAR_Error object
+     * @access public
+     */
+    function setHTMLBody($data, $isfile = false)
+    {
+        if (!$isfile) {
+            $this->_htmlbody = $data;
+        } else {
+            $cont = $this->_file2str($data);
+            if (PEAR::isError($cont)) {
+                return $cont;
+            }
+            $this->_htmlbody = $cont;
+        }
+
+        return true;
+    }
+
+    /**
+     * Adds an image to the list of embedded images.
+     *
+     * @param  string  $file       The image file name OR image data itself
+     * @param  string  $c_type     The content type
+     * @param  string  $name       The filename of the image.
+     *                             Only use if $file is the image data
+     * @param  bool    $isfilename Whether $file is a filename or not
+     *                             Defaults to true
+     * @return mixed   true on success or PEAR_Error object
+     * @access public
+     */
+    function addHTMLImage($file, $c_type='application/octet-stream',
+                          $name = '', $isfilename = true)
+    {
+        $filedata = ($isfilename === true) ? $this->_file2str($file)
+                                           : $file;
+        if ($isfilename === true) {
+            $filename = ($name == '' ? basename($file) : basename($name));
+        } else {
+            $filename = basename($name);
+        }
+        if (PEAR::isError($filedata)) {
+            return $filedata;
+        }
+        $this->_html_images[] = array(
+                                      'body'   => $filedata,
+                                      'name'   => $filename,
+                                      'c_type' => $c_type,
+                                      'cid'    => md5(uniqid(time()))
+                                     );
+        return true;
+    }
+
+    /**
+     * Adds a file to the list of attachments.
+     *
+     * @param  string  $file       The file name of the file to attach
+     *                             OR the file data itself
+     * @param  string  $c_type     The content type
+     * @param  string  $name       The filename of the attachment
+     *                             Only use if $file is the file data
+     * @param  bool    $isFilename Whether $file is a filename or not
+     *                             Defaults to true
+     * @return mixed true on success or PEAR_Error object
+     * @access public
+     */
+    function addAttachment($file, $c_type = 'application/octet-stream',
+                           $name = '', $isfilename = true,
+                           $encoding = 'base64')
+    {
+        $filedata = ($isfilename === true) ? $this->_file2str($file)
+                                           : $file;
+        if ($isfilename === true) {
+            // Force the name the user supplied, otherwise use $file
+            $filename = (!empty($name)) ? $name : $file;
+        } else {
+            $filename = $name;
+        }
+        if (empty($filename)) {
+            return PEAR::raiseError(
+              'The supplied filename for the attachment can\'t be empty'
+            );
+        }
+        $filename = basename($filename);
+        if (PEAR::isError($filedata)) {
+            return $filedata;
+        }
+
+        $this->_parts[] = array(
+                                'body'     => $filedata,
+                                'name'     => $filename,
+                                'c_type'   => $c_type,
+                                'encoding' => $encoding
+                               );
+        return true;
+    }
+
+    /**
+     * Get the contents of the given file name as string
+     *
+     * @param  string  $file_name  path of file to process
+     * @return string  contents of $file_name
+     * @access private
+     */
+    function &_file2str($file_name)
+    {
+        if (!is_readable($file_name)) {
+            return PEAR::raiseError('File is not readable ' . $file_name);
+        }
+        if (!$fd = fopen($file_name, 'rb')) {
+            return PEAR::raiseError('Could not open ' . $file_name);
+        }
+        $filesize = filesize($file_name);
+        if ($filesize == 0){
+            $cont =  "";
+        }else{
+            $cont = fread($fd, $filesize);
+        }
+        fclose($fd);
+        return $cont;
+    }
+
+    /**
+     * Adds a text subpart to the mimePart object and
+     * returns it during the build process.
+     *
+     * @param mixed    The object to add the part to, or
+     *                 null if a new object is to be created.
+     * @param string   The text to add.
+     * @return object  The text mimePart object
+     * @access private
+     */
+    function &_addTextPart(&$obj, $text)
+    {
+        $params['content_type'] = 'text/plain';
+        $params['encoding']     = $this->_build_params['text_encoding'];
+        $params['charset']      = $this->_build_params['text_charset'];
+        if (is_object($obj)) {
+            return $obj->addSubpart($text, $params);
+        } else {
+            return new Mail_mimePart($text, $params);
+        }
+    }
+
+    /**
+     * Adds a html subpart to the mimePart object and
+     * returns it during the build process.
+     *
+     * @param  mixed   The object to add the part to, or
+     *                 null if a new object is to be created.
+     * @return object  The html mimePart object
+     * @access private
+     */
+    function &_addHtmlPart(&$obj)
+    {
+        $params['content_type'] = 'text/html';
+        $params['encoding']     = $this->_build_params['html_encoding'];
+        $params['charset']      = $this->_build_params['html_charset'];
+        if (is_object($obj)) {
+            return $obj->addSubpart($this->_htmlbody, $params);
+        } else {
+            return new Mail_mimePart($this->_htmlbody, $params);
+        }
+    }
+
+    /**
+     * Creates a new mimePart object, using multipart/mixed as
+     * the initial content-type and returns it during the
+     * build process.
+     *
+     * @return object  The multipart/mixed mimePart object
+     * @access private
+     */
+    function &_addMixedPart()
+    {
+        $params['content_type'] = 'multipart/mixed';
+        return new Mail_mimePart('', $params);
+    }
+
+    /**
+     * Adds a multipart/alternative part to a mimePart
+     * object (or creates one), and returns it during
+     * the build process.
+     *
+     * @param  mixed   The object to add the part to, or
+     *                 null if a new object is to be created.
+     * @return object  The multipart/mixed mimePart object
+     * @access private
+     */
+    function &_addAlternativePart(&$obj)
+    {
+        $params['content_type'] = 'multipart/alternative';
+        if (is_object($obj)) {
+            return $obj->addSubpart('', $params);
+        } else {
+            return new Mail_mimePart('', $params);
+        }
+    }
+
+    /**
+     * Adds a multipart/related part to a mimePart
+     * object (or creates one), and returns it during
+     * the build process.
+     *
+     * @param mixed    The object to add the part to, or
+     *                 null if a new object is to be created
+     * @return object  The multipart/mixed mimePart object
+     * @access private
+     */
+    function &_addRelatedPart(&$obj)
+    {
+        $params['content_type'] = 'multipart/related';
+        if (is_object($obj)) {
+            return $obj->addSubpart('', $params);
+        } else {
+            return new Mail_mimePart('', $params);
+        }
+    }
+
+    /**
+     * Adds an html image subpart to a mimePart object
+     * and returns it during the build process.
+     *
+     * @param  object  The mimePart to add the image to
+     * @param  array   The image information
+     * @return object  The image mimePart object
+     * @access private
+     */
+    function &_addHtmlImagePart(&$obj, $value)
+    {
+        $params['content_type'] = $value['c_type'];
+        $params['encoding']     = 'base64';
+        $params['disposition']  = 'inline';
+        $params['dfilename']    = $value['name'];
+        $params['cid']          = $value['cid'];
+        $obj->addSubpart($value['body'], $params);
+    }
+
+    /**
+     * Adds an attachment subpart to a mimePart object
+     * and returns it during the build process.
+     *
+     * @param  object  The mimePart to add the image to
+     * @param  array   The attachment information
+     * @return object  The image mimePart object
+     * @access private
+     */
+    function &_addAttachmentPart(&$obj, $value)
+    {
+        $params['content_type'] = $value['c_type'];
+        $params['encoding']     = $value['encoding'];
+        $params['disposition']  = 'attachment';
+        $params['dfilename']    = $value['name'];
+        $obj->addSubpart($value['body'], $params);
+    }
+
+    /**
+     * Builds the multipart message from the list ($this->_parts) and
+     * returns the mime content.
+     *
+     * @param  array  Build parameters that change the way the email
+     *                is built. Should be associative. Can contain:
+     *                text_encoding  -  What encoding to use for plain text
+     *                                  Default is 7bit
+     *                html_encoding  -  What encoding to use for html
+     *                                  Default is quoted-printable
+     *                7bit_wrap      -  Number of characters before text is
+     *                                  wrapped in 7bit encoding
+     *                                  Default is 998
+     *                html_charset   -  The character set to use for html.
+     *                                  Default is iso-8859-1
+     *                text_charset   -  The character set to use for text.
+     *                                  Default is iso-8859-1
+     *                head_charset   -  The character set to use for headers.
+     *                                  Default is iso-8859-1
+     * @return string The mime content
+     * @access public
+     */
+    function &get($build_params = null)
+    {
+        if (isset($build_params)) {
+            while (list($key, $value) = each($build_params)) {
+                $this->_build_params[$key] = $value;
+            }
+        }
+
+        if (!empty($this->_html_images) AND isset($this->_htmlbody)) {
+            foreach ($this->_html_images as $value) {
+                $regex = '#(\s)((?i)src|background|href(?-i))\s*=\s*(["\']?)' . preg_quote($value['name'], '#') .
+                         '\3#';
+                $rep = '\1\2=\3cid:' . $value['cid'] .'\3';
+                $this->_htmlbody = preg_replace($regex, $rep,
+                                       $this->_htmlbody
+                                   );
+            }
+        }
+
+        $null        = null;
+        $attachments = !empty($this->_parts)                ? true : false;
+        $html_images = !empty($this->_html_images)          ? true : false;
+        $html        = !empty($this->_htmlbody)             ? true : false;
+        $text        = (!$html AND !empty($this->_txtbody)) ? true : false;
+
+        switch (true) {
+        case $text AND !$attachments:
+            $message =& $this->_addTextPart($null, $this->_txtbody);
+            break;
+
+        case !$text AND !$html AND $attachments:
+            $message =& $this->_addMixedPart();
+            for ($i = 0; $i < count($this->_parts); $i++) {
+                $this->_addAttachmentPart($message, $this->_parts[$i]);
+            }
+            break;
+
+        case $text AND $attachments:
+            $message =& $this->_addMixedPart();
+            $this->_addTextPart($message, $this->_txtbody);
+            for ($i = 0; $i < count($this->_parts); $i++) {
+                $this->_addAttachmentPart($message, $this->_parts[$i]);
+            }
+            break;
+
+        case $html AND !$attachments AND !$html_images:
+            if (isset($this->_txtbody)) {
+                $message =& $this->_addAlternativePart($null);
+                $this->_addTextPart($message, $this->_txtbody);
+                $this->_addHtmlPart($message);
+            } else {
+                $message =& $this->_addHtmlPart($null);
+            }
+            break;
+
+        case $html AND !$attachments AND $html_images:
+            if (isset($this->_txtbody)) {
+                $message =& $this->_addAlternativePart($null);
+                $this->_addTextPart($message, $this->_txtbody);
+                $related =& $this->_addRelatedPart($message);
+            } else {
+                $message =& $this->_addRelatedPart($null);
+                $related =& $message;
+            }
+            $this->_addHtmlPart($related);
+            for ($i = 0; $i < count($this->_html_images); $i++) {
+                $this->_addHtmlImagePart($related, $this->_html_images[$i]);
+            }
+            break;
+
+        case $html AND $attachments AND !$html_images:
+            $message =& $this->_addMixedPart();
+            if (isset($this->_txtbody)) {
+                $alt =& $this->_addAlternativePart($message);
+                $this->_addTextPart($alt, $this->_txtbody);
+                $this->_addHtmlPart($alt);
+            } else {
+                $this->_addHtmlPart($message);
+            }
+            for ($i = 0; $i < count($this->_parts); $i++) {
+                $this->_addAttachmentPart($message, $this->_parts[$i]);
+            }
+            break;
+
+        case $html AND $attachments AND $html_images:
+            $message =& $this->_addMixedPart();
+            if (isset($this->_txtbody)) {
+                $alt =& $this->_addAlternativePart($message);
+                $this->_addTextPart($alt, $this->_txtbody);
+                $rel =& $this->_addRelatedPart($alt);
+            } else {
+                $rel =& $this->_addRelatedPart($message);
+            }
+            $this->_addHtmlPart($rel);
+            for ($i = 0; $i < count($this->_html_images); $i++) {
+                $this->_addHtmlImagePart($rel, $this->_html_images[$i]);
+            }
+            for ($i = 0; $i < count($this->_parts); $i++) {
+                $this->_addAttachmentPart($message, $this->_parts[$i]);
+            }
+            break;
+
+        }
+
+        if (isset($message)) {
+            $output = $message->encode();
+            $this->_headers = array_merge($this->_headers,
+                                          $output['headers']);
+            return $output['body'];
+
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * Returns an array with the headers needed to prepend to the email
+     * (MIME-Version and Content-Type). Format of argument is:
+     * $array['header-name'] = 'header-value';
+     *
+     * @param  array $xtra_headers Assoc array with any extra headers.
+     *                             Optional.
+     * @return array Assoc array with the mime headers
+     * @access public
+     */
+    function &headers($xtra_headers = null)
+    {
+        // Content-Type header should already be present,
+        // So just add mime version header
+        $headers['MIME-Version'] = '1.0';
+        if (isset($xtra_headers)) {
+            $headers = array_merge($headers, $xtra_headers);
+        }
+        $this->_headers = array_merge($headers, $this->_headers);
+
+        return $this->_encodeHeaders($this->_headers);
+    }
+
+    /**
+     * Get the text version of the headers
+     * (usefull if you want to use the PHP mail() function)
+     *
+     * @param  array   $xtra_headers Assoc array with any extra headers.
+     *                               Optional.
+     * @return string  Plain text headers
+     * @access public
+     */
+    function txtHeaders($xtra_headers = null)
+    {
+        $headers = $this->headers($xtra_headers);
+        $ret = '';
+        foreach ($headers as $key => $val) {
+            $ret .= "$key: $val" . MAIL_MIME_CRLF;
+        }
+        return $ret;
+    }
+
+    /**
+     * Sets the Subject header
+     *
+     * @param  string $subject String to set the subject to
+     * access  public
+     */
+    function setSubject($subject)
+    {
+        $this->_headers['Subject'] = $subject;
+    }
+
+    /**
+     * Set an email to the From (the sender) header
+     *
+     * @param  string $email The email direction to add
+     * @access public
+     */
+    function setFrom($email)
+    {
+        $this->_headers['From'] = $email;
+    }
+
+    /**
+     * Add an email to the Cc (carbon copy) header
+     * (multiple calls to this method are allowed)
+     *
+     * @param  string $email The email direction to add
+     * @access public
+     */
+    function addCc($email)
+    {
+        if (isset($this->_headers['Cc'])) {
+            $this->_headers['Cc'] .= ", $email";
+        } else {
+            $this->_headers['Cc'] = $email;
+        }
+    }
+
+    /**
+     * Add an email to the Bcc (blank carbon copy) header
+     * (multiple calls to this method are allowed)
+     *
+     * @param  string $email The email direction to add
+     * @access public
+     */
+    function addBcc($email)
+    {
+        if (isset($this->_headers['Bcc'])) {
+            $this->_headers['Bcc'] .= ", $email";
+        } else {
+            $this->_headers['Bcc'] = $email;
+        }
+    }
+
+    /**
+     * Encodes a header as per RFC2047
+     *
+     * @param  string  $input The header data to encode
+     * @return string  Encoded data
+     * @access private
+     */
+    function _encodeHeaders($input)
+    {
+        foreach ($input as $hdr_name => $hdr_value) {
+            preg_match_all('/(\w*[\x80-\xFF]+\w*)/', $hdr_value, $matches);
+            foreach ($matches[1] as $value) {
+                $replacement = preg_replace('/([\x80-\xFF])/e',
+                                            '"=" .
+                                            strtoupper(dechex(ord("\1")))',
+                                            $value);
+                $hdr_value = str_replace($value, '=?' .
+                                         $this->_build_params['head_charset'] .
+                                         '?Q?' . $replacement . '?=',
+                                         $hdr_value);
+            }
+            $input[$hdr_name] = $hdr_value;
+        }
+
+        return $input;
+    }
+
+    /**
+     * Set the object's end-of-line and define the constant if applicable
+     *
+     * @param string $eol End Of Line sequence
+     * @access private
+     */
+    function _setEOL($eol)
+    {
+        $this->_eol = $eol;
+        if (!defined('MAIL_MIME_CRLF')) {
+            define('MAIL_MIME_CRLF', $this->_eol, true);
+        }
+    }
+
+    
+
+} // End of class
+?>
Index: branches/dev/data/module/Mail/mimeDecode.php
===================================================================
--- branches/dev/data/module/Mail/mimeDecode.php	(revision 11460)
+++ branches/dev/data/module/Mail/mimeDecode.php	(revision 11460)
@@ -0,0 +1,837 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+// +-----------------------------------------------------------------------+
+// | Copyright (c) 2002-2003  Richard Heyes                                |
+// | Copyright (c) 2003-2005  The PHP Group                                |
+// | All rights reserved.                                                  |
+// |                                                                       |
+// | Redistribution and use in source and binary forms, with or without    |
+// | modification, are permitted provided that the following conditions    |
+// | are met:                                                              |
+// |                                                                       |
+// | o Redistributions of source code must retain the above copyright      |
+// |   notice, this list of conditions and the following disclaimer.       |
+// | o Redistributions in binary form must reproduce the above copyright   |
+// |   notice, this list of conditions and the following disclaimer in the |
+// |   documentation and/or other materials provided with the distribution.|
+// | o The names of the authors may not be used to endorse or promote      |
+// |   products derived from this software without specific prior written  |
+// |   permission.                                                         |
+// |                                                                       |
+// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   |
+// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     |
+// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
+// | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  |
+// | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
+// | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      |
+// | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
+// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
+// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   |
+// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
+// | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  |
+// |                                                                       |
+// +-----------------------------------------------------------------------+
+// | Author: Richard Heyes <richard@phpguru.org>                           |
+// +-----------------------------------------------------------------------+
+
+require_once dirname(__FILE__) . '/../PEAR.php';
+
+/**
+*  +----------------------------- IMPORTANT ------------------------------+
+*  | Usage of this class compared to native php extensions such as        |
+*  | mailparse or imap, is slow and may be feature deficient. If available|
+*  | you are STRONGLY recommended to use the php extensions.              |
+*  +----------------------------------------------------------------------+
+*
+* Mime Decoding class
+*
+* This class will parse a raw mime email and return
+* the structure. Returned structure is similar to
+* that returned by imap_fetchstructure().
+*
+* USAGE: (assume $input is your raw email)
+*
+* $decode = new Mail_mimeDecode($input, "\r\n");
+* $structure = $decode->decode();
+* print_r($structure);
+*
+* Or statically:
+*
+* $params['input'] = $input;
+* $structure = Mail_mimeDecode::decode($params);
+* print_r($structure);
+*
+* TODO:
+*  o Implement multipart/appledouble
+*  o UTF8: ???
+
+		> 4. We have also found a solution for decoding the UTF-8 
+		> headers. Therefore I made the following function:
+		> 
+		> function decode_utf8($txt) {
+		> $trans=array("Å&#8216;"=>"Ãµ","Å±"=>"Ã»","Å"=>"Ã&#8226;","Å°"
+		=>"Ã&#8250;");
+		> $txt=strtr($txt,$trans);
+		> return(utf8_decode($txt));
+		> }
+		> 
+		> And I have inserted the following line to the class:
+		> 
+		> if (strtolower($charset)=="utf-8") $text=decode_utf8($text);
+		> 
+		> ... before the following one in the "_decodeHeader" function:
+		> 
+		> $input = str_replace($encoded, $text, $input);
+		> 
+		> This way from now on it can easily decode the UTF-8 headers too.
+
+*
+* @author  Richard Heyes <richard@phpguru.org>
+* @version $Revision: 1.46 $
+* @package Mail
+*/
+class Mail_mimeDecode extends PEAR
+{
+    /**
+     * The raw email to decode
+     * @var    string
+     */
+    var $_input;
+
+    /**
+     * The header part of the input
+     * @var    string
+     */
+    var $_header;
+
+    /**
+     * The body part of the input
+     * @var    string
+     */
+    var $_body;
+
+    /**
+     * If an error occurs, this is used to store the message
+     * @var    string
+     */
+    var $_error;
+
+    /**
+     * Flag to determine whether to include bodies in the
+     * returned object.
+     * @var    boolean
+     */
+    var $_include_bodies;
+
+    /**
+     * Flag to determine whether to decode bodies
+     * @var    boolean
+     */
+    var $_decode_bodies;
+
+    /**
+     * Flag to determine whether to decode headers
+     * @var    boolean
+     */
+    var $_decode_headers;
+
+    /**
+     * Constructor.
+     *
+     * Sets up the object, initialise the variables, and splits and
+     * stores the header and body of the input.
+     *
+     * @param string The input to decode
+     * @access public
+     */
+    function Mail_mimeDecode($input)
+    {
+        list($header, $body)   = $this->_splitBodyHeader($input);
+
+        $this->_input          = $input;
+        $this->_header         = $header;
+        $this->_body           = $body;
+        $this->_decode_bodies  = false;
+        $this->_include_bodies = true;
+    }
+
+    /**
+     * Begins the decoding process. If called statically
+     * it will create an object and call the decode() method
+     * of it.
+     *
+     * @param array An array of various parameters that determine
+     *              various things:
+     *              include_bodies - Whether to include the body in the returned
+     *                               object.
+     *              decode_bodies  - Whether to decode the bodies
+     *                               of the parts. (Transfer encoding)
+     *              decode_headers - Whether to decode headers
+     *              input          - If called statically, this will be treated
+     *                               as the input
+     * @return object Decoded results
+     * @access public
+     */
+    function decode($params = null)
+    {
+        // determine if this method has been called statically
+        $isStatic = !(isset($this) && get_class($this) == __CLASS__);
+
+        // Have we been called statically?
+	// If so, create an object and pass details to that.
+        if ($isStatic AND isset($params['input'])) {
+
+            $obj = new Mail_mimeDecode($params['input']);
+            $structure = $obj->decode($params);
+
+        // Called statically but no input
+        } elseif ($isStatic) {
+            return PEAR::raiseError('Called statically and no input given');
+
+        // Called via an object
+        } else {
+            $this->_include_bodies = isset($params['include_bodies']) ?
+	                             $params['include_bodies'] : false;
+            $this->_decode_bodies  = isset($params['decode_bodies']) ?
+	                             $params['decode_bodies']  : false;
+            $this->_decode_headers = isset($params['decode_headers']) ?
+	                             $params['decode_headers'] : false;
+
+            $structure = $this->_decode($this->_header, $this->_body);
+            if ($structure === false) {
+                $structure = $this->raiseError($this->_error);
+            }
+        }
+
+        return $structure;
+    }
+
+    /**
+     * Performs the decoding. Decodes the body string passed to it
+     * If it finds certain content-types it will call itself in a
+     * recursive fashion
+     *
+     * @param string Header section
+     * @param string Body section
+     * @return object Results of decoding process
+     * @access private
+     */
+    function _decode($headers, $body, $default_ctype = 'text/plain')
+    {
+        $return = new stdClass;
+        $return->headers = array();
+        $headers = $this->_parseHeaders($headers);
+
+        foreach ($headers as $value) {
+            if (isset($return->headers[strtolower($value['name'])]) AND !is_array($return->headers[strtolower($value['name'])])) {
+                $return->headers[strtolower($value['name'])]   = array($return->headers[strtolower($value['name'])]);
+                $return->headers[strtolower($value['name'])][] = $value['value'];
+
+            } elseif (isset($return->headers[strtolower($value['name'])])) {
+                $return->headers[strtolower($value['name'])][] = $value['value'];
+
+            } else {
+                $return->headers[strtolower($value['name'])] = $value['value'];
+            }
+        }
+
+        reset($headers);
+        while (list($key, $value) = each($headers)) {
+            $headers[$key]['name'] = strtolower($headers[$key]['name']);
+            switch ($headers[$key]['name']) {
+
+                case 'content-type':
+                    $content_type = $this->_parseHeaderValue($headers[$key]['value']);
+
+                    if (preg_match('/([0-9a-z+.-]+)\/([0-9a-z+.-]+)/i', $content_type['value'], $regs)) {
+                        $return->ctype_primary   = $regs[1];
+                        $return->ctype_secondary = $regs[2];
+                    }
+
+                    if (isset($content_type['other'])) {
+                        while (list($p_name, $p_value) = each($content_type['other'])) {
+                            $return->ctype_parameters[$p_name] = $p_value;
+                        }
+                    }
+                    break;
+
+                case 'content-disposition':
+                    $content_disposition = $this->_parseHeaderValue($headers[$key]['value']);
+                    $return->disposition   = $content_disposition['value'];
+                    if (isset($content_disposition['other'])) {
+                        while (list($p_name, $p_value) = each($content_disposition['other'])) {
+                            $return->d_parameters[$p_name] = $p_value;
+                        }
+                    }
+                    break;
+
+                case 'content-transfer-encoding':
+                    $content_transfer_encoding = $this->_parseHeaderValue($headers[$key]['value']);
+                    break;
+            }
+        }
+
+        if (isset($content_type)) {
+            switch (strtolower($content_type['value'])) {
+                case 'text/plain':
+                    $encoding = isset($content_transfer_encoding) ? $content_transfer_encoding['value'] : '7bit';
+                    $this->_include_bodies ? $return->body = ($this->_decode_bodies ? $this->_decodeBody($body, $encoding) : $body) : null;
+                    break;
+
+                case 'text/html':
+                    $encoding = isset($content_transfer_encoding) ? $content_transfer_encoding['value'] : '7bit';
+                    $this->_include_bodies ? $return->body = ($this->_decode_bodies ? $this->_decodeBody($body, $encoding) : $body) : null;
+                    break;
+
+                case 'multipart/parallel':
+                case 'multipart/report': // RFC1892
+                case 'multipart/signed': // PGP
+                case 'multipart/digest':
+                case 'multipart/alternative':
+                case 'multipart/related':
+                case 'multipart/mixed':
+                    if(!isset($content_type['other']['boundary'])){
+                        $this->_error = 'No boundary found for ' . $content_type['value'] . ' part';
+                        return false;
+                    }
+
+                    $default_ctype = (strtolower($content_type['value']) === 'multipart/digest') ? 'message/rfc822' : 'text/plain';
+
+                    $parts = $this->_boundarySplit($body, $content_type['other']['boundary']);
+                    for ($i = 0; $i < count($parts); $i++) {
+                        list($part_header, $part_body) = $this->_splitBodyHeader($parts[$i]);
+                        $part = $this->_decode($part_header, $part_body, $default_ctype);
+                        if($part === false)
+                            $part = $this->raiseError($this->_error);
+                        $return->parts[] = $part;
+                    }
+                    break;
+
+                case 'message/rfc822':
+                    $obj = &new Mail_mimeDecode($body);
+                    $return->parts[] = $obj->decode(array('include_bodies' => $this->_include_bodies,
+					                                      'decode_bodies'  => $this->_decode_bodies,
+														  'decode_headers' => $this->_decode_headers));
+                    unset($obj);
+                    break;
+
+                default:
+                    if(!isset($content_transfer_encoding['value']))
+                        $content_transfer_encoding['value'] = '7bit';
+                    $this->_include_bodies ? $return->body = ($this->_decode_bodies ? $this->_decodeBody($body, $content_transfer_encoding['value']) : $body) : null;
+                    break;
+            }
+
+        } else {
+            $ctype = explode('/', $default_ctype);
+            $return->ctype_primary   = $ctype[0];
+            $return->ctype_secondary = $ctype[1];
+            $this->_include_bodies ? $return->body = ($this->_decode_bodies ? $this->_decodeBody($body) : $body) : null;
+        }
+
+        return $return;
+    }
+
+    /**
+     * Given the output of the above function, this will return an
+     * array of references to the parts, indexed by mime number.
+     *
+     * @param  object $structure   The structure to go through
+     * @param  string $mime_number Internal use only.
+     * @return array               Mime numbers
+     */
+    function &getMimeNumbers(&$structure, $no_refs = false, $mime_number = '', $prepend = '')
+    {
+        $return = array();
+        if (!empty($structure->parts)) {
+            if ($mime_number != '') {
+                $structure->mime_id = $prepend . $mime_number;
+                $return[$prepend . $mime_number] = &$structure;
+            }
+            for ($i = 0; $i < count($structure->parts); $i++) {
+
+            
+                if (!empty($structure->headers['content-type']) AND substr(strtolower($structure->headers['content-type']), 0, 8) == 'message/') {
+                    $prepend      = $prepend . $mime_number . '.';
+                    $_mime_number = '';
+                } else {
+                    $_mime_number = ($mime_number == '' ? $i + 1 : sprintf('%s.%s', $mime_number, $i + 1));
+                }
+
+                $arr = &Mail_mimeDecode::getMimeNumbers($structure->parts[$i], $no_refs, $_mime_number, $prepend);
+                foreach ($arr as $key => $val) {
+                    $no_refs ? $return[$key] = '' : $return[$key] = &$arr[$key];
+                }
+            }
+        } else {
+            if ($mime_number == '') {
+                $mime_number = '1';
+            }
+            $structure->mime_id = $prepend . $mime_number;
+            $no_refs ? $return[$prepend . $mime_number] = '' : $return[$prepend . $mime_number] = &$structure;
+        }
+        
+        return $return;
+    }
+
+    /**
+     * Given a string containing a header and body
+     * section, this function will split them (at the first
+     * blank line) and return them.
+     *
+     * @param string Input to split apart
+     * @return array Contains header and body section
+     * @access private
+     */
+    function _splitBodyHeader($input)
+    {
+        if (preg_match("/^(.*?)\r?\n\r?\n(.*)/s", $input, $match)) {
+            return array($match[1], $match[2]);
+        }
+        $this->_error = 'Could not split header and body';
+        return false;
+    }
+
+    /**
+     * Parse headers given in $input and return
+     * as assoc array.
+     *
+     * @param string Headers to parse
+     * @return array Contains parsed headers
+     * @access private
+     */
+    function _parseHeaders($input)
+    {
+
+        if ($input !== '') {
+            // Unfold the input
+            $input   = preg_replace("/\r?\n/", "\r\n", $input);
+            $input   = preg_replace("/\r\n(\t| )+/", ' ', $input);
+            $headers = explode("\r\n", trim($input));
+
+            foreach ($headers as $value) {
+                $hdr_name = substr($value, 0, $pos = strpos($value, ':'));
+                $hdr_value = substr($value, $pos+1);
+                if($hdr_value[0] == ' ')
+                    $hdr_value = substr($hdr_value, 1);
+
+                $return[] = array(
+                                  'name'  => $hdr_name,
+                                  'value' => $this->_decode_headers ? $this->_decodeHeader($hdr_value) : $hdr_value
+                                 );
+            }
+        } else {
+            $return = array();
+        }
+
+        return $return;
+    }
+
+    /**
+     * Function to parse a header value,
+     * extract first part, and any secondary
+     * parts (after ;) This function is not as
+     * robust as it could be. Eg. header comments
+     * in the wrong place will probably break it.
+     *
+     * @param string Header value to parse
+     * @return array Contains parsed result
+     * @access private
+     */
+    function _parseHeaderValue($input)
+    {
+
+        if (($pos = strpos($input, ';')) !== false) {
+
+            $return['value'] = trim(substr($input, 0, $pos));
+            $input = trim(substr($input, $pos+1));
+
+            if (strlen($input) > 0) {
+
+                // This splits on a semi-colon, if there's no preceeding backslash
+                // Now works with quoted values; had to glue the \; breaks in PHP
+                // the regex is already bordering on incomprehensible
+                $splitRegex = '/([^;\'"]*[\'"]([^\'"]*([^\'"]*)*)[\'"][^;\'"]*|([^;]+))(;|$)/';
+                preg_match_all($splitRegex, $input, $matches);
+                $parameters = array();
+                for ($i=0; $i<count($matches[0]); $i++) {
+                    $param = $matches[0][$i];
+                    while (substr($param, -2) == '\;') {
+                        $param .= $matches[0][++$i];
+                    }
+                    $parameters[] = $param;
+                }
+
+                for ($i = 0; $i < count($parameters); $i++) {
+                    $param_name  = trim(substr($parameters[$i], 0, $pos = strpos($parameters[$i], '=')), "'\";\t\\ ");
+                    $param_value = trim(str_replace('\;', ';', substr($parameters[$i], $pos + 1)), "'\";\t\\ ");
+                    if ($param_value[0] == '"') {
+                        $param_value = substr($param_value, 1, -1);
+                    }
+                    $return['other'][$param_name] = $param_value;
+                    $return['other'][strtolower($param_name)] = $param_value;
+                }
+            }
+        } else {
+            $return['value'] = trim($input);
+        }
+
+        return $return;
+    }
+
+    /**
+     * This function splits the input based
+     * on the given boundary
+     *
+     * @param string Input to parse
+     * @return array Contains array of resulting mime parts
+     * @access private
+     */
+    function _boundarySplit($input, $boundary)
+    {
+        $parts = array();
+
+        $bs_possible = substr($boundary, 2, -2);
+        $bs_check = '\"' . $bs_possible . '\"';
+
+        if ($boundary == $bs_check) {
+            $boundary = $bs_possible;
+        }
+
+        $tmp = explode('--' . $boundary, $input);
+
+        for ($i = 1; $i < count($tmp) - 1; $i++) {
+            $parts[] = $tmp[$i];
+        }
+
+        return $parts;
+    }
+
+    /**
+     * Given a header, this function will decode it
+     * according to RFC2047. Probably not *exactly*
+     * conformant, but it does pass all the given
+     * examples (in RFC2047).
+     *
+     * @param string Input header value to decode
+     * @return string Decoded header value
+     * @access private
+     */
+    function _decodeHeader($input)
+    {
+        // Remove white space between encoded-words
+        $input = preg_replace('/(=\?[^?]+\?(q|b)\?[^?]*\?=)(\s)+=\?/i', '\1=?', $input);
+
+        // For each encoded-word...
+        while (preg_match('/(=\?([^?]+)\?(q|b)\?([^?]*)\?=)/i', $input, $matches)) {
+
+            $encoded  = $matches[1];
+            $charset  = $matches[2];
+            $encoding = $matches[3];
+            $text     = $matches[4];
+
+            switch (strtolower($encoding)) {
+                case 'b':
+                    $text = base64_decode($text);
+                    break;
+
+                case 'q':
+                    $text = str_replace('_', ' ', $text);
+                    preg_match_all('/=([a-f0-9]{2})/i', $text, $matches);
+                    foreach($matches[1] as $value)
+                        $text = str_replace('='.$value, chr(hexdec($value)), $text);
+                    break;
+            }
+
+            $input = str_replace($encoded, $text, $input);
+        }
+
+        return $input;
+    }
+
+    /**
+     * Given a body string and an encoding type,
+     * this function will decode and return it.
+     *
+     * @param  string Input body to decode
+     * @param  string Encoding type to use.
+     * @return string Decoded body
+     * @access private
+     */
+    function _decodeBody($input, $encoding = '7bit')
+    {
+        switch (strtolower($encoding)) {
+            case '7bit':
+                return $input;
+                break;
+
+            case 'quoted-printable':
+                return $this->_quotedPrintableDecode($input);
+                break;
+
+            case 'base64':
+                return base64_decode($input);
+                break;
+
+            default:
+                return $input;
+        }
+    }
+
+    /**
+     * Given a quoted-printable string, this
+     * function will decode and return it.
+     *
+     * @param  string Input body to decode
+     * @return string Decoded body
+     * @access private
+     */
+    function _quotedPrintableDecode($input)
+    {
+        // Remove soft line breaks
+        $input = preg_replace("/=\r?\n/", '', $input);
+
+        // Replace encoded characters
+		$input = preg_replace('/=([a-f0-9]{2})/ie', "chr(hexdec('\\1'))", $input);
+
+        return $input;
+    }
+
+    /**
+     * Checks the input for uuencoded files and returns
+     * an array of them. Can be called statically, eg:
+     *
+     * $files =& Mail_mimeDecode::uudecode($some_text);
+     *
+     * It will check for the begin 666 ... end syntax
+     * however and won't just blindly decode whatever you
+     * pass it.
+     *
+     * @param  string Input body to look for attahcments in
+     * @return array  Decoded bodies, filenames and permissions
+     * @access public
+     * @author Unknown
+     */
+    function &uudecode($input)
+    {
+        // Find all uuencoded sections
+        preg_match_all("/begin ([0-7]{3}) (.+)\r?\n(.+)\r?\nend/Us", $input, $matches);
+
+        for ($j = 0; $j < count($matches[3]); $j++) {
+
+            $str      = $matches[3][$j];
+            $filename = $matches[2][$j];
+            $fileperm = $matches[1][$j];
+
+            $file = '';
+            $str = preg_split("/\r?\n/", trim($str));
+            $strlen = count($str);
+
+            for ($i = 0; $i < $strlen; $i++) {
+                $pos = 1;
+                $d = 0;
+                $len=(int)(((ord(substr($str[$i],0,1)) -32) - ' ') & 077);
+
+                while (($d + 3 <= $len) AND ($pos + 4 <= strlen($str[$i]))) {
+                    $c0 = (ord(substr($str[$i],$pos,1)) ^ 0x20);
+                    $c1 = (ord(substr($str[$i],$pos+1,1)) ^ 0x20);
+                    $c2 = (ord(substr($str[$i],$pos+2,1)) ^ 0x20);
+                    $c3 = (ord(substr($str[$i],$pos+3,1)) ^ 0x20);
+                    $file .= chr(((($c0 - ' ') & 077) << 2) | ((($c1 - ' ') & 077) >> 4));
+
+                    $file .= chr(((($c1 - ' ') & 077) << 4) | ((($c2 - ' ') & 077) >> 2));
+
+                    $file .= chr(((($c2 - ' ') & 077) << 6) |  (($c3 - ' ') & 077));
+
+                    $pos += 4;
+                    $d += 3;
+                }
+
+                if (($d + 2 <= $len) && ($pos + 3 <= strlen($str[$i]))) {
+                    $c0 = (ord(substr($str[$i],$pos,1)) ^ 0x20);
+                    $c1 = (ord(substr($str[$i],$pos+1,1)) ^ 0x20);
+                    $c2 = (ord(substr($str[$i],$pos+2,1)) ^ 0x20);
+                    $file .= chr(((($c0 - ' ') & 077) << 2) | ((($c1 - ' ') & 077) >> 4));
+
+                    $file .= chr(((($c1 - ' ') & 077) << 4) | ((($c2 - ' ') & 077) >> 2));
+
+                    $pos += 3;
+                    $d += 2;
+                }
+
+                if (($d + 1 <= $len) && ($pos + 2 <= strlen($str[$i]))) {
+                    $c0 = (ord(substr($str[$i],$pos,1)) ^ 0x20);
+                    $c1 = (ord(substr($str[$i],$pos+1,1)) ^ 0x20);
+                    $file .= chr(((($c0 - ' ') & 077) << 2) | ((($c1 - ' ') & 077) >> 4));
+
+                }
+            }
+            $files[] = array('filename' => $filename, 'fileperm' => $fileperm, 'filedata' => $file);
+        }
+
+        return $files;
+    }
+
+    /**
+     * getSendArray() returns the arguments required for Mail::send()
+     * used to build the arguments for a mail::send() call 
+     *
+     * Usage:
+     * $mailtext = Full email (for example generated by a template)
+     * $decoder = new Mail_mimeDecode($mailtext);
+     * $parts =  $decoder->getSendArray();
+     * if (!PEAR::isError($parts) {
+     *     list($recipents,$headers,$body) = $parts;
+     *     $mail = Mail::factory('smtp');
+     *     $mail->send($recipents,$headers,$body);
+     * } else {
+     *     echo $parts->message;
+     * }
+     * @return mixed   array of recipeint, headers,body or Pear_Error
+     * @access public
+     * @author Alan Knowles <alan@akbkhome.com>
+     */
+    function getSendArray()
+    {
+        // prevent warning if this is not set
+        $this->_decode_headers = FALSE;
+        $headerlist =$this->_parseHeaders($this->_header);
+        $to = "";
+        if (!$headerlist) {
+            return $this->raiseError("Message did not contain headers");
+        }
+        foreach($headerlist as $item) {
+            $header[$item['name']] = $item['value'];
+            switch (strtolower($item['name'])) {
+                case "to":
+                case "cc":
+                case "bcc":
+                    $to = ",".$item['value'];
+                default:
+                   break;
+            }
+        }
+        if ($to == "") {
+            return $this->raiseError("Message did not contain any recipents");
+        }
+        $to = substr($to,1);
+        return array($to,$header,$this->_body);
+    } 
+
+    /**
+     * Returns a xml copy of the output of
+     * Mail_mimeDecode::decode. Pass the output in as the
+     * argument. This function can be called statically. Eg:
+     *
+     * $output = $obj->decode();
+     * $xml    = Mail_mimeDecode::getXML($output);
+     *
+     * The DTD used for this should have been in the package. Or
+     * alternatively you can get it from cvs, or here:
+     * http://www.phpguru.org/xmail/xmail.dtd.
+     *
+     * @param  object Input to convert to xml. This should be the
+     *                output of the Mail_mimeDecode::decode function
+     * @return string XML version of input
+     * @access public
+     */
+    function getXML($input)
+    {
+        $crlf    =  "\r\n";
+        $output  = '<?xml version=\'1.0\'?>' . $crlf .
+                   '<!DOCTYPE email SYSTEM "http://www.phpguru.org/xmail/xmail.dtd">' . $crlf .
+                   '<email>' . $crlf .
+                   Mail_mimeDecode::_getXML($input) .
+                   '</email>';
+
+        return $output;
+    }
+
+    /**
+     * Function that does the actual conversion to xml. Does a single
+     * mimepart at a time.
+     *
+     * @param  object  Input to convert to xml. This is a mimepart object.
+     *                 It may or may not contain subparts.
+     * @param  integer Number of tabs to indent
+     * @return string  XML version of input
+     * @access private
+     */
+    function _getXML($input, $indent = 1)
+    {
+        $htab    =  "\t";
+        $crlf    =  "\r\n";
+        $output  =  '';
+        $headers = @(array)$input->headers;
+
+        foreach ($headers as $hdr_name => $hdr_value) {
+
+            // Multiple headers with this name
+            if (is_array($headers[$hdr_name])) {
+                for ($i = 0; $i < count($hdr_value); $i++) {
+                    $output .= Mail_mimeDecode::_getXML_helper($hdr_name, $hdr_value[$i], $indent);
+                }
+
+            // Only one header of this sort
+            } else {
+                $output .= Mail_mimeDecode::_getXML_helper($hdr_name, $hdr_value, $indent);
+            }
+        }
+
+        if (!empty($input->parts)) {
+            for ($i = 0; $i < count($input->parts); $i++) {
+                $output .= $crlf . str_repeat($htab, $indent) . '<mimepart>' . $crlf .
+                           Mail_mimeDecode::_getXML($input->parts[$i], $indent+1) .
+                           str_repeat($htab, $indent) . '</mimepart>' . $crlf;
+            }
+        } elseif (isset($input->body)) {
+            $output .= $crlf . str_repeat($htab, $indent) . '<body><![CDATA[' .
+                       $input->body . ']]></body>' . $crlf;
+        }
+
+        return $output;
+    }
+
+    /**
+     * Helper function to _getXML(). Returns xml of a header.
+     *
+     * @param  string  Name of header
+     * @param  string  Value of header
+     * @param  integer Number of tabs to indent
+     * @return string  XML version of input
+     * @access private
+     */
+    function _getXML_helper($hdr_name, $hdr_value, $indent)
+    {
+        $htab   = "\t";
+        $crlf   = "\r\n";
+        $return = '';
+
+        $new_hdr_value = ($hdr_name != 'received') ? Mail_mimeDecode::_parseHeaderValue($hdr_value) : array('value' => $hdr_value);
+        $new_hdr_name  = str_replace(' ', '-', ucwords(str_replace('-', ' ', $hdr_name)));
+
+        // Sort out any parameters
+        if (!empty($new_hdr_value['other'])) {
+            foreach ($new_hdr_value['other'] as $paramname => $paramvalue) {
+                $params[] = str_repeat($htab, $indent) . $htab . '<parameter>' . $crlf .
+                            str_repeat($htab, $indent) . $htab . $htab . '<paramname>' . htmlspecialchars($paramname) . '</paramname>' . $crlf .
+                            str_repeat($htab, $indent) . $htab . $htab . '<paramvalue>' . htmlspecialchars($paramvalue) . '</paramvalue>' . $crlf .
+                            str_repeat($htab, $indent) . $htab . '</parameter>' . $crlf;
+            }
+
+            $params = implode('', $params);
+        } else {
+            $params = '';
+        }
+
+        $return = str_repeat($htab, $indent) . '<header>' . $crlf .
+                  str_repeat($htab, $indent) . $htab . '<headername>' . htmlspecialchars($new_hdr_name) . '</headername>' . $crlf .
+                  str_repeat($htab, $indent) . $htab . '<headervalue>' . htmlspecialchars($new_hdr_value['value']) . '</headervalue>' . $crlf .
+                  $params .
+                  str_repeat($htab, $indent) . '</header>' . $crlf;
+
+        return $return;
+    }
+
+} // End of class
+?>
Index: branches/dev/data/module/Mail/mimePart.php
===================================================================
--- branches/dev/data/module/Mail/mimePart.php	(revision 11460)
+++ branches/dev/data/module/Mail/mimePart.php	(revision 11460)
@@ -0,0 +1,351 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Copyright (c) 2002-2003  Richard Heyes                                     |
+// | All rights reserved.                                                  |
+// |                                                                       |
+// | Redistribution and use in source and binary forms, with or without    |
+// | modification, are permitted provided that the following conditions    |
+// | are met:                                                              |
+// |                                                                       |
+// | o Redistributions of source code must retain the above copyright      |
+// |   notice, this list of conditions and the following disclaimer.       |
+// | o Redistributions in binary form must reproduce the above copyright   |
+// |   notice, this list of conditions and the following disclaimer in the |
+// |   documentation and/or other materials provided with the distribution.|
+// | o The names of the authors may not be used to endorse or promote      |
+// |   products derived from this software without specific prior written  |
+// |   permission.                                                         |
+// |                                                                       |
+// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   |
+// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     |
+// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
+// | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  |
+// | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
+// | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      |
+// | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
+// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
+// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   |
+// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
+// | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  |
+// |                                                                       |
+// +-----------------------------------------------------------------------+
+// | Author: Richard Heyes <richard@phpguru.org>                           |
+// +-----------------------------------------------------------------------+
+
+/**
+*
+*  Raw mime encoding class
+*
+* What is it?
+*   This class enables you to manipulate and build
+*   a mime email from the ground up.
+*
+* Why use this instead of mime.php?
+*   mime.php is a userfriendly api to this class for
+*   people who aren't interested in the internals of
+*   mime mail. This class however allows full control
+*   over the email.
+*
+* Eg.
+*
+* // Since multipart/mixed has no real body, (the body is
+* // the subpart), we set the body argument to blank.
+*
+* $params['content_type'] = 'multipart/mixed';
+* $email = new Mail_mimePart('', $params);
+*
+* // Here we add a text part to the multipart we have
+* // already. Assume $body contains plain text.
+*
+* $params['content_type'] = 'text/plain';
+* $params['encoding']     = '7bit';
+* $text = $email->addSubPart($body, $params);
+*
+* // Now add an attachment. Assume $attach is
+* the contents of the attachment
+*
+* $params['content_type'] = 'application/zip';
+* $params['encoding']     = 'base64';
+* $params['disposition']  = 'attachment';
+* $params['dfilename']    = 'example.zip';
+* $attach =& $email->addSubPart($body, $params);
+*
+* // Now build the email. Note that the encode
+* // function returns an associative array containing two
+* // elements, body and headers. You will need to add extra
+* // headers, (eg. Mime-Version) before sending.
+*
+* $email = $message->encode();
+* $email['headers'][] = 'Mime-Version: 1.0';
+*
+*
+* Further examples are available at http://www.phpguru.org
+*
+* TODO:
+*  - Set encode() to return the $obj->encoded if encode()
+*    has already been run. Unless a flag is passed to specifically
+*    re-build the message.
+*
+* @author  Richard Heyes <richard@phpguru.org>
+* @version $Revision: 1.13 $
+* @package Mail
+*/
+
+class Mail_mimePart {
+
+   /**
+    * The encoding type of this part
+    * @var string
+    */
+    var $_encoding;
+
+   /**
+    * An array of subparts
+    * @var array
+    */
+    var $_subparts;
+
+   /**
+    * The output of this part after being built
+    * @var string
+    */
+    var $_encoded;
+
+   /**
+    * Headers for this part
+    * @var array
+    */
+    var $_headers;
+
+   /**
+    * The body of this part (not encoded)
+    * @var string
+    */
+    var $_body;
+
+    /**
+     * Constructor.
+     *
+     * Sets up the object.
+     *
+     * @param $body   - The body of the mime part if any.
+     * @param $params - An associative array of parameters:
+     *                  content_type - The content type for this part eg multipart/mixed
+     *                  encoding     - The encoding to use, 7bit, 8bit, base64, or quoted-printable
+     *                  cid          - Content ID to apply
+     *                  disposition  - Content disposition, inline or attachment
+     *                  dfilename    - Optional filename parameter for content disposition
+     *                  description  - Content description
+     *                  charset      - Character set to use
+     * @access public
+     */
+    function Mail_mimePart($body = '', $params = array())
+    {
+        if (!defined('MAIL_MIMEPART_CRLF')) {
+            define('MAIL_MIMEPART_CRLF', defined('MAIL_MIME_CRLF') ? MAIL_MIME_CRLF : "\r\n", TRUE);
+        }
+
+        foreach ($params as $key => $value) {
+            switch ($key) {
+                case 'content_type':
+                    $headers['Content-Type'] = $value . (isset($charset) ? '; charset="' . $charset . '"' : '');
+                    break;
+
+                case 'encoding':
+                    $this->_encoding = $value;
+                    $headers['Content-Transfer-Encoding'] = $value;
+                    break;
+
+                case 'cid':
+                    $headers['Content-ID'] = '<' . $value . '>';
+                    break;
+
+                case 'disposition':
+                    $headers['Content-Disposition'] = $value . (isset($dfilename) ? '; filename="' . $dfilename . '"' : '');
+                    break;
+
+                case 'dfilename':
+                    if (isset($headers['Content-Disposition'])) {
+                        $headers['Content-Disposition'] .= '; filename="' . $value . '"';
+                    } else {
+                        $dfilename = $value;
+                    }
+                    break;
+
+                case 'description':
+                    $headers['Content-Description'] = $value;
+                    break;
+
+                case 'charset':
+                    if (isset($headers['Content-Type'])) {
+                        $headers['Content-Type'] .= '; charset="' . $value . '"';
+                    } else {
+                        $charset = $value;
+                    }
+                    break;
+            }
+        }
+
+        // Default content-type
+        if (!isset($headers['Content-Type'])) {
+            $headers['Content-Type'] = 'text/plain';
+        }
+
+        //Default encoding
+        if (!isset($this->_encoding)) {
+            $this->_encoding = '7bit';
+        }
+
+        // Assign stuff to member variables
+        $this->_encoded  = array();
+        $this->_headers  = $headers;
+        $this->_body     = $body;
+    }
+
+    /**
+     * encode()
+     *
+     * Encodes and returns the email. Also stores
+     * it in the encoded member variable
+     *
+     * @return An associative array containing two elements,
+     *         body and headers. The headers element is itself
+     *         an indexed array.
+     * @access public
+     */
+    function encode()
+    {
+        $encoded =& $this->_encoded;
+
+        if (!empty($this->_subparts)) {
+            srand((double)microtime()*1000000);
+            $boundary = '=_' . md5(rand() . microtime());
+            $this->_headers['Content-Type'] .= ';' . MAIL_MIMEPART_CRLF . "\t" . 'boundary="' . $boundary . '"';
+
+            // Add body parts to $subparts
+            for ($i = 0; $i < count($this->_subparts); $i++) {
+                $headers = array();
+                $tmp = $this->_subparts[$i]->encode();
+                foreach ($tmp['headers'] as $key => $value) {
+                    $headers[] = $key . ': ' . $value;
+                }
+                $subparts[] = implode(MAIL_MIMEPART_CRLF, $headers) . MAIL_MIMEPART_CRLF . MAIL_MIMEPART_CRLF . $tmp['body'];
+            }
+
+            $encoded['body'] = '--' . $boundary . MAIL_MIMEPART_CRLF .
+                               implode('--' . $boundary . MAIL_MIMEPART_CRLF, $subparts) .
+                               '--' . $boundary.'--' . MAIL_MIMEPART_CRLF;
+
+        } else {
+            $encoded['body'] = $this->_getEncodedData($this->_body, $this->_encoding) . MAIL_MIMEPART_CRLF;
+        }
+
+        // Add headers to $encoded
+        $encoded['headers'] =& $this->_headers;
+
+        return $encoded;
+    }
+
+    /**
+     * &addSubPart()
+     *
+     * Adds a subpart to current mime part and returns
+     * a reference to it
+     *
+     * @param $body   The body of the subpart, if any.
+     * @param $params The parameters for the subpart, same
+     *                as the $params argument for constructor.
+     * @return A reference to the part you just added. It is
+     *         crucial if using multipart/* in your subparts that
+     *         you use =& in your script when calling this function,
+     *         otherwise you will not be able to add further subparts.
+     * @access public
+     */
+    function &addSubPart($body, $params)
+    {
+        $this->_subparts[] = new Mail_mimePart($body, $params);
+        return $this->_subparts[count($this->_subparts) - 1];
+    }
+
+    /**
+     * _getEncodedData()
+     *
+     * Returns encoded data based upon encoding passed to it
+     *
+     * @param $data     The data to encode.
+     * @param $encoding The encoding type to use, 7bit, base64,
+     *                  or quoted-printable.
+     * @access private
+     */
+    function _getEncodedData($data, $encoding)
+    {
+        switch ($encoding) {
+            case '8bit':
+            case '7bit':
+                return $data;
+                break;
+
+            case 'quoted-printable':
+                return $this->_quotedPrintableEncode($data);
+                break;
+
+            case 'base64':
+                return rtrim(chunk_split(base64_encode($data), 76, MAIL_MIMEPART_CRLF));
+                break;
+
+            default:
+                return $data;
+        }
+    }
+
+    /**
+     * quoteadPrintableEncode()
+     *
+     * Encodes data to quoted-printable standard.
+     *
+     * @param $input    The data to encode
+     * @param $line_max Optional max line length. Should
+     *                  not be more than 76 chars
+     *
+     * @access private
+     */
+    function _quotedPrintableEncode($input , $line_max = 76)
+    {
+        $lines  = preg_split("/\r?\n/", $input);
+        $eol    = MAIL_MIMEPART_CRLF;
+        $escape = '=';
+        $output = '';
+
+        while(list(, $line) = each($lines)){
+
+            $linlen     = strlen($line);
+            $newline = '';
+
+            for ($i = 0; $i < $linlen; $i++) {
+                $char = substr($line, $i, 1);
+                $dec  = ord($char);
+
+                if (($dec == 32) AND ($i == ($linlen - 1))){    // convert space at eol only
+                    $char = '=20';
+
+                } elseif(($dec == 9) AND ($i == ($linlen - 1))) {  // convert tab at eol only
+                    $char = '=09';
+                } elseif($dec == 9) {
+                    ; // Do nothing if a tab.
+                } elseif(($dec == 61) OR ($dec < 32 ) OR ($dec > 126)) {
+                    $char = $escape . strtoupper(sprintf('%02s', dechex($dec)));
+                }
+
+                if ((strlen($newline) + strlen($char)) >= $line_max) {        // MAIL_MIMEPART_CRLF is not counted
+                    $output  .= $newline . $escape . $eol;                    // soft line break; " =\r\n" is okay
+                    $newline  = '';
+                }
+                $newline .= $char;
+            } // end of for
+            $output .= $newline . $eol;
+        }
+        $output = substr($output, 0, -1 * strlen($eol)); // Don't want last crlf
+        return $output;
+    }
+} // End of class
+?>
Index: branches/dev/data/module/Net/UserAgent/Mobile/NonMobile.php
===================================================================
--- branches/dev/data/module/Net/UserAgent/Mobile/NonMobile.php	(revision 11460)
+++ branches/dev/data/module/Net/UserAgent/Mobile/NonMobile.php	(revision 11460)
@@ -0,0 +1,188 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4: */
+
+/**
+ * PHP versions 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @category   Networking
+ * @package    Net_UserAgent_Mobile
+ * @author     KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @copyright  2003-2007 KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version    CVS: $Id: NonMobile.php,v 1.12 2007/02/20 15:20:02 kuboa Exp $
+ * @see        Net_UserAgent_Mobile_Common
+ * @since      File available since Release 0.1.0
+ */
+
+require_once(dirname(__FILE__) . '/Common.php');
+require_once(dirname(__FILE__) . '/Display.php');
+
+// {{{ Net_UserAgent_Mobile_NonMobile
+
+/**
+ * Non-Mobile Agent implementation
+ *
+ * Net_UserAgent_Mobile_NonMobile is a subclass of
+ * {@link Net_UserAgent_Mobile_Common}, which implements non-mobile or
+ * unimplemented user agents.
+ *
+ * SYNOPSIS:
+ * <code>
+ * require_once 'Net/UserAgent/Mobile.php';
+ *
+ * $_SERVER['HTTP_USER_AGENT'] = 'Mozilla/4.0';
+ * $agent = &Net_UserAgent_Mobile::factory();
+ * </code>
+ *
+ * @category   Networking
+ * @package    Net_UserAgent_Mobile
+ * @author     KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @copyright  2003-2007 KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version    Release: 0.30.0
+ * @see        Net_UserAgent_Mobile_Common
+ * @since      Class available since Release 0.1.0
+ */
+class Net_UserAgent_Mobile_NonMobile extends Net_UserAgent_Mobile_Common
+{
+
+    // {{{ properties
+
+    /**#@+
+     * @access public
+     */
+
+    /**#@-*/
+
+    /**#@+
+     * @access private
+     */
+
+    /**#@-*/
+
+    /**#@+
+     * @access public
+     */
+
+    // }}}
+    // {{{ isNonMobile()
+
+    /**
+     * returns true
+     *
+     * @return boolean
+     */
+    function isNonMobile()
+    {
+        return true;
+    }
+
+    // }}}
+    // {{{ parse()
+
+    /**
+     * parse HTTP_USER_AGENT string
+     */
+    function parse()
+    {
+        @list($this->name, $this->version) =
+            explode('/', $this->getUserAgent());
+    }
+
+    // }}}
+    // {{{ makeDisplay()
+
+    /**
+     * create a new {@link Net_UserAgent_Mobile_Display} class instance
+     *
+     * @return object a newly created {@link Net_UserAgent_Mobile_Display}
+     *     object
+     * @see Net_UserAgent_Mobile_Display
+     */
+    function makeDisplay()
+    {
+        return new Net_UserAgent_Mobile_Display(null);
+    }
+
+    // }}}
+    // {{{ getModel()
+
+    /**
+     * returns name of the model
+     *
+     * @return string
+     */
+    function getModel()
+    {
+        return '';
+    }
+
+    // }}}
+    // {{{ getDeviceID()
+
+    /**
+     * returns device ID
+     *
+     * @return string
+     */
+    function getDeviceID()
+    {
+        return '';
+    }
+
+    // }}}
+    // {{{ getCarrierShortName()
+
+    /**
+     * returns the short name of the carrier
+     *
+     * @return string
+     */
+    function getCarrierShortName()
+    {
+        return 'N';
+    }
+
+    // }}}
+    // {{{ getCarrierLongName()
+
+    /**
+     * returns the long name of the carrier
+     *
+     * @return string
+     */
+    function getCarrierLongName()
+    {
+        return 'NonMobile';
+    }
+
+    /**#@-*/
+
+    /**#@+
+     * @access private
+     */
+
+    /**#@-*/
+
+    // }}}
+}
+
+// }}}
+
+/*
+ * Local Variables:
+ * mode: php
+ * coding: iso-8859-1
+ * tab-width: 4
+ * c-basic-offset: 4
+ * c-hanging-comment-ender-p: nil
+ * indent-tabs-mode: nil
+ * End:
+ */
+?>
Index: branches/dev/data/module/Net/UserAgent/Mobile/DoCoMoDisplayMap.php
===================================================================
--- branches/dev/data/module/Net/UserAgent/Mobile/DoCoMoDisplayMap.php	(revision 11460)
+++ branches/dev/data/module/Net/UserAgent/Mobile/DoCoMoDisplayMap.php	(revision 11460)
@@ -0,0 +1,1471 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4: */
+
+/**
+ * PHP versions 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @category   Networking
+ * @package    Net_UserAgent_Mobile
+ * @author     KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @copyright  2003-2007 KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version    CVS: $Id: DoCoMoDisplayMap.php,v 1.32 2007/02/20 18:30:17 kuboa Exp $
+ * @link       http://www.nttdocomo.co.jp/service/imode/make/content/spec/screen_area/index.html
+ * @see        Net_UserAgent_Mobile_Display
+ * @since      File available since Release 0.1
+ */
+
+// {{{ Net_UserAgent_Mobile_DoCoMoDisplayMap
+
+/**
+ * Display information mapping for DoCoMo.
+ *
+ * @category   Networking
+ * @package    Net_UserAgent_Mobile
+ * @author     KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @copyright  2003-2007 KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version    Release: 0.30.0
+ * @link       http://www.nttdocomo.co.jp/service/imode/make/content/spec/screen_area/index.html
+ * @see        Net_UserAgent_Mobile_Display
+ * @since      Class available since Release 0.1
+ */
+class Net_UserAgent_Mobile_DoCoMoDisplayMap
+{
+
+    // {{{ properties
+
+    /**#@+
+     * @access public
+     */
+
+    /**#@-*/
+
+    /**#@+
+     * @access private
+     */
+
+    /**#@-*/
+
+    /**#@+
+     * @access public
+     */
+
+    // }}}
+    // {{{ get()
+
+    /**
+     * Returns the display information of the model.
+     *
+     * @param string $model the name of the model
+     * @return array
+     * @static
+     */
+    function get($model)
+    {
+        static $displayMap;
+        if (!isset($displayMap)) {
+            if (isset($_SERVER['DOCOMO_MAP'])) {
+
+                // using the specified XML data
+                while (true) {
+                    if (!function_exists('xml_parser_create')
+                        || !is_readable($_SERVER['DOCOMO_MAP'])
+                        ) {
+                        break;
+                    }
+                    $xml = file_get_contents($_SERVER['DOCOMO_MAP']);
+                    $parser = xml_parser_create();
+                    if ($parser === false) {
+                        break;
+                    }
+                    xml_parse_into_struct($parser, $xml, $values, $indexes);
+                    if (!xml_parser_free($parser)) {
+                        break;
+                    }
+                    if (isset($indexes['OPT'])) {
+                        unset($indexes['OPT']);
+                    }
+                    foreach ($indexes as $modelName => $modelIndexes) {
+                        $displayMap[$modelName] = array();
+                        foreach ($values[ $modelIndexes[0] ]['attributes'] as $attributeName => $attributeValue) {
+                            $displayMap[$modelName][ strtolower($attributeName) ] = $attributeValue;
+                        }
+                    }
+                    break;
+                }
+            }
+
+            if (!isset($displayMap)) {
+                $displayMap = array(
+
+                                    // i-mode compliant HTML 1.0
+                                    'D501I' => array(
+                                                     'width'  => 96,
+                                                     'height' => 72,
+                                                     'depth'  => 2,
+                                                     'color'  => 0
+                                                     ),
+                                    'F501I' => array(
+                                                     'width'  => 112,
+                                                     'height' => 84,
+                                                     'depth'  => 2,
+                                                     'color'  => 0
+                                                     ),
+                                    'N501I' => array(
+                                                     'width'  => 118,
+                                                     'height' => 128,
+                                                     'depth'  => 2,
+                                                     'color'  => 0
+                                                     ),
+                                    'P501I' => array(
+                                                     'width'  => 96,
+                                                     'height' => 120,
+                                                     'depth'  => 2,
+                                                     'color'  => 0
+                                                     ),
+
+                                    // i-mode compliant HTML 2.0
+                                    'D502I' => array(
+                                                     'width'  => 96,
+                                                     'height' => 90,
+                                                     'depth'  => 256,
+                                                     'color'  => 1
+                                                     ),
+                                    'F502I' => array(
+                                                     'width'  => 96,
+                                                     'height' => 91,
+                                                     'depth'  => 256,
+                                                     'color'  => 1
+                                                     ),
+                                    'N502I' => array(
+                                                     'width'  => 118,
+                                                     'height' => 128,
+                                                     'depth'  => 4,
+                                                     'color'  => 0
+                                                     ),
+                                    'P502I' => array(
+                                                     'width'  => 96,
+                                                     'height' => 117,
+                                                     'depth'  => 4,
+                                                     'color'  => 0
+                                                     ),
+                                    'NM502I' => array(
+                                                      'width'  => 111,
+                                                      'height' => 106,
+                                                      'depth'  => 2,
+                                                      'color'  => 0
+                                                      ),
+                                    'SO502I' => array(
+                                                      'width'  => 120,
+                                                      'height' => 120,
+                                                      'depth'  => 4,
+                                                      'color'  => 0
+                                                      ),
+                                    'F502IT' => array(
+                                                      'width'  => 96,
+                                                      'height' => 91,
+                                                      'depth'  => 256,
+                                                      'color'  => 1
+                                                      ),
+                                    'N502IT' => array(
+                                                      'width'  => 118,
+                                                      'height' => 128,
+                                                      'depth'  => 256,
+                                                      'color'  => 1
+                                                      ),
+                                    'SO502IWM' => array(
+                                                        'width'  => 120,
+                                                        'height' => 113,
+                                                        'depth'  => 256,
+                                                        'color'  => 1
+                                                        ),
+                                    'SH821I' => array(
+                                                      'width'  => 96,
+                                                      'height' => 78,
+                                                      'depth'  => 256,
+                                                      'color'  => 1
+                                                      ),
+                                    'N821I' => array(
+                                                     'width'  => 118,
+                                                     'height' => 128,
+                                                     'depth'  => 4,
+                                                     'color'  => 0
+                                                     ),
+                                    'P821I' => array(
+                                                     'width'  => 118,
+                                                     'height' => 128,
+                                                     'depth'  => 4,
+                                                     'color'  => 0
+                                                     ),
+                                    'D209I' => array(
+                                                     'width'  => 96,
+                                                     'height' => 90,
+                                                     'depth'  => 256,
+                                                     'color'  => 1
+                                                     ),
+                                    'ER209I' => array(
+                                                      'width'  => 120,
+                                                      'height' => 72,
+                                                      'depth'  => 2,
+                                                      'color'  => 0
+                                                      ),
+                                    'F209I' => array(
+                                                     'width'  => 96,
+                                                     'height' => 91,
+                                                     'depth'  => 256,
+                                                     'color'  => 1
+                                                     ),
+                                    'KO209I' => array(
+                                                      'width'  => 96,
+                                                      'height' => 96,
+                                                      'depth'  => 256,
+                                                      'color'  => 1
+                                                      ),
+                                    'N209I' => array(
+                                                     'width'  => 108,
+                                                     'height' => 82,
+                                                     'depth'  => 4,
+                                                     'color'  => 0
+                                                     ),
+                                    'P209I' => array(
+                                                     'width'  => 96,
+                                                     'height' => 87,
+                                                     'depth'  => 4,
+                                                     'color'  => 0
+                                                     ),
+                                    'P209IS' => array(
+                                                      'width'  => 96,
+                                                      'height' => 87,
+                                                      'depth'  => 256,
+                                                      'color'  => 1
+                                                      ),
+                                    'R209I' => array(
+                                                     'width'  => 96,
+                                                     'height' => 72,
+                                                     'depth'  => 4,
+                                                     'color'  => 0
+                                                     ),
+                                    'P651PS' => array(
+                                                      'width'  => 96,
+                                                      'height' => 87,
+                                                      'depth'  => 4,
+                                                      'color'  => 0
+                                                      ),
+                                    'R691I' => array(
+                                                     'width'  => 96,
+                                                     'height' => 72,
+                                                     'depth'  => 4,
+                                                     'color'  => 0
+                                                     ),
+                                    'F671I' => array(
+                                                     'width'  => 120,
+                                                     'height' => 126,
+                                                     'depth'  => 256,
+                                                     'color'  => 1
+                                                     ),
+                                    'F210I' => array(
+                                                     'width'  => 96,
+                                                     'height' => 113,
+                                                     'depth'  => 256,
+                                                     'color'  => 1
+                                                     ),
+                                    'N210I' => array(
+                                                     'width'  => 118,
+                                                     'height' => 113,
+                                                     'depth'  => 256,
+                                                     'color'  => 1
+                                                     ),
+                                    'P210I' => array(
+                                                     'width'  => 96,
+                                                     'height' => 91,
+                                                     'depth'  => 256,
+                                                     'color'  => 1
+                                                     ),
+                                    'KO210I' => array(
+                                                      'width'  => 96,
+                                                      'height' => 96,
+                                                      'depth'  => 256,
+                                                      'color'  => 1
+                                                      ),
+
+                                    // i-mode compliant HTML 3.0
+                                    'F503I' => array(
+                                                     'width'  => 120,
+                                                     'height' => 130,
+                                                     'depth'  => 256,
+                                                     'color'  => 1
+                                                     ),
+                                    'F503IS' => array(
+                                                      'width'  => 120,
+                                                      'height' => 130,
+                                                      'depth'  => 4096,
+                                                      'color'  => 1
+                                                      ),
+                                    'P503I' => array(
+                                                     'width'  => 120,
+                                                     'height' => 130,
+                                                     'depth'  => 256,
+                                                     'color'  => 1
+                                                     ),
+                                    'P503IS' => array(
+                                                      'width'  => 120,
+                                                      'height' => 130,
+                                                      'depth'  => 256,
+                                                      'color'  => 1
+                                                      ),
+                                    'N503I' => array(
+                                                     'width'  => 118,
+                                                     'height' => 128,
+                                                     'depth'  => 4096,
+                                                     'color'  => 1
+                                                     ),
+                                    'N503IS' => array(
+                                                      'width'  => 118,
+                                                      'height' => 128,
+                                                      'depth'  => 4096,
+                                                      'color'  => 1
+                                                      ),
+                                    'SO503I' => array(
+                                                      'width'  => 120,
+                                                      'height' => 113,
+                                                      'depth'  => 65536,
+                                                      'color'  => 1
+                                                      ),
+                                    'SO503IS' => array(
+                                                       'width'  => 120,
+                                                       'height' => 113,
+                                                       'depth'  => 65536,
+                                                       'color'  => 1
+                                                       ),
+                                    'D503I' => array(
+                                                     'width'  => 132,
+                                                     'height' => 126,
+                                                     'depth'  => 4096,
+                                                     'color'  => 1
+                                                     ),
+                                    'D503IS' => array(
+                                                      'width'  => 132,
+                                                      'height' => 126,
+                                                      'depth'  => 4096,
+                                                      'color'  => 1
+                                                      ),
+                                    'D210I' => array(
+                                                     'width'  => 96,
+                                                     'height' => 91,
+                                                     'depth'  => 256,
+                                                     'color'  => 1
+                                                     ),
+                                    'SO210I' => array(
+                                                      'width'  => 120,
+                                                      'height' => 113,
+                                                      'depth'  => 256,
+                                                      'color'  => 1
+                                                      ),
+                                    'F211I' => array(
+                                                     'width'  => 96,
+                                                     'height' => 113,
+                                                     'depth'  => 4096,
+                                                     'color'  => 1
+                                                     ),
+                                    'D211I' => array(
+                                                     'width'  => 100,
+                                                     'height' => 91,
+                                                     'depth'  => 4096,
+                                                     'color'  => 1
+                                                     ),
+                                    'N211I' => array(
+                                                     'width'  => 118,
+                                                     'height' => 128,
+                                                     'depth'  => 4096,
+                                                     'color'  => 1
+                                                     ),
+                                    'N211IS' => array(
+                                                      'width'  => 118,
+                                                      'height' => 128,
+                                                      'depth'  => 4096,
+                                                      'color'  => 1
+                                                      ),
+                                    'P211I' => array(
+                                                     'width'  => 120,
+                                                     'height' => 130,
+                                                     'depth'  => 65536,
+                                                     'color'  => 1
+                                                     ),
+                                    'P211IS' => array(
+                                                      'width'  => 120,
+                                                      'height' => 130,
+                                                      'depth'  => 65536,
+                                                      'color'  => 1
+                                                      ),
+                                    'SO211I' => array(
+                                                      'width'  => 120,
+                                                      'height' => 112,
+                                                      'depth'  => 4096,
+                                                      'color'  => 1
+                                                      ),
+                                    'R211I' => array(
+                                                     'width'  => 96,
+                                                     'height' => 98,
+                                                     'depth'  => 4096,
+                                                     'color'  => 1
+                                                     ),
+                                    'SH251I' => array(
+                                                      'width'  => 120,
+                                                      'height' => 130,
+                                                      'depth'  => 65536,
+                                                      'color'  => 1
+                                                      ),
+                                    'SH251IS' => array(
+                                                       'width'  => 176,
+                                                       'height' => 187,
+                                                       'depth'  => 65536,
+                                                       'color'  => 1
+                                                       ),
+                                    'R692I' => array(
+                                                     'width'  => 96,
+                                                     'height' => 98,
+                                                     'depth'  => 4096,
+                                                     'color'  => 1
+                                                     ),
+
+                                    // i-mode compliant HTML 3.0
+                                    // (FOMA 2001/2002/2101V)
+                                    'N2001' => array(
+                                                     'width'  => 118,
+                                                     'height' => 128,
+                                                     'depth'  => 4096,
+                                                     'color'  => 1
+                                                     ),
+                                    'N2002' => array(
+                                                     'width'  => 118,
+                                                     'height' => 128,
+                                                     'depth'  => 65536,
+                                                     'color'  => 1
+                                                     ),
+                                    'P2002' => array(
+                                                     'width'  => 118,
+                                                     'height' => 128,
+                                                     'depth'  => 65536,
+                                                     'color'  => 1
+                                                     ),
+                                    'D2101V' => array(
+                                                      'width'  => 120,
+                                                      'height' => 130,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'P2101V' => array(
+                                                      'width'  => 163,
+                                                      'height' => 182,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'SH2101V' => array(
+                                                       'width'  => 800,
+                                                       'height' => 600,
+                                                       'depth'  => 65536,
+                                                       'color'  => 1
+                                                       ),
+                                    'T2101V' => array(
+                                                      'width'  => 176,
+                                                      'height' => 144,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+
+                                    // i-mode compliant HTML 4.0
+                                    'D504I' => array(
+                                                     'width'  => 132,
+                                                     'height' => 144,
+                                                     'depth'  => 262144,
+                                                     'color'  => 1
+                                                     ),
+                                    'F504I' => array(
+                                                     'width'  => 132,
+                                                     'height' => 136,
+                                                     'depth'  => 65536,
+                                                     'color'  => 1
+                                                     ),
+                                    'F504IS' => array(
+                                                      'width'  => 132,
+                                                      'height' => 136,
+                                                      'depth'  => 65536,
+                                                      'color'  => 1
+                                                      ),
+                                    'N504I' => array(
+                                                     'width'  => 160,
+                                                     'height' => 180,
+                                                     'depth'  => 65536,
+                                                     'color'  => 1
+                                                     ),
+                                    'N504IS' => array(
+                                                      'width'  => 160,
+                                                      'height' => 180,
+                                                      'depth'  => 65536,
+                                                      'color'  => 1
+                                                      ),
+                                    'SO504I' => array(
+                                                      'width'  => 120,
+                                                      'height' => 112,
+                                                      'depth'  => 65536,
+                                                      'color'  => 1
+                                                      ),
+                                    'P504I' => array(
+                                                     'width'  => 132,
+                                                     'height' => 144,
+                                                     'depth'  => 65536,
+                                                     'color'  => 1
+                                                     ),
+                                    'P504IS' => array(
+                                                      'width'  => 132,
+                                                      'height' => 144,
+                                                      'depth'  => 65536,
+                                                      'color'  => 1
+                                                      ),
+                                    'D251I' => array(
+                                                     'width'  => 132,
+                                                     'height' => 144,
+                                                     'depth'  => 262144,
+                                                     'color'  => 1
+                                                     ),
+                                    'D251IS' => array(
+                                                      'width'  => 132,
+                                                      'height' => 144,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'F251I' => array(
+                                                     'width'  => 132,
+                                                     'height' => 140,
+                                                     'depth'  => 65536,
+                                                     'color'  => 1
+                                                     ),
+                                    'N251I' => array(
+                                                     'width'  => 132,
+                                                     'height' => 140,
+                                                     'depth'  => 65536,
+                                                     'color'  => 1
+                                                     ),
+                                    'N251IS' => array(
+                                                      'width'  => 132,
+                                                      'height' => 140,
+                                                      'depth'  => 65536,
+                                                      'color'  => 1
+                                                      ),
+                                    'P251IS' => array(
+                                                      'width'  => 132,
+                                                      'height' => 144,
+                                                      'depth'  => 65536,
+                                                      'color'  => 1
+                                                      ),
+                                    'F671IS' => array(
+                                                      'width'  => 160,
+                                                      'height' => 120,
+                                                      'depth'  => 65536,
+                                                      'color'  => 1
+                                                      ),
+                                    'F212I' => array(
+                                                     'width'  => 132,
+                                                     'height' => 136,
+                                                     'depth'  => 65536,
+                                                     'color'  => 1
+                                                     ),
+                                    'SO212I' => array(
+                                                      'width'  => 120,
+                                                      'height' => 112,
+                                                      'depth'  => 65536,
+                                                      'color'  => 1
+                                                      ),
+                                    'F661I' => array(
+                                                     'width'  => 132,
+                                                     'height' => 136,
+                                                     'depth'  => 65536,
+                                                     'color'  => 1
+                                                     ),
+                                    'F672I' => array(
+                                                     'width'  => 160,
+                                                     'height' => 120,
+                                                     'depth'  => 65536,
+                                                     'color'  => 1
+                                                     ),
+                                    'SO213I' => array(
+                                                      'width'  => 120,
+                                                      'height' => 112,
+                                                      'depth'  => 65536,
+                                                      'color'  => 1
+                                                      ),
+                                    'SO213IS' => array(
+                                                       'width'  => 120,
+                                                       'height' => 112,
+                                                       'depth'  => 65536,
+                                                       'color'  => 1
+                                                       ),
+                                    'SO213IWR' => array(
+                                                        'width'  => 120,
+                                                        'height' => 112,
+                                                        'depth'  => 65536,
+                                                        'color'  => 1
+                                                        ),
+
+                                    // i-mode compliant HTML 4.0
+                                    // (FOMA 2051/2102V/2701 etc.)
+                                    'F2051' => array(
+                                                     'width'  => 176,
+                                                     'height' => 182,
+                                                     'depth'  => 65536,
+                                                     'color'  => 1
+                                                     ),
+                                    'N2051' => array(
+                                                     'width'  => 176,
+                                                     'height' => 198,
+                                                     'depth'  => 65536,
+                                                     'color'  => 1
+                                                     ),
+                                    'P2102V' => array(
+                                                      'width'  => 176,
+                                                      'height' => 198,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'P2102V' => array(
+                                                      'width'  => 176,
+                                                      'height' => 198,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'F2102V' => array(
+                                                      'width'  => 176,
+                                                      'height' => 182,
+                                                      'depth'  => 65536,
+                                                      'color'  => 1
+                                                      ),
+                                    'N2102V' => array(
+                                                      'width'  => 176,
+                                                      'height' => 198,
+                                                      'depth'  => 65536,
+                                                      'color'  => 1
+                                                      ),
+                                    'N2701' => array(
+                                                     'width'  => 176,
+                                                     'height' => 198,
+                                                     'depth'  => 65536,
+                                                     'color'  => 1
+                                                     ),
+                                    'NM850IG' => array(
+                                                       'width'  => 176,
+                                                       'height' => 144,
+                                                       'depth'  => 65536,
+                                                       'color'  => 1
+                                                       ),
+
+                                    // i-mode compliant HTML 5.0 (505i etc.)
+                                    'D505I' => array(
+                                                     'width'  => 240,
+                                                     'height' => 270,
+                                                     'depth'  => 262144,
+                                                     'color'  => 1
+                                                     ),
+                                    'SO505I' => array(
+                                                      'width'  => 256,
+                                                      'height' => 240,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'SH505I' => array(
+                                                      'width'  => 240,
+                                                      'height' => 252,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'N505I' => array(
+                                                     'width'  => 240,
+                                                     'height' => 270,
+                                                     'depth'  => 262144,
+                                                     'color'  => 1
+                                                     ),
+                                    'F505I' => array(
+                                                     'width'  => 240,
+                                                     'height' => 268,
+                                                     'depth'  => 262144,
+                                                     'color'  => 1
+                                                     ),
+                                    'P505I' => array(
+                                                     'width'  => 240,
+                                                     'height' => 266,
+                                                     'depth'  => 65536,
+                                                     'color'  => 1
+                                                     ),
+                                    'D505IS' => array(
+                                                      'width'  => 240,
+                                                      'height' => 270,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'P505IS' => array(
+                                                      'width'  => 240,
+                                                      'height' => 266,
+                                                      'depth'  => 65536,
+                                                      'color'  => 1
+                                                      ),
+                                    'N505IS' => array(
+                                                      'width'  => 240,
+                                                      'height' => 270,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'SO505IS' => array(
+                                                       'width'  => 240,
+                                                       'height' => 256,
+                                                       'depth'  => 262144,
+                                                       'color'  => 1
+                                                       ),
+                                    'SH505IS' => array(
+                                                       'width'  => 240,
+                                                       'height' => 252,
+                                                       'depth'  => 262144,
+                                                       'color'  => 1
+                                                       ),
+                                    'F505IGPS' => array(
+                                                        'width'  => 240,
+                                                        'height' => 268,
+                                                        'depth'  => 262144,
+                                                        'color'  => 1
+                                                        ),
+                                    'D252I' => array(
+                                                     'width'  => 176,
+                                                     'height' => 198,
+                                                     'depth'  => 262144,
+                                                     'color'  => 1
+                                                     ),
+                                    'SH252I' => array(
+                                                      'width'  => 240,
+                                                      'height' => 252,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'P252I' => array(
+                                                     'width'  => 132,
+                                                     'height' => 144,
+                                                     'depth'  => 65536,
+                                                     'color'  => 1
+                                                     ),
+                                    'N252I' => array(
+                                                     'width'  => 132,
+                                                     'height' => 140,
+                                                     'depth'  => 65536,
+                                                     'color'  => 1
+                                                     ),
+                                    'P252IS' => array(
+                                                      'width'  => 132,
+                                                      'height' => 144,
+                                                      'depth'  => 65536,
+                                                      'color'  => 1
+                                                      ),
+                                    'D506I' => array(
+                                                     'width'  => 240,
+                                                     'height' => 270,
+                                                     'depth'  => 262144,
+                                                     'color'  => 1
+                                                     ),
+                                    'F506I' => array(
+                                                     'width'  => 240,
+                                                     'height' => 268,
+                                                     'depth'  => 262144,
+                                                     'color'  => 1
+                                                     ),
+                                    'N506I' => array(
+                                                     'width'  => 240,
+                                                     'height' => 295,
+                                                     'depth'  => 262144,
+                                                     'color'  => 1
+                                                     ),
+                                    'P506IC' => array(
+                                                      'width'  => 240,
+                                                      'height' => 266,
+                                                      'depth'  => 65536,
+                                                      'color'  => 1
+                                                      ),
+                                    'SH506IC' => array(
+                                                       'width'  => 240,
+                                                       'height' => 252,
+                                                       'depth'  => 262144,
+                                                       'color'  => 1
+                                                       ),
+                                    'SO506IC' => array(
+                                                       'width'  => 240,
+                                                       'height' => 256,
+                                                       'depth'  => 262144,
+                                                       'color'  => 1
+                                                       ),
+                                    'N506IS' => array(
+                                                      'width'  => 240,
+                                                      'height' => 295,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'SO506I' => array(
+                                                      'width'  => 240,
+                                                      'height' => 256,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'SO506IS' => array(
+                                                       'width'  => 240,
+                                                       'height' => 256,
+                                                       'depth'  => 262144,
+                                                       'color'  => 1
+                                                       ),
+                                    'N506ISII' => array(
+                                                        'width'  => 240,
+                                                        'height' => 295,
+                                                        'depth'  => 262144,
+                                                        'color'  => 1
+                                                        ),
+                                    'P506ICII' => array(
+                                                        'width'  => 240,
+                                                        'height' => 266,
+                                                        'depth'  => 65536,
+                                                        'color'  => 1
+                                                        ),
+                                    'D253I' => array(
+                                                     'width'  => 176,
+                                                     'height' => 198,
+                                                     'depth'  => 262144,
+                                                     'color'  => 1
+                                                     ),
+                                    'N253I' => array(
+                                                     'width'  => 160,
+                                                     'height' => 180,
+                                                     'depth'  => 65536,
+                                                     'color'  => 1
+                                                     ),
+                                    'P253I' => array(
+                                                     'width'  => 132,
+                                                     'height' => 144,
+                                                     'depth'  => 65536,
+                                                     'color'  => 1
+                                                     ),
+                                    'D253IWM' => array(
+                                                       'width'  => 220,
+                                                       'height' => 144,
+                                                       'depth'  => 262144,
+                                                       'color'  => 1
+                                                       ),
+                                    'P253IS' => array(
+                                                      'width'  => 132,
+                                                      'height' => 144,
+                                                      'depth'  => 65536,
+                                                      'color'  => 1
+                                                      ),
+                                    'P213I' => array(
+                                                     'width'  => 132,
+                                                     'height' => 144,
+                                                     'depth'  => 65536,
+                                                     'color'  => 1
+                                                     ),
+
+                                    // i-mode compliant HTML 5.0
+                                    // (FOMA 900i etc.)
+                                    'F900I' => array(
+                                                     'width'  => 230,
+                                                     'height' => 240,
+                                                     'depth'  => 262144,
+                                                     'color'  => 1
+                                                     ),
+                                    'N900I' => array(
+                                                     'width'  => 240,
+                                                     'height' => 269,
+                                                     'depth'  => 65536,
+                                                     'color'  => 1
+                                                     ),
+                                    'P900I' => array(
+                                                     'width'  => 240,
+                                                     'height' => 266,
+                                                     'depth'  => 65536,
+                                                     'color'  => 1
+                                                     ),
+                                    'SH900I' => array(
+                                                      'width'  => 240,
+                                                      'height' => 252,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'F900IT' => array(
+                                                      'width'  => 230,
+                                                      'height' => 240,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'P900IV' => array(
+                                                      'width'  => 240,
+                                                      'height' => 266,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'N900IS' => array(
+                                                      'width'  => 240,
+                                                      'height' => 269,
+                                                      'depth'  => 65536,
+                                                      'color'  => 1
+                                                      ),
+                                    'D900I' => array(
+                                                     'width'  => 240,
+                                                     'height' => 270,
+                                                     'depth'  => 262144,
+                                                     'color'  => 1
+                                                     ),
+                                    'F900IC' => array(
+                                                      'width'  => 230,
+                                                      'height' => 240,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'F880IES' => array(
+                                                       'width'  => 240,
+                                                       'height' => 256,
+                                                       'depth'  => 65536,
+                                                       'color'  => 1
+                                                       ),
+                                    'N900IL' => array(
+                                                      'width'  => 240,
+                                                      'height' => 269,
+                                                      'depth'  => 65536,
+                                                      'color'  => 1
+                                                      ),
+                                    'N900IG' => array(
+                                                      'width'  => 240,
+                                                      'height' => 269,
+                                                      'depth'  => 65536,
+                                                      'color'  => 1
+                                                      ),
+                                    'SH901IC' => array(
+                                                       'width'  => 240,
+                                                       'height' => 252,
+                                                       'depth'  => 262144,
+                                                       'color'  => 1
+                                                       ),
+                                    'F901IC' => array(
+                                                      'width'  => 230,
+                                                      'height' => 240,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'N901IC' => array(
+                                                      'width'  => 240,
+                                                      'height' => 270,
+                                                      'depth'  => 65536,
+                                                      'color'  => 1
+                                                      ),
+                                    'D901I' => array(
+                                                     'width'  => 230,
+                                                     'height' => 240,
+                                                     'depth'  => 262144,
+                                                     'color'  => 1
+                                                     ),
+                                    'P901I' => array(
+                                                     'width'  => 240,
+                                                     'height' => 270,
+                                                     'depth'  => 65536,
+                                                     'color'  => 1
+                                                     ),
+                                    'F700I' => array(
+                                                     'width'  => 230,
+                                                     'height' => 240,
+                                                     'depth'  => 262144,
+                                                     'color'  => 1
+                                                     ),
+                                    'SH700I' => array(
+                                                      'width'  => 240,
+                                                      'height' => 252,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'N700I' => array(
+                                                     'width'  => 240,
+                                                     'height' => 270,
+                                                     'depth'  => 65536,
+                                                     'color'  => 1
+                                                     ),
+                                    'P700I' => array(
+                                                     'width'  => 240,
+                                                     'height' => 270,
+                                                     'depth'  => 65536,
+                                                     'color'  => 1
+                                                     ),
+                                    'F700IS' => array(
+                                                      'width'  => 230,
+                                                      'height' => 240,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'SH700IS' => array(
+                                                       'width'  => 240,
+                                                       'height' => 252,
+                                                       'depth'  => 262144,
+                                                       'color'  => 1
+                                                       ),
+                                    'SA700IS' => array(
+                                                       'width'  => 240,
+                                                       'height' => 252,
+                                                       'depth'  => 65536,
+                                                       'color'  => 1
+                                                       ),
+
+                                    'SH901IS' => array(
+                                                       'width'  => 240,
+                                                       'height' => 252,
+                                                       'depth'  => 262144,
+                                                       'color'  => 1
+                                                       ),
+                                    'F901IS' => array(
+                                                      'width'  => 230,
+                                                      'height' => 240,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'D901IS' => array(
+                                                      'width'  => 230,
+                                                      'height' => 240,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'P901IS' => array(
+                                                      'width'  => 240,
+                                                      'height' => 270,
+                                                      'depth'  => 65536,
+                                                      'color'  => 1
+                                                      ),
+                                    'N901IS' => array(
+                                                      'width'  => 240,
+                                                      'height' => 270,
+                                                      'depth'  => 65536,
+                                                      'color'  => 1
+                                                      ),
+                                    'P901ITV' => array(
+                                                       'width'  => 240,
+                                                       'height' => 270,
+                                                       'depth'  => 65536,
+                                                       'color'  => 1
+                                                       ),
+                                    'SH851I' => array(
+                                                      'width'  => 240,
+                                                      'height' => 252,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'P851I' => array(
+                                                     'width'  => 240,
+                                                     'height' => 270,
+                                                     'depth'  => 65536,
+                                                     'color'  => 1
+                                                     ),
+                                    'F881IES' => array(
+                                                       'width'  => 240,
+                                                       'height' => 256,
+                                                       'depth'  => 65536,
+                                                       'color'  => 1
+                                                       ),
+                                    'D701I' => array(
+                                                     'width'  => 230,
+                                                     'height' => 240,
+                                                     'depth'  => 65536,
+                                                     'color'  => 1
+                                                     ),
+                                    'N701I' => array(
+                                                     'width'  => 240,
+                                                     'height' => 270,
+                                                     'depth'  => 65536,
+                                                     'color'  => 1
+                                                     ),
+                                    'P701ID' => array(
+                                                      'width'  => 240,
+                                                      'height' => 270,
+                                                      'depth'  => 65536,
+                                                      'color'  => 1
+                                                      ),
+                                    'D701IWM' => array(
+                                                       'width'  => 230,
+                                                       'height' => 240,
+                                                       'depth'  => 65536,
+                                                       'color'  => 1
+                                                       ),
+                                    'N701IECO' => array(
+                                                        'width'  => 240,
+                                                        'height' => 270,
+                                                        'depth'  => 65536,
+                                                        'color'  => 1
+                                                        ),
+                                    'SA800I' => array(
+                                                      'width'  => 240,
+                                                      'height' => 252,
+                                                      'depth'  => 65536,
+                                                      'color'  => 1
+                                                      ),
+                                    'L600I' => array(
+                                                     'width'  => 176,
+                                                     'height' => 189,
+                                                     'depth'  => 65536,
+                                                     'color'  => 1
+                                                     ),
+                                    'N600I' => array(
+                                                     'width'  => 176,
+                                                     'height' => 180,
+                                                     'depth'  => 65536,
+                                                     'color'  => 1
+                                                     ),
+                                    'L601I' => array(
+                                                     'width'  => 176,
+                                                     'height' => 189,
+                                                     'depth'  => 65536,
+                                                     'color'  => 1
+                                                     ),
+                                    'M702IS' => array(
+                                                      'width'  => 240,
+                                                      'height' => 267,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'M702IG' => array(
+                                                      'width'  => 240,
+                                                      'height' => 267,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+
+                                    // i-mode compliant HTML 6.0
+                                    // (FOMA 902i etc.)
+                                    'F902I' => array(
+                                                     'width'  => 230,
+                                                     'height' => 240,
+                                                     'depth'  => 262144,
+                                                     'color'  => 1
+                                                     ),
+                                    'D902I' => array(
+                                                     'width'  => 230,
+                                                     'height' => 240,
+                                                     'depth'  => 262144,
+                                                     'color'  => 1
+                                                     ),
+                                    'N902I' => array(
+                                                     'width'  => 240,
+                                                     'height' => 270,
+                                                     'depth'  => 262144,
+                                                     'color'  => 1
+                                                     ),
+                                    'P902I' => array(
+                                                     'width'  => 240,
+                                                     'height' => 270,
+                                                     'depth'  => 262144,
+                                                     'color'  => 1
+                                                     ),
+                                    'SH902I' => array(
+                                                      'width'  => 240,
+                                                      'height' => 240,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'SO902I' => array(
+                                                      'width'  => 240,
+                                                      'height' => 256,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'SH902IS' => array(
+                                                       'width'  => 240,
+                                                       'height' => 240,
+                                                       'depth'  => 262144,
+                                                       'color'  => 1
+                                                       ),
+                                    'P902IS' => array(
+                                                      'width'  => 240,
+                                                      'height' => 270,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'N902IS' => array(
+                                                      'width'  => 240,
+                                                      'height' => 270,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'D902IS' => array(
+                                                      'width'  => 230,
+                                                      'height' => 320,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'F902IS' => array(
+                                                      'width'  => 230,
+                                                      'height' => 240,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'SO902IWP+' => array(
+                                                         'width'  => 240,
+                                                         'height' => 256,
+                                                         'depth'  => 262144,
+                                                         'color'  => 1
+                                                         ),
+                                    'SH902ISL' => array(
+                                                        'width'  => 240,
+                                                        'height' => 240,
+                                                        'depth'  => 262144,
+                                                        'color'  => 1
+                                                        ),
+                                    'N902IX' => array(
+                                                      'width'  => 240,
+                                                      'height' => 270,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'N902IL' => array(
+                                                      'width'  => 240,
+                                                      'height' => 270,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'P702I' => array(
+                                                     'width'  => 240,
+                                                     'height' => 270,
+                                                     'depth'  => 262144,
+                                                     'color'  => 1
+                                                     ),
+                                    'N702ID' => array(
+                                                      'width'  => 240,
+                                                      'height' => 270,
+                                                      'depth'  => 65536,
+                                                      'color'  => 1
+                                                      ),
+                                    'F702ID' => array(
+                                                      'width'  => 230,
+                                                      'height' => 240,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'SH702ID' => array(
+                                                       'width'  => 240,
+                                                       'height' => 240,
+                                                       'depth'  => 262144,
+                                                       'color'  => 1
+                                                       ),
+                                    'D702I' => array(
+                                                     'width'  => 230,
+                                                     'height' => 240,
+                                                     'depth'  => 262144,
+                                                     'color'  => 1
+                                                     ),
+                                    'SO702I' => array(
+                                                      'width'  => 240,
+                                                      'height' => 256,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'D702IBCL' => array(
+                                                        'width'  => 230,
+                                                        'height' => 240,
+                                                        'depth'  => 262144,
+                                                        'color'  => 1
+                                                        ),
+                                    'SA702I' => array(
+                                                      'width'  => 240,
+                                                      'height' => 252,
+                                                      'depth'  => 65536,
+                                                      'color'  => 1
+                                                      ),
+                                    'SH702IS' => array(
+                                                       'width'  => 240,
+                                                       'height' => 240,
+                                                       'depth'  => 262144,
+                                                       'color'  => 1
+                                                       ),
+                                    'N702IS' => array(
+                                                      'width'  => 240,
+                                                      'height' => 270,
+                                                      'depth'  => 65536,
+                                                      'color'  => 1
+                                                      ),
+                                    'P702ID' => array(
+                                                      'width'  => 240,
+                                                      'height' => 270,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'D702IF' => array(
+                                                      'width'  => 230,
+                                                      'height' => 240,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'D851IWM' => array(
+                                                       'width'  => 230,
+                                                       'height' => 320,
+                                                       'depth'  => 262144,
+                                                       'color'  => 1
+                                                       ),
+                                    'F882IES' => array(
+                                                       'width'  => 240,
+                                                       'height' => 256,
+                                                       'depth'  => 65536,
+                                                       'color'  => 1
+                                                       ),
+                                    'N601I' => array(
+                                                     'width'  => 240,
+                                                     'height' => 270,
+                                                     'depth'  => 65536,
+                                                     'color'  => 1
+                                                     ),
+                                    'D800IDS' => array(
+                                                       'width'  => 230,
+                                                       'height' => 240,
+                                                       'depth'  => 262144,
+                                                       'color'  => 1
+                                                       ),
+                                    'P703IMYU' => array(
+                                                        'width'  => 240,
+                                                        'height' => 270,
+                                                        'depth'  => 262144,
+                                                        'color'  => 1
+                                                        ),
+
+                                    // i-mode compliant HTML 7.0
+                                    // (FOMA 903i etc.)
+                                    'SH903I' => array(
+                                                      'width'  => 240,
+                                                      'height' => 320,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'P903I' => array(
+                                                     'width'  => 240,
+                                                     'height' => 270,
+                                                     'depth'  => 262144,
+                                                     'color'  => 1
+                                                     ),
+                                    'N903I' => array(
+                                                     'width'  => 240,
+                                                     'height' => 270,
+                                                     'depth'  => 262144,
+                                                     'color'  => 1
+                                                     ),
+                                    'D903I' => array(
+                                                     'width'  => 230,
+                                                     'height' => 320,
+                                                     'depth'  => 262144,
+                                                     'color'  => 1
+                                                     ),
+                                    'F903I' => array(
+                                                     'width'  => 230,
+                                                     'height' => 240,
+                                                     'depth'  => 262144,
+                                                     'color'  => 1
+                                                     ),
+                                    'SO903I' => array(
+                                                      'width'  => 240,
+                                                      'height' => 368,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'D903ITV' => array(
+                                                      'width'  => 230,
+                                                      'height' => 320,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'F903IX' => array(
+                                                      'width'  => 230,
+                                                      'height' => 240,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'P903ITV' => array(
+                                                       'width'  => 240,
+                                                       'height' => 350,
+                                                       'depth'  => 262144,
+                                                       'color'  => 1
+                                                       ),
+                                    'N703ID' => array(
+                                                      'width'  => 240,
+                                                      'height' => 270,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'F703I' => array(
+                                                     'width'  => 230,
+                                                     'height' => 240,
+                                                     'depth'  => 262144,
+                                                     'color'  => 1
+                                                     ),
+                                    'P703I' => array(
+                                                     'width'  => 240,
+                                                     'height' => 270,
+                                                     'depth'  => 262144,
+                                                     'color'  => 1
+                                                     ),
+                                    'D703I' => array(
+                                                     'width'  => 230,
+                                                     'height' => 240,
+                                                     'depth'  => 262144,
+                                                     'color'  => 1
+                                                     ),
+                                    'SH703I' => array(
+                                                      'width'  => 240,
+                                                      'height' => 240,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'SH703I' => array(
+                                                      'width'  => 240,
+                                                      'height' => 240,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      ),
+                                    'N703IMYU' => array(
+                                                        'width'  => 240,
+                                                        'height' => 270,
+                                                        'depth'  => 262144,
+                                                        'color'  => 1
+                                                        ),
+                                    'SO703I' => array(
+                                                      'width'  => 240,
+                                                      'height' => 368,
+                                                      'depth'  => 262144,
+                                                      'color'  => 1
+                                                      )
+                                    );
+            }
+        }
+
+        return @$displayMap[ strtoupper($model) ];
+    }
+
+    /**#@-*/
+
+    /**#@+
+     * @access private
+     */
+
+    /**#@-*/
+
+    // }}}
+}
+
+// }}}
+
+/*
+ * Local Variables:
+ * mode: php
+ * coding: iso-8859-1
+ * tab-width: 4
+ * c-basic-offset: 4
+ * c-hanging-comment-ender-p: nil
+ * indent-tabs-mode: nil
+ * End:
+ */
+?>
Index: branches/dev/data/module/Net/UserAgent/Mobile/Display.php
===================================================================
--- branches/dev/data/module/Net/UserAgent/Mobile/Display.php	(revision 11460)
+++ branches/dev/data/module/Net/UserAgent/Mobile/Display.php	(revision 11460)
@@ -0,0 +1,268 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4: */
+
+/**
+ * PHP versions 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @category   Networking
+ * @package    Net_UserAgent_Mobile
+ * @author     KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @copyright  2003-2007 KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version    CVS: $Id: Display.php,v 1.10 2007/02/20 15:00:06 kuboa Exp $
+ * @since      File available since Release 0.1
+ */
+
+// {{{ Net_UserAgent_Mobile_Display
+
+/**
+ * Display information for Net_UserAgent_Mobile
+ *
+ * Net_UserAgent_Mobile_Display is a class for display information on
+ * {@link Net_UserAgent_Mobile}. Handy for image resizing or dispatching.
+ *
+ * SYNOPSIS:
+ * <code>
+ * require_once 'Net/UserAgent/Mobile.php';
+ *
+ * $agent = &Net_UserAgent_Mobile::factory();
+ * $display = $agent->getDisplay();
+ *
+ * $width  = $display->getWidth();
+ * $height = $display->getHeight();
+ * list($width, $height) = $display->getSize();
+ *
+ * if ($display->isColor()) {
+ *     $depth = $display->getDepth();
+ * }
+ *
+ * // only available in DoCoMo 505i
+ * $width_bytes  = $display->getWidthBytes();
+ * $height_bytes = $display->getHeightBytes();
+ * </code>
+ *
+ * USING EXTERNAL MAP FILE:
+ * If the environment variable DOCOMO_MAP exists, the specified XML data will
+ * be used for DoCoMo display information.
+ *
+ * ex) Please add the following code.
+ * $_SERVER['DOCOMO_MAP'] = '/path/to/DoCoMoMap.xml';
+ *
+ * @category   Networking
+ * @package    Net_UserAgent_Mobile
+ * @author     KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @copyright  2003-2007 KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version    Release: 0.30.0
+ * @since      Class available since Release 0.1
+ */
+class Net_UserAgent_Mobile_Display
+{
+
+    // {{{ properties
+
+    /**#@+
+     * @access public
+     */
+
+    /**#@-*/
+
+    /**#@+
+     * @access private
+     */
+
+    /**
+     * width of the display
+     * @var integer
+     */
+    var $_width;
+
+    /**
+     * height of the display
+     * @var integer
+     */
+    var $_height;
+
+    /**
+     * depth of the display
+     * @var integer
+     */
+    var $_depth;
+
+    /**
+     * color capability of the display
+     * @var boolean
+     */
+    var $_color;
+
+    /**
+     * width (bytes) of the display
+     * @var integer
+     */
+    var $_widthBytes;
+
+    /**
+     * height (bytes) of the display
+     * @var integer
+     */
+    var $_heightBytes;
+
+    /**#@-*/
+
+    /**#@+
+     * @access public
+     */
+
+    // }}}
+    // {{{ constructor
+
+    /**
+     * constructor
+     *
+     * @param array $data display infomation
+     */
+    function Net_UserAgent_Mobile_Display($data)
+    {
+        $this->_width  = (integer)@$data['width'];
+        $this->_height = (integer)@$data['height'];
+        $this->_depth  = (integer)@$data['depth'];
+        $this->_color  = (boolean)@$data['color'];
+
+        $this->_widthBytes  = (integer)@$data['width_bytes'];
+        $this->_heightBytes = (integer)@$data['height_bytes'];
+    }
+
+    // }}}
+    // {{{ calcSize()
+
+    /**
+     * returns width * height of the display
+     *
+     * @return integer
+     */
+    function calcSize()
+    {
+        return $this->_width * $this->_height;
+    }
+
+    // }}}
+    // {{{ getSize()
+
+    /**
+     * returns width with height of the display
+     *
+     * @return array
+     */
+    function getSize()
+    {
+        return array($this->_width, $this->_height);
+    }
+
+    // }}}
+    // {{{ getWidth()
+
+    /**
+     * returns width of the display
+     *
+     * @return integer
+     */
+    function getWidth()
+    {
+        return $this->_width;
+    }
+
+    // }}}
+    // {{{ getHeight()
+
+    /**
+     * returns height of the display
+     *
+     * @return integer
+     */
+    function getHeight()
+    {
+        return $this->_height;
+    }
+
+    // }}}
+    // {{{ getDepth()
+
+    /**
+     * returns depth of the display
+     *
+     * @return integer
+     */
+    function getDepth()
+    {
+        return $this->_depth;
+    }
+
+    // }}}
+    // {{{ isColor()
+
+    /**
+     * returns true if the display has color capability
+     *
+     * @return boolean
+     */
+    function isColor()
+    {
+        return $this->_color;
+    }
+
+    // }}}
+    // {{{ getWidthBytes()
+
+    /**
+     * returns width (bytes) of the display
+     *
+     * @return integer
+     */
+    function getWidthBytes()
+    {
+        return $this->_widthBytes;
+    }
+
+    // }}}
+    // {{{ getHeightBytes()
+
+    /**
+     * returns height (bytes) of the display
+     *
+     * @return integer
+     */
+    function getHeightBytes()
+    {
+        return $this->_heightBytes;
+    }
+
+    /**#@-*/
+
+    /**#@+
+     * @access private
+     */
+
+    /**#@-*/
+
+    // }}}
+}
+
+// }}}
+
+/*
+ * Local Variables:
+ * mode: php
+ * coding: iso-8859-1
+ * tab-width: 4
+ * c-basic-offset: 4
+ * c-hanging-comment-ender-p: nil
+ * indent-tabs-mode: nil
+ * End:
+ */
+?>
Index: branches/dev/data/module/Net/UserAgent/Mobile/Common.php
===================================================================
--- branches/dev/data/module/Net/UserAgent/Mobile/Common.php	(revision 11460)
+++ branches/dev/data/module/Net/UserAgent/Mobile/Common.php	(revision 11460)
@@ -0,0 +1,447 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4: */
+
+/**
+ * PHP versions 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @category   Networking
+ * @package    Net_UserAgent_Mobile
+ * @author     KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @copyright  2003-2007 KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version    CVS: $Id: Common.php,v 1.15 2007/02/20 14:59:19 kuboa Exp $
+ * @since      File available since Release 0.1
+ */
+
+// {{{ Net_UserAgent_Mobile_Common
+
+/**
+ * Base class that is extended by each user agents implementor
+ *
+ * Net_UserAgent_Mobile_Common is a class for mobile user agent
+ * abstraction layer on Net_UserAgent_Mobile.
+ *
+ * @category   Networking
+ * @package    Net_UserAgent_Mobile
+ * @author     KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @copyright  2003-2007 KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version    Release: 0.30.0
+ * @since      Class available since Release 0.1
+ */
+class Net_UserAgent_Mobile_Common extends PEAR
+{
+
+    // {{{ properties
+
+    /**#@+
+     * @access public
+     */
+
+    /**
+     * User-Agent name like 'DoCoMo'
+     * @var string
+     */
+    var $name = '';
+
+    /**
+     * User-Agent version number like '1.0'
+     * @var string
+     */
+    var $version = '';
+
+    /**#@-*/
+
+    /**#@+
+     * @access private
+     */
+
+    /**
+     * {@link Net_UserAgent_Mobile_Display} object
+     * @var object {@link Net_UserAgent_Mobile_Display}
+     */
+    var $_display;
+
+    /**
+     * Net_UserAgent_Mobile_Request_XXX object
+     * @var object {@link Net_UserAgent_Mobile_Request_Env}
+     */
+    var $_request;
+
+    /**
+     * {@link Net_UserAgent_Mobile_Error} object for error handling in the
+     *     constructor
+     * @var object
+     **/
+    var $_error = null;
+
+    /**#@-*/
+
+    /**#@+
+     * @access public
+     */
+
+    // }}}
+    // {{{ constructor
+
+    /**
+     * constructor
+     *
+     * @param object $request a {@link Net_UserAgent_Mobile_Request_Env}
+     *     object
+     */
+    function Net_UserAgent_Mobile_Common($request)
+    {
+        parent::PEAR('Net_UserAgent_Mobile_Error');
+        $this->_request = $request;
+        if (Net_UserAgent_Mobile::isError($result = $this->parse())) {
+            $this->isError($result);
+        }
+    }
+
+    // }}}
+    // {{{ isError
+
+    /**
+     * Returns/set an error when the instance couldn't initialize properly
+     *
+     * @param object {@link Net_UserAgent_Mobile_Error} object when setting
+     *     an error
+     * @return object {@link Net_UserAgent_Mobile_Error} object
+     */
+    function &isError($error = null)
+    {
+        if ($error !== null) {
+            $this->_error = &$error;
+        }
+
+        return $this->_error;
+    }
+
+    // }}}
+    // {{{ raiseError()
+
+    /**
+     * This method is used to communicate an error and invoke error
+     * callbacks etc. Basically a wrapper for PEAR::raiseError without
+     * the message string.
+     *
+     * @param mixed $code integer error code, or a PEAR error object (all
+     *     other parameters are ignored if this parameter is an object
+     * @param int $mode error mode, see PEAR_Error docs
+     * @param mixed $options If error mode is PEAR_ERROR_TRIGGER, this is the
+     *     error level (E_USER_NOTICE etc). If error mode is
+     *     PEAR_ERROR_CALLBACK, this is the callback function, either as a
+     *     function name, or as an array of an object and method name. For
+     *     other error modes this parameter is ignored.
+     * @param string $userinfo Extra debug information. Defaults to the last
+     *     query and native error code.
+     * @return object a PEAR error object
+     * @see PEAR_Error
+     */
+    function &raiseError($code = NET_USERAGENT_MOBILE_ERROR, $mode = null,
+                         $options = null, $userinfo = null
+                         )
+    {
+
+        // The error is yet a Net_UserAgent_Mobile error object
+        if (is_object($code)) {
+            $error = &PEAR::raiseError($code, null, null, null, null, null,
+                                       true
+                                       );
+            return $error;
+        }
+
+        $error = &PEAR::raiseError(null, $code, $mode, $options, $userinfo,
+                                   'Net_UserAgent_Mobile_Error', true
+                                   );
+        return $error;
+    }
+
+    // }}}
+    // {{{ getUserAgent()
+
+    /**
+     * returns User-Agent string
+     *
+     * @return string
+     */
+    function getUserAgent()
+    {
+        return $this->getHeader('User-Agent');
+    }
+
+    // }}}
+    // {{{ getHeader()
+
+    /**
+     * returns a specified HTTP header
+     *
+     * @param string $header
+     * @return string
+     */
+    function getHeader($header)
+    {
+        return $this->_request->get($header);
+    }
+
+    // }}}
+    // {{{ getName()
+
+    /**
+     * returns User-Agent name like 'DoCoMo'
+     *
+     * @return string
+     */
+    function getName()
+    {
+        return $this->name;
+    }
+
+    // }}}
+    // {{{ getDisplay()
+
+    /**
+     * returns {@link Net_UserAgent_Mobile_Disply} object
+     *
+     * @return object a {@link Net_UserAgent_Mobile_Display} object, or a
+     *     PEAR error object on error
+     * @see Net_UserAgent_Mobile_Display
+     */
+    function getDisplay()
+    {
+        if (!is_object($this->_display)) {
+            $this->_display = $this->makeDisplay();
+        }
+        return $this->_display;
+    }
+
+    // }}}
+    // {{{ getVersion()
+
+    /**
+     * returns User-Agent version number like '1.0'
+     *
+     * @return string
+     */
+    function getVersion()
+    {
+        return $this->version;
+    }
+
+    // }}}
+    // {{{ noMatch()
+
+    /**
+     * generates a warning message for new variants
+     *
+     * @return object a PEAR error object
+     */
+    function noMatch()
+    {
+        return $this->raiseError(NET_USERAGENT_MOBILE_ERROR_NOMATCH, null,
+                                 null, $this->getUserAgent() .
+                                 ': might be new variants. Please contact the author of Net_UserAgent_Mobile!'
+                                 );
+    }
+
+    // }}}
+    // {{{ parse()
+
+    /**
+     * parse HTTP_USER_AGENT string (should be implemented in subclasses)
+     *
+     * @abstract
+     */
+    function parse()
+    {
+        die();
+    }
+
+    // }}}
+    // {{{ makeDisplay()
+
+    /**
+     * create a new Net_UserAgent_Mobile_Display class instance (should be
+     * implemented in subclasses)
+     *
+     * @abstract
+     */
+    function makeDisplay()
+    {
+        die();
+    }
+
+    // }}}
+    // {{{ isDoCoMo()
+
+    /**
+     * returns true if the agent is DoCoMo
+     *
+     * @return boolean
+     */
+    function isDoCoMo()
+    {
+        return false;
+    }
+
+    // }}}
+    // {{{ isJPhone()
+
+    /**
+     * returns true if the agent is J-PHONE
+     *
+     * @return boolean
+     */
+    function isJPhone()
+    {
+        return false;
+    }
+
+    // }}}
+    // {{{ isVodafone()
+
+    /**
+     * returns true if the agent is Vodafone
+     *
+     * @return boolean
+     */
+    function isVodafone()
+    {
+        return false;
+    }
+
+    // }}}
+    // {{{ isEZweb()
+
+    /**
+     * returns true if the agent is EZweb
+     *
+     * @return boolean
+     */
+    function isEZweb()
+    {
+        return false;
+    }
+
+    // }}}
+    // {{{ isAirHPhone()
+
+    /**
+     * returns true if the agent is AirH"PHONE
+     *
+     * @return boolean
+     */
+    function isAirHPhone()
+    {
+        return false;
+    }
+
+    // }}}
+    // {{{ isNonMobile()
+
+    /**
+     * returns true if the agent is NonMobile
+     *
+     * @return boolean
+     */
+    function isNonMobile()
+    {
+        return false;
+    }
+
+    // }}}
+    // {{{ isTUKa()
+
+    /**
+     * returns true if the agent is TU-Ka
+     *
+     * @return boolean
+     */
+    function isTUKa()
+    {
+        return false;
+    }
+
+    // }}}
+    // {{{ isWAP1()
+
+    /**
+     * returns true if the agent can speak WAP1 protocol
+     *
+     * @return boolean
+     */
+    function isWAP1()
+    {
+        return $this->isEZweb() && !$this->isWAP2();
+    }
+
+    // }}}
+    // {{{ isWAP2()
+
+    /**
+     * returns true if the agent can speak WAP2 protocol
+     *
+     * @return boolean
+     */
+    function isWAP2()
+    {
+        return $this->isEZweb() && $this->isXHTMLCompliant();
+    }
+
+    // }}}
+    // {{{ getCarrierShortName()
+
+    /**
+     * returns the short name of the carrier
+     *
+     * @abstract
+     */
+    function getCarrierShortName()
+    {
+        die();
+    }
+
+    // }}}
+    // {{{ getCarrierLongName()
+
+    /**
+     * returns the long name of the carrier
+     *
+     * @abstract
+     */
+    function getCarrierLongName()
+    {
+        die();
+    }
+
+    /**#@-*/
+
+    /**#@+
+     * @access private
+     */
+
+    /**#@-*/
+
+    // }}}
+}
+
+// }}}
+
+/*
+ * Local Variables:
+ * mode: php
+ * coding: iso-8859-1
+ * tab-width: 4
+ * c-basic-offset: 4
+ * c-hanging-comment-ender-p: nil
+ * indent-tabs-mode: nil
+ * End:
+ */
+?>
Index: branches/dev/data/module/Net/UserAgent/Mobile/Request.php
===================================================================
--- branches/dev/data/module/Net/UserAgent/Mobile/Request.php	(revision 11460)
+++ branches/dev/data/module/Net/UserAgent/Mobile/Request.php	(revision 11460)
@@ -0,0 +1,185 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4: */
+
+/**
+ * PHP versions 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @category   Networking
+ * @package    Net_UserAgent_Mobile
+ * @author     KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @copyright  2003-2007 KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version    CVS: $Id: Request.php,v 1.6 2007/02/20 15:18:26 kuboa Exp $
+ * @since      File available since Release 0.1
+ */
+
+// {{{ Net_UserAgent_Mobile_Request
+
+/**
+ * Utility class that constructs appropriate class instance for miscellaneous
+ * HTTP header containers
+ *
+ * @category   Networking
+ * @package    Net_UserAgent_Mobile
+ * @author     KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @copyright  2003-2007 KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version    Release: 0.30.0
+ * @since      Class available since Release 0.1
+ */
+class Net_UserAgent_Mobile_Request
+{
+
+    // {{{ properties
+
+    /**#@+
+     * @access public
+     */
+
+    /**#@-*/
+
+    /**#@+
+     * @access private
+     */
+
+    /**#@-*/
+
+    /**#@+
+     * @access public
+     * @static
+     */
+
+    // }}}
+    // {{{ factory()
+
+    /**
+     * create a new Net_UserAgent_Mobile_Request_XXX instance
+     *
+     * parses HTTP headers and constructs appropriate class instance.
+     * If no argument is supplied, $_SERVER is used.
+     *
+     * @param mixed $stuff User-Agent string or object that works with
+     *     HTTP_Request (not implemented)
+     * @return mixed a newly created Net_UserAgent_Request object
+     * @global array $_SERVER
+     */
+    function &factory($stuff = null)
+    {
+        if ($stuff === null) {
+            $request = &new Net_UserAgent_Mobile_Request_Env($_SERVER);
+        } else {
+            $request =
+                &new Net_UserAgent_Mobile_Request_Env(array(
+                                                            'HTTP_USER_AGENT' => $stuff)
+                                                      );
+        }
+        return $request;
+    }
+
+    /**#@-*/
+
+    /**#@+
+     * @access private
+     */
+
+    /**#@-*/
+
+    // }}}
+}
+
+// }}}
+// {{{ Net_UserAgent_Mobile_Request_Env
+
+/**
+ * provides easy way to access environment variables
+ *
+ * @category   Networking
+ * @package    Net_UserAgent_Mobile
+ * @author     KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @copyright  2003-2007 KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version    Release: 0.30.0
+ * @since      Class available since Release 0.1
+ */
+class Net_UserAgent_Mobile_Request_Env
+{
+
+    // {{{ properties
+
+    /**#@+
+     * @access public
+     */
+
+    /**#@-*/
+
+    /**#@+
+     * @access private
+     */
+
+    /**
+     * array of environment variables defined by Web Server
+     * @var array
+     */
+    var $_env;
+
+    /**#@-*/
+
+    /**#@+
+     * @access public
+     */
+
+    // }}}
+    // {{{ constructor
+
+    /**
+     * constructor
+     *
+     * @param array $env
+     */
+    function Net_UserAgent_Mobile_Request_Env($env)
+    {
+        $this->_env = $env;
+    }
+
+    /**
+     * returns a specified HTTP Header
+     *
+     * @param string $header
+     * @return string
+     */
+    function get($header)
+    {
+        $header = strtr($header, '-', '_');
+        return @$this->_env[ 'HTTP_' . strtoupper($header) ];
+    }
+
+    /**#@-*/
+
+    /**#@+
+     * @access private
+     */
+
+    /**#@-*/
+
+    // }}}
+}
+
+// }}}
+
+/*
+ * Local Variables:
+ * mode: php
+ * coding: iso-8859-1
+ * tab-width: 4
+ * c-basic-offset: 4
+ * c-hanging-comment-ender-p: nil
+ * indent-tabs-mode: nil
+ * End:
+ */
+?>
Index: branches/dev/data/module/Net/UserAgent/Mobile/EZweb.php
===================================================================
--- branches/dev/data/module/Net/UserAgent/Mobile/EZweb.php	(revision 11460)
+++ branches/dev/data/module/Net/UserAgent/Mobile/EZweb.php	(revision 11460)
@@ -0,0 +1,347 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4: */
+
+/**
+ * PHP versions 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @category   Networking
+ * @package    Net_UserAgent_Mobile
+ * @author     KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @copyright  2003-2007 KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version    CVS: $Id: EZweb.php,v 1.17 2007/02/20 15:19:07 kuboa Exp $
+ * @link       http://www.au.kddi.com/ezfactory/tec/spec/4_4.html
+ * @link       http://www.au.kddi.com/ezfactory/tec/spec/new_win/ezkishu.html
+ * @see        Net_UserAgent_Mobile_Common
+ * @since      File available since Release 0.1.0
+ */
+
+require_once(dirname(__FILE__) . '/Common.php');
+require_once(dirname(__FILE__) . '/Display.php');
+
+// {{{ Net_UserAgent_Mobile_EZweb
+
+/**
+ * EZweb implementation
+ *
+ * Net_UserAgent_Mobile_EZweb is a subclass of
+ * {@link Net_UserAgent_Mobile_Common}, which implements EZweb (WAP1.0/2.0)
+ * user agents.
+ *
+ * SYNOPSIS:
+ * <code>
+ * require_once 'Net/UserAgent/Mobile.php';
+ *
+ * $_SERVER['HTTP_USER_AGENT'] = 'UP.Browser/3.01-HI02 UP.Link/3.2.1.2';
+ * $agent = &Net_UserAgent_Mobile::factory();
+ *
+ * printf("Name: %s\n", $agent->getName()); // 'UP.Browser'
+ * printf("Version: %s\n", $agent->getVersion()); // 3.01
+ * printf("DeviceID: %s\n", $agent->getDeviceID()); // 'HI02'
+ * printf("Server: %s\n", $agent->getServer()); // 'UP.Link/3.2.1.2'
+ *
+ * e.g.) 'UP.Browser/3.01-HI02 UP.Link/3.2.1.2 (Google WAP Proxy/1.0)'
+ * printf("Comment: %s\n", $agent->getComment()); // 'Google WAP Proxy/1.0'
+ *
+ * e.g.) 'KDDI-TS21 UP.Browser/6.0.2.276 (GUI) MMP/1.1'
+ * if ($agent->isXHTMLCompliant()) {
+ *     print "XHTML compliant!\n"; // true
+ * }
+ * </code>
+ *
+ * @category   Networking
+ * @package    Net_UserAgent_Mobile
+ * @author     KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @copyright  2003-2007 KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version    Release: 0.30.0
+ * @link       http://www.au.kddi.com/ezfactory/tec/spec/4_4.html
+ * @link       http://www.au.kddi.com/ezfactory/tec/spec/new_win/ezkishu.html
+ * @see        Net_UserAgent_Mobile_Common
+ * @since      Class available since Release 0.1.0
+ */
+class Net_UserAgent_Mobile_EZweb extends Net_UserAgent_Mobile_Common
+{
+
+    // {{{ properties
+
+    /**#@+
+     * @access public
+     */
+
+    /**#@-*/
+
+    /**#@+
+     * @access private
+     */
+
+    /**
+     * name of the model like 'P502i'
+     * @var string
+     */
+    var $_model = '';
+
+    /**
+     * device ID like 'TS21'
+     * @var string
+     */
+    var $_deviceID = '';
+
+    /**
+     * server string like 'UP.Link/3.2.1.2'
+     * @var string
+     */
+    var $_serverName = '';
+
+    /**
+     * comment like 'Google WAP Proxy/1.0'
+     * @var string
+     */
+    var $_comment = null;
+
+    /**
+     * whether it's XHTML compliant or not
+     * @var boolean
+     */
+    var $_xhtmlCompliant = false;
+
+    /**#@-*/
+
+    /**#@+
+     * @access public
+     */
+
+    // }}}
+    // {{{ isEZweb()
+
+    /**
+     * returns true
+     *
+     * @return boolean
+     */
+    function isEZweb()
+    {
+        return true;
+    }
+
+    // }}}
+    // {{{ isTUKa()
+
+    /**
+     * returns true if the agent is TU-Ka
+     *
+     * @return boolean
+     */
+    function isTUKa()
+    {
+        $tuka = substr($this->_deviceID, 2, 1);
+        if ($this->isWAP2()) {
+            if ($tuka == 'U') {
+                return true;
+            }
+        } else {
+            if ($tuka == 'T') {
+                return true;
+            }
+        }
+        
+        return false;
+    }
+
+    // }}}
+    // {{{ parse()
+
+    /**
+     * parse HTTP_USER_AGENT string
+     */
+    function parse()
+    {
+        $agent = $this->getUserAgent();
+
+        if (preg_match('/^KDDI-(.*)/', $agent, $matches)) {
+
+            // KDDI-TS21 UP.Browser/6.0.2.276 (GUI) MMP/1.1
+            $this->_xhtmlCompliant = true;
+            list($this->_deviceID, $browser, $opt, $this->_serverName) =
+                explode(' ', $matches[1], 4);
+            list($this->name, $version) = explode('/', $browser);
+            $this->version = "$version $opt";
+        } else {
+
+            // UP.Browser/3.01-HI01 UP.Link/3.4.5.2
+            @list($browser, $this->_serverName, $comment) =
+                explode(' ', $agent, 3);
+            list($this->name, $software) = explode('/', $browser);
+            list($this->version, $this->_deviceID) =
+                explode('-', $software);
+            if ($comment) {
+                $this->_comment =
+                    preg_replace('/^\((.*)\)$/', '$1', $comment);
+            }
+        }
+
+        $this->_model = $this->_deviceID;
+    }
+
+    // }}}
+    // {{{ makeDisplay()
+
+    /**
+     * create a new {@link Net_UserAgent_Mobile_Display} class instance
+     *
+     * @return object a newly created {@link Net_UserAgent_Mobile_Display}
+     *     object
+     * @see Net_UserAgent_Mobile_Display
+     */
+    function makeDisplay()
+    {
+        @list($width, $height) =
+            explode(',', $this->getHeader('x-up-devcap-screenpixels'));
+        $screenDepth =
+            explode(',', $this->getHeader('x-up-devcap-screendepth'));
+        $depth = $screenDepth[0] ? pow(2, (integer)$screenDepth[0]) : 0;
+        $color =
+            $this->getHeader('x-up-devcap-iscolor') === '1' ? true : false;
+        return new Net_UserAgent_Mobile_Display(array(
+                                                      'width'  => $width,
+                                                      'height' => $height,
+                                                      'color'  => $color,
+                                                      'depth'  => $depth
+                                                      )
+                                                );
+    }
+
+    // }}}
+    // {{{ getModel()
+
+    /**
+     * returns name of the model (device ID) like 'TS21'
+     *
+     * @return string
+     */
+    function getModel()
+    {
+        return $this->_model;
+    }
+
+    // }}}
+    // {{{ getDeviceID()
+
+    /**
+     * returns device ID like 'TS21'
+     *
+     * @return string
+     */
+    function getDeviceID()
+    {
+        return $this->_deviceID;
+    }
+
+    // }}}
+    // {{{ getServer()
+
+    /**
+     * returns server string like 'UP.Link/3.2.1.2'
+     *
+     * @return string
+     */
+    function getServer()
+    {
+        return $this->_serverName;
+    }
+
+    // }}}
+    // {{{ getComment()
+
+    /**
+     * returns comment like 'Google WAP Proxy/1.0'. returns null if nothinng.
+     *
+     * @return boolean
+     */
+    function getComment()
+    {
+        return $this->_comment;
+    }
+
+    // }}}
+    // {{{ isXHTMLCompliant()
+
+    /**
+     * returns whether it's XHTML compliant or not
+     *
+     * @return boolean
+     */
+    function isXHTMLCompliant()
+    {
+        return $this->_xhtmlCompliant;
+    }
+
+    // }}}
+    // {{{ getCarrierShortName()
+
+    /**
+     * returns the short name of the carrier
+     *
+     * @return string
+     */
+    function getCarrierShortName()
+    {
+        return 'E';
+    }
+
+    // }}}
+    // {{{ getCarrierLongName()
+
+    /**
+     * returns the long name of the carrier
+     *
+     * @return string
+     */
+    function getCarrierLongName()
+    {
+        return 'EZweb';
+    }
+
+    // }}}
+    // {{{ isWIN()
+
+    /**
+     * Returns whether the agent is CDMA 1X WIN or not.
+     *
+     * @return boolean
+     */
+    function isWIN()
+    {
+        return substr($this->_deviceID, 2, 1) == 3 ? true : false;
+    }
+
+    /**#@-*/
+
+    /**#@+
+     * @access private
+     */
+
+    /**#@-*/
+
+    // }}}
+}
+
+// }}}
+
+/*
+ * Local Variables:
+ * mode: php
+ * coding: iso-8859-1
+ * tab-width: 4
+ * c-basic-offset: 4
+ * c-hanging-comment-ender-p: nil
+ * indent-tabs-mode: nil
+ * End:
+ */
+?>
Index: branches/dev/data/module/Net/UserAgent/Mobile/AirHPhone.php
===================================================================
--- branches/dev/data/module/Net/UserAgent/Mobile/AirHPhone.php	(revision 11460)
+++ branches/dev/data/module/Net/UserAgent/Mobile/AirHPhone.php	(revision 11460)
@@ -0,0 +1,285 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4: */
+
+/**
+ * PHP versions 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @category   Networking
+ * @package    Net_UserAgent_Mobile
+ * @author     KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @copyright  2003-2007 KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version    CVS: $Id: AirHPhone.php,v 1.12 2007/02/20 14:39:45 kuboa Exp $
+ * @link       http://www.willcom-inc.com/ja/service/contents_service/club_air_edge/for_phone/homepage/index.html
+ * @see        Net_UserAgent_Mobile_Common
+ * @since      File available since Release 0.5
+ */
+
+require_once(dirname(__FILE__) . '/Common.php');
+require_once(dirname(__FILE__) . '/Display.php');
+
+// {{{ Net_UserAgent_Mobile_AirHPhone
+
+/**
+ * AirH"PHONE implementation
+ *
+ * Net_UserAgent_Mobile_AirHPhone is a subclass of
+ * {@link Net_UserAgent_Mobile_Common}, which implements DDI POCKET's
+ * AirH"PHONE user agents.
+ *
+ * SYNOPSIS:
+ * <code>
+ * require_once 'Net/UserAgent/Mobile.php';
+ *
+ * $_SERVER['HTTP_USER_AGENT'] =
+ *     'Mozilla/3.0(DDIPOCKET;JRC/AH-J3001V,AH-J3002V/1.0/0100/c50)CNF/2.0';
+ * $agent = &Net_UserAgent_Mobile::factory();
+ *
+ * printf("Name: %s\n", $agent->getName()); // 'DDIPOCKET'
+ * printf("Verdor: %s\n", $agent->getVendor()); // 'JRC'
+ * printf("Model: %s\n", $agent->getModel()); // 'AH-J3001V,AH-J3002V'
+ * printf("Model Version: %s\n", $agent->getModelVersion()); // '1.0'
+ * printf("Browser Version: %s\n", $agent->getBrowserVersion()); // '0100'
+ * printf("Cache Size: %s\n", $agent->getCacheSize()); // 50
+ * </code>
+ *
+ * @category   Networking
+ * @package    Net_UserAgent_Mobile
+ * @author     KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @copyright  2003-2007 KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version    Release: 0.30.0
+ * @link       http://www.willcom-inc.com/ja/service/contents_service/club_air_edge/for_phone/homepage/index.html
+ * @see        Net_UserAgent_Mobile_Common
+ * @since      Class available since Release 0.5
+ */
+class Net_UserAgent_Mobile_AirHPhone extends Net_UserAgent_Mobile_Common
+{
+
+    // {{{ properties
+
+    /**#@+
+     * @access public
+     */
+
+    /**
+     * User-Agent name
+     * @var string
+     */
+    var $name = 'WILLCOM';
+
+    /**#@-*/
+
+    /**#@+
+     * @access private
+     */
+
+    /**
+     * vendor name
+     * @var string
+     */
+    var $_vendor;
+
+    /**
+     * model name
+     * @var string
+     */
+    var $_model;
+
+    /**
+     * version number of the model
+     * @var string
+     */
+    var $_modelVersion;
+
+    /**
+     * version number of the browser
+     * @var string
+     */
+    var $_browserVersion;
+
+    /**
+     * cache size as killobytes unit
+     * @var integer
+     */
+    var $_cacheSize;
+
+    /**#@-*/
+
+    /**#@+
+     * @access public
+     */
+
+    // }}}
+    // {{{ isAirHPhone()
+
+    /**
+     * returns true
+     *
+     * @return boolean
+     */
+    function isAirHPhone()
+    {
+        return true;
+    }
+
+    // }}}
+    // {{{ parse()
+
+    /**
+     * parse HTTP_USER_AGENT string
+     */
+    function parse()
+    {
+        $agent = $this->getUserAgent();
+        if (preg_match('!^Mozilla/3\.0\((?:DDIPOCKET|WILLCOM);(.*)\)!',
+                       $agent, $matches)
+            ) {
+            list($this->_vendor, $this->_model, $this->_modelVersion,
+                 $this->_browserVersion, $cache) =
+                explode('/', $matches[1]);
+            if (!preg_match('/^[Cc](\d+)/', $cache, $matches)) {
+                return $this->noMatch();
+            }
+            $this->_cacheSize = (integer)$matches[1];
+        } else {
+            $this->noMatch();
+        }
+    }
+
+    // }}}
+    // {{{ makeDisplay()
+
+    /**
+     * create a new {@link Net_UserAgent_Mobile_Display} class instance
+     *
+     * @return object a newly created {@link Net_UserAgent_Mobile_Display}
+     *     object
+     * @see Net_UserAgent_Mobile_Display
+     */
+    function makeDisplay()
+    {
+        return new Net_UserAgent_Mobile_Display(null);
+    }
+
+    // }}}
+    // {{{ getVendor()
+
+    /**
+     * returns vendor name
+     *
+     * @return string
+     */
+    function getVendor()
+    {
+        return $this->_vendor;
+    }
+
+    // }}}
+    // {{{ getModel()
+
+    /**
+     * returns model name. Note that model names are separated with ','.
+     *
+     * @return string
+     */
+    function getModel()
+    {
+        return $this->_model;
+    }
+
+    // }}}
+    // {{{ getModelVersion()
+
+    /**
+     * returns version number of the model
+     *
+     * @return string
+     */
+    function getModelVersion()
+    {
+        return $this->_modelVersion;
+    }
+
+    // }}}
+    // {{{ getBrowserVersion()
+
+    /**
+     * returns version number of the browser
+     *
+     * @return string
+     */
+    function getBrowserVersion()
+    {
+        return $this->_browserVersion;
+    }
+
+    // }}}
+    // {{{ getCacheSize()
+
+    /**
+     * returns cache size as killobytes unit
+     *
+     * @return integer
+     */
+    function getCacheSize()
+    {
+        return $this->_cacheSize;
+    }
+
+    // }}}
+    // {{{ getCarrierShortName()
+
+    /**
+     * returns the short name of the carrier
+     *
+     * @return string
+     */
+    function getCarrierShortName()
+    {
+        return 'H';
+    }
+
+    // }}}
+    // {{{ getCarrierLongName()
+
+    /**
+     * returns the long name of the carrier
+     *
+     * @return string
+     */
+    function getCarrierLongName()
+    {
+        return 'AirH';
+    }
+
+    /**#@-*/
+
+    /**#@+
+     * @access private
+     */
+
+    /**#@-*/
+
+    // }}}
+}
+
+// }}}
+
+/*
+ * Local Variables:
+ * mode: php
+ * coding: iso-8859-1
+ * tab-width: 4
+ * c-basic-offset: 4
+ * c-hanging-comment-ender-p: nil
+ * indent-tabs-mode: nil
+ * End:
+ */
+?>
Index: branches/dev/data/module/Net/UserAgent/Mobile/DoCoMo.php
===================================================================
--- branches/dev/data/module/Net/UserAgent/Mobile/DoCoMo.php	(revision 11460)
+++ branches/dev/data/module/Net/UserAgent/Mobile/DoCoMo.php	(revision 11460)
@@ -0,0 +1,587 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4: */
+
+/**
+ * PHP versions 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @category   Networking
+ * @package    Net_UserAgent_Mobile
+ * @author     KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @copyright  2003-2007 KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version    CVS: $Id: DoCoMo.php,v 1.35 2007/02/20 18:41:04 kuboa Exp $
+ * @link       http://www.nttdocomo.co.jp/service/imode/make/content/spec/useragent/index.html
+ * @see        Net_UserAgent_Mobile_Common
+ * @since      File available since Release 0.1
+ */
+
+require_once dirname(__FILE__) . '/Common.php';
+require_once dirname(__FILE__) . '/Display.php';
+require_once dirname(__FILE__) . '/DoCoMoDisplayMap.php';
+
+// {{{ Net_UserAgent_Mobile_DoCoMo
+
+/**
+ * NTT DoCoMo implementation
+ *
+ * Net_UserAgent_Mobile_DoCoMo is a subclass of
+ * {@link Net_UserAgent_Mobile_Common}, which implements NTT docomo i-mode
+ * user agents.
+ *
+ * SYNOPSIS:
+ * <code>
+ * require_once 'Net/UserAgent/Mobile.php';
+ *
+ * $_SERVER['HTTP_USER_AGENT'] = 'DoCoMo/1.0/P502i/c10';
+ * $agent = &Net_UserAgent_Mobile::factory();
+ *
+ * printf("Name: %s\n", $agent->getName()); // 'DoCoMo'
+ * printf("Version: %s\n", $agent->getVersion()); // 1.0
+ * printf("HTML version: %s\n", $agent->getHTMLVersion()); // 2.0
+ * printf("Model: %s\n", $agent->getModel()); // 'P502i'
+ * printf("Cache: %dk\n", $agent->getCacheSize()); // 10
+ * if ($agent->isFOMA()) {
+ *     print "FOMA\n";             // false
+ * }
+ * printf("Vendor: %s\n", $agent->getVendor()); // 'P'
+ * printf("Series: %s\n", $agent->getSeries()); // '502i'
+ *
+ * // only available with <form utn>
+ * // e.g.) 'DoCoMo/1.0/P503i/c10/serNMABH200331';
+ * printf("Serial: %s\n", $agent->getSerialNumber()); // 'NMABH200331'
+ *
+ * // e.g.) 'DoCoMo/2.0 N2001(c10;ser0123456789abcde;icc01234567890123456789)';
+ * printf("Serial: %s\n", $agent->getSerialNumber()); // '0123456789abcde'
+ * printf("Card ID: %s\n", $agent->getCardID()); // '01234567890123456789'
+ *
+ * // e.g.) 'DoCoMo/1.0/P502i (Google CHTML Proxy/1.0)'
+ * printf("Comment: %s\n", $agent->getComment()); // 'Google CHTML Proxy/1.0'
+ *
+ * // e.g.) 'DoCoMo/1.0/D505i/c20/TB/W20H10'
+ * printf("Status: %s\n", $agent->getStatus()); // 'TB'
+ *
+ * // only available in eggy/M-stage
+ * // e.g.) 'DoCoMo/1.0/eggy/c300/s32/kPHS-K'
+ * printf("Bandwidth: %dkbps\n", $agent->getBandwidth()); // 32
+ * </code>
+ *
+ * @category   Networking
+ * @package    Net_UserAgent_Mobile
+ * @author     KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @copyright  2003-2007 KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version    Release: 0.30.0
+ * @link       http://www.nttdocomo.co.jp/service/imode/make/content/spec/useragent/index.html
+ * @see        Net_UserAgent_Mobile_Common
+ * @since      Class available since Release 0.1
+ */
+class Net_UserAgent_Mobile_DoCoMo extends Net_UserAgent_Mobile_Common
+{
+
+    // {{{ properties
+
+    /**#@+
+     * @access public
+     */
+
+    /**#@-*/
+
+    /**#@+
+     * @access private
+     */
+
+    /**
+     * name of the model like 'P502i'
+     * @var string
+     */
+    var $_model = '';
+
+    /**
+     * status of the cache (TC, TB, TD, TJ)
+     * @var string
+     */
+    var $_status = '';
+
+    /**
+     * bandwidth like 32 as kilobytes unit
+     * @var integer
+     */
+    var $_bandwidth = null;
+
+    /**
+     * hardware unique serial number
+     * @var string
+     */
+    var $_serialNumber = null;
+
+    /**
+     * whether it's FOMA or not
+     * @var boolean
+     */
+    var $_isFOMA = false;
+
+    /**
+     * FOMA Card ID (20 digit alphanumeric)
+     * @var string
+     */
+    var $_cardID = null;
+
+    /**
+     * comment on user agent string like 'Google Proxy'
+     * @var string
+     */
+    var $_comment = null;
+
+    /**
+     * cache size as killobytes unit
+     * @var integer
+     */
+    var $_cacheSize;
+
+    /**
+     * width and height of the display
+     * @var string
+     */
+    var $_displayBytes = '';
+
+    /**#@-*/
+
+    /**#@+
+     * @access public
+     */
+
+    // }}}
+    // {{{ isDoCoMo()
+
+    /**
+     * returns true
+     *
+     * @return boolean
+     */
+    function isDoCoMo()
+    {
+        return true;
+    }
+
+    // }}}
+    // {{{ parse()
+
+    /**
+     * parse HTTP_USER_AGENT string
+     *
+     * @return mixed void, or a PEAR error object on error
+     */
+    function parse()
+    {
+        @list($main, $foma_or_comment) =
+            explode(' ', $this->getUserAgent(), 2);
+
+        if ($foma_or_comment
+            && preg_match('/^\((.*)\)$/', $foma_or_comment, $matches)
+            ) {
+
+            // DoCoMo/1.0/P209is (Google CHTML Proxy/1.0)
+            $this->_comment = $matches[1];
+            $result = $this->_parseMain($main);
+        } elseif ($foma_or_comment) {
+
+            // DoCoMo/2.0 N2001(c10;ser0123456789abcde;icc01234567890123456789)
+            $this->_isFOMA = true;
+            list($this->name, $this->version) = explode('/', $main);
+            $result = $this->_parseFOMA($foma_or_comment);
+        } else {
+
+            // DoCoMo/1.0/R692i/c10
+            $result = $this->_parseMain($main);
+        }
+
+        if (Net_UserAgent_Mobile::isError($result)) {
+            return $result;
+        }
+    }
+
+    // }}}
+    // {{{ makeDisplay()
+
+    /**
+     * create a new {@link Net_UserAgent_Mobile_Display} class instance
+     *
+     * @return object a newly created {@link Net_UserAgent_Mobile_Display}
+     *     object
+     * @see Net_UserAgent_Mobile_Display
+     * @see Net_UserAgent_Mobile_DoCoMoDisplayMap::get()
+     */
+    function makeDisplay()
+    {
+        $display = Net_UserAgent_Mobile_DoCoMoDisplayMap::get($this->_model);
+        if ($this->_displayBytes !== '') {
+            list($widthBytes, $heightBytes) =
+                explode('*', $this->_displayBytes);
+            $display['width_bytes']  = $widthBytes;
+            $display['height_bytes'] = $heightBytes;
+        }
+        return new Net_UserAgent_Mobile_Display($display);
+    }
+
+    // }}}
+    // {{{ getHTMLVersion()
+
+    /**
+     * returns supported HTML version like '3.0'. retuns null if unknown.
+     *
+     * @return string
+     */
+    function getHTMLVersion()
+    {
+        static $htmlVersionMap;
+        if (!isset($htmlVersionMap)) {
+            $htmlVersionMap = array(
+                                    '[DFNP]501i' => '1.0',
+                                    '502i|821i|209i|651|691i|(F|N|P|KO)210i|^F671i$' => '2.0',
+                                    '(D210i|SO210i)|503i|211i|SH251i|692i|200[12]|2101V' => '3.0',
+                                    '504i|251i|^F671iS$|212i|2051|2102V|661i|2701|672i|SO213i|850i' => '4.0',
+                                    'eggy|P751v' => '3.2',
+                                    '505i|252i|900i|506i|880i|253i|P213i|901i|700i|851i|701i|881i|^SA800i$|600i|^L601i$|^M702i(S|G)$' => '5.0',
+                                    '902i|702i|851i|882i|^N601i$|^D800iDS$|^P703imyu$' => '6.0',
+                                    '903i|703i' => '7.0'
+                                    );
+        }
+
+        foreach ($htmlVersionMap as $key => $value) {
+            if (preg_match("/$key/", $this->_model)) {
+                return $value;
+            }
+        }
+        return null;
+    }
+
+    // }}}
+    // {{{ getCacheSize()
+
+    /**
+     * returns cache size as kilobytes unit. returns 5 if unknown.
+     *
+     * @return integer
+     */
+    function getCacheSize()
+    {
+        if ($this->_cacheSize) {
+            return $this->_cacheSize;
+        }
+
+        static $defaultCacheSize;
+        if (!isset($defaultCacheSize)) {
+            $defaultCacheSize = 5;
+        }
+        return $defaultCacheSize;
+    }
+
+    // }}}
+    // {{{ getSeries()
+
+    /**
+     * returns series name like '502i'. returns null if unknown.
+     *
+     * @return string
+     */
+    function getSeries()
+    {
+        if ($this->isFOMA() && preg_match('/(\d{4})/', $this->_model)) {
+            return 'FOMA';
+        }
+
+        if (preg_match('/(\d{3}i)/', $this->_model, $matches)) {
+            return $matches[1];
+        }
+
+        if ($this->_model == 'P651ps') {
+            return '651';
+        }
+
+        return null;
+    }
+
+    // }}}
+    // {{{ getVendor()
+
+    /**
+     * returns vender code like 'SO' for Sony. returns null if unknown.
+     *
+     * @return string
+     */
+    function getVendor()
+    {
+        if (preg_match('/([A-Z]+)\d/', $this->_model, $matches)) {
+            return $matches[1];
+        }
+        return null;
+    }
+
+    // }}}
+    // {{{ getModel()
+
+    /**
+     * returns name of the model like 'P502i'
+     *
+     * @return string
+     */
+    function getModel()
+    {
+        return $this->_model;
+    }
+
+    // }}}
+    // {{{ getStatus()
+
+    /**
+     * returns status like "TB", "TC", "TD" or "TJ", which means:
+     * 
+     * TB | Browsers
+     * TC | Browsers with image off (only Available in HTML 5.0)
+     * TD | Fetching JAR
+     * TJ | i-Appli
+     *
+     * @return string
+     */
+    function getStatus()
+    {
+        return $this->_status;
+    }
+
+    // }}}
+    // {{{ getBandwidth()
+
+    /**
+     * returns bandwidth like 32 as killobytes unit. Only vailable in eggy,
+     * returns null otherwise.
+     *
+     * @return integer
+     */
+    function getBandwidth()
+    {
+        return $this->_bandwidth;
+    }
+
+    // }}}
+    // {{{ getSerialNumber()
+
+    /**
+     * returns hardware unique serial number (15 digit in FOMA, 11 digit
+     * otherwise alphanumeric). Only available with form utn attribute.
+     * returns null otherwise.
+     *
+     * @return string
+     */
+    function getSerialNumber()
+    {
+        return $this->_serialNumber;
+    }
+
+    // }}}
+    // {{{ isFOMA()
+
+    /**
+     * retuns whether it's FOMA or not
+     *
+     * @return boolean
+     */
+    function isFOMA()
+    {
+        return $this->_isFOMA;
+    }
+
+    // }}}
+    // {{{ getComment()
+
+    /**
+     * returns comment on user agent string like 'Google Proxy'. returns null
+     * otherwise.
+     *
+     * @return string
+     */
+    function getComment()
+    {
+        return $this->_comment;
+    }
+
+    // }}}
+    // {{{ getCardID()
+
+    /**
+     * returns FOMA Card ID (20 digit alphanumeric). Only available in FOMA
+     * with <form utn> attribute. returns null otherwise.
+     *
+     * @return string
+     */ 
+    function getCardID()
+    {
+        return $this->_cardID;
+    }
+
+    // }}}
+    // {{{ isGPS()
+
+    /**
+     * @return boolean
+     */ 
+    function isGPS()
+    {
+        static $gpsModels;
+        if (!isset($gpsModels)) {
+            $gpsModels = array('F661i', 'F505iGPS');
+        }
+        return in_array($this->_model, $gpsModels);
+    }
+
+    // }}}
+    // {{{ getCarrierShortName()
+
+    /**
+     * returns the short name of the carrier
+     *
+     * @return string
+     */
+    function getCarrierShortName()
+    {
+        return 'I';
+    }
+
+    // }}}
+    // {{{ getCarrierLongName()
+
+    /**
+     * returns the long name of the carrier
+     *
+     * @return string
+     */
+    function getCarrierLongName()
+    {
+        return 'DoCoMo';
+    }
+
+    /**#@-*/
+
+    /**#@+
+     * @access private
+     */
+
+    // }}}
+    // {{{ _parseMain()
+
+    /**
+     * parse main part of HTTP_USER_AGENT string (not FOMA)
+     *
+     * @param string $main main part of HTTP_USER_AGENT string
+     * @return mixed void, or a PEAR error object on error
+     */ 
+    function _parseMain($main)
+    {
+        @list($this->name, $this->version, $this->_model, $cache, $rest) =
+            explode('/', $main, 5);
+        if ($this->_model === 'SH505i2') {
+            $this->_model = 'SH505i';
+        }
+
+        if ($cache) {
+            if (!preg_match('/^c(\d+)/', $cache, $matches)) {
+                return $this->noMatch();
+            }
+            $this->_cacheSize = (integer)$matches[1];
+        }
+
+        if ($rest) {
+            $rest = explode('/', $rest);
+            foreach ($rest as $value) {
+                if (preg_match('/^ser(\w{11})$/', $value, $matches)) {
+                    $this->_serialNumber = $matches[1];
+                    continue;
+                }
+                if (preg_match('/^(T[CDBJ])$/', $value, $matches)) {
+                    $this->_status = $matches[1];
+                    continue;
+                }
+                if (preg_match('/^s(\d+)$/', $value, $matches)) {
+                    $this->_bandwidth = (integer)$matches[1];
+                    continue;
+                }
+                if (preg_match('/^W(\d+)H(\d+)$/', $value, $matches)) {
+                    $this->_displayBytes = "{$matches[1]}*{$matches[2]}";
+                    continue;
+                }
+            }
+        }
+    }
+
+    // }}}
+    // {{{ _parseFOMA()
+
+    /**
+     * parse main part of HTTP_USER_AGENT string (FOMA)
+     *
+     * @param string $foma main part of HTTP_USER_AGENT string
+     * @return mixed void, or a PEAR error object on error
+     */ 
+    function _parseFOMA($foma)
+    {
+        if (!preg_match('/^([^(]+)/', $foma, $matches)) {
+            return $this->noMatch();
+        }
+        $this->_model = $matches[1];
+        if ($matches[1] === 'MST_v_SH2101V') {
+            $this->_model = 'SH2101V';
+        }
+
+        if (preg_match('/^[^(]+\((.*?)\)$/', $foma, $matches)) {
+            $rest = explode(';', $matches[1]);
+            foreach ($rest as $value) {
+                if (preg_match('/^c(\d+)/', $value, $matches)) {
+                    $this->_cacheSize = (integer)$matches[1];
+                    continue;
+                }
+                if (preg_match('/^ser(\w{15})$/', $value, $matches)) {
+                    $this->_serialNumber = $matches[1];
+                    continue;
+                }
+                if (preg_match('/^(T[CDBJ])$/', $value, $matches)) {
+                    $this->_status = $matches[1];
+                    continue;
+                }
+                if (preg_match('/^icc(\w{20})?$/', $value, $matches)) {
+                    if (count($matches) == 2) {
+                        $this->_cardID = $matches[1];
+                    }
+                    continue;
+                }
+                if (preg_match('/^W(\d+)H(\d+)$/', $value, $matches)) {
+                    $this->_displayBytes = "{$matches[1]}*{$matches[2]}";
+                    continue;
+                }
+                return $this->noMatch();
+            }
+        }
+    }
+
+    /**#@-*/
+
+    // }}}
+}
+
+// }}}
+
+/*
+ * Local Variables:
+ * mode: php
+ * coding: iso-8859-1
+ * tab-width: 4
+ * c-basic-offset: 4
+ * c-hanging-comment-ender-p: nil
+ * indent-tabs-mode: nil
+ * End:
+ */
+?>
Index: branches/dev/data/module/Net/UserAgent/Mobile/Vodafone.php
===================================================================
--- branches/dev/data/module/Net/UserAgent/Mobile/Vodafone.php	(revision 11460)
+++ branches/dev/data/module/Net/UserAgent/Mobile/Vodafone.php	(revision 11460)
@@ -0,0 +1,557 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4: */
+
+/**
+ * PHP versions 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @category   Networking
+ * @package    Net_UserAgent_Mobile
+ * @author     KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @copyright  2003-2007 KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version    CVS: $Id: Vodafone.php,v 1.12 2007/02/20 15:21:05 kuboa Exp $
+ * @since      File available since Release 0.20.0
+ */
+
+require_once dirname(__FILE__) . '/Common.php';
+require_once dirname(__FILE__) . '/Display.php';
+
+// {{{ Net_UserAgent_Mobile_Vodafone
+
+/**
+ * Vodafone implementation
+ *
+ * Net_UserAgent_Mobile_Vodafone is a subclass of
+ * {@link Net_UserAgent_Mobile_Common}, which implements Vodafone user agents.
+ *
+ * SYNOPSIS:
+ * <code>
+ * require_once 'Net/UserAgent/Mobile.php';
+ *
+ * $_SERVER['HTTP_USER_AGENT'] = 'J-PHONE/2.0/J-DN02';
+ * $agent = &Net_UserAgent_Mobile::factory();
+ *
+ * printf("Name: %s\n", $agent->getName()); // 'J-PHONE'
+ * printf("Version: %s\n", $agent->getVersion()); // 2.0
+ * printf("Model: %s\n", $agent->getModel()); // 'J-DN02'
+ * if ($agent->isPacketCompliant()) {
+ *     print "Packet is compliant.\n"; // false
+ * }
+ *
+ * // only availabe in Java compliant
+ * // e.g.) 'J-PHONE/4.0/J-SH51/SNXXXXXXXXX SH/0001a Profile/MIDP-1.0 Configuration/CLDC-1.0 Ext-Profile/JSCL-1.1.0'
+ * printf("Serial: %s\n", $agent->getSerialNumber()); // XXXXXXXXX
+ * printf("Vendor: %s\n", $agent->getVendor()); // 'SH'
+ * printf("Vendor Version: %s\n", $agent->getVendorVersion()); // '0001a'
+ *
+ * $info = $agent->getJavaInfo();  // array
+ * foreach ($info as $key => $value) {
+ *     print "$key: $value\n";
+ * }
+ * </code>
+ *
+ * @category   Networking
+ * @package    Net_UserAgent_Mobile
+ * @author     KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @copyright  2003-2007 KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version    Release: 0.30.0
+ * @link       http://developers.vodafone.jp/dp/tool_dl/web/useragent.php
+ * @link       http://developers.vodafone.jp/dp/tool_dl/web/position.php
+ * @see        Net_UserAgent_Mobile_Common
+ * @since      Class available since Release 0.20.0
+ */
+class Net_UserAgent_Mobile_Vodafone extends Net_UserAgent_Mobile_Common
+{
+
+    // {{{ properties
+
+    /**#@+
+     * @access public
+     */
+
+    /**#@-*/
+
+    /**#@+
+     * @access private
+     */
+
+    /**
+     * name of the model like 'J-DN02'
+     * @var string
+     */
+    var $_model = '';
+
+    /**
+     * whether the agent is packet connection complicant or not
+     * @var boolean
+     */
+    var $_packetCompliant = false;
+
+    /**
+     * terminal unique serial number
+     * @var string
+     */
+    var $_serialNumber = null;
+
+    /**
+     * vendor code like 'SH'
+     * @var string
+     */
+    var $_vendor = '';
+
+    /**
+     * vendor version like '0001a'
+     * @var string
+     */
+    var $_vendorVersion = null;
+
+    /**
+     * Java profiles
+     * @var array
+     */
+    var $_javaInfo = array();
+
+    /**
+     * whether the agent is 3G
+     * @var boolean
+     */
+    var $_is3G = true;
+
+    /**
+     * the name of the mobile phone
+     * @var string
+     */
+    var $_msname = '';
+
+    /**#@-*/
+
+    /**#@+
+     * @access public
+     */
+
+    // }}}
+    // {{{ isJPhone()
+
+    /**
+     * returns true
+     *
+     * @return boolean
+     */
+    function isJPhone()
+    {
+        return true;
+    }
+
+    // }}}
+    // {{{ isVodafone()
+
+    /**
+     * returns true
+     *
+     * @return boolean
+     */
+    function isVodafone()
+    {
+        return true;
+    }
+
+    // }}}
+    // {{{ parse()
+
+    /**
+     * parse HTTP_USER_AGENT string
+     *
+     * @return mixed void, or a PEAR error object on error
+     */
+    function parse()
+    {
+        $agent = explode(' ', $this->getUserAgent());
+        preg_match('!^(?:(SoftBank|Vodafone|J-PHONE)/\d\.\d|MOT-)!',
+                   $agent[0], $matches
+                   );
+        if (count($matches) > 1) {
+            $carrier = $matches[1];
+        } else {
+            $carrier = 'Motorola';
+        }
+
+        switch ($carrier) {
+        case 'Vodafone':
+        case 'SoftBank':
+            $result = $this->_parseVodafone($agent);
+            break;
+        case 'J-PHONE':
+            $result = $this->_parseJphone($agent);
+            break;
+        case 'Motorola':
+            $result = $this->_parseMotorola($agent);
+            break;
+        }
+
+        if (Net_UserAgent_Mobile::isError($result)) {
+            return $result;
+        }
+
+        $this->_msname = $this->getHeader('x-jphone-msname');
+    }
+
+    // }}}
+    // {{{ makeDisplay()
+
+    /**
+     * create a new {@link Net_UserAgent_Mobile_Display} class instance
+     *
+     * @return object a newly created {@link Net_UserAgent_Mobile_Display}
+     *     object
+     * @see Net_UserAgent_Mobile_Display
+     */
+    function makeDisplay() 
+    {
+        @list($width, $height) =
+            explode('*', $this->getHeader('x-jphone-display'));
+        $color = false;
+        $depth = 0;
+        if ($color_string = $this->getHeader('x-jphone-color')) {
+            preg_match('!^([CG])(\d+)$!', $color_string, $matches);
+            $color = $matches[1] === 'C' ? true : false;
+            $depth = $matches[2];
+        }
+        return new Net_UserAgent_Mobile_Display(array(
+                                                      'width'  => $width,
+                                                      'height' => $height,
+                                                      'depth'  => $depth,
+                                                      'color'  => $color)
+                                                );
+    }
+
+    // }}}
+    // {{{ getModel()
+
+    /**
+     * returns name of the model like 'J-DN02'
+     *
+     * @return string
+     */
+    function getModel()
+    {
+        return $this->_model;
+    }
+
+    // }}}
+    // {{{ isPacketCompliant()
+
+    /**
+     * returns whether the agent is packet connection complicant or not
+     *
+     * @return boolean
+     */
+    function isPacketCompliant()
+    {
+        return $this->_packetCompliant;
+    }
+
+    // }}}
+    // {{{ getSerialNumber()
+
+    /**
+     * return terminal unique serial number. returns null if user forbids to
+     * send his/her serial number.
+     *
+     * @return string
+     */
+    function getSerialNumber()
+    {
+        return $this->_serialNumber;
+    }
+
+    // }}}
+    // {{{ getVendor()
+
+    /**
+     * returns vendor code like 'SH'
+     *
+     * @return string
+     */
+    function getVendor()
+    {
+        return $this->_vendor;
+    }
+
+    // }}}
+    // {{{ getVendorVersion()
+
+    /**
+     * returns vendor version like '0001a'. returns null if unknown.
+     *
+     * @return string
+     */
+    function getVendorVersion()
+    {
+        return $this->_vendorVersion;
+    }
+
+    // }}}
+    // {{{ getJavaInfo()
+
+    /**
+     * returns array of Java profiles
+     *
+     * Array structure is something like:
+     *
+     * - 'Profile'       => 'MIDP-1.0',
+     * - 'Configuration' => 'CLDC-1.0',
+     * - 'Ext-Profile'   => 'JSCL-1.1.0'
+     *
+     * @return array
+     */
+    function getJavaInfo()
+    {
+        return $this->_javaInfo;
+    }
+
+    // }}}
+    // {{{ getCarrierShortName()
+
+    /**
+     * returns the short name of the carrier
+     *
+     * @return string
+     */
+    function getCarrierShortName()
+    {
+        return 'V';
+    }
+
+    // }}}
+    // {{{ getCarrierLongName()
+
+    /**
+     * returns the long name of the carrier
+     *
+     * @return string
+     */
+    function getCarrierLongName()
+    {
+        return 'Vodafone';
+    }
+
+    // }}}
+    // {{{ isTypeC()
+
+    /**
+     * returns true if the type is C
+     *
+     * @return boolean
+     */
+    function isTypeC()
+    {
+        if ($this->_is3G || !preg_match('!^[32]\.!', $this->version)) {
+            return false;
+        }
+
+        return true;
+    }
+
+    // }}}
+    // {{{ isTypeP()
+
+    /**
+     * returns true if the type is P
+     *
+     * @return boolean
+     */
+    function isTypeP()
+    {
+        if ($this->_is3G || !preg_match('!^4\.!', $this->version)) {
+            return false;
+        }
+
+        return true;
+    }
+
+    // }}}
+    // {{{ isTypeW()
+
+    /**
+     * returns true if the type is W
+     *
+     * @return boolean
+     */
+    function isTypeW()
+    {
+        if ($this->_is3G || !preg_match('!^5\.!', $this->version)) {
+            return false;
+        }
+
+        return true;
+    }
+
+    // }}}
+    // {{{ isType3GC()
+
+    /**
+     * returns true if the type is 3GC
+     *
+     * @return boolean
+     */
+    function isType3GC()
+    {
+        return $this->_is3G;
+    }
+
+    // }}}
+    // {{{ getMsname()
+
+    /**
+     * returns the name of the mobile phone
+     *
+     * @return string the name of the mobile phone
+     */
+    function getMsname()
+    {
+        return $this->_msname;
+    }
+
+    /**#@-*/
+
+    /**#@+
+     * @access private
+     */
+
+    // }}}
+    // {{{ _parseVodafone()
+
+    /**
+     * parse HTTP_USER_AGENT string for the Vodafone 3G aegnt
+     *
+     * @param array $agent parts of the User-Agent string
+     * @return mixed void, or a PEAR error object on error
+     */
+    function _parseVodafone(&$agent)
+    {
+        $count = count($agent);
+        $this->_packetCompliant = true;
+
+        // Vodafone/1.0/V702NK/NKJ001 Series60/2.6 Nokia6630/2.39.148 Profile/MIDP-2.0 Configuration/CLDC-1.1
+        // Vodafone/1.0/V702NK/NKJ001/SN123456789012345 Series60/2.6 Nokia6630/2.39.148 Profile/MIDP-2.0 Configuration/CLDC-1.1
+        // Vodafone/1.0/V802SE/SEJ001/SN123456789012345 Browser/SEMC-Browser/4.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
+        @list($this->name, $this->version, $this->_model, $modelVersion,
+              $serialNumber) = explode('/', $agent[0]);
+        if ($serialNumber) {
+            if (!preg_match('!^SN(.+)!', $serialNumber, $matches)) {
+                return $this->noMatch();
+            }
+            $this->_serialNumber = $matches[1];
+        }
+
+        if (!preg_match('!^([a-z]+)((?:[a-z]|\d){4})$!i', $modelVersion, $matches)) {
+            return $this->noMatch();
+        }
+
+        $this->_vendor = $matches[1];
+        $this->_vendorVersion = $matches[2];
+
+        for ($i = 2; $i < $count; ++$i) {
+            list($key, $value) = explode('/', $agent[$i]);
+            $this->_javaInfo[$key] = $value;
+        }
+    }
+
+    // }}}
+    // {{{ _parseJphone()
+
+    /**
+     * parse HTTP_USER_AGENT string for the ancient agent
+     *
+     * @param array $agent parts of the User-Agent string
+     * @return mixed void, or a PEAR error object on error
+     */
+    function _parseJphone(&$agent)
+    {
+        $count = count($agent);
+        $this->_is3G = false;
+
+        if ($count > 1) {
+
+            // J-PHONE/4.0/J-SH51/SNJSHA3029293 SH/0001aa Profile/MIDP-1.0 Configuration/CLDC-1.0 Ext-Profile/JSCL-1.1.0
+            $this->_packetCompliant = true;
+            @list($this->name, $this->version, $this->_model,
+                  $serialNumber) = explode('/', $agent[0]);
+            if ($serialNumber) {
+                if (!preg_match('!^SN(.+)!', $serialNumber, $matches)) {
+                    return $this->noMatch();
+                }
+                $this->_serialNumber = $matches[1];
+            }
+            list($this->_vendor, $this->_vendorVersion) =
+                explode('/', $agent[1]);
+            for ($i = 2; $i < $count; ++$i) {
+                list($key, $value) = explode('/', $agent[$i]);
+                $this->_javaInfo[$key] = $value;
+            }
+        } else {
+
+            // J-PHONE/2.0/J-DN02
+            @list($this->name, $this->version, $model) =
+                explode('/', $agent[0]);
+            $this->_model  = (string)$model;
+            if ($this->_model) {
+                if (preg_match('!V\d+([A-Z]+)!', $this->_model, $matches)) {
+                    $this->_vendor = $matches[1];
+                } elseif (preg_match('!J-([A-Z]+)!', $this->_model, $matches)) {
+                    $this->_vendor = $matches[1];
+                }
+            }
+        }
+    }
+
+    // }}}
+    // {{{ _parseMotorola()
+
+    /**
+     * parse HTTP_USER_AGENT string for the Motorola 3G aegnt
+     *
+     * @param array $agent parts of the User-Agent string
+     * @return mixed void, or a PEAR error object on error
+     */
+    function _parseMotorola(&$agent)
+    {
+        $count = count($agent);
+        $this->_packetCompliant = true;
+        $this->_vendor = 'MOT';
+
+        // MOT-V980/80.2F.2E. MIB/2.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
+        list($name, $this->_vendorVersion) = explode('/', $agent[0]);
+        $this->_model = substr(strrchr($name, '-'), 1);
+
+        for ($i = 2; $i < $count; ++$i) {
+            list($key, $value) = explode('/', $agent[$i]);
+            $this->_javaInfo[$key] = $value;
+        }
+    }
+
+    /**#@-*/
+
+    // }}}
+}
+
+// }}}
+
+/*
+ * Local Variables:
+ * mode: php
+ * coding: iso-8859-1
+ * tab-width: 4
+ * c-basic-offset: 4
+ * c-hanging-comment-ender-p: nil
+ * indent-tabs-mode: nil
+ * End:
+ */
+?>
Index: branches/dev/data/module/Net/UserAgent/Mobile.php
===================================================================
--- branches/dev/data/module/Net/UserAgent/Mobile.php	(revision 11460)
+++ branches/dev/data/module/Net/UserAgent/Mobile.php	(revision 11460)
@@ -0,0 +1,358 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4: */
+
+/**
+ * PHP versions 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @category   Networking
+ * @package    Net_UserAgent_Mobile
+ * @author     KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @copyright  2003-2007 KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version    CVS: $Id: Mobile.php,v 1.27 2007/02/20 15:17:16 kuboa Exp $
+ * @since      File available since Release 0.1
+ */
+
+require_once dirname(__FILE__) . '/../../PEAR.php';
+require_once dirname(__FILE__) . '/Mobile/Request.php';
+
+// {{{ constants
+
+/**
+ * Constants for error handling.
+ */
+define('NET_USERAGENT_MOBILE_OK',               1);
+define('NET_USERAGENT_MOBILE_ERROR',           -1);
+define('NET_USERAGENT_MOBILE_ERROR_NOMATCH',   -2);
+define('NET_USERAGENT_MOBILE_ERROR_NOT_FOUND', -3);
+
+// }}}
+// {{{ GLOBALS
+
+/**
+ * globals for fallback on no match
+ *
+ * @global boolean $GLOBALS['_NET_USERAGENT_MOBILE_FALLBACK_ON_NOMATCH']
+ */
+$GLOBALS['_NET_USERAGENT_MOBILE_FALLBACK_ON_NOMATCH'] = false;
+
+// }}}
+// {{{ Net_UserAgent_Mobile
+
+/**
+ * HTTP mobile user agent string parser
+ *
+ * Net_UserAgent_Mobile parses HTTP_USER_AGENT strings of (mainly Japanese)
+ * mobile HTTP user agents. It'll be useful in page dispatching by user
+ * agents.
+ * This package was ported from Perl's HTTP::MobileAgent.
+ * See {@link http://search.cpan.org/search?mode=module&query=HTTP-MobileAgent}
+ * The author of the HTTP::MobileAgent module is Tatsuhiko Miyagawa
+ * <miyagawa@bulknews.net>
+ *
+ * SYNOPSIS:
+ * <code>
+ * require_once 'Net/UserAgent/Mobile.php';
+ *
+ * $agent = &Net_UserAgent_Mobile::factory($agent_string);
+ * // or $agent = &Net_UserAgent_Mobile::factory(); // to get from $_SERVER
+ *
+ * if ($agent->isDoCoMo()) {
+ *     // or if ($agent->getName() == 'DoCoMo')
+ *     // or if (strtolower(get_class($agent)) == 'http_mobileagent_docomo')
+ *     // it's NTT DoCoMo i-mode
+ *     // see what's available in Net_UserAgent_Mobile_DoCoMo
+ * } elseif ($agent->isVodafone()) {
+ *     // it's Vodafone(J-PHONE)
+ *     // see what's available in Net_UserAgent_Mobile_Vodafone
+ * } elseif ($agent->isEZweb()) {
+ *     // it's KDDI/EZWeb
+ *     // see what's available in Net_UserAgent_Mobile_EZweb
+ * } else {
+ *     // may be PC
+ *     // $agent is Net_UserAgent_Mobile_NonMobile
+ * }
+ *
+ * $display = $agent->getDisplay();    // Net_UserAgent_Mobile_Display
+ * if ($display->isColor()) {
+ *    ...
+ * }
+ * </code>
+ *
+ * @category   Networking
+ * @package    Net_UserAgent_Mobile
+ * @author     KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @copyright  2003-2007 KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version    Release: 0.30.0
+ * @since      Class available since Release 0.1
+ */
+class Net_UserAgent_Mobile
+{
+
+    // {{{ properties
+
+    /**#@+
+     * @access public
+     */
+
+    /**#@-*/
+
+    /**#@+
+     * @access private
+     */
+
+    /**#@-*/
+
+    /**#@+
+     * @access public
+     * @static
+     */
+
+    // }}}
+    // {{{ factory()
+
+    /**
+     * create a new {@link Net_UserAgent_Mobile_Common} subclass instance
+     *
+     * parses HTTP headers and constructs {@link Net_UserAgent_Mobile_Common}
+     * subclass instance.
+     * If no argument is supplied, $_SERVER{'HTTP_*'} is used.
+     *
+     * @param mixed $stuff User-Agent string or object that works with
+     *     HTTP_Request (not implemented)
+     * @return mixed a newly created Net_UserAgent_Mobile object, or a PEAR
+     *     error object on error
+     * @see Net_UserAgent_Mobile_Request::factory()
+     */
+    function &factory($stuff = null)
+    {
+        static $mobileRegex;
+        if (!isset($mobileRegex)) {
+            $docomoRegex    = '^DoCoMo/\d\.\d[ /]';
+            $vodafoneRegex  = '^(?:(?:SoftBank|Vodafone|J-PHONE|Vemulator|J-EMULATOR)/\d\.\d|(?:MOT|MOTEMULATOR)-)';
+            $ezwebRegex     = '^(?:KDDI-[A-Z]+\d+[A-Z]? )?UP\.Browser\/';
+            $airhphoneRegex = '^Mozilla/3\.0\((?:DDIPOCKET|WILLCOM);';
+            $mobileRegex =
+                "(?:($docomoRegex)|($vodafoneRegex)|($ezwebRegex)|($airhphoneRegex))";
+        }
+
+        $request = &Net_UserAgent_Mobile_Request::factory($stuff);
+
+        // parse User-Agent string
+        $ua = $request->get('User-Agent');
+        $sub = 'NonMobile';
+        if (preg_match("!$mobileRegex!", $ua, $matches)) {
+            $sub = @$matches[1] ? 'DoCoMo' :
+                (@$matches[2] ? 'Vodafone' :
+                 (@$matches[3] ? 'EZweb' : 'AirHPhone'));
+        }
+        $className = "Net_UserAgent_Mobile_{$sub}";
+
+        if (!class_exists($className)) {
+            $file = dirname(__FILE__) . "/Mobile/{$sub}.php";
+            if (!include_once $file) {
+                return PEAR::raiseError(null,
+                                        NET_USERAGENT_MOBILE_ERROR_NOT_FOUND,
+                                        null, null,
+                                        "Unable to include the $file file",
+                                        'Net_UserAgent_Mobile_Error', true
+                                        );
+            }
+        }
+
+        $instance = &new $className($request);
+        $error = &$instance->isError();
+        if (Net_UserAgent_Mobile::isError($error)) {
+            if ($GLOBALS['_NET_USERAGENT_MOBILE_FALLBACK_ON_NOMATCH']
+                && $error->getCode() == NET_USERAGENT_MOBILE_ERROR_NOMATCH
+                ) {
+                $instance = &Net_UserAgent_Mobile::factory('Net_UserAgent_Mobile_Fallback_On_NoMatch');
+                return $instance;
+            }
+
+            $instance = &$error;
+        }
+
+        return $instance;
+    }
+
+    // }}}
+    // {{{ singleton()
+
+    /**
+     * creates a new {@link Net_UserAgent_Mobile_Common} subclass instance or
+     * returns a instance from existent ones
+     *
+     * @param mixed $stuff User-Agent string or object that works with
+     *     HTTP_Request (not implemented)
+     * @return mixed a newly created or a existent Net_UserAgent_Mobile
+     *     object, or a PEAR error object on error
+     * @see Net_UserAgent_Mobile::factory()
+     */
+     function &singleton($stuff = null)
+     {
+         static $instance;
+         if (!isset($instance)) {
+             $instance = Net_UserAgent_Mobile::factory($stuff);
+         }
+
+         return $instance;
+     }
+
+    // }}}
+    // {{{ isError()
+
+    /**
+     * tell whether a result code from a Net_UserAgent_Mobile method
+     * is an error
+     *
+     * @param integer $value result code
+     * @return boolean whether $value is an {@link Net_UserAgent_Mobile_Error}
+     */
+    function isError($value)
+    {
+        return is_a($value, 'Net_UserAgent_Mobile_Error');
+    }
+
+    // }}}
+    // {{{ errorMessage()
+
+    /**
+     * return a textual error message for a Net_UserAgent_Mobile error code
+     *
+     * @param integer $value error code
+     * @return string error message, or false if the error code was not
+     *     recognized
+     */
+    function errorMessage($value)
+    {
+        static $errorMessages;
+        if (!isset($errorMessages)) {
+            $errorMessages = array(
+                                   NET_USERAGENT_MOBILE_ERROR           => 'unknown error',
+                                   NET_USERAGENT_MOBILE_ERROR_NOMATCH   => 'no match',
+                                   NET_USERAGENT_MOBILE_ERROR_NOT_FOUND => 'not found',
+                                   NET_USERAGENT_MOBILE_OK              => 'no error'
+                                   );
+        }
+
+        if (Net_UserAgent_Mobile::isError($value)) {
+            $value = $value->getCode();
+        }
+
+        return isset($errorMessages[$value]) ?
+            $errorMessages[$value] :
+            $errorMessages[NET_USERAGENT_MOBILE_ERROR];
+    }
+
+    /**#@-*/
+
+    /**#@+
+     * @access private
+     */
+
+    /**#@-*/
+
+    // }}}
+}
+
+// }}}
+// {{{ Net_UserAgent_Mobile_Error
+
+/**
+ * Net_UserAgent_Mobile_Error implements a class for reporting user
+ * agent error messages
+ *
+ * @category   Networking
+ * @package    Net_UserAgent_Mobile
+ * @author     KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @copyright  2003-2007 KUBO Atsuhiro <iteman@users.sourceforge.net>
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version    Release: 0.30.0
+ * @since      Class available since Release 0.1
+ */
+class Net_UserAgent_Mobile_Error extends PEAR_Error
+{
+
+    // {{{ properties
+
+    /**#@+
+     * @access public
+     */
+
+    /**#@-*/
+
+    /**#@+
+     * @access private
+     */
+
+    /**#@-*/
+
+    /**#@+
+     * @access public
+     */
+
+    // }}}
+    // {{{ constructor
+
+    /**
+     * constructor
+     *
+     * @param mixed   $code     Net_UserAgent_Mobile error code, or string
+     *     with error message.
+     * @param integer $mode     what 'error mode' to operate in
+     * @param integer $level    what error level to use for $mode and
+     *     PEAR_ERROR_TRIGGER
+     * @param mixed   $userinfo additional user/debug info
+     * @access public
+     */
+    function Net_UserAgent_Mobile_Error($code = NET_USERAGENT_MOBILE_ERROR,
+                                        $mode = PEAR_ERROR_RETURN,
+                                        $level = E_USER_NOTICE,
+                                        $userinfo = null
+                                        )
+    {
+        if (is_int($code)) {
+            $this->PEAR_Error('Net_UserAgent_Mobile Error: ' .
+                              Net_UserAgent_Mobile::errorMessage($code),
+                              $code, $mode, $level, $userinfo
+                              );
+        } else {
+            $this->PEAR_Error("Net_UserAgent_Mobile Error: $code",
+                              NET_USERAGENT_MOBILE_ERROR, $mode, $level,
+                              $userinfo
+                              );
+        }
+    }
+
+    /**#@-*/
+
+    /**#@+
+     * @access private
+     */
+
+    /**#@-*/
+
+    // }}}
+}
+
+// }}}
+
+/*
+ * Local Variables:
+ * mode: php
+ * coding: iso-8859-1
+ * tab-width: 4
+ * c-basic-offset: 4
+ * c-hanging-comment-ender-p: nil
+ * indent-tabs-mode: nil
+ * End:
+ */
+?>
Index: branches/dev/data/lib/slib.php
===================================================================
--- branches/dev/data/lib/slib.php	(revision 340)
+++ branches/dev/data/lib/slib.php	(revision 11460)
@@ -1741,5 +1741,9 @@
 	    $sqlval['order_tel02'] = $objCustomer->getValue('tel02');
 		$sqlval['order_tel03'] = $objCustomer->getValue('tel03');
-		$sqlval['order_email'] = $objCustomer->getValue('email');
+		if (defined('MOBILE_SITE')) {
+			$sqlval['order_email'] = $objCustomer->getValue('email_mobile');
+		} else {
+			$sqlval['order_email'] = $objCustomer->getValue('email');
+		}
 		$sqlval['order_job'] = $objCustomer->getValue('job');
 		$sqlval['order_birth'] = $objCustomer->getValue('birth');
@@ -2047,4 +2051,5 @@
 		if(strlen($str) > ($len + 2)) {
 			$ret =substr($str, 0, $len);
+			$cut = substr($str, $len);
 		} else {
 			$ret = $str;
@@ -2054,4 +2059,5 @@
 		if(mb_strlen($str) > ($len + 1)) {
 			$ret = mb_substr($str, 0, $len);
+			$cut = mb_substr($str, $len);
 		} else {
 			$ret = $str;
@@ -2059,4 +2065,27 @@
 		}
 	}
+
+	// ³¨Ê¸»ú¥¿¥°¤ÎÅÓÃæ¤ÇÊ¬ÃÇ¤µ¤ì¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¡£
+	if (isset($cut)) {
+		// Ê¬³ä°ÌÃÖ¤è¤êÁ°¤ÎºÇ¸å¤Î [ °Ê¹ß¤ò¼èÆÀ¤¹¤ë¡£
+		$head = strrchr($ret, '[');
+
+		// Ê¬³ä°ÌÃÖ¤è¤ê¸å¤ÎºÇ½é¤Î ] °ÊÁ°¤ò¼èÆÀ¤¹¤ë¡£
+		$tail_pos = strpos($cut, ']');
+		if ($tail_pos !== false) {
+			$tail = substr($cut, 0, $tail_pos + 1);
+		}
+
+		// Ê¬³ä°ÌÃÖ¤è¤êÁ°¤Ë [¡¢¸å¤Ë ] ¤¬¸«¤Ä¤«¤Ã¤¿¾ì¹ç¤Ï¡¢[ ¤«¤é ] ¤Þ¤Ç¤ò
+		// ÀÜÂ³¤·¤Æ³¨Ê¸»ú¥¿¥°1¸ÄÊ¬¤Ë¤Ê¤ë¤«¤É¤¦¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£
+		if ($head !== false && $tail_pos !== false) {
+			$subject = $head . $tail;
+			if (preg_match('/^\[emoji:e?\d+\]$/', $subject)) {
+				// ³¨Ê¸»ú¥¿¥°¤¬¸«¤Ä¤«¤Ã¤¿¤Î¤Çºï½ü¤¹¤ë¡£
+				$ret = substr($ret, 0, -strlen($head));
+			}
+		}
+	}
+
 	if($commadisp){
 		$ret = $ret . "...";
Index: branches/dev/data/smarty_extends/modifier.numeric_emoji.php
===================================================================
--- branches/dev/data/smarty_extends/modifier.numeric_emoji.php	(revision 11460)
+++ branches/dev/data/smarty_extends/modifier.numeric_emoji.php	(revision 11460)
@@ -0,0 +1,21 @@
+<?php
+/**
+ * ¿ôÃÍ¤ò¿ô»ú³¨Ê¸»ú¤ËÊÑ´¹¤¹¤ë¡£
+ *
+ * ÆþÎÏ¤¬0¡Á9¤Ç¤Ï¤Ê¤¤¾ì¹ç¡¢¤Þ¤¿¤Ï¡¢·ÈÂÓÃ¼Ëö¤«¤é¤Î¥¢¥¯¥»¥¹¤Ç¤Ï¤Ê¤¤¾ì¹ç¤Ï¡¢
+ * ÆþÎÏ¤ò [ ¤È ] ¤Ç°Ï¤ó¤ÀÊ¸»úÎó¤òÊÖ¤¹¡£
+ *
+ * @param string $value ÆþÎÏ
+ * @return string ½ÐÎÏ
+ */
+function smarty_modifier_numeric_emoji($value) {
+	// ¿ô»ú³¨Ê¸»ú (0¡Á9) ¤Î³¨Ê¸»úÈÖ¹æ
+	static $numeric_emoji_index = array('134', '125', '126', '127', '128', '129', '130', '131', '132', '133');
+
+	if (GC_MobileUserAgent::isMobile() && isset($numeric_emoji_index[$value])) {
+		return '[emoji:' . $numeric_emoji_index[$value] . ']';
+	} else {
+		return '[' . $value . ']';
+	}
+}
+?>
Index: branches/dev/data/downloads/module/mdl_epsilon/card.php
===================================================================
--- branches/dev/data/downloads/module/mdl_epsilon/card.php	(revision 17)
+++ branches/dev/data/downloads/module/mdl_epsilon/card.php	(revision 11460)
@@ -67,5 +67,9 @@
 
 	// ´°Î»²èÌÌ¤Ø
-	header("Location: " .  URL_SHOP_COMPLETE);
+	if (GC_MobileUserAgent::isMobile()) {
+		header("Location: " .  gfAddSessionId(URL_SHOP_COMPLETE));
+	} else {
+		header("Location: " .  URL_SHOP_COMPLETE);
+	}
 }
 
@@ -124,4 +128,10 @@
 		$objSiteSess->setRegistFlag();
 		
+		// ·ÈÂÓÃ¼Ëö¤Î¾ì¹ç¤Ï¡¢¥»¥Ã¥·¥ç¥óID¡¦¥ª¡¼¥À¡¼ÈÖ¹æ¡¦Ìá¤Ã¤Æ¤¯¤ëURL¤òÊÝÂ¸¤·¤Æ¤ª¤¯¡£
+		if (GC_MobileUserAgent::isMobile()) {
+			sfMobileSetExtSessionId('order_number', $arrData['order_id'], 'shopping/load_payment_module.php');
+			sfMobileSetExtSessionId('order_number', $arrData['order_id'], 'shopping/confirm.php');
+		}
+
 		$url = sfGetXMLValue($arrXML,'RESULT','REDIRECT');
 		header("Location: " . $url);
Index: branches/dev/data/downloads/module/mdl_epsilon/convenience.php
===================================================================
--- branches/dev/data/downloads/module/mdl_epsilon/convenience.php	(revision 17)
+++ branches/dev/data/downloads/module/mdl_epsilon/convenience.php	(revision 11460)
@@ -12,5 +12,9 @@
 class LC_Page {
 	function LC_Page() {
-		$this->tpl_mainpage = MODULE_PATH . "mdl_epsilon/convenience.tpl";
+		if (GC_MobileUserAgent::isMobile()) {
+			$this->tpl_mainpage = MODULE_PATH . "mdl_epsilon/convenience_mobile.tpl";
+		} else {
+			$this->tpl_mainpage = MODULE_PATH . "mdl_epsilon/convenience.tpl";
+		}
 		$this->tpl_title = "¥³¥ó¥Ó¥Ë·èºÑ";
 		/*
@@ -66,5 +70,9 @@
 		$objSiteSess->setRegistFlag();
 		// ³ÎÇ§¥Ú¡¼¥¸¤Ø°ÜÆ°
-		header("Location: " . URL_SHOP_CONFIRM);
+		if (GC_MobileUserAgent::isMobile()) {
+			header("Location: " . gfAddSessionId(URL_SHOP_CONFIRM));
+		} else {
+			header("Location: " . URL_SHOP_CONFIRM);
+		}
 		exit;
 		break;
@@ -197,5 +205,9 @@
 				sfRegistTempOrder($uniqid, $sqlval);
 
-				header("Location: " . URL_SHOP_COMPLETE);
+				if (GC_MobileUserAgent::isMobile()) {
+					header("Location: " . gfAddSessionId(URL_SHOP_COMPLETE));
+				} else {
+					header("Location: " . URL_SHOP_COMPLETE);
+				}
 			}
 		}
