diff --git a/modules/admin/tpl/js/admin.min.js b/modules/admin/tpl/js/admin.min.js
index 38da27728..5e1f59e74 100644
--- a/modules/admin/tpl/js/admin.min.js
+++ b/modules/admin/tpl/js/admin.min.js
@@ -1,37 +1,1178 @@
-jQuery(function(a){a(".form li").find(">input:text,>input:password,>textarea").filter('input[value!=""],textarea:not(:empty)').prev("label").css("visibility","hidden").end().end().prev("label").addClass("overlap").css({top:"15px",left:"5px"}).next().focus(function(){var b=a(this).prev().stop().animate({opacity:0,left:"25px"},"fast",function(){b.css("visibility","hidden")})}).blur(function(){var b=a(this);a.trim(b.val())==""&&b.prev().stop().css("visibility","visible").animate({opacity:1,left:"5px"},
-"fast")}).end().parent().css("position","relative");var c=a("input:radio+label,input:checkbox+label").prev("input");c.change(function(){var b=a(this).attr("name");c.filter(function(){return this.name==b}).next("label").css("font-weight","normal").end().filter(":checked").next("label").css("font-weight","bold").end()}).change();a(".form th>input:checkbox").change(function(){var b=a(this),d=b.data("name");b.closest("table").find("input:checkbox").filter(function(){var b=a(this);return!b.prop("disabled")&&
-(b.attr("name")==d||b.data("name")==d)}).prop("checked",b.prop("checked")).end().end().trigger("update.checkbox",[d,this.checked])});a.fn.xePagination=function(){this.not(".xe-pagination").addClass("xe-pagination").find("span.tgContent").css("whiteSpace","nowrap").end().find("a.tgAnchor").each(function(){var b=a(this);b.after(a(b.attr("href")))}).end();return this};a(".pagination").xePagination();a(".portlet .action").css({display:"none",position:"absolute"}).parent().mouseleave(function(){a(this).find(">.action").fadeOut(100)}).mouseenter(function(){a(this).find(">.action").fadeIn(100)}).focusin(function(){a(this).mouseenter()}).focusout(function(){var b=
-a(this),d;clearTimeout(b.data("timer"));d=setTimeout(function(){b.find(":focus").length||b.mouseleave()},10);b.data("timer",d)});a(".dashboard>.section>.portlet:odd").after('
');a(".header>.siteTool>a.i").bind("before-open.tc",function(){a(this).addClass("active").next("div.tgContent").find(">.section:gt(0)").hide().end().find(">.btnArea>button").show()}).bind("after-close.tc",function(){a(this).removeClass("active")}).next("#siteMapList").find(">.section:last").after('
').find("+p>button").click(function(){a(this).hide().parent().prevAll(".section").show()});
-a.fn.xeMask=function(){this.each(function(){var b=a(this),d=b.text();b.data("originalText",d);/^([\w\-\.]+?)@(([\w-]+\.)+[a-z]{2,})$/ig.test(d)&&b.data("maskedText",RegExp.$1+"...");b.text(b.data("maskedText"))}).mouseover(function(){a(this).text(a(this).data("originalText"))}).mouseout(function(){a(this).text(a(this).data("maskedText"))}).focus(function(){a(this).mouseover()}).blur(function(){a(this).mouseout()})};a(".masked").xeMask()});
-jQuery(function(a){a.fn.xeMenu=function(){this.removeClass("jx").attr("role","navigation").find("li").attr("role","menuitem").find(">ul").hide().end().filter(":has(>ul)").attr("aria-haspopup","true").end().end().delegate("li",{mouseover:function(){a(this).addClass("active").find(">ul").show().end().parentsUntil(".gnb").filter("li").addClass("active").end().end()},mouseleave:function(){a(this).removeClass("active").find(">ul").hide()},focusout:function(){var c=a(this);setTimeout(function(){c.find(":focus").length||
-c.removeClass("active").find(">ul").hide()},1)}}).delegate("a",{focus:function(){a(this).parent("li").mouseover()}})};a("div.gnb").xeMenu()});
-jQuery(function(a){a.fn.xeModalWindow=function(){this.not(".xe-modal-window").addClass("xe-modal-window").each(function(){a(a(this).attr("href")).addClass("x").hide()}).click(function(){var c=a(this),b,d;b=a(c.attr("href"));b.parent("body").length||(d=a(''),d.click(function(){b.data("anchor").trigger("close.mw")}),b.prepend('').append('<\!--[if IE 6]>').find(">.fg").prepend(d).append(d.clone(true)).end().appendTo("body"));
-b.data("anchor",c);b.data("state")=="showing"?c.trigger("close.mw"):c.trigger("open.mw");return false}).bind("open.mw",function(){var c=a(this),b,d;b=a.Event("before-open.mw");c.trigger(b);if(b.isDefaultPrevented())return false;b=a(c.attr("href"));d=c.data("duration")||"fast";b.data("state","showing");a("html,body").addClass("modalContainer");a(document).bind("keydown.mw",function(a){if(a.which==27)return c.trigger("close.mw"),false});b.fadeIn(d,function(){c.trigger("after-open.mw")}).find(">.bg").height(a(document).height()).end().find("button.modalClose:first").focus()}).bind("close.mw",
-function(){var c=a(this),b,d;b=a.Event("before-close.mw");c.trigger(b);if(b.isDefaultPrevented())return false;b=a(c.attr("href"));d=c.data("duration")||"fast";b.data("state","hiding");a("html,body").removeClass("modalContainer");b.fadeOut(d,function(){c.trigger("after-close.mw")});c.focus()})};a("a.modalAnchor").xeModalWindow();a("div.modal").addClass("x").hide()});
-jQuery(function(a){var c=false;a.fn.xeContentToggler=function(){this.not(".xe-content-toggler").addClass("xe-content-toggler").each(function(){var b=a(this);$layer=a(b.attr("href"));$layer.hide().not(".xe-toggling-content").addClass("xe-toggling-content").mousedown(function(){c=true}).focusout(function(){setTimeout(function(){!c&&!$layer.find(":focus").length&&$layer.data("state")=="showing"&&b.trigger("close.tc");c=false},1)})}).click(function(){var b=a(this),d;d=a(b.attr("href"));d.data("anchor",
-b);d.data("state")=="showing"?b.trigger("close.tc"):b.trigger("open.tc");return false}).bind("open.tc",function(){function b(){d.trigger("after-open.tc")}var d=a(this),g,f,e;g=a(d.attr("href"));f=d.data("effect");e=d.data("duration")||"fast";g.data("state","showing");d.trigger("before-open.tc");c=false;a(document).unbind("mousedown.tc keydown.tc").bind("mousedown.tc keydown.tc",function(b){if(b){if(b.type=="keydown"&&b.which!=27)return true;if(b.type=="mousedown"&&(b=a(b.target),b.is("html,.tgAnchor,.tgContent")||
-g.has(b).length))return true}d.trigger("close.tc");return false});switch(f){case "slide":g.slideDown(e,b);break;case "slide-h":f=g.css({"overflow-x":"",width:""}).width();g.show().css({"overflow-x":"hidden",width:"0px"}).animate({width:f},e,function(){g.css({"overflow-x":"",width:""});b()});break;case "fade":g.fadeIn(e,b);break;default:g.show(),d.trigger("after-open.tc")}}).bind("close.tc",function(){function b(){d.trigger("after-close.tc")}var d=a(this),c,f,e;a(document).unbind("mousedown.tc keydown.tc");
-c=a(d.attr("href"));f=d.data("effect");e=d.data("duration")||"fast";c.data("state","hiding");d.trigger("before-close.tc");switch(f){case "slide":c.slideUp(e,b);break;case "slide-h":c.animate({width:0},e,function(){c.hide();b()});break;case "fade":c.fadeOut(e,b);break;default:c.hide(),d.trigger("after-close.tc")}});return this};a("a.tgAnchor").xeContentToggler()});
-jQuery(function(a){a.fn.xeModuleFinder=function(){this.not(".xe-module-finder").addClass("xe-module-finder").find("a.tgAnchor.findsite").bind("before-open.tc",function(){var c,b,d;c=a(this);b=a(c.attr("href")).find(">ul");d=c.prev("input:text").val();a.exec_json("admin.getSiteAllList",{domain:d},function(d){var f=d.site_list,e,i;b.empty();c.closest(".modulefinder").find(".moduleList,.moduleIdList").attr("disabled","disabled");if(d.error||!a.isArray(f))c.trigger("close.tc");else for(e=0,i=f.length;e<
-i;e++)d=a("").appendTo(b),a('').text(f[e].domain).data("site_srl",f[e].site_srl).appendTo(d)})}).end().find(".tgContent.suggestion").delegate("button","click",function(){var c,b;c=a(this);b=c.closest(".modulefinder");b.find("a.tgAnchor.findsite").trigger("close.tc");a.exec_json("module.procModuleAdminGetList",{site_srl:c.data("site_srl")},function(d){var c=d.module_list,f;if(!d.error&&c){d=b.find(".moduleList").data("module_list",c).removeAttr("disabled").empty();for(f in c)c.hasOwnProperty(f)&&
-a("").attr("value",f).text(c[f].title).appendTo(d);d.prop("selectedIndex",0).change().focus();d.is(":visible")||d.slideDown(100,function(){b.find(".moduleIdList:not(:visible)").slideDown(100).trigger("show")}).trigger("show")}})}).end().find(".moduleList,.moduleIdList").hide().end().find(".moduleList").change(function(){var c,b,d;c=a(this);b=c.val();d=c.data("module_list");if(d[b]){d=d[b].list;c=c.closest(".modulefinder").find(".moduleIdList").removeAttr("disabled").empty();for(var g in d)d.hasOwnProperty(g)&&
-a("").attr("value",d[g].module_srl).text(d[g].browser_title).appendTo(c);c.prop("selectedIndex",0).change()}});return this};a(".modulefinder").xeModuleFinder()});
-jQuery(function(a){function c(a,b){for(var c=0,e=0;a&&a!=b;)c+=a.offsetTop,e+=a.offsetLeft,a=a.offsetParent;return{top:c,left:e}}var b=a('| |
');a.fn.xeSortableTable=function(){this.not(".xe-sortable-table").addClass("xe-sortable-table").delegate("button.dragBtn","mousedown.st",function(d){var g,f,e,i,k,h,j,m,l,n;if(d.which==1){f=a(this);e=f.closest("tr");i=f.closest("table");n=i.get(0).offsetParent;f=e.height();k=e.width();before_event=a.Event("before-drag.st");
-i.trigger(before_event);if(before_event.isDefaultPrevented())return false;g=d.pageY;h=c(e.get(0),n);$clone=e.attr("target",true).clone(true).appendTo(i);l=(d=i.find("thead th")).length;d.filter("[colspan]").attr("colspan",function(a,b){l+=b-1});b.find("td").attr("colspan",l);j=[];i.find("tbody>tr:not([target],.sticky,:hidden)").each(function(){var b=a(this),d;d=c(this,n);j.push({top:d.top,bottom:d.top+b.height(),$item:b})});$clone.addClass("draggable").css({position:"absolute",opacity:0.6,width:k,
-height:f,left:h.left,top:h.top,zIndex:100});b.css({position:"absolute",opacity:0.6,width:k,height:"10px",left:h.left,top:h.top,backgroundColor:"#bbb",overflow:"hidden",zIndex:99}).appendTo(i);e.css("opacity",0.6);a(document).unbind("mousedown.st mouseup.st").bind("mousemove.st",function(a){var d,c,l;m=null;a=h.top-(g-a.pageY);for(d=0,c=j.length;da||da-12?(m.state="before",b.css("top",l.top-5)):(m.state="after",b.css("top",l.bottom-
-5));$clone.css({top:a})}).bind("mouseup.st",function(){a(document).unbind("mousemove.st mouseup.st");e.removeAttr("target").css("opacity","");$clone.remove();b.remove();m&&(a(m.element)[m.state](e),i.trigger("after-drag.st"))})}});return this};a("table.sortable").xeSortableTable()});
-jQuery(function(a){function c(b){function d(){var a=[];f.each(function(){a.push(this.value)});return a.join("\n")}function c(){b.data("multilang-current-name")?b.find("h2").find("strong").text(i==q?h:k).end().find("a").text(i==q?k:h).show().end():b.find("h2").find("strong").text(h).end().find("a").hide()}var e,f,g="",j=0,i,h,k,o=[],q=0,s=1;b.data("init-multilang-editor")||(b.data("init-multilang-editor",true).bind("multilang-reset",function(){b.data("multilang-current-name","").find(".langInput li").find(">input:text,>textarea").val(" ").prev("label").css("visibility",
-"visible");i=q;c()}).find("h2 a").click(function(){i=!i;c();return false}).end().delegate("a.langItem","click",function(){var f=a(this),r,h,k;h=b.data("multilang-list");k=f.data("multilang-name");if(h&&h[k]){h=h[k];r=b.find(".langInput");b.trigger("multilang-reset").find(".langList li.active").removeClass("active").end().data("multilang-current-name",k);f.parent("li").addClass("active");for(var p in h)h.hasOwnProperty(p)&&r.find("li."+p).find(">input:text,>textarea").data("multilang-value",h[p]).val(h[p]).prev("label").css("visibility",
-"hidden");g=d();j=0;e.val(o[j]);i=s;c();return false}}).data("layer_index",m).find(".langInput").attr("id","langInput_"+m++),k=b.find("h2 strong").text(),h=b.find("h2 a").text(),f=b.find("input:text,textarea").change(function(){var a=d()==g?0:1;a!=j&&e.val(o[j=a])}),e=b.find("input[type=submit]").click(function(){function c(){b.hide().closest(".multiLangEdit").find(".vLang").eq(0).val("$user_lang->"+h).end().eq(1).val(b.find(".langInput li."+xe.current_lang).find(">input:text,>textarea").val()).end()}
-function e(){var b={};if(h&&i==s)b.lang_name=h;f.each(function(){var d=a(this);b[d.parent("li").attr("class")]=d.val()});a.exec_json("module.procModuleAdminInsertLang",b,t)}function t(a){if(a&&!a.error&&a.name)h=a.name,c()}var h=b.data("multilang-current-name");d()==g?c():e();return false}),o=e.val().split("|"),e.val(o[0]))}function b(a){var b,d,c={},e;for(b=0,d=a.length;bul");!d||k?(k=false,c.parent().hide(),b.prev("input.vLang").val("")):(b.data("mle-langkey").val(""),b.prev("input.vLang").val(d),f=setTimeout(function(){b.addClass("loading");c.parent().is(":visible")&&c.parent().hide();show_waiting_message=false;a.exec_json("module.getLangListByLangcodeForAutoComplete",
-{search_keyword:d},function(d){return function(f){var h=f.results,g,n;if(!f.error&&h&&e==d+1){b.removeClass("loading");c.empty();for(g=0,n=h.length;g').data("langkey",h[g].name).text(h[g].value),a("").append(f).appendTo(c);j.trigger("show")}}}(e++));show_waiting_message=true},100))},keydown:function(b){var d,c,e=b.which;a(this);b=j.find(">ul");if(!j.is(":visible")||a.inArray(e,[38,40,13,27])<0)return true;if(e==27)return j.trigger("hide"),
-false;d=b.find("button.active");if(e==13)return d.click(),false;if(!d.length)return b.find("li>button:first").addClass("active"),false;e==38?(c=d.parent().prev("li").find(">button"),c.length||(c=b.find(">li:last>button"))):e==40&&(c=d.parent().next("li").find(">button"),c.length||(c=b.find(">li:first>button")));d.removeClass("active");c.addClass("active");return false},focus:function(){var b=a(this),d=a.trim(b.val()),c=b.closest(".multiLangEdit");b.after(j);b.data("mle-container")||b.data("mle-container",
-c);b.data("mle-langkey")||b.data("mle-langkey",c.find("input.vLang:first"));(function(){var c=a.trim(b.val());c!=d&&(d=c,b.trigger("textchange"));g=setTimeout(arguments.callee,50)})()},blur:function(){clearTimeout(g);g=null;a(this).closest(".multiLangEdit").focusout()},focusout:function(){var b=a(this);clearTimeout(i);i=setTimeout(function(){h?h=false:b.find(":focus").is(".vLang,button._btnLang")||j.trigger("hide")},10)}}).delegate("a.tgAnchor.editUserLang",{"before-open.tc":function(){var e,f,g;
-e=a(this);f=a(e.attr("href")).insertBefore(e);g=e.closest(".multiLangEdit").find("input.vLang,textarea.vLang");e=g.eq(0).val();g=g.eq(1).val();c(f);f.trigger("multilang-reset").removeClass("showChild").find(".langList").empty().end();f.find(".langInput li."+xe.current_lang).find(">input:text,>textarea").val(g).prev("label").css("visibility","hidden");j.trigger("hide");/^\$user_lang->(.+)$/.test(e)?(e="module.getModuleAdminLangListByName",g={lang_name:RegExp.$1}):(e="module.getModuleAdminLangListByValue",
-g={value:g});show_waiting_message=false;a.exec_json(e,g,function(c){var e=c.lang_list,g;!c.error&&e&&(e=b(e),f.data("multilang-list",e),g=f.find(".langList"),a.each(e,function(b){var c=a("").appendTo(g),d=f.data("layer_index");a('').text(this[xe.current_lang]).data("multilang-name",b).appendTo(c)}),d(e)>1&&f.addClass("showChild"),f.find(".langList>li>a:first").click())});show_waiting_message=true}}).delegate("button._btnLang",{click:function(){var b=
-a(this);k=true;j.trigger("hide");b.closest(".multiLangEdit").find("input.vLang,textarea.vLang").eq(0).val(b.data("langkey")).end().eq(1).val(b.text()).end();return false},mousedown:function(){h=true},focus:function(){a(this).mouseover()},mouseover:function(){a(this).closest("ul").find("button.active").removeClass("active")}});j=a('').bind("show",function(){a(this).show()}).bind("hide",function(){a(this).hide()});var m=0});
-jQuery(function(a){a(".filebox").bind("before-open.mw",function(){function c(f){d.html(f.html);d.find(".lined .select").bind("click",function(){var c=a(this).parent().find("img.filebox_item").attr("src");b.trigger("filebox.selected",[c]);b.trigger("close.mw");return false});d.find(".pagination").find("a").filter(function(){return a(this).hasClass("tgAnchor")?false:true}).bind("click",function(){var b=a(this).attr("page");a.exec_json("module.getFileBoxListHtml",{page:b},c);a(window).scrollTop(a(g).find(".modalClose").offset().top);
-return false});a("#FileBoxGoTo").find("button").bind("click",function(){var b=a(this).prev("input").val();a.exec_json("module.getFileBoxListHtml",{page:b},c);a(window).scrollTop(a(g).find(".modalClose").offset().top);return false})}var b,d,g;b=a(this);g=b.attr("href");d=a(g).find(".filebox_list");a.exec_json("module.getFileBoxListHtml",{page:"1"},c)})});
-function showWaitingFogLayer(){var a=jQuery('');a.height(jQuery(window).height());jQuery(".wfsr").wrap('').before(a)}function hideWaitingFogLayer(){jQuery(".wfsr").prev("span").remove();jQuery(".wfsr").unwrap()}function doInstallModule(a){var c=[];c.module_name=a;exec_xml("install","procInstallAdminInstall",c,completeInstallModule);showWaitingFogLayer()}
-function doUpdateModule(a){var c=[];c.module_name=a;exec_xml("install","procInstallAdminUpdate",c,completeInstallModule);showWaitingFogLayer()}function completeInstallModule(a){alert(a.message);location.reload()}jQuery(document).ready(function(a){a("body").ajaxComplete(function(){hideWaitingFogLayer()})});jQuery(function(a){a(".x>.body>.lnb").length==0&&a(".x>.body>.content").addClass("single")});
+/* NHN (developers@xpressengine.com) */
+jQuery(function($){
+ // Constants
+ var ESC_KEY = 27;
+
+ // Overlapping label
+ $('.form li').find('>input:text,>input:password,>textarea')
+ .filter('input[value!=""],textarea:not(:empty)').prev('label').css('visibility','hidden').end().end()
+ .prev('label')
+ .addClass('overlap')
+ .css({top:'15px',left:'5px'})
+ .next()
+ .focus(function(){
+ var $label = $(this).prev().stop().animate({opacity:0, left:'25px'},'fast',function(){ $label.css('visibility','hidden') });
+ })
+ .blur(function(){
+ var $this = $(this), $label;
+ if($.trim($this.val()) == '') {
+ $label = $this.prev().stop().css('visibility','visible').animate({opacity:1, left:'5px'},'fast');
+ }
+ })
+ .end()
+ .parent()
+ .css('position', 'relative');
+
+ // Make selected checkbox elements bold
+ var $rc_label = $('input:radio+label,input:checkbox+label'), $input_rc = $rc_label.prev('input');
+ $input_rc
+ .change(function(){
+ var name = $(this).attr('name');
+ $input_rc
+ .filter(function(){ return this.name == name })
+ .next('label').css('font-weight', 'normal').end()
+ .filter(':checked')
+ .next('label').css('font-weight', 'bold').end();
+ })
+ .change();
+
+ // Toogle checkbox all
+ $('.form th>input:checkbox')
+ .change(function() {
+ var $this = $(this), name = $this.data('name');
+
+ $this.closest('table')
+ .find('input:checkbox')
+ .filter(function(){
+ var $this = $(this);
+ return !$this.prop('disabled') && (($this.attr('name') == name) || ($this.data('name') == name));
+ })
+ .prop('checked', $this.prop('checked'))
+ .end()
+ .end()
+ .trigger('update.checkbox', [name, this.checked]);
+ });
+
+ // pagination
+ $.fn.xePagination = function(){
+ this
+ .not('.xe-pagination')
+ .addClass('xe-pagination')
+ .find('span.tgContent').css('whiteSpace', 'nowrap').end()
+ .find('a.tgAnchor')
+ .each(function(idx){
+ var $this = $(this);
+ $this.after( $($this.attr('href')) );
+ })
+ .end();
+
+ return this;
+ };
+ $('.pagination').xePagination();
+
+ // Portlet Action
+ $('.portlet .action')
+ .css({display:'none',position:'absolute'})
+ .parent()
+ .mouseleave(function(){ $(this).find('>.action').fadeOut(100); })
+ .mouseenter(function(){ $(this).find('>.action').fadeIn(100); })
+ .focusin(function(){ $(this).mouseenter() })
+ .focusout(function(){
+ var $this = $(this), timer;
+
+ clearTimeout($this.data('timer'));
+ timer = setTimeout(function(){ if(!$this.find(':focus').length) $this.mouseleave() }, 10);
+
+ $this.data('timer', timer);
+ });
+
+ // Display the dashboard in two column
+ $(window).resize(function(){
+ if($(document).width() < 1280){
+ $('.dashboard>.section>br').remove();
+ $('.dashboard>.section>.portlet:odd').after('
');
+ } else {
+ $('.dashboard>.section>br').remove();
+ $('.dashboard>.section>.portlet:eq(2),.dashboard>.section>.portlet:eq(5)').after('
');
+ }
+ });
+ $(window).resize();
+
+
+ // Popup list : 'Move to site' and 'Site map'
+ $('.header>.siteTool>a.i')
+ .bind('before-open.tc', function(){
+ $(this)
+ .addClass('active')
+ .next('div.tgContent')
+ .find('>.section:gt(0)').hide().end()
+ .find('>.btnArea>button').show();
+ })
+ .bind('after-close.tc', function(){
+ $(this).removeClass('active');
+ })
+ .next('#siteMapList')
+ .find('>.section:last')
+ .after('')
+ .find('+p>button')
+ .click(function(){
+ // Display all sections then hide this button
+ $(this).hide().parent().prevAll('.section').show();
+ });
+
+ $.fn.xeMask = function(){
+ this
+ .each(function(){
+ var $this = $(this), text = $this.text();
+ var reg_mail = /^([\w\-\.]+?)@(([\w-]+\.)+[a-z]{2,})$/ig;
+ $this.data('originalText', text);
+
+ if(reg_mail.test(text)) {
+ $this.data('maskedText', RegExp.$1+'...');
+ }
+
+ $this.text( $this.data('maskedText') );
+ })
+ .mouseover(function(){
+ $(this).text( $(this).data('originalText') );
+ })
+ .mouseout(function(){
+ $(this).text( $(this).data('maskedText') );
+ })
+ .focus(function(){ $(this).mouseover(); })
+ .blur(function(){ $(this).mouseout(); });
+ };
+ $('.masked').xeMask();
+});
+
+// Global Navigation Bar
+jQuery(function($){
+
+$.fn.xeMenu = function(){
+ this
+ .removeClass('jx')
+ .attr('role', 'navigation') // WAI-ARIA role
+ .find('li')
+ .attr('role', 'menuitem') // WAI-ARIA role
+ .find('>ul').hide().end()
+ .filter(':has(>ul)')
+ .attr('aria-haspopup', 'true') // WAI-ARIA
+ .end()
+ .end()
+ .delegate('li', {
+ mouseover : function(){
+ $(this)
+ .addClass('active')
+ .find('>ul').show().end()
+ .parentsUntil('.gnb')
+ .filter('li').addClass('active').end()
+ .end()
+ },
+ mouseleave : function(){
+ $(this)
+ .removeClass('active')
+ .find('>ul').hide();
+ },
+ focusout : function(){
+ var $this = $(this);
+ setTimeout(function(){
+ if(!$this.find(':focus').length) {
+ $this.removeClass('active').find('>ul').hide();
+ }
+ }, 1);
+ }
+ })
+ .delegate('a', {
+ focus : function(){
+ $(this).parent('li').mouseover();
+ }
+ });
+};
+
+$('div.gnb').xeMenu();
+
+});
+
+// Modal Window
+jQuery(function($){
+
+var ESC = 27;
+
+$.fn.xeModalWindow = function(){
+ this
+ .not('.xe-modal-window')
+ .addClass('xe-modal-window')
+ .each(function(){
+ $( $(this).attr('href') ).addClass('x').hide();
+ })
+ .click(function(){
+ var $this = $(this), $modal, $btnClose, disabled;
+
+ // get and initialize modal window
+ $modal = $( $this.attr('href') );
+ if(!$modal.parent('body').length) {
+ $btnClose = $('');
+ $btnClose.click(function(){ $modal.data('anchor').trigger('close.mw') });
+
+ $modal
+ .prepend('')
+ .append('')
+ .find('>.fg')
+ .prepend($btnClose)
+ .append($btnClose.clone(true))
+ .end()
+ .appendTo('body');
+ }
+
+ // set the related anchor
+ $modal.data('anchor', $this);
+
+ if($modal.data('state') == 'showing') {
+ $this.trigger('close.mw');
+ } else {
+ $this.trigger('open.mw');
+ }
+
+ return false;
+ })
+ .bind('open.mw', function(){
+ var $this = $(this), before_event, $modal, duration;
+
+ // before event trigger
+ before_event = $.Event('before-open.mw');
+ $this.trigger(before_event);
+
+ // is event canceled?
+ if(before_event.isDefaultPrevented()) return false;
+
+ // get modal window
+ $modal = $( $this.attr('href') );
+
+ // get duration
+ duration = $this.data('duration') || 'fast';
+
+ // set state : showing
+ $modal.data('state', 'showing');
+
+ // workaroud for IE6
+ $('html,body').addClass('modalContainer');
+
+ // after event trigger
+ function after(){ $this.trigger('after-open.mw') };
+
+ $(document).bind('keydown.mw', function(event){
+ if(event.which == ESC) {
+ $this.trigger('close.mw');
+ return false;
+ }
+ });
+
+ $modal
+ .fadeIn(duration, after)
+ .find('>.bg').height($(document).height()).end()
+ .find('button.modalClose:first').focus();
+ })
+ .bind('close.mw', function(){
+ var $this = $(this), before_event, $modal, duration;
+
+ // before event trigger
+ before_event = $.Event('before-close.mw');
+ $this.trigger(before_event);
+
+ // is event canceled?
+ if(before_event.isDefaultPrevented()) return false;
+
+ // get modal window
+ $modal = $( $this.attr('href') );
+
+ // get duration
+ duration = $this.data('duration') || 'fast';
+
+ // set state : hiding
+ $modal.data('state', 'hiding');
+
+ // workaroud for IE6
+ $('html,body').removeClass('modalContainer');
+
+ // after event trigger
+ function after(){ $this.trigger('after-close.mw') };
+
+ $modal.fadeOut(duration, after);
+ $this.focus();
+ });
+};
+$('a.modalAnchor').xeModalWindow();
+$('div.modal').addClass('x').hide();
+
+});
+
+// Content Toggler
+jQuery(function($){
+
+var dont_close_this_time = false;
+var ESC = 27;
+
+$.fn.xeContentToggler = function(){
+ this
+ .not('.xe-content-toggler')
+ .addClass('xe-content-toggler')
+ .each(function(){
+ var $anchor = $(this); $layer = $($anchor.attr('href'));
+
+ $layer.hide()
+ .not('.xe-toggling-content')
+ .addClass('xe-toggling-content')
+ .mousedown(function(event){ dont_close_this_time = true })
+ .focusout(function(event){
+ setTimeout(function(){
+ if(!dont_close_this_time && !$layer.find(':focus').length && $layer.data('state') == 'showing') $anchor.trigger('close.tc');
+ dont_close_this_time = false;
+ }, 1);
+ });
+ })
+ .click(function(){
+ var $this = $(this), $layer;
+
+ // get content container
+ $layer = $( $this.attr('href') );
+
+ // set anchor object
+ $layer.data('anchor', $this);
+
+ if($layer.data('state') == 'showing') {
+ $this.trigger('close.tc');
+ } else {
+ $this.trigger('open.tc');
+ }
+
+ return false;
+ })
+ .bind('open.tc', function(){
+ var $this = $(this), $layer, effect, duration;
+
+ // get content container
+ $layer = $( $this.attr('href') );
+
+ // get effeect
+ effect = $this.data('effect');
+
+ // get duration
+ duration = $this.data('duration') || 'fast';
+
+ // set state : showing
+ $layer.data('state', 'showing');
+
+ // before event trigger
+ $this.trigger('before-open.tc');
+
+ dont_close_this_time = false;
+
+ // When mouse button is down or when ESC key is pressed close this layer
+ $(document)
+ .unbind('mousedown.tc keydown.tc')
+ .bind('mousedown.tc keydown.tc',
+ function(event){
+ if(event) {
+ if(event.type == 'keydown' && event.which != ESC) return true;
+ if(event.type == 'mousedown') {
+ var $t = $(event.target);
+ if($t.is('html,.tgAnchor,.tgContent') || $layer.has($t).length) return true;
+ }
+ }
+
+ $this.trigger('close.tc');
+
+ return false;
+ }
+ );
+
+ // triggering after
+ function trigger_after(){ $this.trigger('after-open.tc') }
+
+ switch(effect) {
+ case 'slide':
+ $layer.slideDown(duration, trigger_after);
+ break;
+ case 'slide-h':
+ var w = $layer.css({'overflow-x':'',width:''}).width();
+ $layer
+ .show()
+ .css({'overflow-x':'hidden',width:'0px'})
+ .animate({width:w}, duration, function(){ $layer.css({'overflow-x':'',width:''}); trigger_after(); });
+ break;
+ case 'fade':
+ $layer.fadeIn(duration, trigger_after);
+ break;
+ default:
+ $layer.show();
+ $this.trigger('after-open.tc');
+ }
+ })
+ .bind('close.tc', function(){
+ var $this = $(this), $layer, effect, duration;
+
+ // unbind document's event handlers
+ $(document).unbind('mousedown.tc keydown.tc');
+
+ // get content container
+ $layer = $( $this.attr('href') );
+
+ // get effeect
+ effect = $this.data('effect');
+
+ // get duration
+ duration = $this.data('duration') || 'fast';
+
+ // set state : hiding
+ $layer.data('state', 'hiding');
+
+ // before event trigger
+ $this.trigger('before-close.tc');
+
+ // triggering after
+ function trigger_after(){ $this.trigger('after-close.tc') };
+
+ // close this layer
+ switch(effect) {
+ case 'slide':
+ $layer.slideUp(duration, trigger_after);
+ break;
+ case 'slide-h':
+ $layer.animate({width:0}, duration, function(){ $layer.hide(); trigger_after(); });
+ break;
+ case 'fade':
+ $layer.fadeOut(duration, trigger_after);
+ break;
+ default:
+ $layer.hide();
+ $this.trigger('after-close.tc');
+ }
+ });
+
+ return this;
+};
+
+$('a.tgAnchor').xeContentToggler();
+
+});
+
+// Module finder
+jQuery(function($){
+
+$.fn.xeModuleFinder = function(){
+ this
+ .not('.xe-module-finder')
+ .addClass('xe-module-finder')
+ .find('a.tgAnchor.findsite')
+ .bind('before-open.tc', function(){
+ var $this, $ul, val;
+
+ $this = $(this);
+ $ul = $($this.attr('href')).find('>ul');
+ val = $this.prev('input:text').val();
+
+ function on_complete(data) {
+ var $li, list = data.site_list, i, c;
+
+ $ul.empty();
+ $this.closest('.modulefinder').find('.moduleList,.moduleIdList').attr('disabled','disabled');
+
+ if(data.error || !$.isArray(list)) {
+ $this.trigger('close.tc');
+ return;
+ }
+
+ for(i=0,c=list.length; i < c; i++) {
+ $li = $('').appendTo($ul);
+ $('').text(list[i].domain).data('site_srl', list[i].site_srl).appendTo($li);
+ }
+ };
+
+ $.exec_json('admin.getSiteAllList', {domain:val}, on_complete);
+ })
+ .end()
+ .find('.tgContent.suggestion')
+ .delegate('button','click',function(){
+ var $this, $finder;
+
+ $this = $(this);
+ $finder = $this.closest('.modulefinder');
+
+ function on_complete(data) {
+ var $mod_select, list = data.module_list, x;
+
+ if(data.error || !list) return;
+
+ $mod_select = $finder.find('.moduleList').data('module_list', list).removeAttr('disabled').empty();
+ for(x in list) {
+ if(!list.hasOwnProperty(x)) continue;
+ $('').attr('value', x).text(list[x].title).appendTo($mod_select);
+ }
+ $mod_select.prop('selectedIndex', 0).change().focus();
+
+ if(!$mod_select.is(':visible')) {
+ $mod_select
+ .slideDown(100, function(){
+ $finder.find('.moduleIdList:not(:visible)').slideDown(100).trigger('show');
+ })
+ .trigger('show');
+ }
+ };
+
+ $finder.find('a.tgAnchor.findsite').trigger('close.tc');
+
+ $.exec_json('module.procModuleAdminGetList', {site_srl:$this.data('site_srl')}, on_complete);
+ })
+ .end()
+ .find('.moduleList,.moduleIdList').hide().end()
+ .find('.moduleList')
+ .change(function(){
+ var $this, $mid_select, val, list;
+
+ $this = $(this);
+ val = $this.val();
+ list = $this.data('module_list');
+
+ if(!list[val]) return;
+
+ list = list[val].list;
+ $mid_select = $this.closest('.modulefinder').find('.moduleIdList').removeAttr('disabled').empty();
+
+ for(var x in list) {
+ if(!list.hasOwnProperty(x)) continue;
+ $('').attr('value', list[x].module_srl).text(list[x].browser_title).appendTo($mid_select);
+ }
+ $mid_select.prop('selectedIndex', 0).change();
+ });
+
+ return this;
+};
+$('.modulefinder').xeModuleFinder();
+
+});
+
+// Sortable table
+jQuery(function($){
+
+var
+ dragging = false,
+ $holder = $('| |
');
+
+$.fn.xeSortableTable = function(){
+ this
+ .not('.xe-sortable-table')
+ .addClass('xe-sortable-table')
+ .delegate('button.dragBtn', 'mousedown.st', function(event){
+ var $this, $tr, $table, $th, height, width, offset, position, offsets, i, dropzone, cols, ofspar;
+
+ if(event.which != 1) return;
+
+ $this = $(this);
+ $tr = $this.closest('tr');
+ $table = $this.closest('table');
+ ofspar = $table.get(0).offsetParent;
+ height = $tr.height();
+ width = $tr.width();
+
+ // before event trigger
+ before_event = $.Event('before-drag.st');
+ $table.trigger(before_event);
+
+ // is event canceled?
+ if(before_event.isDefaultPrevented()) return false;
+
+ position = {x:event.pageX, y:event.pageY};
+ offset = getOffset($tr.get(0), ofspar);
+
+ $clone = $tr.attr('target', true).clone(true).appendTo($table);
+
+ // get colspan
+ cols = ($th=$table.find('thead th')).length;
+ $th.filter('[colspan]').attr('colspan', function(idx,attr){ cols += attr - 1; });
+ $holder.find('td').attr('colspan', cols);
+
+ // get offsets of all list-item elements
+ offsets = [];
+ $table.find('tbody>tr:not([target],.sticky,:hidden)').each(function() {
+ var $this = $(this), o;
+
+ o = getOffset(this, ofspar);
+ offsets.push({top:o.top, bottom:o.top+$this.height(), $item:$this});
+ });
+
+ $clone
+ .addClass('draggable')
+ .css({
+ position: 'absolute',
+ opacity : .6,
+ width : width,
+ height : height,
+ left : offset.left,
+ top : offset.top,
+ zIndex : 100
+ });
+
+ // Set a place holder
+ $holder
+ .css({
+ position:'absolute',
+ opacity : .6,
+ width : width,
+ height : '10px',
+ left : offset.left,
+ top : offset.top,
+ backgroundColor : '#bbb',
+ overflow: 'hidden',
+ zIndex : 99
+ })
+ .appendTo($table);
+
+ $tr.css('opacity', .6);
+
+ $(document)
+ .unbind('mousedown.st mouseup.st')
+ .bind('mousemove.st', function(event) {
+ var diff, nTop, item, i, c, o;
+
+ dropzone = null;
+
+ diff = {x:position.x-event.pageX, y:position.y-event.pageY};
+ nTop = offset.top - diff.y;
+
+ for(i=0,c=offsets.length; i < c; i++) {
+ o = offsets[i];
+ if( (i && o.top > nTop) || ((i < c-1) && o.bottom < nTop)) continue;
+
+ dropzone = {element:o.$item};
+ if(o.top > nTop - 12) {
+ dropzone.state = 'before';
+ $holder.css('top', o.top-5);
+ } else {
+ dropzone.state = 'after';
+ $holder.css('top', o.bottom-5);
+ }
+ }
+
+ $clone.css({top:nTop});
+ })
+ .bind('mouseup.st', function(event) {
+ var $dropzone;
+
+ dragging = false;
+
+ $(document).unbind('mousemove.st mouseup.st');
+ $tr.removeAttr('target').css('opacity', '');
+ $clone.remove();
+ $holder.remove();
+
+ if(!dropzone) return;
+ $dropzone = $(dropzone.element);
+
+ // use the clone for animation
+ $dropzone[dropzone.state]($tr);
+
+ $table.trigger('after-drag.st');
+ });
+ })
+
+ return this;
+};
+$('table.sortable').xeSortableTable();
+
+
+function getOffset(elem, offsetParent) {
+ var top = 0, left = 0;
+
+ while(elem && elem != offsetParent) {
+ top += elem.offsetTop;
+ left += elem.offsetLeft;
+
+ elem = elem.offsetParent;
+ }
+
+ return {top:top, left:left};
+}
+
+});
+
+// Language selector
+jQuery(function($){
+
+var w_timer = null, r_timer = null, r_idx = 0, f_timer = null, skip_textchange=false, keep_showing=false, $suggest;
+var ESC=27, UP=38, DOWN=40, ENTER=13;
+
+$('.multiLangEdit')
+ .delegate('input.vLang:text,textarea.vLang', {
+ textchange : function(){
+ var $this = $(this), val = $.trim($this.val()), $ul, $container;
+
+ if(r_timer) {
+ clearTimeout(r_timer);
+ r_timer = null;
+ }
+
+ $container = $this.data('mle-container');
+ $ul = $suggest.find('>ul');
+
+ if(!val || skip_textchange) {
+ skip_textchange = false;
+ $ul.parent().hide();
+ $this.prev('input.vLang').val('');
+ return;
+ }
+
+ // remove lagnauge key
+ $this.data('mle-langkey').val('');
+
+ // copy current string to hidden input
+ $this.prev('input.vLang').val(val);
+
+ function request() {
+ $this.addClass('loading');
+
+ if($ul.parent().is(':visible')) $ul.parent().hide();
+
+ show_waiting_message = false;
+ $.exec_json(
+ 'module.getLangListByLangcodeForAutoComplete',
+ {search_keyword:val},
+ (function(i){ return function(data){ on_complete(data,i) } })(r_idx++)
+ );
+ show_waiting_message = true;
+ };
+
+ function on_complete(data, idx){
+ var results = data.results, $btn, i, c;
+
+ if(data.error || !results || (r_idx != idx+1)) return;
+
+ $this.removeClass('loading');
+
+ $ul.empty();
+ for(i=0,c=results.length; i < c; i++) {
+ $btn = $('').data('langkey', results[i].name).text(results[i].value);
+ $('').append($btn).appendTo($ul);
+ }
+ $suggest.trigger('show');
+ };
+
+ r_timer = setTimeout(request, 100);
+ },
+ keydown : function(event){
+ var $this, $ul, $active, $after, key = event.which;
+
+ $this = $(this);
+ $ul = $suggest.find('>ul');
+
+ if(!$suggest.is(':visible') || $.inArray(key, [UP,DOWN,ENTER,ESC]) < 0) return true;
+
+ if(key == ESC) {
+ $suggest.trigger('hide');
+ return false;
+ }
+
+ $active = $ul.find('button.active');
+
+ if(key == ENTER) {
+ $active.click();
+ return false;
+ }
+
+ if(!$active.length) {
+ $ul.find('li>button:first').addClass('active');
+ return false;
+ }
+
+ // Move the cursor
+ if(key == UP) {
+ $after = $active.parent().prev('li').find('>button');
+ if(!$after.length) $after = $ul.find('>li:last>button');
+ } else if(key == DOWN) {
+ $after = $active.parent().next('li').find('>button');
+ if(!$after.length) $after = $ul.find('>li:first>button');
+ }
+
+ $active.removeClass('active');
+ $after.addClass('active');
+
+ return false;
+ },
+ focus : function(){
+ var $this = $(this), oldValue = $.trim($this.val()), $mle = $this.closest('.multiLangEdit');
+
+ $this.after($suggest);
+ if(!$this.data('mle-container')) $this.data('mle-container', $mle);
+ if(!$this.data('mle-langkey')) $this.data('mle-langkey', $mle.find('input.vLang:first'));
+
+ (function(){
+ var value = $.trim($this.val());
+
+ if(value != oldValue) {
+ oldValue = value;
+ $this.trigger('textchange');
+ }
+ w_timer = setTimeout(arguments.callee, 50);
+ })();
+ },
+ blur : function(){
+ clearTimeout(w_timer);
+ w_timer = null;
+
+ $(this).closest('.multiLangEdit').focusout();
+ },
+ focusout : function(){
+ var $this = $(this);
+
+ clearTimeout(f_timer);
+ f_timer = setTimeout(function(){
+ if(keep_showing) {
+ keep_showing = false;
+ return;
+ }
+ if(!$this.find(':focus').is('.vLang,button._btnLang')) $suggest.trigger('hide');
+ }, 10);
+ }
+ })
+ .delegate('a.tgAnchor.editUserLang', {
+ 'before-open.tc' : function(){
+ var $this, $layer, $mle, $vlang, key, text, api, params;
+
+ $this = $(this);
+ $layer = $($this.attr('href')).insertBefore($this);
+ $mle = $this.closest('.multiLangEdit');
+ $vlang = $mle.find('input.vLang,textarea.vLang');
+
+ key = $vlang.eq(0).val();
+ text = $vlang.eq(1).val();
+
+ // initialize the layer
+ initLayer($layer);
+
+ // reset
+ $layer.trigger('multilang-reset').removeClass('showChild').find('.langList').empty().end();
+ $layer.find('.langInput li.'+xe.current_lang).find('>input:text,>textarea').val(text).prev('label').css('visibility','hidden');
+
+ // hide suggestion layer
+ $suggest.trigger('hide');
+
+ if(/^\$user_lang->(.+)$/.test(key)) {
+ api = 'module.getModuleAdminLangListByName';
+ params = {lang_name:RegExp.$1};
+ } else {
+ api = 'module.getModuleAdminLangListByValue';
+ params = {value:text};
+ }
+
+ function on_complete(data) {
+ var list = data.lang_list, obj, i, c, name, $langlist;
+
+ if(data.error || !list) return;
+
+ list = extractList(list);
+
+ // set data
+ $layer.data('multilang-list', list);
+
+ // make language list
+ $langlist = $layer.find('.langList');
+ $.each(list, function(key){
+ var $li = $('').appendTo($langlist);
+
+ var anchor_id = $layer.data('layer_index');
+ $('')
+ .text(this[xe.current_lang])
+ .data('multilang-name', key)
+ .appendTo($li);
+ });
+
+ if(count(list) > 1) $layer.addClass('showChild');
+
+ $layer.find('.langList>li>a:first').click();
+
+ };
+
+ show_waiting_message = false;
+ $.exec_json(api, params, on_complete);
+ show_waiting_message = true;
+ }
+ })
+ .delegate('button._btnLang', {
+ click : function(){
+ var $this = $(this);
+
+ skip_textchange = true;
+
+ $suggest.trigger('hide');
+
+ $this.closest('.multiLangEdit')
+ .find('input.vLang,textarea.vLang')
+ .eq(0).val($this.data('langkey')).end()
+ .eq(1).val($this.text()).end();
+
+ return false;
+ },
+ mousedown : function(){ keep_showing = true },
+ focus : function(){
+ $(this).mouseover();
+ },
+ mouseover : function(){
+ $(this).closest('ul').find('button.active').removeClass('active');
+ }
+ });
+
+$suggest = $('')
+ .bind('show', function(){
+ $(this).show();
+ })
+ .bind('hide', function(){
+ $(this).hide();
+ });
+
+var layer_index = 0;
+function initLayer($layer) {
+ var $submit, $input, value='', current_status = 0, mode, cmd_add, cmd_edit, status_texts=[];
+ var USE = 0, UPDATE_AND_USE = 1, MODE_SAVE = 0, MODE_UPDATE = 1;
+
+ if($layer.data('init-multilang-editor')) return;
+
+ $layer
+ .data('init-multilang-editor', true)
+ .bind('multilang-reset', function(){
+ $layer
+ .data('multilang-current-name', '')
+ .find('.langInput li').find('>input:text,>textarea').val(' ').prev('label').css('visibility','visible');
+
+ mode = MODE_SAVE;
+ setTitleText();
+ })
+ .find('h2 a')
+ .click(function(){
+ mode = !mode;
+ setTitleText();
+
+ return false;
+ })
+ .end()
+ .delegate('a.langItem', 'click', function(){
+ var $this = $(this), $controls, list, name, i, c;
+
+ list = $layer.data('multilang-list');
+ name = $this.data('multilang-name');
+
+ if(!list || !list[name]) return;
+ list = list[name];
+
+ $controls = $layer.find('.langInput');
+
+ $layer
+ .trigger('multilang-reset') // reset
+ .find('.langList li.active').removeClass('active').end()
+ .data('multilang-current-name', name);
+
+ $this.parent('li').addClass('active');
+
+ for(var code in list) {
+ if(!list.hasOwnProperty(code)) continue;
+ $controls.find('li.'+code).find('>input:text,>textarea').data('multilang-value',list[code]).val(list[code]).prev('label').css('visibility','hidden');
+ }
+
+ value = get_value();
+
+ current_status = 0;
+ $submit.val(status_texts[current_status]);
+
+ mode = MODE_UPDATE;
+ setTitleText();
+
+ return false;
+ })
+ .data('layer_index', layer_index)
+ .find('.langInput').attr('id', 'langInput_' + layer_index++);
+
+ cmd_edit = $layer.find('h2 strong').text();
+ cmd_add = $layer.find('h2 a').text();
+
+ $input = $layer.find('input:text,textarea')
+ .change(function(){
+ var status = (get_value() == value)?USE:UPDATE_AND_USE;
+
+ if(status != current_status) {
+ $submit.val(status_texts[current_status=status]);
+ }
+ });
+
+ function get_value() {
+ var text = [];
+ $input.each(function(){ text.push(this.value); });
+ return text.join('\n');
+ };
+
+ function setTitleText() {
+ if(!$layer.data('multilang-current-name')) {
+ $layer.find('h2').find('strong').text(cmd_add).end().find('a').hide();
+ } else {
+ $layer.find('h2')
+ .find('strong').text(mode==MODE_SAVE?cmd_add:cmd_edit).end()
+ .find('a').text(mode==MODE_SAVE?cmd_edit:cmd_add).show().end();
+ }
+ };
+
+ // process the submit button
+ $submit = $layer.find('input[type=submit]')
+ .click(function(){
+ var name = $layer.data('multilang-current-name');
+
+ function use_lang() {
+ $layer.hide().closest('.multiLangEdit').find('.vLang')
+ .eq(0).val('$user_lang->'+name).end()
+ .eq(1).val($layer.find('.langInput li.'+xe.current_lang).find('>input:text,>textarea').val()).end();
+ };
+
+ function save_lang() {
+ var params = {};
+ if(name && mode == MODE_UPDATE) params.lang_name = name;
+
+ $input.each(function(k,v){ var $this = $(this); params[$this.parent('li').attr('class')] = $this.val() });
+
+ $.exec_json('module.procModuleAdminInsertLang', params, on_complete);
+ };
+
+ function on_complete(data) {
+ if(!data || data.error || !data.name) return;
+
+ name = data.name;
+ use_lang();
+ };
+
+ (get_value() == value) ? use_lang() : save_lang();
+
+
+ return false;
+ });
+ status_texts = $submit.val().split('|');
+ $submit.val(status_texts[USE]);
+};
+
+function extractList(list) {
+ var i, c, obj={}, item;
+
+ for(i=0,c=list.length; i < c; i++) {
+ item = list[i];
+
+ if(!obj[item.name]) obj[item.name] = {};
+
+ obj[item.name][item.lang_code] = item.value;
+ }
+
+ return obj;
+};
+
+function count(obj) {
+ var size = 0;
+ for(var x in obj) {
+ if(obj.hasOwnProperty(x)) size++;
+ }
+ return size;
+};
+
+});
+
+// filebox
+jQuery(function($){
+
+$('.filebox')
+ .bind('before-open.mw', function(){
+ var $this, $list, $parentObj;
+ var anchor;
+
+ $this = $(this);
+ anchor = $this.attr('href');
+
+ $list = $(anchor).find('.filebox_list');
+
+ function on_complete(data){
+ $list.html(data.html);
+
+ $list.find('.lined .select')
+ .bind('click', function(event){
+ var selectedImgSrc = $(this).parent().find('img.filebox_item').attr('src');
+ $this.trigger('filebox.selected', [selectedImgSrc]);
+ $this.trigger('close.mw');
+ return false;
+ });
+
+ $list.find('.pagination')
+ .find('a')
+ .filter(function(){
+ if ($(this).hasClass('tgAnchor')) return false;
+ return true;
+ })
+ .bind('click', function(){
+ var page = $(this).attr('page');
+
+ $.exec_json('module.getFileBoxListHtml', {'page': page}, on_complete);
+ $(window).scrollTop($(anchor).find('.modalClose').offset().top);
+ return false;
+ });
+
+ $('#FileBoxGoTo')
+ .find('button')
+ .bind('click', function(){
+ var page = $(this).prev('input').val();
+
+ $.exec_json('module.getFileBoxListHtml', {'page': page}, on_complete);
+ $(window).scrollTop($(anchor).find('.modalClose').offset().top);
+ return false;
+ });
+ }
+
+ $.exec_json('module.getFileBoxListHtml', {'page': '1'}, on_complete);
+ });
+
+});
+
+/* insert fog layer */
+function showWaitingFogLayer() {
+ var $bg = jQuery('');
+ $bg.height(jQuery(window).height());
+ jQuery('.wfsr')
+ .wrap('')
+ .before($bg);
+}
+
+function hideWaitingFogLayer() {
+ jQuery('.wfsr').prev('span').remove();
+ jQuery('.wfsr').unwrap();
+}
+
+/* install module */
+function doInstallModule(module) {
+ var params = new Array();
+ params['module_name'] = module;
+ exec_xml('install','procInstallAdminInstall',params, completeInstallModule);
+ showWaitingFogLayer();
+}
+
+/* upgrade module */
+function doUpdateModule(module) {
+ var params = new Array();
+ params['module_name'] = module;
+ exec_xml('install','procInstallAdminUpdate',params, completeInstallModule);
+ showWaitingFogLayer();
+}
+
+function completeInstallModule(ret_obj) {
+ alert(ret_obj['message']);
+ location.reload();
+}
+
+jQuery(document).ready(function($){
+ $('body').ajaxComplete(function(){ hideWaitingFogLayer() });
+});
+
+/* admin single column layout */
+jQuery(function($){
+ if($('.x>.body>.lnb').length == 0){ // When it have no lnb
+ $('.x>.body>.content').addClass('single'); // Add class single
+ }
+});