diff --git a/hwe/js/ext.expand_city.js b/hwe/js/ext.expand_city.js index 6aa592d1..dc946be3 100644 --- a/hwe/js/ext.expand_city.js +++ b/hwe/js/ext.expand_city.js @@ -1,899 +1,899 @@ - -$(function() { - - var cityList = {}; - var userList = {}; - - var cityGroupOrder = ['하북','중원','서북','서촉','남중','초','오월','동이']; - var city규모 = {특:1,대:2,중:3,소:4,이:5,진:6,관:7,수:8}; - window.cityList = cityList; - window.userList = userList; - - var basicPath = document.location.pathname; - basicPath = basicPath.substring(0, basicPath.lastIndexOf('/'))+'/'; - - - - var mergeSort = function(arr,cmpFunc){ - - if(typeof cmpFunc == "undefined"){ - cmpFunc = function(a,b){ - if(ab) return 1; - return 0; - } - } - - var merge = function(left,right){ - var retVal=[]; - - var leftIdx=0; - var rightIdx=0; - - while(leftIdx'+ - '
'+ - ''+ - '
도시태수군사종사
'+ - '
: '+ - '
'+ - ''+ - ''+ - ''+ - '
'); - $win.hide(); - - $win.css('font-size','9pt'); - - - - $('#fake_form').css('display','inline'); - $('body').append($win); - - $('#inner_table').attr('border','1').attr('cellspacing',"0").attr('cellpadding',"0") - .attr('bordercolordark',"gray").attr('bordercolorlight',"black").attr('align','center') - .css('font-size','13px').css('width','290px'); - - $('#inner_table thead tr'); - - $('#fake_form').submit(function(){ - return false; - }); - - $('#in_frame').load(function(){ - $('#in_frame').contents().find('div').click(function(){$('#city_select').change();}); - }); - - $("#duty_radio").buttonset(); - - var $city_select = $('#city_select'); - $city_select.css('color','white').css('background-color','black'); - - - $city_select.change(function(event){ - if($city_select.val()==null){ - $city_select.val(tmpOldVal); - return false; - } - - if($city_select.val() == tmpOldVal){ - return false; - } - - tmpOldVal = $city_select.val(); - //console.log(tmpOldVal); - var newInfo = subCityList[tmpOldVal]; - var cityInfo = newInfo.city; - - var p태수 = cityInfo.p태수 && currUser.p태수; - var p군사 = cityInfo.p군사 && currUser.p군사; - var p종사 = cityInfo.p종사 && currUser.p종사; - - //console.log(p태수,p군사,p종사); - - $('#duty_type1').button({disabled:!p태수}); - $('#duty_type2').button({disabled:!p군사}); - $('#duty_type3').button({disabled:!p종사}); - - var $태수 = cityInfo.$태수; - var $군사 = cityInfo.$군사; - var $종사 = cityInfo.$종사; - - - - return true; - }); - - - $win.dialog({ - autoOpen:false, - width:1005, - height:680, - buttons:{ - "임명":function(){ - //console.log("임명!"); - - var $checked = $('#duty_radio :radio:checked'); - - if($checked.length==0 || $checked.attr('disabled')=='disabled'){ - alert('직책을 선택해주세요!'); - return false; - } - var type = $checked.attr('value'); - var text = $checked.next().text(); - var userVal = currUser.val; - var userName = currUser.name; - var cityVal = $city_select.val(); - - var cityInfo = subCityList[cityVal].city; - - $.post(basicPath+'j_myBossInfo.php',{ - destCityID:cityVal, - destGeneralID:userVal, - officerLevel:type, - action:'임명' - },function(rawData){ - - cityInfo['p'+text]=false; - var $target = cityInfo.users.find('.mode_'+type); - $target.prop('disabled',true); - $target.css('background','transparent'); - $target.css('border','0'); - $target.css('color',''); - - cityInfo['$'+text].html(userName); - - $win.dialog("close"); - }); - - - }, - "닫기":function(){ - $win.dialog("close"); - } - - } - }); - - - - //console.log($win.parent()); - $win.parent().css('font-size','10pt'); - } - - $('#ext_win').dialog("close").dialog( "option", "position", { my: "center top", at: "center bottom", of: userInfo.$user} ); - - var $innerContent = $('#inner_table .content'); - $innerContent.html(''); - $("#user_name").html(userInfo.name+'['+userInfo.city+']'); - - $('#city_select').html(''); - - $.each(cityList,function(idx,cityInfo){ - var 지역 = cityInfo.지역; - - var p태수 = cityInfo.p태수 && currUser.p태수; - var p군사 = cityInfo.p군사 && currUser.p군사; - var p종사 = cityInfo.p종사 && currUser.p종사; - - var newInfo = { - 지역 : 지역, - 규모 : cityInfo.규모, - 이름 : cityInfo.이름, - val : cityInfo.val, - city : cityInfo, - p태수 : p태수, - p군사 : p군사, - p종사 : p종사 - }; - - //console.log(newInfo); - - if(p태수 || p군사 || p종사){ - if(typeof subCityGroupList[지역] == 'undefined'){ - subCityGroupList[지역] = []; - } - subCityGroupList[지역].push(newInfo); - subCityList[cityInfo.val] = newInfo; - } - - }); - - $.each(cityGroupOrder,function(idx,groupName){ - if(typeof subCityGroupList[groupName] == 'undefined'){ - - return true; - } - - var subList = subCityGroupList[groupName]; - - var $group = $('【 '+groupName+' 】'); - $innerContent.append($group); - - subList.sort(function(a,b){ - - var cmp규모 = city규모[a.규모] - city규모[b.규모]; - if(cmp규모 != 0) return cmp규모; - - return a.이름.localeCompare(b.이름); - }); - var $optgroup = $(''); - - $.each(subList,function(idx,newInfo){ - $optgroup.append(''); - - var cityInfo = newInfo.city; - var $city = $(''+newInfo.이름+''); - - var $태수 = cityInfo.$태수.clone(); - $city.append($태수); - if(!newInfo.p태수){ - $태수.css('color','red'); - } - else{ - $태수.click(function(){ - $('#duty_radio :radio:eq(0)').attr('checked','checked'); - $('#duty_radio :radio').button('refresh'); - }).css('cursor','pointer'); - } - - - var $군사 = cityInfo.$군사.clone(); - $city.append($군사); - if(!newInfo.p군사)$군사.css('color','red'); - else{ - $군사.click(function(){ - $('#duty_radio :radio:eq(1)').attr('checked','checked'); - $('#duty_radio :radio').button('refresh'); - }).css('cursor','pointer'); - } - - var $종사 = cityInfo.$종사.clone(); - $city.append($종사); - if(!newInfo.p종사)$종사.css('color','red'); - else{ - $종사.click(function(){ - $('#duty_radio :radio:eq(2)').attr('checked','checked'); - $('#duty_radio :radio').button('refresh'); - }).css('cursor','pointer'); - } - - $innerContent.append($city); - $city.click(function(){ - $('#city_select').val(newInfo.val).change(); - }); - - }); - - $('#city_select').append($optgroup); - }); - - tmpOldVal = $('#city_select').val(); - $('#city_select').change(); - $('#ext_win').dialog("open"); - }; - - var loadDuty = function(){ - - try{ - $('.for_duty').remove(); - $.get(basicPath+'b_myBossInfo.php',function(rawData){ - $html = $(rawData); - //window.$html = $html; - - var cnt =0; - var $tmpTable = $html.filter('#officer_list').eq(0); - - $selects = $tmpTable.find("select"); - if($selects.length == 0){ - alert("수뇌가 아닙니다!"); - return false; - } - - var setUserAvailable = function($userList,typeName){ - $userList.each(function(idx){ - var $this = $(this); - - var val = $this.val(); - var name = $.trim($this.text()); - - for(var i=name.length-1;i>0;i--){ - if(name[i]=='【'){ - name = $.trim(name.substr(0,i)); - break; - } - } - - if(val == '0'){ - return true; - } - - if(typeof userList[name] != 'undefined'){ - userList[name].val = val; - userList[name][typeName] = true; - } - - }); - }; - - var setCityAvailiable = function($cityList,typeName){ - $cityList.each(function(idx){ - - var $this = $(this); - - var val = $.trim($this.val()); - var name = $.trim($this.text()); - - cityList[name].val = val; - cityList[name][typeName] = true; - }); - } - - $.each(cityList,function(idx,cityInfo){ - cityInfo.p태수=false; - cityInfo.p군사=false; - cityInfo.p종사=false; - }); - - $.each(userList,function(idx,userInfo){ - userInfo.p태수=false; - userInfo.p군사=false; - userInfo.p종사=false; - }); - - setUserAvailable($selects.eq(1).find("option"),"p태수"); - setUserAvailable($selects.eq(3).find("option"),"p군사"); - setUserAvailable($selects.eq(5).find("option"),"p종사"); - - setCityAvailiable($selects.eq(0).find("option"),"p태수"); - setCityAvailiable($selects.eq(2).find("option"),"p군사"); - setCityAvailiable($selects.eq(4).find("option"),"p종사"); - - - $.each(cityList,function(idx,cityInfo){ - - //console.log(cityInfo.users.children()); - - cityInfo.users.children().each(function(idx){ - //console.log(this); - var $this = $(this); - - var username = $this.data('username'); - - var userInfo = userList[username]; - if(!userInfo){ - return true; - } - - if(userInfo.val == '-1'){ - return true; - } - - $name = $this.find('.nameplate'); - - $name.append('
'); - - - var addBtn=function($name,cityInfo,userInfo,type,text,warn){ - - var enabled = cityInfo['p'+text]&&userInfo['p'+text]; - var cityVal = cityInfo.val; - var $btn = $(''); - $btn.addClass('mode_'+type); - $btn.addClass('for_duty'); - - if(!enabled){ - $btn.prop('disabled',true); - $btn.css('background','transparent'); - $btn.css('border','0'); - } - else{ - if(userInfo.is수뇌){ - $btn.css('color','red'); - } - } - - $btn.css('padding','1px 4px'); - $btn.css('margin','0'); - - $btn.click(function(){ - if(userInfo.is수뇌){ - if(!confirm('수뇌입니다. 임명할까요?')){ - return false; - } - } - - $.post(basicPath+'j_myBossInfo.php',{ - destCityID:cityVal, - destGeneralID:userInfo.val, - officerLevel:type, - action:'임명' - },function(rawData){ - - cityInfo['p'+text]=false; - var $target = cityInfo.users.find('.mode_'+type); - $target.prop('disabled',true); - $target.css('background','transparent'); - $target.css('border','0'); - $target.css('color',''); - - cityInfo['$'+text].html(userInfo.name); - }); - }); - - //console.log($btn); - $name.append($btn); - }; - - addBtn($name,cityInfo,userInfo,4,'태수'); - addBtn($name,cityInfo,userInfo,3,'군사'); - addBtn($name,cityInfo,userInfo,2,'종사'); - - //특수 버튼! - if(userInfo.p태수||userInfo.p군사||userInfo.p종사){ - var $btn = $(''); - $btn.addClass('for_duty'); - if(userInfo.is수뇌){ - $btn.css('color','red'); - } - $btn.css('padding','1px 4px'); - $btn.css('margin','0'); - - $btn.click(function(){ - if(userInfo.is수뇌){ - if(!confirm('수뇌입니다. 임명할까요?')){ - return false; - } - } - - extDutyWindow(userInfo); - }); - - $btn.css('border','solid 1px Chocolate').css('background-color','#400000').css('margin-left','4px'); - $btn.css('line-hight','20px').css('color','GhostWhite').css('padding','2px 2px').css('height','18px').css('line-height','8px'); - - //$name.append($btn); - - } - }); - }); - - }); - - - } - catch(a){ - console.log(a); - } - - return false; - }; - - var loadUser = function(){ - $.each(cityList,function(idx,val){ - if(typeof val.users == "undefined"){ - val.obj.append(''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - '
이 름통무지부 대자 금군 량병 종병 사훈련사기명 령삭턴
'); - - val.users = val.obj.find(".cityUserBody"); - } - else{ - val.users.html(""); - } - }); - - - $.get(basicPath+'b_genList.php',function(rawData){ - var cnt =0; - - var $helper = $('#helper_genlist'); - $helper.html('').append($.parseHTML(rawData)); - - var tmpUsers = $('#general_list tbody tr'); - - tmpUsers.each(function(idx){ - var $this = $(this); - - var $city = $this.children('.i_city'); - $city.remove(); - var cityName = $.trim($city.text()); - - var $name = $this.children('.i_name'); - $name.addClass('nameplate'); - - var name = $name.find('.t_name').text(); - - var $work = $this.children('.i_action'); - - var cityInfo = cityList[cityName]; - if(typeof cityInfo == 'undefined'){ - return true; - } - if(cityInfo.warn주민)$work.html($work.html().split('정착 장려').join('정착 장려')); - if(cityInfo.warn농업)$work.html($work.html().split('농지 개간').join('농지 개간')); - if(cityInfo.warn상업)$work.html($work.html().split('상업 투자').join('상업 투자')); - if(cityInfo.warn치안)$work.html($work.html().split('치안 강화').join('치안 강화')); - if(cityInfo.warn수비)$work.html($work.html().split('수비 강화').join('수비 강화')); - if(cityInfo.warn성벽)$work.html($work.html().split('성벽 보수').join('성벽 보수')); - - - - var $stat = $this.children('.i_stat'); - var stat = $stat.text(); - - var is수뇌 = stat.indexOf('+')>=0; - - $this.data('username',name); - - if(cityList[cityName].$태수.text() == name){ - cityList[cityName].$태수.css('color','lightgreen'); - } - if(cityList[cityName].$군사.text() == name){ - cityList[cityName].$군사.css('color','lightgreen'); - } - if(cityList[cityName].$종사.text() == name){ - cityList[cityName].$종사.css('color','lightgreen'); - } - - userList[name]={ - $city:cityInfo, - city:cityName, - $user:$this, - name:name, - val:'-1', - p태수:false, - p군사:false, - p종사:false, - is수뇌:is수뇌 - }; - - if(cityList[cityName]){ - cityList[cityName].users.append($this); - } - - }); - }); - - if($("#loadDutyBtn").length == 0){ - - var $onBossList = $(''); - $onBossList.click(function(){ - loadDuty(); - return false; - }); - - $('form').append($onBossList); - } - - $('#by_users').show(); - }; - - var mainFunc = function(){ - //대상 추출 - window.cityList = {}; - window.userList = {}; - - $("form").each(function(){ - var $this = $(this); - $this.attr('name','p'+$this.attr('name')); - }); - - $("table").each(function(idx,val){ - $this = $(this); - - - if($this.attr('class')=='tb_layout bg2'){ - $this.addClass('cityInfo'); - } - else{ - return true; - } - - window.$tmpTable = $this; - var cityInfo = {}; - - //이름 추출 - { - - var titleText = $this.find('tr:eq(0)>td:eq(0)').text(); - var loc0 = titleText.indexOf("【"); - var loc1 = titleText.indexOf("|"); - var loc2 = titleText.indexOf("】"); - - var cityLoc = $.trim(titleText.substring(loc0+1,loc1)); - var citySize = $.trim(titleText.substring(loc1+1,loc2)); - var cityName = $.trim(titleText.substring(loc2+1)); - - cityName = cityName.replace("[",""); - cityName = cityName.replace("]",""); - - $this.data('cityname',cityName); - - cityInfo.지역 = cityLoc; - cityInfo.규모 = citySize; - cityInfo.이름 = cityName; - - cityInfo.val = '-1'; - - cityInfo.p태수 = false; - cityInfo.p군사 = false; - cityInfo.p종사 = false; - - } - - //주민, 농상치성수 - - - { - var $baseTr = $this.find('tr:eq(1)'); - cityInfo.$주민 = $baseTr.find('td:eq(1)'); - cityInfo.$농업 = $baseTr.find('td:eq(3)'); - cityInfo.$상업 = $baseTr.find('td:eq(5)'); - cityInfo.$치안 = $baseTr.find('td:eq(7)'); - cityInfo.$수비 = $baseTr.find('td:eq(9)'); - cityInfo.$성벽 = $baseTr.find('td:eq(11)'); - - var tmpVal; - - tmpVal = cityInfo.$주민.text().split('/'); - cityInfo.주민 = parseInt(tmpVal[0]); - cityInfo.max주민 = parseInt(tmpVal[1]); - - tmpVal = cityInfo.$농업.text().split('/'); - cityInfo.농업 = parseInt(tmpVal[0]); - cityInfo.max농업 = parseInt(tmpVal[1]); - - tmpVal = cityInfo.$상업.text().split('/'); - cityInfo.상업 = parseInt(tmpVal[0]); - cityInfo.max상업 = parseInt(tmpVal[1]); - - tmpVal = cityInfo.$치안.text().split('/'); - cityInfo.치안 = parseInt(tmpVal[0]); - cityInfo.max치안 = parseInt(tmpVal[1]); - - tmpVal = cityInfo.$수비.text().split('/'); - cityInfo.수비 = parseInt(tmpVal[0]); - cityInfo.max수비 = parseInt(tmpVal[1]); - - tmpVal = cityInfo.$성벽.text().split('/'); - cityInfo.성벽 = parseInt(tmpVal[0]); - cityInfo.max성벽 = parseInt(tmpVal[1]); - - if (cityInfo.주민>cityInfo.max주민*0.9){ cityInfo.$주민.css('color','lightgreen');} - else if (cityInfo.주민>cityInfo.max주민*0.7){ cityInfo.$주민.css('color','yellow');} - else { cityInfo.$주민.css('color','orangered');} - - if (cityInfo.농업>cityInfo.max농업*0.8){ cityInfo.$농업.css('color','lightgreen');} - else if (cityInfo.농업>cityInfo.max농업*0.4){ cityInfo.$농업.css('color','yellow');} - else { cityInfo.$농업.css('color','orangered');} - - if (cityInfo.상업>cityInfo.max상업*0.8){ cityInfo.$상업.css('color','lightgreen');} - else if (cityInfo.상업>cityInfo.max상업*0.4){ cityInfo.$상업.css('color','yellow');} - else { cityInfo.$상업.css('color','orangered');} - - if (cityInfo.치안>cityInfo.max치안*0.8){ cityInfo.$치안.css('color','lightgreen');} - else if (cityInfo.치안>cityInfo.max치안*0.4){ cityInfo.$치안.css('color','yellow');} - else { cityInfo.$치안.css('color','orangered');} - - if (cityInfo.수비>cityInfo.max수비*0.6){ cityInfo.$수비.css('color','lightgreen');} - else if (cityInfo.수비>cityInfo.max수비*0.3){ cityInfo.$수비.css('color','yellow');} - else { cityInfo.$수비.css('color','orangered');} - - if (cityInfo.성벽>cityInfo.max성벽*0.6){ cityInfo.$성벽.css('color','lightgreen');} - else if (cityInfo.성벽>cityInfo.max성벽*0.3){ cityInfo.$성벽.css('color','yellow');} - else { cityInfo.$성벽.css('color','orangered');} - - - cityInfo.remain주민 = cityInfo.주민-cityInfo.max주민; - cityInfo.remain농업 = cityInfo.농업-cityInfo.max농업; - cityInfo.remain상업 = cityInfo.상업-cityInfo.max상업; - cityInfo.remain치안 = cityInfo.치안-cityInfo.max치안; - cityInfo.remain수비 = cityInfo.수비-cityInfo.max수비; - cityInfo.remain성벽 = cityInfo.성벽-cityInfo.max성벽; - - cityInfo.warn주민 = false; - cityInfo.warn농업 = false; - cityInfo.warn상업 = false; - cityInfo.warn치안 = false; - cityInfo.warn수비 = false; - cityInfo.warn성벽 = false; - - if(cityInfo.remain주민 > -10*2000) cityInfo.warn주민 = true; - if(cityInfo.주민 > 0.92*cityInfo.max주민) cityInfo.warn주민 = true; - if(cityInfo.remain농업 > -10*100) cityInfo.warn농업 = true; - if(cityInfo.remain상업 > -10*100) cityInfo.warn상업 = true; - if(cityInfo.remain치안 > -10*100) cityInfo.warn치안 = true; - if(cityInfo.remain수비 > -10*70) cityInfo.warn수비 = true; - if(cityInfo.remain성벽 > -10*70) cityInfo.warn성벽 = true; - - if(cityInfo.warn농업) cityInfo.$농업.append('['+cityInfo.remain농업+']'); - if(cityInfo.warn상업) cityInfo.$상업.append('['+cityInfo.remain상업+']'); - if(cityInfo.warn치안) cityInfo.$치안.append('['+cityInfo.remain치안+']'); - if(cityInfo.warn수비) cityInfo.$수비.append('['+cityInfo.remain수비+']'); - if(cityInfo.warn성벽) cityInfo.$성벽.append('['+cityInfo.remain성벽+']'); - - } - - //태수,군사,종사 - { - var $baseTr = $this.find('tr:eq(2)'); - cityInfo.$태수 = $baseTr.find('td:eq(7)'); - cityInfo.$군사 = $baseTr.find('td:eq(9)'); - cityInfo.$종사 = $baseTr.find('td:eq(11)'); - } - - //기타 - { - - cityInfo.userCnt = $this.find('tr:eq(3) td:eq(1)').text().split(',').length -1; - } - - cityInfo.obj = $this; - cityList[cityInfo.이름] = cityInfo; - }); - - - var $onGenList = $(''); - $onGenList.click(function(){ - loadUser(); - return false; - }); - $('form').append($onGenList); - - - $('table:eq(0) tr:last').after(''); - - - $sort_more = $('#sort_more'); - $sort_more.html('재 정렬 순서 :'); - - var sortIt = function(callback){ - var arCity = []; - $('.cityInfo').each(function(){ - var $this = $(this); - var cityName = $this.data('cityname'); - - var cityInfo = cityList[cityName]; - arCity.push(cityInfo); - }); - - arCity = mergeSort(arCity,callback); - //console.log(arCity); - - var $anchor = $('.anchor'); - //console.log($anchor); - - $('body > br').remove(); - - $('.cityInfo').detach(); - - $.each(arCity,function(idx,val){ - $anchor.before('
'); - $anchor.before(val.obj); - }); - $anchor.before('
'); - - }; - - var $btn; - - $btn = $('').click(function(){ - sortIt(function(a,b){ - return a.이름.localeCompare(b.이름); - }); - }); - $sort_more.append($btn); - - $btn = $('').click(function(){ - sortIt(function(a,b){ - return 1.0*a.주민/a.max주민 - 1.0*b.주민/b.max주민; - }); - }); - $sort_more.append($btn); - - $btn = $('').click(function(){ - sortIt(function(a,b){ - return a.remain주민 - b.remain주민; - }); - }); - $sort_more.append($btn); - - $btn = $('').click(function(){ - sortIt(function(a,b){ - return a.remain농업 - b.remain농업; - }); - }); - $sort_more.append($btn); - - $btn = $('').click(function(){ - sortIt(function(a,b){ - return a.remain상업 - b.remain상업; - }); - }); - $sort_more.append($btn); - - $btn = $('').click(function(){ - sortIt(function(a,b){ - return a.remain치안 - b.remain치안; - }); - }); - $sort_more.append($btn); - - $btn = $('').click(function(){ - sortIt(function(a,b){ - return a.remain수비 - b.remain수비; - }); - }); - $sort_more.append($btn); - - $btn = $('').click(function(){ - sortIt(function(a,b){ - return a.remain성벽 - b.remain성벽; - }); - }); - $sort_more.append($btn); - - $btn = $('').click(function(){ - sortIt(function(a,b){ - return b.userCnt - a.userCnt; - }); - }); - $sort_more.append($btn); - }; - - mainFunc(); + +$(function() { + + var cityList = {}; + var userList = {}; + + var cityGroupOrder = ['하북','중원','서북','서촉','남중','초','오월','동이']; + var city규모 = {특:1,대:2,중:3,소:4,이:5,진:6,관:7,수:8}; + window.cityList = cityList; + window.userList = userList; + + var basicPath = document.location.pathname; + basicPath = basicPath.substring(0, basicPath.lastIndexOf('/'))+'/'; + + + + var mergeSort = function(arr,cmpFunc){ + + if(typeof cmpFunc == "undefined"){ + cmpFunc = function(a,b){ + if(ab) return 1; + return 0; + } + } + + var merge = function(left,right){ + var retVal=[]; + + var leftIdx=0; + var rightIdx=0; + + while(leftIdx'+ + '
'+ + ''+ + '
도시태수군사종사
'+ + '
: '+ + '
'+ + ''+ + ''+ + ''+ + '
'); + $win.hide(); + + $win.css('font-size','9pt'); + + + + $('#fake_form').css('display','inline'); + $('body').append($win); + + $('#inner_table').attr('border','1').attr('cellspacing',"0").attr('cellpadding',"0") + .attr('bordercolordark',"gray").attr('bordercolorlight',"black").attr('align','center') + .css('font-size','13px').css('width','290px'); + + $('#inner_table thead tr'); + + $('#fake_form').submit(function(){ + return false; + }); + + $('#in_frame').load(function(){ + $('#in_frame').contents().find('div').click(function(){$('#city_select').change();}); + }); + + $("#duty_radio").buttonset(); + + var $city_select = $('#city_select'); + $city_select.css('color','white').css('background-color','black'); + + + $city_select.change(function(event){ + if($city_select.val()==null){ + $city_select.val(tmpOldVal); + return false; + } + + if($city_select.val() == tmpOldVal){ + return false; + } + + tmpOldVal = $city_select.val(); + //console.log(tmpOldVal); + var newInfo = subCityList[tmpOldVal]; + var cityInfo = newInfo.city; + + var p태수 = cityInfo.p태수 && currUser.p태수; + var p군사 = cityInfo.p군사 && currUser.p군사; + var p종사 = cityInfo.p종사 && currUser.p종사; + + //console.log(p태수,p군사,p종사); + + $('#duty_type1').button({disabled:!p태수}); + $('#duty_type2').button({disabled:!p군사}); + $('#duty_type3').button({disabled:!p종사}); + + var $태수 = cityInfo.$태수; + var $군사 = cityInfo.$군사; + var $종사 = cityInfo.$종사; + + + + return true; + }); + + + $win.dialog({ + autoOpen:false, + width:1005, + height:680, + buttons:{ + "임명":function(){ + //console.log("임명!"); + + var $checked = $('#duty_radio :radio:checked'); + + if($checked.length==0 || $checked.attr('disabled')=='disabled'){ + alert('직책을 선택해주세요!'); + return false; + } + var type = $checked.attr('value'); + var text = $checked.next().text(); + var userVal = currUser.val; + var userName = currUser.name; + var cityVal = $city_select.val(); + + var cityInfo = subCityList[cityVal].city; + + $.post(basicPath+'j_myBossInfo.php',{ + destCityID:cityVal, + destGeneralID:userVal, + officerLevel:type, + action:'임명' + },function(rawData){ + + cityInfo['p'+text]=false; + var $target = cityInfo.users.find('.mode_'+type); + $target.prop('disabled',true); + $target.css('background','transparent'); + $target.css('border','0'); + $target.css('color',''); + + cityInfo['$'+text].html(userName); + + $win.dialog("close"); + }); + + + }, + "닫기":function(){ + $win.dialog("close"); + } + + } + }); + + + + //console.log($win.parent()); + $win.parent().css('font-size','10pt'); + } + + $('#ext_win').dialog("close").dialog( "option", "position", { my: "center top", at: "center bottom", of: userInfo.$user} ); + + var $innerContent = $('#inner_table .content'); + $innerContent.html(''); + $("#user_name").html(userInfo.name+'['+userInfo.city+']'); + + $('#city_select').html(''); + + $.each(cityList,function(idx,cityInfo){ + var 지역 = cityInfo.지역; + + var p태수 = cityInfo.p태수 && currUser.p태수; + var p군사 = cityInfo.p군사 && currUser.p군사; + var p종사 = cityInfo.p종사 && currUser.p종사; + + var newInfo = { + 지역 : 지역, + 규모 : cityInfo.규모, + 이름 : cityInfo.이름, + val : cityInfo.val, + city : cityInfo, + p태수 : p태수, + p군사 : p군사, + p종사 : p종사 + }; + + //console.log(newInfo); + + if(p태수 || p군사 || p종사){ + if(typeof subCityGroupList[지역] == 'undefined'){ + subCityGroupList[지역] = []; + } + subCityGroupList[지역].push(newInfo); + subCityList[cityInfo.val] = newInfo; + } + + }); + + $.each(cityGroupOrder,function(idx,groupName){ + if(typeof subCityGroupList[groupName] == 'undefined'){ + + return true; + } + + var subList = subCityGroupList[groupName]; + + var $group = $('【 '+groupName+' 】'); + $innerContent.append($group); + + subList.sort(function(a,b){ + + var cmp규모 = city규모[a.규모] - city규모[b.규모]; + if(cmp규모 != 0) return cmp규모; + + return a.이름.localeCompare(b.이름); + }); + var $optgroup = $(''); + + $.each(subList,function(idx,newInfo){ + $optgroup.append(''); + + var cityInfo = newInfo.city; + var $city = $(''+newInfo.이름+''); + + var $태수 = cityInfo.$태수.clone(); + $city.append($태수); + if(!newInfo.p태수){ + $태수.css('color','red'); + } + else{ + $태수.click(function(){ + $('#duty_radio :radio:eq(0)').attr('checked','checked'); + $('#duty_radio :radio').button('refresh'); + }).css('cursor','pointer'); + } + + + var $군사 = cityInfo.$군사.clone(); + $city.append($군사); + if(!newInfo.p군사)$군사.css('color','red'); + else{ + $군사.click(function(){ + $('#duty_radio :radio:eq(1)').attr('checked','checked'); + $('#duty_radio :radio').button('refresh'); + }).css('cursor','pointer'); + } + + var $종사 = cityInfo.$종사.clone(); + $city.append($종사); + if(!newInfo.p종사)$종사.css('color','red'); + else{ + $종사.click(function(){ + $('#duty_radio :radio:eq(2)').attr('checked','checked'); + $('#duty_radio :radio').button('refresh'); + }).css('cursor','pointer'); + } + + $innerContent.append($city); + $city.click(function(){ + $('#city_select').val(newInfo.val).change(); + }); + + }); + + $('#city_select').append($optgroup); + }); + + tmpOldVal = $('#city_select').val(); + $('#city_select').change(); + $('#ext_win').dialog("open"); + }; + + var loadDuty = function(){ + + try{ + $('.for_duty').remove(); + $.get(basicPath+'b_myBossInfo.php',function(rawData){ + $html = $(rawData); + //window.$html = $html; + + var cnt =0; + var $tmpTable = $html.filter('#officer_list').eq(0); + + $selects = $tmpTable.find("select"); + if($selects.length == 0){ + alert("수뇌가 아닙니다!"); + return false; + } + + var setUserAvailable = function($userList,typeName){ + $userList.each(function(idx){ + var $this = $(this); + + var val = $this.val(); + var name = $.trim($this.text()); + + for(var i=name.length-1;i>0;i--){ + if(name[i]=='【'){ + name = $.trim(name.substr(0,i)); + break; + } + } + + if(val == '0'){ + return true; + } + + if(typeof userList[name] != 'undefined'){ + userList[name].val = val; + userList[name][typeName] = true; + } + + }); + }; + + var setCityAvailiable = function($cityList,typeName){ + $cityList.each(function(idx){ + + var $this = $(this); + + var val = $.trim($this.val()); + var name = $.trim($this.text()); + + cityList[name].val = val; + cityList[name][typeName] = true; + }); + } + + $.each(cityList,function(idx,cityInfo){ + cityInfo.p태수=false; + cityInfo.p군사=false; + cityInfo.p종사=false; + }); + + $.each(userList,function(idx,userInfo){ + userInfo.p태수=false; + userInfo.p군사=false; + userInfo.p종사=false; + }); + + setUserAvailable($selects.eq(1).find("option"),"p태수"); + setUserAvailable($selects.eq(3).find("option"),"p군사"); + setUserAvailable($selects.eq(5).find("option"),"p종사"); + + setCityAvailiable($selects.eq(0).find("option"),"p태수"); + setCityAvailiable($selects.eq(2).find("option"),"p군사"); + setCityAvailiable($selects.eq(4).find("option"),"p종사"); + + + $.each(cityList,function(idx,cityInfo){ + + //console.log(cityInfo.users.children()); + + cityInfo.users.children().each(function(idx){ + //console.log(this); + var $this = $(this); + + var username = $this.data('username'); + + var userInfo = userList[username]; + if(!userInfo){ + return true; + } + + if(userInfo.val == '-1'){ + return true; + } + + $name = $this.find('.nameplate'); + + $name.append('
'); + + + var addBtn=function($name,cityInfo,userInfo,type,text,warn){ + + var enabled = cityInfo['p'+text]&&userInfo['p'+text]; + var cityVal = cityInfo.val; + var $btn = $(''); + $btn.addClass('mode_'+type); + $btn.addClass('for_duty'); + + if(!enabled){ + $btn.prop('disabled',true); + $btn.css('background','transparent'); + $btn.css('border','0'); + } + else{ + if(userInfo.is수뇌){ + $btn.css('color','red'); + } + } + + $btn.css('padding','1px 4px'); + $btn.css('margin','0'); + + $btn.click(function(){ + if(userInfo.is수뇌){ + if(!confirm('수뇌입니다. 임명할까요?')){ + return false; + } + } + + $.post(basicPath+'j_myBossInfo.php',{ + destCityID:cityVal, + destGeneralID:userInfo.val, + officerLevel:type, + action:'임명' + },function(rawData){ + + cityInfo['p'+text]=false; + var $target = cityInfo.users.find('.mode_'+type); + $target.prop('disabled',true); + $target.css('background','transparent'); + $target.css('border','0'); + $target.css('color',''); + + cityInfo['$'+text].html(userInfo.name); + }); + }); + + //console.log($btn); + $name.append($btn); + }; + + addBtn($name,cityInfo,userInfo,4,'태수'); + addBtn($name,cityInfo,userInfo,3,'군사'); + addBtn($name,cityInfo,userInfo,2,'종사'); + + //특수 버튼! + if(userInfo.p태수||userInfo.p군사||userInfo.p종사){ + var $btn = $(''); + $btn.addClass('for_duty'); + if(userInfo.is수뇌){ + $btn.css('color','red'); + } + $btn.css('padding','1px 4px'); + $btn.css('margin','0'); + + $btn.click(function(){ + if(userInfo.is수뇌){ + if(!confirm('수뇌입니다. 임명할까요?')){ + return false; + } + } + + extDutyWindow(userInfo); + }); + + $btn.css('border','solid 1px Chocolate').css('background-color','#400000').css('margin-left','4px'); + $btn.css('line-hight','20px').css('color','GhostWhite').css('padding','2px 2px').css('height','18px').css('line-height','8px'); + + //$name.append($btn); + + } + }); + }); + + }); + + + } + catch(a){ + console.log(a); + } + + return false; + }; + + var loadUser = function(){ + $.each(cityList,function(idx,val){ + if(typeof val.users == "undefined"){ + val.obj.append(''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
이 름통무지부 대자 금군 량병 종병 사훈련사기명 령삭턴
'); + + val.users = val.obj.find(".cityUserBody"); + } + else{ + val.users.html(""); + } + }); + + + $.get(basicPath+'b_genList.php',function(rawData){ + var cnt =0; + + var $helper = $('#helper_genlist'); + $helper.html('').append($.parseHTML(rawData)); + + var tmpUsers = $('#general_list tbody tr'); + + tmpUsers.each(function(idx){ + var $this = $(this); + + var $city = $this.children('.i_city'); + $city.remove(); + var cityName = $.trim($city.text()); + + var $name = $this.children('.i_name'); + $name.addClass('nameplate'); + + var name = $name.find('.t_name').text(); + + var $work = $this.children('.i_action'); + + var cityInfo = cityList[cityName]; + if(typeof cityInfo == 'undefined'){ + return true; + } + if(cityInfo.warn주민)$work.html($work.html().split('정착 장려').join('정착 장려')); + if(cityInfo.warn농업)$work.html($work.html().split('농지 개간').join('농지 개간')); + if(cityInfo.warn상업)$work.html($work.html().split('상업 투자').join('상업 투자')); + if(cityInfo.warn치안)$work.html($work.html().split('치안 강화').join('치안 강화')); + if(cityInfo.warn수비)$work.html($work.html().split('수비 강화').join('수비 강화')); + if(cityInfo.warn성벽)$work.html($work.html().split('성벽 보수').join('성벽 보수')); + + + + var $stat = $this.children('.i_stat'); + var stat = $stat.text(); + + var is수뇌 = stat.indexOf('+')>=0; + + $this.data('username',name); + + if(cityList[cityName].$태수.text() == name){ + cityList[cityName].$태수.html('{0}'.format(name)); + } + if(cityList[cityName].$군사.text() == name){ + cityList[cityName].$군사.html('{0}'.format(name)); + } + if(cityList[cityName].$종사.text() == name){ + cityList[cityName].$종사.html('{0}'.format(name)); + } + + userList[name]={ + $city:cityInfo, + city:cityName, + $user:$this, + name:name, + val:'-1', + p태수:false, + p군사:false, + p종사:false, + is수뇌:is수뇌 + }; + + if(cityList[cityName]){ + cityList[cityName].users.append($this); + } + + }); + }); + + if($("#loadDutyBtn").length == 0){ + + var $onBossList = $(''); + $onBossList.click(function(){ + loadDuty(); + return false; + }); + + $('form').append($onBossList); + } + + $('#by_users').show(); + }; + + var mainFunc = function(){ + //대상 추출 + window.cityList = {}; + window.userList = {}; + + $("form").each(function(){ + var $this = $(this); + $this.attr('name','p'+$this.attr('name')); + }); + + $("table").each(function(idx,val){ + $this = $(this); + + + if($this.attr('class')=='tb_layout bg2'){ + $this.addClass('cityInfo'); + } + else{ + return true; + } + + window.$tmpTable = $this; + var cityInfo = {}; + + //이름 추출 + { + + var titleText = $this.find('tr:eq(0)>td:eq(0)').text(); + var loc0 = titleText.indexOf("【"); + var loc1 = titleText.indexOf("|"); + var loc2 = titleText.indexOf("】"); + + var cityLoc = $.trim(titleText.substring(loc0+1,loc1)); + var citySize = $.trim(titleText.substring(loc1+1,loc2)); + var cityName = $.trim(titleText.substring(loc2+1)); + + cityName = cityName.replace("[",""); + cityName = cityName.replace("]",""); + + $this.data('cityname',cityName); + + cityInfo.지역 = cityLoc; + cityInfo.규모 = citySize; + cityInfo.이름 = cityName; + + cityInfo.val = '-1'; + + cityInfo.p태수 = false; + cityInfo.p군사 = false; + cityInfo.p종사 = false; + + } + + //주민, 농상치성수 + + + { + var $baseTr = $this.find('tr:eq(1)'); + cityInfo.$주민 = $baseTr.find('td:eq(1)'); + cityInfo.$농업 = $baseTr.find('td:eq(3)'); + cityInfo.$상업 = $baseTr.find('td:eq(5)'); + cityInfo.$치안 = $baseTr.find('td:eq(7)'); + cityInfo.$수비 = $baseTr.find('td:eq(9)'); + cityInfo.$성벽 = $baseTr.find('td:eq(11)'); + + var tmpVal; + + tmpVal = cityInfo.$주민.text().split('/'); + cityInfo.주민 = parseInt(tmpVal[0]); + cityInfo.max주민 = parseInt(tmpVal[1]); + + tmpVal = cityInfo.$농업.text().split('/'); + cityInfo.농업 = parseInt(tmpVal[0]); + cityInfo.max농업 = parseInt(tmpVal[1]); + + tmpVal = cityInfo.$상업.text().split('/'); + cityInfo.상업 = parseInt(tmpVal[0]); + cityInfo.max상업 = parseInt(tmpVal[1]); + + tmpVal = cityInfo.$치안.text().split('/'); + cityInfo.치안 = parseInt(tmpVal[0]); + cityInfo.max치안 = parseInt(tmpVal[1]); + + tmpVal = cityInfo.$수비.text().split('/'); + cityInfo.수비 = parseInt(tmpVal[0]); + cityInfo.max수비 = parseInt(tmpVal[1]); + + tmpVal = cityInfo.$성벽.text().split('/'); + cityInfo.성벽 = parseInt(tmpVal[0]); + cityInfo.max성벽 = parseInt(tmpVal[1]); + + if (cityInfo.주민>cityInfo.max주민*0.9){ cityInfo.$주민.css('color','lightgreen');} + else if (cityInfo.주민>cityInfo.max주민*0.7){ cityInfo.$주민.css('color','yellow');} + else { cityInfo.$주민.css('color','orangered');} + + if (cityInfo.농업>cityInfo.max농업*0.8){ cityInfo.$농업.css('color','lightgreen');} + else if (cityInfo.농업>cityInfo.max농업*0.4){ cityInfo.$농업.css('color','yellow');} + else { cityInfo.$농업.css('color','orangered');} + + if (cityInfo.상업>cityInfo.max상업*0.8){ cityInfo.$상업.css('color','lightgreen');} + else if (cityInfo.상업>cityInfo.max상업*0.4){ cityInfo.$상업.css('color','yellow');} + else { cityInfo.$상업.css('color','orangered');} + + if (cityInfo.치안>cityInfo.max치안*0.8){ cityInfo.$치안.css('color','lightgreen');} + else if (cityInfo.치안>cityInfo.max치안*0.4){ cityInfo.$치안.css('color','yellow');} + else { cityInfo.$치안.css('color','orangered');} + + if (cityInfo.수비>cityInfo.max수비*0.6){ cityInfo.$수비.css('color','lightgreen');} + else if (cityInfo.수비>cityInfo.max수비*0.3){ cityInfo.$수비.css('color','yellow');} + else { cityInfo.$수비.css('color','orangered');} + + if (cityInfo.성벽>cityInfo.max성벽*0.6){ cityInfo.$성벽.css('color','lightgreen');} + else if (cityInfo.성벽>cityInfo.max성벽*0.3){ cityInfo.$성벽.css('color','yellow');} + else { cityInfo.$성벽.css('color','orangered');} + + + cityInfo.remain주민 = cityInfo.주민-cityInfo.max주민; + cityInfo.remain농업 = cityInfo.농업-cityInfo.max농업; + cityInfo.remain상업 = cityInfo.상업-cityInfo.max상업; + cityInfo.remain치안 = cityInfo.치안-cityInfo.max치안; + cityInfo.remain수비 = cityInfo.수비-cityInfo.max수비; + cityInfo.remain성벽 = cityInfo.성벽-cityInfo.max성벽; + + cityInfo.warn주민 = false; + cityInfo.warn농업 = false; + cityInfo.warn상업 = false; + cityInfo.warn치안 = false; + cityInfo.warn수비 = false; + cityInfo.warn성벽 = false; + + if(cityInfo.remain주민 > -10*2000) cityInfo.warn주민 = true; + if(cityInfo.주민 > 0.92*cityInfo.max주민) cityInfo.warn주민 = true; + if(cityInfo.remain농업 > -10*100) cityInfo.warn농업 = true; + if(cityInfo.remain상업 > -10*100) cityInfo.warn상업 = true; + if(cityInfo.remain치안 > -10*100) cityInfo.warn치안 = true; + if(cityInfo.remain수비 > -10*70) cityInfo.warn수비 = true; + if(cityInfo.remain성벽 > -10*70) cityInfo.warn성벽 = true; + + if(cityInfo.warn농업) cityInfo.$농업.append('['+cityInfo.remain농업+']'); + if(cityInfo.warn상업) cityInfo.$상업.append('['+cityInfo.remain상업+']'); + if(cityInfo.warn치안) cityInfo.$치안.append('['+cityInfo.remain치안+']'); + if(cityInfo.warn수비) cityInfo.$수비.append('['+cityInfo.remain수비+']'); + if(cityInfo.warn성벽) cityInfo.$성벽.append('['+cityInfo.remain성벽+']'); + + } + + //태수,군사,종사 + { + var $baseTr = $this.find('tr:eq(2)'); + cityInfo.$태수 = $baseTr.find('td:eq(7)'); + cityInfo.$군사 = $baseTr.find('td:eq(9)'); + cityInfo.$종사 = $baseTr.find('td:eq(11)'); + } + + //기타 + { + + cityInfo.userCnt = $this.find('tr:eq(3) td:eq(1)').text().split(',').length -1; + } + + cityInfo.obj = $this; + cityList[cityInfo.이름] = cityInfo; + }); + + + var $onGenList = $(''); + $onGenList.click(function(){ + loadUser(); + return false; + }); + $('form').append($onGenList); + + + $('table:eq(0) tr:last').after(''); + + + $sort_more = $('#sort_more'); + $sort_more.html('재 정렬 순서 :'); + + var sortIt = function(callback){ + var arCity = []; + $('.cityInfo').each(function(){ + var $this = $(this); + var cityName = $this.data('cityname'); + + var cityInfo = cityList[cityName]; + arCity.push(cityInfo); + }); + + arCity = mergeSort(arCity,callback); + //console.log(arCity); + + var $anchor = $('.anchor'); + //console.log($anchor); + + $('body > br').remove(); + + $('.cityInfo').detach(); + + $.each(arCity,function(idx,val){ + $anchor.before('
'); + $anchor.before(val.obj); + }); + $anchor.before('
'); + + }; + + var $btn; + + $btn = $('').click(function(){ + sortIt(function(a,b){ + return a.이름.localeCompare(b.이름); + }); + }); + $sort_more.append($btn); + + $btn = $('').click(function(){ + sortIt(function(a,b){ + return 1.0*a.주민/a.max주민 - 1.0*b.주민/b.max주민; + }); + }); + $sort_more.append($btn); + + $btn = $('').click(function(){ + sortIt(function(a,b){ + return a.remain주민 - b.remain주민; + }); + }); + $sort_more.append($btn); + + $btn = $('').click(function(){ + sortIt(function(a,b){ + return a.remain농업 - b.remain농업; + }); + }); + $sort_more.append($btn); + + $btn = $('').click(function(){ + sortIt(function(a,b){ + return a.remain상업 - b.remain상업; + }); + }); + $sort_more.append($btn); + + $btn = $('').click(function(){ + sortIt(function(a,b){ + return a.remain치안 - b.remain치안; + }); + }); + $sort_more.append($btn); + + $btn = $('').click(function(){ + sortIt(function(a,b){ + return a.remain수비 - b.remain수비; + }); + }); + $sort_more.append($btn); + + $btn = $('').click(function(){ + sortIt(function(a,b){ + return a.remain성벽 - b.remain성벽; + }); + }); + $sort_more.append($btn); + + $btn = $('').click(function(){ + sortIt(function(a,b){ + return b.userCnt - a.userCnt; + }); + }); + $sort_more.append($btn); + }; + + mainFunc(); }); \ No newline at end of file