diff --git a/widgets/sms/conf/info.xml b/widgets/sms/conf/info.xml
new file mode 100644
index 000000000..240c8e971
--- /dev/null
+++ b/widgets/sms/conf/info.xml
@@ -0,0 +1,17 @@
+
+
+ SMS 위젯
+ 0.1.dev
+ 2009-08-07
+
+
+ Perbiz
+
+
+
+
+ text
+ 회신번호
+
+
+
\ No newline at end of file
diff --git a/widgets/sms/skins/default/css/common.css b/widgets/sms/skins/default/css/common.css
new file mode 100644
index 000000000..b82f176e3
--- /dev/null
+++ b/widgets/sms/skins/default/css/common.css
@@ -0,0 +1,166 @@
+@charset "utf-8";
+
+div.smsxe .container {
+ position:relative;
+ border:0 none;
+ margin:0;
+ padding:0;
+ width:214px;
+ height:500px;
+ font-size:8pt;
+ background:url('../images/phone_body.jpg') no-repeat;
+}
+div.smsxe .container input {
+ font-size:8pt;
+}
+
+div.smsxe .content {
+ position:absolute;
+ font-family:돋움체;
+ font-size:10pt;
+ top:72px;
+ left:37px;
+ border:0 none;
+ padding:4px;
+ width:133px;
+ height:158px;
+ background:#F3F2F2;
+}
+
+div.smsxe .bth_addressbook {
+ position:absolute;
+ top:259px;
+ left:48px;
+ width:122px;
+ height:26px;
+ overflow:hidden;
+ text-align:center;
+ background:url('../images/btn_addressbook.gif') no-repeat;
+}
+div.smsxe .bth_addressbook a {
+ display:block;
+ font-weight:bold;
+ padding:7px 0;
+ color:#FFF;
+ text-decoration:none;
+}
+div.smsxe .bth_addressbook span {
+ color:#ED3C90;
+}
+div.smsxe .search_area {
+ position:relative;
+ top:297px;
+ left:32px;
+ width:149px;
+ height:20px;
+}
+div.smsxe .search_area .input_box {
+ position:absolute;
+ top:0;
+ margin:0;
+ padding:0;
+ width:125px;
+ height:18px;
+ border:1px solid #ABABA1;
+ font-size:10pt;
+ color:#3C3C3C;
+ background:#DDDCC7;
+}
+div.smsxe .search_area .btn_search {
+ position:absolute;
+ top:0;
+ right:0;
+ border:0 none;
+ margin:0;
+ padding:0;
+ width:21px;
+ height:20px;
+ text-indent:-1000em;
+ background:url('../images/btn_search.gif') no-repeat;
+}
+div.smsxe .send_pcs_list {
+ position:absolute;
+ top:325px;
+ left:32px;
+ width:149px;
+ height:60px;
+ color:#CD6194;
+ overflow:scroll;
+ overflow-x:hidden;
+}
+div.smsxe .send_pcs_list span {
+ padding:0;
+ color:#3C3C3C;
+}
+div.smsxe .send_pcs_list ul {
+ list-style:none;
+ margin:0;
+ padding:0;
+}
+div.smsxe .send_pcs_list li {
+ padding:3px 0;
+ background:url('../images/line_dot.gif') repeat-x bottom left;
+}
+div.smsxe .send_pcs_list input {
+ border:0 none;
+ margin:0 3px;
+ padding:0;
+ width:100px;
+ color:#FFF;
+ background:transparent;
+}
+div.smsxe .send_pcs_list .btn_delete {
+ width:9px;
+ height:9px;
+ cursor:pointer;
+}
+div.smsxe .return_pcs {
+ position:absolute;
+ width:149px;
+ height:20px;
+ top:394px;
+ left:32px;
+ color:#FFF;
+}
+div.smsxe .return_pcs input {
+ margin:0 0 0 4px;
+ padding:0;
+ border:1px solid #C2C2C2;
+ width:84px;
+ background:#ECECEC;
+}
+div.smsxe .submit_area {
+ position:absolute;
+ top:422px;
+ left:32px;
+ width:148px;
+ height:26px;
+}
+div.smsxe .submit_area input {
+ margin:0;
+ padding:0;
+ height:26px;
+ border:0 none;
+ color:#FFF;
+ font-size:9pt;
+ font-weight:bold;
+ background:transparent;
+}
+div.smsxe .submit_area .btn_appoint {
+ width:75px;
+}
+div.smsxe .submit_area .btn_submit {
+ width:72px;
+}
+div.smsxe .status {
+ position:absolute;
+ top:242px;
+ left:37px;
+ width:141px;
+ height:20px;
+ text-align:center;
+}
+div.smsxe .status .status_byte,
+div.smsxe .status .status_count {
+ font-weight:bold;
+}
diff --git a/widgets/sms/skins/default/filter/sms_send.xml b/widgets/sms/skins/default/filter/sms_send.xml
new file mode 100644
index 000000000..dddd50198
--- /dev/null
+++ b/widgets/sms/skins/default/filter/sms_send.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/widgets/sms/skins/default/images/btn_addressbook.gif b/widgets/sms/skins/default/images/btn_addressbook.gif
new file mode 100644
index 000000000..7f1fd3df9
Binary files /dev/null and b/widgets/sms/skins/default/images/btn_addressbook.gif differ
diff --git a/widgets/sms/skins/default/images/btn_delete.gif b/widgets/sms/skins/default/images/btn_delete.gif
new file mode 100644
index 000000000..cccb5c5e7
Binary files /dev/null and b/widgets/sms/skins/default/images/btn_delete.gif differ
diff --git a/widgets/sms/skins/default/images/btn_search.gif b/widgets/sms/skins/default/images/btn_search.gif
new file mode 100644
index 000000000..1a9ffd9ec
Binary files /dev/null and b/widgets/sms/skins/default/images/btn_search.gif differ
diff --git a/widgets/sms/skins/default/images/line_dot.gif b/widgets/sms/skins/default/images/line_dot.gif
new file mode 100644
index 000000000..1a4f166f6
Binary files /dev/null and b/widgets/sms/skins/default/images/line_dot.gif differ
diff --git a/widgets/sms/skins/default/images/phone_body.jpg b/widgets/sms/skins/default/images/phone_body.jpg
new file mode 100644
index 000000000..c1d8965d3
Binary files /dev/null and b/widgets/sms/skins/default/images/phone_body.jpg differ
diff --git a/widgets/sms/skins/default/js/sms_widget.js b/widgets/sms/skins/default/js/sms_widget.js
new file mode 100644
index 000000000..4711fff95
--- /dev/null
+++ b/widgets/sms/skins/default/js/sms_widget.js
@@ -0,0 +1,83 @@
+
+function completeSendSms(rec_obj) {
+ console.log(rec_obj);
+}
+
+(function($) {
+
+/* DOM READY */
+jQuery(function($) {
+ var $widgetContainer = $('div.smsxe');
+ var $widgetForm = $('form#fo_sms_widget', $widgetContainer);
+ var $widgetSerchForm = $('form#fo_sms_widget_search', $widgetContainer);
+ var $searchArea = $('.search_area', $widgetContainer);
+ var $sendPcsList = $('.send_pcs_list', $widgetContainer);
+ var $searchInputbox = $('.input_box', $searchArea);
+ var $statusArea = $('.status', $widgetContainer);
+
+ $widgetForm.submit(function() {
+ console.log('전송');
+ });
+
+ $widgetSerchForm.submit(function() {
+ console.log('검색');
+ return false;
+ });
+
+ $('textarea', $widgetForm).keyup(function() {
+ var get_length = PerbizSMS.getByteLength(this);
+ if(!get_length) return;
+
+ $('.status_byte', $statusArea).text(get_length.length);
+ $('.limit_byte', $statusArea).text(get_length.limit_byte);
+ $('.status_count', $statusArea).text(get_length.sms_count);
+ });
+
+ $('textarea', $widgetForm).triggerHandler('keyup');
+
+ $('input', $sendPcsList).keypress(function(e) {
+ if(e.which == 13) {
+ var $nextInput = $(this).parent().next().children('input');
+
+ if($nextInput.length) {
+ $nextInput.focus().select();
+ } else {
+ $('.return_pcs input', $widgetContainer).focus().select();
+ }
+ return false;
+ }
+ });
+
+ $('.bth_addressbook a', $widgetContainer).click(function() {
+ //PerbizSMS.showAddressbook('window');
+ return false;
+ });
+
+ $searchInputbox.watermark($searchInputbox.attr('title'));
+
+ /**
+ * @berif 목록에서 번호 삭제
+ **/
+ $('.btn_delete', $sendPcsList).click(function() {
+ var $inputAll = $('input', $sendPcsList);
+ $(this).prev('input').val('');
+ var $nextInput = $(this).parent().nextAll().children('input');
+ var values = [];
+
+ $inputAll.each(function(idx) {
+ if(this.value && this.value != 'undefined') values.push(this.value);
+ });
+
+ $inputAll.val('');
+ $inputAll.each(function(idx) {
+ if(values[idx]) {
+ this.value = values[idx];
+ } else {
+ this.value = '';
+ }
+
+ });
+ });
+});
+
+}) (jQuery);
diff --git a/widgets/sms/skins/default/skin.xml b/widgets/sms/skins/default/skin.xml
new file mode 100644
index 000000000..1fc3390f8
--- /dev/null
+++ b/widgets/sms/skins/default/skin.xml
@@ -0,0 +1,19 @@
+
+
+ SMS 위젯 기본 스킨
+ 0.1
+ 2009-02-10
+
+
+ Perbiz
+
+
+
+
+ 흰색 바탕용
+
+
+ 어두운 바탕용
+
+
+
\ No newline at end of file
diff --git a/widgets/sms/skins/default/sms_widget.html b/widgets/sms/skins/default/sms_widget.html
new file mode 100644
index 000000000..b7158b494
--- /dev/null
+++ b/widgets/sms/skins/default/sms_widget.html
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/widgets/sms/sms.class.php b/widgets/sms/sms.class.php
new file mode 100644
index 000000000..882bf6303
--- /dev/null
+++ b/widgets/sms/sms.class.php
@@ -0,0 +1,18 @@
+widget_path, $args->skin);
+ Context::set('colorset', $args->colorset);
+
+ // 템플릿 파일을 지정
+ $tpl_file = 'sms_widget';
+
+ Context::set('sms_info', $args);
+
+ // 템플릿 컴파일
+ $oTemplate = &TemplateHandler::getInstance();
+ return $oTemplate->compile($tpl_path, $tpl_file);
+ }
+}