common.js 101 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809
  1. /**
  2. * alertMsg(ErrCode,ErrMsg) 입력받은 메세지 코드의 메세지를 alert으로 화면에 표시
  3. * @param ErrMsg 앞에 붙일 메세지내용
  4. * @param MsgCode 메세지 코드
  5. * @return N/A
  6. * @histroy 2008.01.15 김정원
  7. */
  8. function alertMsg(ErrCode,ErrMsg){
  9. if((ErrCode !='')&&(isNumber(ErrCode))){ //에러메시지가 숫자형 인지 확인한다.
  10. if(ErrCode == "50014"){
  11. alert("데이타 로딩시 포멧에 오류가 있읍니다.");
  12. return;
  13. }else if(ErrCode == "50018"){
  14. if((ErrMsg != null)&&(ErrMsg != "")){
  15. // alert(ErrMsg+"은(는) 필수입력항목입니다.");
  16. alert(ErrMsg+" is required.");
  17. }else{
  18. alert("필수입력항목을 모두 입력하십시오.");
  19. }
  20. return;
  21. }else if(ErrCode == "50019"){
  22. alert("KEY값이 중복되었습니다.");
  23. return;
  24. }else if(ErrCode == "50030"){
  25. alert("해당하는 ColumnID를 찾을 수 없읍니다.");
  26. return;
  27. }else{
  28. alert(ErrCode);
  29. return;
  30. }
  31. }
  32. //에러코드의 타입을 구분한다. 1차로 에러 메시지와 코드를 분리한다.
  33. var codeMsgYN;
  34. var defYN;
  35. var msgRead = "";
  36. //2차로 정의된 에러메시지 인지 구분한다.
  37. var defValue = ErrCode.split("_");
  38. if(defValue[1] == null){
  39. defYN = "N";
  40. }else{
  41. defYN = "Y";
  42. }
  43. //정의된 에러 메시지 이면 정의된 항목을 가져와서 리턴한다.
  44. if(defYN == "Y"){
  45. // var read1 = ErrMsg+" "+msg;
  46. // var read2 = msg+" "+ErrMsg;
  47. switch( ErrCode ){
  48. case "NO_UPLOAD" :
  49. // msg = "업로드할 자료가 없습니다.";
  50. msg = "There is no data to upload.";
  51. break;
  52. case "SAVE_OK" :
  53. // msg = "성공적으로 저장되었습니다.";
  54. msg = "Save process is completed.";
  55. break;
  56. case "DELETE_OK" :
  57. // msg = "성공적으로 삭제되었습니다.";
  58. msg = "Process Deleted.";
  59. break;
  60. case "CANCEL_OK" :
  61. // msg = "성공적으로 취소되었습니다.";
  62. msg = "Process Canceled.";
  63. break;
  64. case "PROCESS_OK":
  65. // msg = "성공적으로 처리되었습니다.";
  66. msg = "Process Completed.";
  67. break;
  68. case "NO_ACCEPT":
  69. // msg = "허용하지 않는 문자열 입니다.";
  70. msg = "The code is not available.";
  71. break;
  72. case "AY_CREATE" :
  73. // msg = "기 등록 자료입니다.";
  74. msg = "already registered data.";
  75. break;
  76. case "AY_PROCESS":
  77. // msg = "기 처리 자료입니다.";
  78. msg = "already processed data.";
  79. break;
  80. case "QF_SAVE" :
  81. // msg = "조회후 저장하십시오.";
  82. msg = "Do you want to save?";
  83. break;
  84. case "QF_UPDATE" :
  85. msg = "Do you want to update?";
  86. break;
  87. case "QF_DELETE" :
  88. // msg = "조회후 삭제하십시오.";
  89. msg = "Do you want to delete?";
  90. break;
  91. case "DPKEY_CHK" :
  92. // msg = "기본KEY가 중복되었습니다.";
  93. msg = "Primary key is overlap.";
  94. break;
  95. case "NO_DATA" :
  96. // msg = "조회할 자료가 없습니다.";
  97. msg = "Here's no data to search.";
  98. break;
  99. case "NO_UPDATE" :
  100. // msg = "수정할 자료가 없습니다.";
  101. msg = "There is no data to update.";
  102. break;
  103. case "NO_DELETE" :
  104. // msg = "삭제할 자료가 없습니다.";
  105. msg = "There is no data to delete.";
  106. break;
  107. case "NO_CHG" :
  108. // msg = "변경된 자료가 없습니다.";
  109. msg = "There is no data modified.";
  110. break;
  111. case "NO_SAVE" :
  112. // msg = "저장할 자료가 없습니다.";
  113. msg = "There is no data to save.";
  114. break;
  115. case "CRCODE_ERR":
  116. // msg = "코드생성에 실패했습니다.";
  117. msg = "There is no generated code.";
  118. break;
  119. case "NO_RIGHT" :
  120. // msg = "권한이 없습니다.";
  121. msg = "There is no Athority";
  122. break;
  123. case "EXCEED_LIMIT":
  124. msg = "한도를 초과했습니다.";
  125. break;
  126. case "NOT_EXCEL":
  127. msg = "EXCEL출력 Tab이 아닙니다.";
  128. break;
  129. case "NO_SESSION":
  130. // msg = "세션이 종료되었습니다. 다시로그인해 주십시오.";
  131. msg = "세션이 종료되었습니다. Please, log in.";
  132. break;
  133. case "FT_PROCESS":
  134. msg = "를(을) 먼저 진행하십시오.";
  135. break;
  136. case "MUST_CHK" :
  137. // msg = "(은)는 필수 입력 항목입니다.";
  138. msg = " is required.";
  139. break;
  140. case "VALUE_CHK" :
  141. // msg = "가(이) 없습니다.";
  142. msg = "There is no ";
  143. break;
  144. case "PARAM_CHK" :
  145. // msg = "을(를) 입력하십시오.";
  146. msg = "Please, input ";
  147. break;
  148. case "SELECT_CHK" :
  149. msg = "Please, select ";
  150. break;
  151. case "PRINT_CHK" :
  152. // msg = "출력할데이타가 없습니다 ";
  153. msg = "no data to print.";
  154. break;
  155. case "CHANG_CHK" :
  156. // msg = "수정할수없습니다 ";
  157. msg = "You can not modified.";
  158. break;
  159. case "SUMMARY_CHK" :
  160. // msg = "입력한값의 합계가 큽니다. 다시확인해주세요";
  161. msg = "The summary is larger than limit. Check once more.";
  162. break;
  163. case "IMPOSSIBLE" :
  164. // msg = "";
  165. msg = "Mission Impossible... Please call to system manager.";
  166. break;
  167. case "SUM_INPUT" :
  168. // msg = "입력한값의 합계가 큽니다. 다시확인해주세요 ";
  169. msg = "The summary is larger than limit. Check once more.";
  170. break;
  171. default:
  172. msg = ErrCode;
  173. }
  174. }else{
  175. msg = ErrCode;
  176. }
  177. // alert(ErrMsg+" "+msg);
  178. alert(msg+" "+ErrMsg);
  179. }
  180. /**
  181. * alertMsg(ErrCode,ErrMsg) 입력받은 메세지 코드의 메세지를 alert으로 화면에 표시
  182. * @param ErrMsg 앞에 붙일 메세지내용
  183. * @param ErrCode 뒤에 붙일 메세지내용
  184. * @return N/A
  185. * @histroy 2008.01.21 ZardLover
  186. */
  187. function alertMsg2(ErrCode,ErrMsg){
  188. if((ErrCode !='')&&(isNumber(ErrCode))){ //에러메시지가 숫자형 인지 확인한다.
  189. if(ErrCode == "50014"){
  190. alert("데이타 로딩시 포멧에 오류가 있읍니다.");
  191. return;
  192. }else if(ErrCode == "50018"){
  193. if((ErrMsg != null)&&(ErrMsg != "")){
  194. // alert(ErrMsg+"은(는) 필수입력항목입니다.");
  195. alert(ErrMsg+" is required.");
  196. }else{
  197. alert("필수입력항목을 모두 입력하십시오.");
  198. }
  199. return;
  200. }else if(ErrCode == "50019"){
  201. alert("KEY값이 중복되었습니다.");
  202. return;
  203. }else if(ErrCode == "50030"){
  204. alert("해당하는 ColumnID를 찾을 수 없읍니다.");
  205. return;
  206. }else{
  207. alert(ErrCode);
  208. return;
  209. }
  210. }
  211. switch( ErrCode ){
  212. case ">=ZERO" :
  213. // msg = "";
  214. msg = "must be greater than or equal to Zero.";
  215. break;
  216. case ">ZERO" :
  217. // msg = "";
  218. msg = "must be greater than Zero.";
  219. break;
  220. case "<=ZERO" :
  221. // msg = "";
  222. msg = "";
  223. break;
  224. default:
  225. msg = ErrCode;
  226. }
  227. alert(ErrMsg + " " + msg);
  228. }
  229. /**
  230. * isNumber(numValue) 숫자 체크 루틴
  231. * @param numValue 숫자
  232. * @return allValid
  233. * @histroy 2008.01.15 김정원
  234. */
  235. function isNumber(numValue)
  236. {
  237. var checkOK = "-0123456789";
  238. var checkStr = numValue;
  239. var allValid = true;
  240. var decPoints = 0;
  241. var allNum = "";
  242. /* 숫자인가? */
  243. for (i = 0; i < checkStr.length; i++)
  244. {
  245. ch = checkStr.charAt(i);
  246. for (j = 0; j < checkOK.length; j++)
  247. if (ch == checkOK.charAt(j))
  248. break;
  249. if (j == checkOK.length)
  250. {
  251. allValid = false;
  252. break;
  253. }
  254. }
  255. return allValid;
  256. }
  257. /**
  258. * MCMS 엑셀다운로드시 헤드에 default로 붙는 값
  259. */
  260. var HMCS_MSG ="";
  261. //var HMCS_MSG ="Hanwha Material Control System Main Module for Version 1.0 ";
  262. function openWin(url, width, height, scroll) {
  263. var result = "false";
  264. inWidth = width;
  265. inHeight = height;
  266. x = screen.availWidth;
  267. y = screen.availHeight;
  268. xtop = Number((y - inHeight)/2);
  269. xleft = Number((x - inWidth)/2);
  270. window.open(url, "search","top="+xtop+",left="+xleft+",width="+inWidth+",height="+inHeight+",SCROLLBARS=" + scroll);
  271. }
  272. /**
  273. * 객체의 tabIndex를 지정한다.
  274. * 파라미터로 받는 Array개체에 들어 오는 순서대로 tabIndex를 지정한다.
  275. * 사용예)
  276. * var f = document.form1;
  277. * var indexObj = [ f.ccc, f.ddd, f.bbb, f.aaa ];
  278. * setTabIndex(indexObj);
  279. */
  280. function setTabIndex(indexObj) {
  281. try {
  282. if( indexObj != null && indexObj.length != null ) {
  283. for( var i = 0 ; i < indexObj.length ; i++ ) {
  284. var obj = indexObj[i];
  285. if( obj.length != null ) {
  286. for( var j = 0 ; j < obj.length ; j++ ) {
  287. obj[j].tabIndex = i + 1;
  288. }
  289. }
  290. else {
  291. obj.tabIndex = i + 1;
  292. }
  293. if( i == indexObj.length - 1 ) {
  294. obj.tabStop = true;
  295. }
  296. }
  297. indexObj[0].focus();
  298. }
  299. }
  300. catch(errorObject) {
  301. showErrorDlg("common_js.setTabIndex()", errorObject);
  302. }
  303. }
  304. /**
  305. * 화면에서 help버튼을 클릭할때 도움말 화면을 보여준다.
  306. * 파라미터 ) 화면의 screen명
  307. * 사용예 ) setHelpName("PURRFQList.screen");
  308. */
  309. function setHelpName(helpName) {
  310. try {
  311. if( document.all['HELP_NAME'] != null ) {
  312. document.all['HELP_NAME'].innerText = helpName;
  313. }
  314. else if( parent.document.all['HELP_NAME'] != null ) {
  315. parent.document.all['HELP_NAME'].innerText = helpName;
  316. }
  317. else if( parent.parent.document.all['HELP_NAME'] != null ) {
  318. parent.parent.document.all['HELP_NAME'].innerText = helpName;
  319. }
  320. else if( parent.parent.parent.document.all['HELP_NAME'] != null ) {
  321. parent.parent.parent.document.all['HELP_NAME'].innerText = helpName;
  322. }
  323. else if( parent.parent.parent.parent.document.all['HELP_NAME'] != null ) {
  324. parent.parent.parent.parent.document.all['HELP_NAME'].innerText = helpName;
  325. }
  326. else if( parent.parent.parent.parent.parent.document.all['HELP_NAME'] != null ) {
  327. parent.parent.parent.parent.parent.document.all['HELP_NAME'].innerText = helpName;
  328. }
  329. } catch(e) {}
  330. }
  331. /**
  332. * ##############################################################################
  333. * Event 관련 function
  334. */
  335. /**
  336. * 객체에 Event에 지정되어 있는 함수에 Event를 추가한다.
  337. * 사용예) form.input_field.onblur = addEvent( form.input_field.onblur, "calAmt()");
  338. * 설명 ) input_field 에 onblur event에 calAmt() 라는 함수를 추가한다.
  339. */
  340. function addEvent(objEvent, addFunctionName) {
  341. if( objEvent == null )
  342. objEvent = "";
  343. var eventScript = objEvent + "";
  344. if( eventScript == "" ) {
  345. eventScript = "\n" + addFunctionName + ";" + "\n";
  346. }
  347. else if( eventScript.substring(0, 8) == "function" ) {
  348. var startIndex = eventScript.indexOf("{");
  349. var endIndex = eventScript.lastIndexOf("}");
  350. eventScript = eventScript.substring(startIndex + 1, endIndex - 1);
  351. eventScript += "\n" + addFunctionName + ";" + "\n";
  352. }
  353. else {
  354. eventScript = "";
  355. }
  356. return new Function( eventScript );
  357. }
  358. /**
  359. * 정수 입력필도로 제어
  360. * 사용예) <INPUT type="text" name="number" value="" onKeyPress="JavaScript:numChk();">
  361. */
  362. function useNumberKey() {
  363. if( (event.keyCode < 48) || (event.keyCode > 57) ) {
  364. if((event.keyCode < 96) || (event.keyCode > 105) ){
  365. event.returnValue = false;
  366. }
  367. }
  368. }
  369. /**
  370. * 소숫점 숫자 입력필드로 제어
  371. * 사용예) <INPUT type="text" name="number" value="" onKeyPress="JavaScript:useFloatNumberKey();">
  372. */
  373. function useFloatNumberKey(){
  374. if( ( (event.keyCode < 48) || (event.keyCode > 57) ) && (event.keyCode != 46) ) {
  375. event.returnValue = false;
  376. }
  377. }
  378. /**
  379. * 팝업 원도우 ESC Key로 닫기
  380. * 사용예)> document.onkeydown = closePopupWindow;
  381. */
  382. function closePopupWindow(e) {
  383. if( event.keyCode == 27 ) {
  384. self.close();
  385. }
  386. return true;
  387. }
  388. /**
  389. * ##############################################################################
  390. * FORM Field Array 관련 function
  391. */
  392. /**
  393. * Array의 length구하기
  394. * 파라미터)> obj: Array객체
  395. * 사용예)> getObjLength(f.checkbox)
  396. */
  397. function getObjLength(obj) {
  398. if( obj == null ) {
  399. return 0;
  400. }
  401. else {
  402. return obj.length == null ? 1 : obj.length;
  403. }
  404. }
  405. /**
  406. * index에 해당하는 Object를 리턴
  407. * 파라미터)> obj: Array객체,index: Array 순번
  408. * 사용예)> getObj(f.checkbox,i)
  409. */
  410. function getObj(obj, index) {
  411. if( obj.length == null ) {
  412. return obj;
  413. }
  414. else {
  415. return obj[index];
  416. }
  417. }
  418. /**
  419. * Array에 들어있는 값과 파라미터 값과 같은 값을 가지고 있는 객체를 리턴
  420. * 파라미터)> obj: Array객체,value: Array안의 값과 비교될 값
  421. * 사용예)> getObjByValue(f.checkbox,'aa')
  422. */
  423. function getObjByValue(obj, value) {
  424. for( var i = 0 ; i < getObjLength(obj) ; i++ ) {
  425. if( getObj(obj, i).value == value ) {
  426. return getObj(obj, i);
  427. }
  428. }
  429. }
  430. /**
  431. * Array에 파라미터 값을 넣는다.
  432. * 파라미터)> obj: Array객체,value: Array안에 들어갈 값
  433. * 사용예)> setObjValue(f.checkbox,'aa')
  434. */
  435. function setObjValue(obj, value) {
  436. if( obj.length == null ) {
  437. obj.value = value;
  438. }
  439. else {
  440. for( var i = 0 ; i < obj.length ; i++ ) {
  441. obj[i].value = value;
  442. }
  443. }
  444. }
  445. /**
  446. * 중복되는 Value를 가지는지 여부를 리턴
  447. * 리턴값 : null => 중복값 없음
  448. * Object Array => 중복하는 객체 Array
  449. */
  450. function getDuplicatedObjValue(obj) {
  451. if( obj.length == null ) {
  452. return null;
  453. }
  454. else {
  455. for( var i = 0 ; i < obj.length ; i++ ) {
  456. for( var j = i + 1 ; j < obj.length ; j++ ) {
  457. if( obj[i].value == obj[j].value ) {
  458. return new Array(obj[i], obj[j]);;
  459. }
  460. }
  461. }
  462. return null;
  463. }
  464. }
  465. /**
  466. * ##############################################################################
  467. * FORM 관련 function
  468. */
  469. var IS_SUBMIT = false;
  470. function formSubmit( formObject, varShowLayer ) {
  471. var isShowLayer = false;
  472. if( varShowLayer != null && varShowLayer != false ) {
  473. isShowLayer = true;
  474. }
  475. try {
  476. if( isShowLayer ) {
  477. showFormSubmitLayer();
  478. }
  479. //alert("formObject.isSubmit==> "+formObject.isSubmit);
  480. if( formObject.isSubmit == null )
  481. formObject.issubmit = false;
  482. if( !formObject.isSubmit ) {
  483. formObject.issubmit = true;
  484. if( formObject.method.toLowerCase() == "get" )
  485. formObject.action = getDummyUrl(formObject.action);
  486. formObject.submit();
  487. }
  488. else {
  489. setWindowStatus(window, "전송중입니다. 잠시만 기다려 주십시요.", 5);
  490. }
  491. }
  492. catch(errorObject) {
  493. showErrorDlg(errorObject);
  494. }
  495. }
  496. /**
  497. * 전송중 메세지 이미지 레이어 나타나게 함.
  498. */
  499. function showFormSubmitLayer(){
  500. try {
  501. if( document.all.FormSendLayer != null ) {
  502. var xPos = document.body.clientWidth / 2 + document.body.scrollLeft - 145;
  503. var yPos = document.body.clientHeight / 2 + document.body.scrollTop - 44;
  504. document.all.FormSendLayer.style.posLeft = xPos;
  505. document.all.FormSendLayer.style.posTop = yPos;
  506. document.all.FormSendLayer.style.visibility = "visible";
  507. document.all.FormSendLayer.style.zIndex = 100;
  508. }
  509. }
  510. catch(errorObject) {
  511. showErrorDlg(errorObject);
  512. }
  513. }
  514. /**
  515. * 폼전송시 중복 전송 방지기능 초기화
  516. */
  517. function resetFormSubmit(){
  518. try {
  519. if( IS_SUBMIT ) {
  520. IS_SUBMIT = false;
  521. window.status = "";
  522. hideFormSubmitLayer();
  523. }
  524. }
  525. catch(errorObject) {
  526. showErrorDlg(errorObject);
  527. }
  528. }
  529. /**
  530. * 전송중 메세지 이미지 레이어 숨김.
  531. */
  532. function hideFormSubmitLayer() {
  533. try {
  534. if( document.all.FormSendLayer != null ) {
  535. document.all.FormSendLayer.style.visibility = "hidden";
  536. }
  537. }
  538. catch(errorObject) {
  539. showErrorDlg(errorObject);
  540. }
  541. }
  542. /**
  543. * Form안에 속하는 필수항목(Object)들이 모두 입력되었는지를 체크
  544. * return true : 필수 항목이 입력되지 않은 항목이 존재
  545. * return false : 필수 항목이 입력되지 않은 항목이 없음
  546. */
  547. function doValidFormRequired(formObject) {
  548. var firstValidatedElement = null;
  549. var isExistValidatedElement = false;
  550. var msg = "필수항목을 입력 바랍니다.\n\n항목명 : ";
  551. var ischk = "";
  552. try {
  553. for( var i = 0 ; i < formObject.elements.length ; i++ ) {
  554. var formElement = formObject.elements[i];
  555. var formElementValue = "";
  556. switch(formElement.type) {
  557. case 'text' :
  558. formElementValue = formElement.value;
  559. ischk = doCheckMaxSize(formElement);
  560. break;
  561. case 'hidden' :
  562. case 'password' :
  563. case 'textarea' :
  564. formElementValue = formElement.value;
  565. break;
  566. case 'select-one' :
  567. formElementValue = getSelectedValue(formElement);
  568. break;
  569. case 'radio' :
  570. formElementValue = getCheckedValue(formElement);
  571. break;
  572. case 'checkbox' :
  573. formElementValue = isChecked(formElement);
  574. break;
  575. case 'select-multiple' :
  576. formElementValue = isSelected(formElement);
  577. break;
  578. }
  579. if( formElement.getAttribute("requiredChk") != '' && formElement.getAttribute("required") != null) {
  580. if( formElementValue == "" ){
  581. isExistValidatedElement = true;
  582. msg = "필수항목을 입력 바랍니다.\n\n항목명 : ";
  583. if( formElement.desc == null )
  584. msg += formElement.name;
  585. else
  586. msg += formElement.desc;
  587. alert(msg);
  588. formElement.focus();
  589. return false;
  590. }
  591. }
  592. if(ischk != ""){
  593. msg = "항목의 길이를 확인 바랍니다.\n\n항목명 : ";
  594. isExistValidatedElement = true;
  595. if( firstValidatedElement == null )
  596. firstValidatedElement = formElement;
  597. if( formElement.desc == null )
  598. msg += formElement.name;
  599. else
  600. msg += formElement.desc;
  601. msg += ischk;
  602. alert(msg);
  603. formElement.focus();
  604. return false;
  605. }
  606. }
  607. return true;
  608. }
  609. catch(errorObject) {
  610. showErrorDlg("common_js.doValidFormRequired()", errorObject);
  611. }
  612. }
  613. function doCheckMaxSize(obj){
  614. var max_length = obj.getAttribute("maxlength");
  615. var real_length = doValidLength(obj.value);
  616. var msg = "";
  617. if(real_length > max_length){
  618. msg = "\n => 최대: " + max_length + "\n => 현재: " +real_length;
  619. }
  620. return msg;
  621. }
  622. /**
  623. * 한글, 영문 포함해서 byte수 계산
  624. */
  625. function doValidLength(str) {
  626. var i = 0;
  627. var li_byte = 0;
  628. var ls_one_char = "";
  629. for(i=0 ; i<str.length ; i++) {
  630. ls_one_char = str.charAt(i);
  631. if(escape(ls_one_char).length > 4)
  632. li_byte += 3;
  633. else
  634. li_byte += 1;
  635. }
  636. return li_byte;
  637. }
  638. /**
  639. * URL에 "dummy=[날짜 + 시간]"에 파라미터를 붙여서 리턴한다.
  640. */
  641. function getDummyUrl(url) {
  642. var checkExt = [ ".screen?", ".jsp?" ];
  643. var isExistParameter = false;
  644. for( var i = 0 ; i < checkExt.length ; i++ ) {
  645. if( url.indexOf(checkExt[i]) != -1 ) {
  646. isExistParameter = true;
  647. break;
  648. }
  649. }
  650. if( !isExistParameter )
  651. url = url + "?dummy=" + getDateTime();
  652. else
  653. url = url + "&dummy=" + getDateTime();
  654. return url;
  655. }
  656. /**
  657. * ##############################################################################
  658. * WINDOW 관련 function
  659. */
  660. function setWindowStatus(win, msg, timeout) {
  661. try {
  662. setTimeout("clearWindowStatus()", (timeout * 1000));
  663. windowObject.status = msg;
  664. }
  665. catch(errorObject) {
  666. }
  667. }
  668. function clearWindowStatus() {
  669. window.status = "";
  670. }
  671. /**
  672. * 윈도우를 띄울때 화면의 중앙에 위치시킨다.
  673. * 파라미터)> url: 주소, windowName: 윈도우 이름, windowWidth: 팝업 윈도우의 가로 크기, windowHeight: 팝업 윈도우의 세로 크기, windowFeatures: 상태값)
  674. * 사용예)> openWindowCenter( getDummyUrl("/cop/COPSPInputNewJipCodeForm.screen?dept_cd="+f.dept_cd.value), "compare_table_view", 410, 270, "toolbar=no,directories=no,status=no,scrollbars=no,resize=no,menubar=no" );
  675. */
  676. function openWindowCenter(url, windowName, windowWidth, windowHeight, windowFeatures) {
  677. try {
  678. if( windowFeatures == null || windowFeatures == "" )
  679. windowFeatures = "toolbar=no,directories=no,status=no,scrollbars=yes,resize=no,menubar=no";
  680. var xPos = (screen.availWidth - windowWidth) / 2;
  681. var yPos = (screen.availHeight - windowHeight) / 2;
  682. var win = window.open( url , windowName, "top=" + yPos + ",left=" + xPos + ",width=" + windowWidth + ",height=" + windowHeight + "," + windowFeatures);
  683. //win.moveTo(xPos, yPos);
  684. win.focus();
  685. return win;
  686. }
  687. catch(errorObject) {
  688. showErrorDlg("common_js.opwnWindowCenter()", errorObject);
  689. }
  690. }
  691. /**
  692. * ##############################################################################
  693. * 날짜 관련 function
  694. */
  695. /**
  696. * 년월일 시분초 를 얻는다.
  697. * 사용예)> var timeval = getDateTime();
  698. */
  699. function getDateTime() {
  700. return getDate() + "" + getTime();
  701. }
  702. /**
  703. * 년월일을 얻는다.
  704. * 사용예)> var timeval = getDate();
  705. */
  706. function getDate() {
  707. var date = new Date();
  708. var year = date.getYear();
  709. var month = date.getMonth() + 1;
  710. var day = date.getDate();
  711. if( year < 1000 ) {
  712. year += 1900;
  713. }
  714. if( month < 10 ) {
  715. month = "0" + month;
  716. }
  717. if( day < 10 ) {
  718. day = "0" + day;
  719. }
  720. return "" + year + month+ day;
  721. }
  722. /**
  723. * 현재 년을 얻는다.
  724. */
  725. function get_year()
  726. {
  727. var date = new Date();
  728. var year = date.getYear();
  729. if( year < 1000 )
  730. {
  731. year += 1900;
  732. }
  733. return year ;
  734. }
  735. /**
  736. * 현재 월을 얻는다.
  737. */
  738. function get_month()
  739. {
  740. var date = new Date();
  741. var month = date.getMonth() + 1;
  742. if( month < 10 ) {
  743. month = "0" + month;
  744. }
  745. return month ;
  746. }
  747. /**
  748. * 현재 일을 얻는다.
  749. */
  750. function get_day()
  751. {
  752. var date = new Date();
  753. var day = date.getDate();
  754. if( day < 10 ) {
  755. day = "0" + day;
  756. }
  757. return day;
  758. }
  759. /**
  760. * 시분초를 얻는다.
  761. * 사용예)> var timeval = getDate();
  762. */
  763. function getTime() {
  764. var date = new Date();
  765. var hour = date.getHours();
  766. var minute = date.getMinutes();
  767. var second = date.getSeconds();
  768. if( hour < 10 )
  769. hour = "0" + hour;
  770. if( minute < 10 )
  771. minute = "0" + minute;
  772. if( second < 10 )
  773. second = "0" + second;
  774. return "" + hour + minute + second;
  775. }
  776. /**
  777. * 날자를 입력받아 입력받은 포맷으로 바꿔준다.
  778. * 사용예)>getFormatDateTime(saveDate, "symbol")
  779. */
  780. function getFormatDateTime(dateTime, format) {
  781. var KOREAN = [ "년 ", "월 ", "일 ", "시 ", "분 ", "초 " ];
  782. var SYMBOL = [ "-", "-", " ", ":", ":", "" ];
  783. var useArray;
  784. if( format.toUpperCase() == "KOREAN" )
  785. useArray = KOREAN;
  786. else if( format.toUpperCase() == "SYMBOL" )
  787. useArray = SYMBOL;
  788. var str = "";
  789. if( dateTime.length == 8 || dateTime.length == 14 ) {
  790. str += dateTime.substring(0, 4) + useArray[0];
  791. str += dateTime.substring(4, 6) + useArray[1];
  792. str += dateTime.substring(6, 8) + useArray[2];
  793. if( dateTime.length == 14 ) {
  794. str += dateTime.substring( 8, 10) + useArray[3];
  795. str += dateTime.substring(10, 12) + useArray[4];
  796. str += dateTime.substring(12, 14) + useArray[5];
  797. }
  798. }
  799. return str;
  800. }
  801. /**
  802. * 해당 년월의 마지막 일자를 리턴
  803. */
  804. function getLastDay(year, month) {
  805. var Last_DAY = new Array( 31, // 1?
  806. 28, // 2?
  807. 31, // 3?
  808. 30, // 4?
  809. 31, // 5?
  810. 30, // 6?
  811. 31, // 7?
  812. 31, // 8?
  813. 30, // 9?
  814. 31, // 10?
  815. 30, // 11?
  816. 31 ); // 12?
  817. // 윤년
  818. var a_leap_year;
  819. if( year % 4 == 0 && year % 100 != 0 )
  820. a_leap_year = true;
  821. else
  822. a_leap_year = false;
  823. if( year % 1000 == 0 )
  824. MONTH = true;
  825. // 2월의 값을 윤년여부에 따라 변환.
  826. Last_DAY[1] = (a_leap_year) ? 29 : 28 ;
  827. return Last_DAY[month];
  828. }
  829. /**
  830. /**
  831. * ##############################################################################
  832. * 문자열 관련 function
  833. */
  834. /**
  835. * Object의 문자열 byte 길이를 리턴.
  836. * 파라미터)> object: 객체이름
  837. * 사용예)> getObjectByteLength(f.text)
  838. */
  839. function getObjectByteLength(object) {
  840. var len = 0;
  841. if( object == null || object.value == null )
  842. return 0;
  843. return getByteLength(object.value);
  844. }
  845. /**YMI 2007-09-19 추가
  846. * Object의 문자열 byte 길이를 리턴.
  847. * 파라미터)> str: String 값
  848. * 사용예)> getStringByteLength(str)
  849. */
  850. function getStringByteLength(object) {
  851. var len = 0;
  852. if( object == null)
  853. return 0;
  854. return getByteLength(object);
  855. }
  856. /**
  857. * 문자열을 입력받아 byte 길이를 리턴.
  858. * 파라미터)> str: 문자열
  859. * 사용예)> getByteLength("우리나라")
  860. */
  861. function getByteLength(str) {
  862. var len = 0;
  863. for( var i = 0 ; i < str.length ; i++ ) {
  864. var c = escape(str.charAt(i));
  865. if ( c.length == 1 )
  866. len ++;
  867. else if( c.indexOf("%u") != -1 )
  868. len += 2;
  869. else if( c.indexOf("%") != -1 )
  870. len += c.length/3;
  871. }
  872. return len;
  873. }
  874. /**
  875. * 사업자번호를 입력받아 체크
  876. * 파라미터)> str: 사업자번호
  877. * 사용예)> chkVenderNum("123-81-23456")
  878. */
  879. function chkVenderNum(str) {
  880. var strNumb = str;
  881. if( strNumb.length != 10 ) {
  882. return false;
  883. }
  884. sumMod = 0;
  885. sumMod += parseInt(strNumb.substring(0,1));
  886. sumMod += parseInt(strNumb.substring(1,2)) * 3 % 10;
  887. sumMod += parseInt(strNumb.substring(2,3)) * 7 % 10;
  888. sumMod += parseInt(strNumb.substring(3,4)) * 1 % 10;
  889. sumMod += parseInt(strNumb.substring(4,5)) * 3 % 10;
  890. sumMod += parseInt(strNumb.substring(5,6)) * 7 % 10;
  891. sumMod += parseInt(strNumb.substring(6,7)) * 1 % 10;
  892. sumMod += parseInt(strNumb.substring(7,8)) * 3 % 10;
  893. sumMod += Math.floor(parseInt(strNumb.substring(8,9)) * 5 / 10);
  894. sumMod += parseInt(strNumb.substring(8,9)) * 5 % 10;
  895. sumMod += parseInt(strNumb.substring(9,10));
  896. if( sumMod % 10 != 0 ) {
  897. return false;
  898. }
  899. return true;
  900. }
  901. /**
  902. * 주민등록번호 체크
  903. */
  904. function chkRegNum(str) {
  905. if( str.length != 13 ) {
  906. return false;
  907. }
  908. var reg_str = str.substring(0, 6) + "-" + str.substring( 6, 13);
  909. var sum = 0;
  910. var mod = 0;
  911. var yearIn = 0;
  912. var monthIn = 0;
  913. var sex = 0;
  914. var dateIn = 0;
  915. for( i = 0 ; i < 13 ; i++ ) {
  916. if( i == 0 )
  917. yearIn += parseInt(reg_str.charAt(i)) * 10;
  918. if( i == 1 )
  919. yearIn += parseInt(reg_str.charAt(i));
  920. if( i == 2 )
  921. monthIn += parseInt(reg_str.charAt(i)) * 10;
  922. if( i == 3 )
  923. monthIn += parseInt(reg_str.charAt(i));
  924. if( i == 4 )
  925. dateIn += parseInt(reg_str.charAt(i)) * 10;
  926. if( i == 5 )
  927. dateIn += parseInt(reg_str.charAt(i));
  928. if( i == 7 )
  929. sex = parseInt(reg_str.charAt(i));
  930. if( i < 6 )
  931. sum += parseInt(reg_str.charAt(i)) * (i + 2);
  932. if( i > 6 && i < 9 )
  933. sum += parseInt(reg_str.charAt(i)) * (i + 1);
  934. if( i > 8 )
  935. sum += parseInt(reg_str.charAt(i)) * (i - 7);
  936. }
  937. mod = 11 - (sum % 11);
  938. if( (11 - (sum % 11)) >= 10 ) {
  939. mod -= 10;
  940. }
  941. if( mod != parseInt(reg_str.charAt(13)) ) {
  942. return false;
  943. }
  944. if( monthIn < 1 || monthIn > 12 || dateIn < 1 || dateIn > 31 ) {
  945. return false;
  946. }
  947. if( (monthIn == 4 || monthIn == 6 || monthIn == 9 || monthIn == 11 ) && dateIn > 30 ) {
  948. return false;
  949. }
  950. if( monthIn == 2 && dateIn > 29 ) {
  951. return false;
  952. }
  953. if( sex != 1 && sex != 2 && sex != 3 && sex != 4 ) { // 1, 3:?? 2, 4:??
  954. return false;
  955. }
  956. return true;
  957. }
  958. /**
  959. * 전화번호 필드의 숫자여부와 사이즈 체크
  960. * 파라미터)> form1.tel_1: 객체이름, size: 체크될 size
  961. * 사용예) checkTel(form1.tel_1, 3);
  962. */
  963. function checkTel(obj, size) {
  964. if( isDigitValue(obj.value) && getByteLength(obj.value) >= size )
  965. return true;
  966. return false;
  967. }
  968. /**
  969. * Input 폼 필드의 내용이 비어 있는지 체크
  970. * 파라미터)>obj: 객체이름
  971. * 사용예) if( !isEmpty(form1.message) )
  972. * Error 처리
  973. */
  974. function isEmpty( obj ) {
  975. var temp = obj.value;
  976. if( temp.trim() == "" ) {
  977. return true;
  978. }
  979. return false;
  980. }
  981. /**
  982. * String의 특성별 유효성 체크
  983. * 파라미터)>str: 입력된 값, type: 유형
  984. * 사용예) chkString( f.loginname.value, "ID") : 로그인아이디가 영문자/숫자만 입력되었는지 확인
  985. * 사용예) chkString( f.age.value, "DIGIT") : 나이가 숫자로만 입력되었는지 확인
  986. */
  987. function chkString( str , type ) {
  988. if( str != "" ) {
  989. type = type.toUpperCase();
  990. count = 0;
  991. roof = 0;
  992. if( type == "DIGIT" ) {
  993. cp_string = "1234567890";
  994. roof = 10;
  995. }
  996. else if( type = "ID" ) {
  997. cp_string = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
  998. roof = 26 + 26 + 10;
  999. }
  1000. for( i = 0 ; i < roof ; i++ ) {
  1001. for( j = 0 ; j < str.length ; j++ ) {
  1002. if( cp_string.charAt(i) == str.charAt(j) ) {
  1003. count++;
  1004. }
  1005. }
  1006. }
  1007. if( count == str.length ) {
  1008. return true;
  1009. }
  1010. else {
  1011. return false;
  1012. }
  1013. }
  1014. return false;
  1015. }
  1016. /**
  1017. * Object의 value가 숫자로만 되어있는지 체크한다.
  1018. * 파라미터)>obj: 객체이름
  1019. * 사용예) if( isDigitObject(form1.num) )
  1020. */
  1021. function isDigitObject(obj){
  1022. return isDigitValue(obj.value);
  1023. }
  1024. /**
  1025. * value가 숫자로만 되어있는지 체크한다.
  1026. * 파라미터)>value: 입력된 값
  1027. * 사용예) if( isDigitValue(form1.num.value) )
  1028. */
  1029. function isDigitValue(value) {
  1030. try {
  1031. inputStr = value;
  1032. for( var i = 0 ; i < inputStr.length ; i++ ) {
  1033. var oneChar = inputStr.charAt(i)
  1034. if (oneChar < "0" || oneChar > "9") {
  1035. return false;
  1036. }
  1037. }
  1038. return true;
  1039. }
  1040. catch(errorObject) {
  1041. showErrorDlg("common_js.isDigitValue()", errorObject);
  1042. return false;
  1043. }
  1044. }
  1045. /**
  1046. * 메일형식 체크
  1047. * 파라미터)>strEmail: 입력된 메일
  1048. * 사용예) if( isDigitValue(form1.num.value) )
  1049. */
  1050. function checkEmail(strEmail) {
  1051. var arrMatch = strEmail.match(/^(\".*\"|[A-Za-z0-9_-]([A-Za-z0-9_-]|[\+\.])*)@(\[\d{1,3}(\.\d{1,3}){3}]|[A-Za-z0-9][A-Za-z0-9_-]*(\.[A-Za-z0-9][A-Za-z0-9_-]*)+)$/);
  1052. if( arrMatch == null ) {
  1053. return false;
  1054. }
  1055. var arrIP = arrMatch[2].match(/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/);
  1056. if( arrIP != null ) {
  1057. for( var i = 1 ; i <= 4 ; i++ ) {
  1058. if( arrIP[i] > 255 ) {
  1059. return false;
  1060. }
  1061. }
  1062. }
  1063. return true;
  1064. }
  1065. /**
  1066. * 전화번호 형식 체크 20040707 @monoeye : Submit용 전화번호 체크 루틴
  1067. * 파라미터)>strTelno: 입력된 전화번호
  1068. * 사용예) if( checkTelno(form1.telnum.value) )
  1069. */
  1070. function checkTelno(strTelno) {
  1071. for (var i = 0 ; i < strTelno.length ; i++){
  1072. if(isNaN(parseInt(strTelno.charAt(i))) && strTelno.charAt(i)!='-'){
  1073. return false;
  1074. }
  1075. }
  1076. return true;
  1077. }
  1078. /**
  1079. * String이 한글로만 되어있는지 검사
  1080. * 파라미터)>str: 입력된 값
  1081. * if( isKoreanValue(form1.num.value) )
  1082. */
  1083. function isKoreanValue( str ) {
  1084. if( str == null )
  1085. return false ;
  1086. for( var i = 0 ; i < str.length ; i++ ) {
  1087. var c = str.charCodeAt(i);
  1088. //( 0xAC00 <= c && c <= 0xD7A3 ) 초중종성이 모인 한글자
  1089. //( 0x3131 <= c && c <= 0x318E ) 자음 모음
  1090. if( !( ( 0xAC00 <= c && c <= 0xD7A3 ) || ( 0x3131 <= c && c <= 0x318E ) ) ) {
  1091. return false ;
  1092. }
  1093. }
  1094. return true;
  1095. }
  1096. /**
  1097. * String Object에 trim() 메서드 추가
  1098. * 사용예) str.trim();
  1099. */
  1100. String.prototype.trim = function() {
  1101. return this.replace(/(^\s*)|(\s*$)/g, "");
  1102. }
  1103. String.prototype.bytes = function() {
  1104. var str = this;
  1105. var l = 0;
  1106. for (var i=0; i<str.length; i++) l += (str.charCodeAt(i) > 128) ? 2 : 1;
  1107. return l;
  1108. }
  1109. function replaceStr(str,out,add) {
  1110. var temp = "" + str;
  1111. while (temp.indexOf(out)>-1) {
  1112. pos= temp.indexOf(out);
  1113. temp = "" + (temp.substring(0, pos) + add +
  1114. temp.substring((pos + out.length), temp.length));
  1115. }
  1116. return temp;
  1117. }
  1118. /**
  1119. * 공백을 지워서 obj 값을 반환한다.
  1120. * 파라미터)>obj: 객체이름
  1121. * 사용예) set_removeAllSpace(f.tel_no);
  1122. */
  1123. function set_removeAllSpace(obj)
  1124. {
  1125. var position;
  1126. position = obj.value.indexOf(" ");
  1127. while (position != -1){
  1128. obj.value = obj.value.replace(" ", "");
  1129. position = obj.value.indexOf(" ");
  1130. }
  1131. return obj.value;
  1132. }
  1133. /**
  1134. * 공백을 지워서 str 반환한다.
  1135. * 파라미터)>str: 문자열
  1136. * 사용예) set_removeAllSpace("abc d");
  1137. */
  1138. function get_removeAllSpace(str)
  1139. {
  1140. var position;
  1141. position = str.indexOf(" ");
  1142. while (position != -1){
  1143. str = str.replace(" ", "");
  1144. position = str.indexOf(" ");
  1145. }
  1146. return str;
  1147. }
  1148. /*-------------------------------------------------------------------------
  1149. parseInt_isNaN()
  1150. Spec : parseInt?? NaN?? 0? ???? ??? ?? ????
  1151. Argument : ('123')
  1152. Return : int
  1153. Example : var intVal = parseInt_isNaN("1234");
  1154. -------------------------------------------------------------------------*/
  1155. function parseInt_isNaN(str) {
  1156. if( isNaN( parseInt(str) ) ) {
  1157. return 0;
  1158. }
  1159. else {
  1160. return parseInt(str);
  1161. }
  1162. }
  1163. /**
  1164. * URLDecode
  1165. * http://www.ietf.org/rfc/rfc2396.txt
  1166. */
  1167. function URLDecode(encoded)
  1168. {
  1169. // Replace + with ' '
  1170. // Replace %xx with equivalent character
  1171. // Put [ERROR] in output if %xx is invalid.
  1172. var HEXCHARS = "0123456789ABCDEFabcdef";
  1173. var plaintext = "";
  1174. var i = 0;
  1175. while (i < encoded.length) {
  1176. var ch = encoded.charAt(i);
  1177. if (ch == "+") {
  1178. plaintext += " ";
  1179. i++;
  1180. } else if (ch == "%") {
  1181. if (i < (encoded.length-2)
  1182. && HEXCHARS.indexOf(encoded.charAt(i+1)) != -1
  1183. && HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) {
  1184. plaintext += unescape( encoded.substr(i,3) );
  1185. i += 3;
  1186. } else {
  1187. alert( 'Bad escape combination near ...' + encoded.substr(i) );
  1188. plaintext += "%[ERROR]";
  1189. i++;
  1190. }
  1191. } else {
  1192. plaintext += ch;
  1193. i++;
  1194. }
  1195. } // while
  1196. return plaintext;
  1197. }
  1198. /**
  1199. * ##############################################################################
  1200. * 숫자 관련
  1201. */
  1202. /**
  1203. * Float 숫자의 곱셈 처리에 JavaScript 버그를 피하기 위해서 사용하는 함수
  1204. * 파라미터)>num_1: 곱하게 될 수, num_2: 곱하게 될 수
  1205. * 사용예) multiplyFloat(0.1, 0.1);
  1206. */
  1207. function multiplyFloat(num_1, num_2) {
  1208. var f_num_1 = "";
  1209. var f_num_2 = "";
  1210. var l_num_1 = "";
  1211. var l_num_2 = "";
  1212. var r_num_1 = "";
  1213. var r_num_2 = "";
  1214. var dotIndex_1;
  1215. var dotIndex_2;
  1216. var point = 0;
  1217. var result = "";
  1218. try {
  1219. f_num_1 = parseFloat(num_1, 10) + "";
  1220. f_num_2 = parseFloat(num_2, 10) + "";
  1221. if( f_num_1 < 0 )
  1222. minus_1 = true;
  1223. if( f_num_2 < 0 )
  1224. minus_2 = true;
  1225. dotIndex_1 = f_num_1.indexOf('.');
  1226. dotIndex_2 = f_num_2.indexOf('.');
  1227. if( dotIndex_1 > 0 ) {
  1228. l_num_1 = f_num_1.substring(0, dotIndex_1);
  1229. r_num_1 = f_num_1.substring(dotIndex_1 + 1, f_num_1.length);
  1230. }
  1231. else {
  1232. l_num_1 = f_num_1;
  1233. }
  1234. if( dotIndex_2 > 0 ) {
  1235. l_num_2 = f_num_2.substring(0, dotIndex_2);
  1236. r_num_2 = f_num_2.substring(dotIndex_2 + 1, f_num_2.length);
  1237. }
  1238. else {
  1239. l_num_2 = f_num_2;
  1240. }
  1241. point = r_num_1.length + r_num_2.length;
  1242. var temp = (parseInt(l_num_1 + r_num_1, 10) * parseInt(l_num_2 + r_num_2, 10)) + "";
  1243. /*
  1244. alert(l_num_1 + r_num_1);
  1245. alert(l_num_2 + r_num_2);
  1246. alert(temp);
  1247. alert(temp.length);
  1248. alert(point);
  1249. */
  1250. if( temp.length > point ) {
  1251. result = parseFloat(temp.substring(0, temp.length - point) + "." + temp.substring(temp.length - point, temp.length), 10);
  1252. }
  1253. else if( temp.length == point ) {
  1254. result = parseFloat("0." + temp, 10);
  1255. }
  1256. else {
  1257. var size = point - temp.length;
  1258. for( var i = 0 ; i < size ; i++ ) {
  1259. temp = "0" + temp;
  1260. }
  1261. result = parseFloat("0." + temp, 10);
  1262. }
  1263. return result;
  1264. }
  1265. catch(errorObject) {
  1266. showErrorDlg("common_js.multiplyFloat()", errorObject);
  1267. return Nan;
  1268. }
  1269. }
  1270. /**
  1271. * 숫자를 한글로 변환한다.
  1272. * 파라미터)>num: 숫자
  1273. * 사용예) numberToHangul(1234);
  1274. */
  1275. function numberToHangul(num) {
  1276. bigUnitArray = new Array( "", "?", "?", "?");
  1277. unitArray = new Array( "", "?", "?", "?");
  1278. hanArray = new Array( "", "?", "?", "?", "?", "?", "?", "?", "?", "?" );
  1279. splitedNum = new Array();
  1280. pos= num.length;
  1281. idx = 0;
  1282. while(true) {
  1283. if( pos - 4 > 0 ) {
  1284. splitedNum[idx] = num.substring(pos-4, pos);
  1285. }
  1286. else {
  1287. splitedNum[idx] = num.substring(0, pos);
  1288. break;
  1289. }
  1290. pos = pos-4;
  1291. idx++;
  1292. }
  1293. han = "";
  1294. splietedNumSize = splitedNum.length;
  1295. for( j = splietedNumSize -1 ; j >= 0 ; j-- ) {
  1296. tmp = splitedNum[j];
  1297. tmplen = splitedNum[j].length;
  1298. for( i = tmplen ; i > 0 ; i-- ) {
  1299. n = tmp.charAt(tmplen - i);
  1300. if( n == "0" )
  1301. continue;
  1302. if( n == "1" && i != 1 && !(j == splietedNumSize-1 && i == tmplen) ) {
  1303. han += unitArray[i-1];
  1304. }
  1305. else {
  1306. han += hanArray[n]+ unitArray[i-1];
  1307. }
  1308. }
  1309. if( eval(tmp) != 0 )
  1310. han += bigUnitArray[j];
  1311. }
  1312. return han;
  1313. }
  1314. /**
  1315. * 숫자를 반올림한다.
  1316. * 파라미터)>num: 반올림할 숫자, pos:반올림 할 위치
  1317. * 사용예)> doRound(12.23,1);
  1318. */
  1319. function doRound(num, pos) {
  1320. var posV ;
  1321. if ( pos == 0 ) {
  1322. posV = 1 ;
  1323. } else {
  1324. posV = Math.pow(10, (pos ? pos : 3)) ;
  1325. }
  1326. return Math.round(multiplyFloat(num,posV))/posV;
  1327. }
  1328. function doFloor(num, pos) {
  1329. var posV ;
  1330. if ( pos == 0 ) {
  1331. posV = 1 ;
  1332. }
  1333. else {
  1334. posV = Math.pow(10, (pos ? pos : 3)) ;
  1335. }
  1336. return Math.floor(multiplyFloat(num,posV))/posV;
  1337. }
  1338. function addStr(s, cnt) {
  1339. var i = 0;
  1340. var rst = "";
  1341. while(++i <= cnt) {
  1342. rst = rst+s;
  1343. }
  1344. return rst;
  1345. }
  1346. /**
  1347. * ##############################################################################
  1348. * 콤보박스 관련 function
  1349. */
  1350. /**
  1351. * ValueObject Binding
  1352. * objects.js ??
  1353. */
  1354. function bindValueObject(obj, vo) {
  1355. removeAllOptions(obj);
  1356. for( var i = 0 ; i < vo.getSize() ; i++ ) {
  1357. addOption(obj, vo.getKey(i), vo.getValue(i));
  1358. }
  1359. }
  1360. /**
  1361. * 선택된 콤보박스의 값을 리턴한다.
  1362. * 파라미터)>obj: 객체 이름
  1363. * 사용예)> getSelectedValue(f.selected);
  1364. */
  1365. function getSelectedValue(obj) {
  1366. if( obj != null && obj.options != null && obj.selectedIndex != -1 ) {
  1367. return obj.options[obj.selectedIndex].value;
  1368. }
  1369. else {
  1370. return "";
  1371. }
  1372. }
  1373. /**
  1374. * 선택된 콤보박스의 Text를 리턴한다.
  1375. * 파라미터)>obj: 객체 이름
  1376. * 사용예)> getSelectedText(f.selected);
  1377. */
  1378. function getSelectedText(obj) {
  1379. if( obj != null ) {
  1380. return obj.options[obj.selectedIndex].text;
  1381. }
  1382. }
  1383. /**
  1384. * 콤보박스의 특정 Value를 선택
  1385. * 파라미터)>obj: 객체 이름, val:값
  1386. * 사용예)> setSelect(f.selected,'123');
  1387. */
  1388. function setSelect(obj, val) {
  1389. if( obj != null && val != null ) {
  1390. for( var i = 0 ; i < obj.length ; i++ ) {
  1391. if( obj.options[i].value == val ) {
  1392. obj.options[i].selected = true;
  1393. fireEvent(obj, "change");
  1394. break;
  1395. }
  1396. }
  1397. }
  1398. }
  1399. /**
  1400. * 스크립트로 value변경시 이벤트 실행.
  1401. * @param element object
  1402. * @param event on을 제외한 이벤트 명
  1403. * @returns
  1404. */
  1405. function fireEvent(element,event){
  1406. if (document.createEventObject){
  1407. // dispatch for IE
  1408. var evt = document.createEventObject();
  1409. return element.fireEvent('on'+event,evt);
  1410. }
  1411. else{
  1412. // dispatch for firefox + others
  1413. var evt = document.createEvent("HTMLEvents");
  1414. evt.initEvent(event, true, true ); // event type,bubbling,cancelable
  1415. return !element.dispatchEvent(evt);
  1416. }
  1417. }
  1418. /**
  1419. *
  1420. */
  1421. function addOption(obj, value, desc) {
  1422. var option = new Option( desc , value , false );
  1423. obj.options[obj.options.length] = option;
  1424. }
  1425. /**
  1426. * SELECTBOX?? TOOLTIP ??
  1427. */
  1428. function addOptionTooltip(obj, value, desc) {
  1429. var option = new Option( desc , value , false );
  1430. option.title = value;
  1431. obj.options[obj.options.length] = option;
  1432. }
  1433. /**
  1434. * 콤보박스에 항목 입력
  1435. * 파라미터)>index:순번, obj:객체이름 , flag:구분 , min:최소 , max:최대
  1436. * 사용예)> putSelects(2,f.selected,'YEAR', '5','10');
  1437. */
  1438. function putSelects(index, obj , flag , min , max) {
  1439. if( obj.length != null && obj.length != 0 ) {
  1440. for( var i = 0 ; i < obj.length ; i++ ) {
  1441. if( i == index ) {
  1442. putSelect( obj[i] , flag , min , max );
  1443. }
  1444. }
  1445. }
  1446. else {
  1447. putSelect( obj , flag , min , max );
  1448. }
  1449. }
  1450. /**
  1451. * 콤보박스에 항목 입력
  1452. * 파라미터)> obj:객체이름 , flag:구분 , min:최소 , max:최대
  1453. * 사용예)> putSelects(f.selected,'YEAR', '5','10');
  1454. */
  1455. function putSelect( obj , flag , min , max ) {
  1456. if( obj == null )
  1457. return;
  1458. var isType = false;
  1459. if( obj.length == 0 ) {
  1460. if( flag == "YEAR" ) {
  1461. isType = true;
  1462. }
  1463. else if( flag == "MONTH" ) {
  1464. min = 1;
  1465. max = 12;
  1466. isType = true;
  1467. }
  1468. else if( flag == "DAY" ) {
  1469. min = 1;
  1470. max = 31;
  1471. isType = true;
  1472. }
  1473. obj.options[0] = new Option("", "", false);
  1474. if( isType )
  1475. {
  1476. var index = 1;
  1477. for( var i = min ; i <= max ; i++ )
  1478. {
  1479. var temp = i + "";
  1480. temp = ( temp.length == 1 ) ? "0" + temp : temp ;
  1481. var option = new Option( temp , temp , false );
  1482. obj.options[index] = option;
  1483. index++;
  1484. }
  1485. }
  1486. }
  1487. }
  1488. /**
  1489. * 선택된 항목만 읽게
  1490. * 파라미터)> obj:객체이름
  1491. * 사용예)> setReadOnlySelect(f.selected);
  1492. */
  1493. function setReadOnlySelect(obj) {
  1494. if( obj != null ) {
  1495. var options = obj.options[obj.selectedIndex];
  1496. for( var i = obj.length - 1 ; i >= 0 ; i-- ) {
  1497. obj.options[i] = null;
  1498. }
  1499. obj.options[0] = options;
  1500. }
  1501. }
  1502. /**
  1503. * 모든 항목을 삭제한다.
  1504. * 파라미터)> obj:객체이름
  1505. * 사용예)> removeAllOptions(f.selected);
  1506. */
  1507. function removeAllOptions(obj) {
  1508. if( obj != null ) {
  1509. for( var i = obj.length - 1 ; i >= 0 ; i-- ) {
  1510. obj.options[i] = null;
  1511. }
  1512. }
  1513. }
  1514. /**
  1515. * 최상위 항목 제외한 모든 항목을 삭제한다.
  1516. * 파라미터)> obj:객체이름
  1517. * 사용예)> removeAllOptionsExceptTop(f.selected);
  1518. */
  1519. function removeAllOptionsExceptTop(obj) {
  1520. if( obj != null ) {
  1521. for( var i = obj.length - 1 ; i >= 1 ; i-- ) {
  1522. obj.options[i] = null;
  1523. }
  1524. }
  1525. }
  1526. /**
  1527. * 선택된 항목을 삭제한다.
  1528. * 파라미터)> obj:객체이름, val: 삭제될 순번
  1529. * 사용예)> removeOption(f.selected,5);
  1530. */
  1531. function removeOption(obj, val) {
  1532. if( obj != null && val != null ) {
  1533. for( var i = 0 ; i < obj.length ; i++ ) {
  1534. if( obj.options[i].value == val ) {
  1535. obj.options[i] = null;
  1536. break;
  1537. }
  1538. }
  1539. }
  1540. }
  1541. function isSelected(obj) {
  1542. if( obj != null ) {
  1543. for( var i = 0 ; i < obj.length ; i++ ) {
  1544. if( obj.options[i].selected == true ) {
  1545. return true;
  1546. }
  1547. }
  1548. }
  1549. return false;
  1550. }
  1551. /**
  1552. * 선택된 항목을 위로 이동시킨다.
  1553. * 파라미터)> obj:객체이름
  1554. * 사용예)> moveUpOption(f.selected,5);
  1555. */
  1556. function moveUpOption(obj) {
  1557. if( obj.options.length == null )
  1558. return;
  1559. for( var i = 0 ; i < obj.options.length ; i++ ) {
  1560. obj.options[i].isSelected = obj.options[i].selected;
  1561. if( obj.options[i].selected && obj.options[i] != "" && obj.options[i] != obj.options[0] ) {
  1562. var tmpval = obj.options[i].value;
  1563. var tmpval2 = obj.options[i].text;
  1564. var tmpval3 = obj.options[i].isSelected;
  1565. obj.options[i].value = obj.options[i - 1].value;
  1566. obj.options[i].text = obj.options[i - 1].text
  1567. obj.options[i].isSelected = obj.options[i - 1].isSelected
  1568. obj.options[i-1].value = tmpval;
  1569. obj.options[i-1].text = tmpval2;
  1570. obj.options[i-1].isSelected = tmpval3;
  1571. }
  1572. }
  1573. for( var i = 0 ; i < obj.options.length ; i++ ) {
  1574. obj.options[i].selected = obj.options[i].isSelected;
  1575. }
  1576. }
  1577. /**
  1578. * 선택된 항목을 아래로 이동시킨다.
  1579. * 파라미터)> obj:객체이름
  1580. * 사용예)> moveDownOption(f.selected);
  1581. */
  1582. function moveDownOption(obj) {
  1583. if( obj.options.length == null )
  1584. return;
  1585. for( var i = obj.options.length - 1 ; i >= 0 ; i-- ) {
  1586. obj.options[i].isSelected = obj.options[i].selected;
  1587. if( obj.options[i].selected && obj.options[i] != "" && obj.options[i+1] != obj.options[obj.options.length] ) {
  1588. var tmpval = obj.options[i].value;
  1589. var tmpval2 = obj.options[i].text;
  1590. var tmpval3 = obj.options[i].isSelected;
  1591. obj.options[i].value = obj.options[i+1].value;
  1592. obj.options[i].text = obj.options[i+1].text
  1593. obj.options[i].isSelected = obj.options[i+1].isSelected
  1594. obj.options[i+1].value = tmpval;
  1595. obj.options[i+1].text = tmpval2;
  1596. obj.options[i+1].isSelected = tmpval3;
  1597. }
  1598. }
  1599. for( var i = 0 ; i < obj.options.length ; i++ ) {
  1600. obj.options[i].selected = obj.options[i].isSelected;
  1601. }
  1602. }
  1603. //##############################################################################
  1604. // 라디오 버튼 관련 function
  1605. /**
  1606. * 선택된 라디오 버튼값을 리턴한다.
  1607. * 파라미터)> obj:객체이름
  1608. * 사용예)> getCheckedValue(f.radiobt);
  1609. */
  1610. function getCheckedValue(obj) {
  1611. if( obj != null ) {
  1612. for( var i = 0 ; i < obj.length ; i++ ) {
  1613. if( obj[i].checked == true ) {
  1614. return obj[i].value;
  1615. }
  1616. }
  1617. return "";
  1618. }
  1619. return "";
  1620. }
  1621. /**
  1622. * 라디오 버튼 선택한다.
  1623. * 파라미터)> obj:객체이름, val:값
  1624. * 사용예)> getCheckedValue(f.radiobt,5);
  1625. */
  1626. function setRadio(obj, val) {
  1627. if( obj != null && val != null ) {
  1628. for( var i = 0 ; i < obj.length ; i++ ) {
  1629. if( obj[i].value == val ) {
  1630. obj[i].checked = true;
  1631. break;
  1632. }
  1633. }
  1634. }
  1635. }
  1636. /**
  1637. * 라디오 버튼 Disabled 속성 조정
  1638. * 파라미터)> obj:객체이름, val:값, disValue: true,false
  1639. * 사용예)> setRadioDisabled(f.radiobt,5,true);
  1640. */
  1641. function setRadioDisabled(obj, val, disValue)
  1642. {
  1643. if( obj != null && val != null )
  1644. {
  1645. if( obj.length == null ) {
  1646. if( obj.value == val )
  1647. obj.disabled = disValue;
  1648. }
  1649. else {
  1650. for( var i = 0 ; i < obj.length ; i++ )
  1651. {
  1652. if( obj[i].value == val )
  1653. {
  1654. obj[i].disabled = disValue;
  1655. }
  1656. }
  1657. }
  1658. }
  1659. }
  1660. /**
  1661. * 모든 라디오 버튼 Disabled 속성 조정
  1662. * 파라미터)> obj:객체이름, disValue: true,false
  1663. * 사용예)> setRadioDisabledAll(f.radiobt,true);
  1664. */
  1665. function setRadioDisabledAll(obj, disValue) {
  1666. setCheckDisabledAll(obj, disValue);
  1667. }
  1668. function setInitRadio(obj) {
  1669. if( obj != null) {
  1670. for( var i = 0 ; i < obj.length ; i++ ) {
  1671. obj[i].checked = false;
  1672. }
  1673. }
  1674. }
  1675. //##############################################################################
  1676. // CheckBox 버튼 관련 function
  1677. // CheckBox 버튼 선택
  1678. function setCheckBox(obj, arrayObj)
  1679. {
  1680. if( arrayObj != null && arrayObj.length != null )
  1681. {
  1682. for( var i = 0 ; i < arrayObj.length ; i++ )
  1683. {
  1684. for( var j = 0 ; j < obj.length ; j++ )
  1685. {
  1686. if( obj[j].value == arrayObj[i] )
  1687. {
  1688. obj[j].checked = true;
  1689. break;
  1690. }
  1691. }
  1692. }
  1693. }
  1694. }
  1695. /**
  1696. * check설정
  1697. * 파라미터)> obj:객체이름, isCheck: true,false
  1698. * 사용예)> cvtCheckBox(f.checkbt,true);
  1699. */
  1700. function cvtCheckBox(obj, isCheck)
  1701. {
  1702. if( obj != null )
  1703. {
  1704. if( obj.length != null )
  1705. {
  1706. for( var i = 0 ; i < obj.length ; i++ )
  1707. {
  1708. if (!obj[i].disabled) obj[i].checked = isCheck;
  1709. }
  1710. }
  1711. else
  1712. {
  1713. if (!obj.disabled) obj.checked = isCheck;
  1714. }
  1715. }
  1716. }
  1717. /**
  1718. * 같은 체크박스를 타이틀별로 체크하거나 하는데 disabled은 무시한다.
  1719. * 파라미터)> obj, row개수(화면상의 타이틀), row위치
  1720. * 사용예)> company/PURReqSupplyProductView.jsp참조하세요.
  1721. */
  1722. function multi_cvtCheckBox(obj, row_cnt, row_position)
  1723. {
  1724. var remain;
  1725. var chk = 0;
  1726. var isCheck;
  1727. for( var i = 0 ; i < getObjLength(obj) ; i++ )
  1728. {
  1729. remain = i%row_cnt;
  1730. if(row_position == remain)
  1731. {
  1732. if(getObj(obj, i).disabled == false)
  1733. if(getObj(obj, i).checked == true)
  1734. {
  1735. chk++;
  1736. }
  1737. }
  1738. }
  1739. if(chk>0) isCheck = false;
  1740. else isCheck = true;
  1741. if( obj != null )
  1742. {
  1743. for( var i = 0 ; i < getObjLength(obj) ; i++ )
  1744. {
  1745. remain = i%row_cnt;
  1746. if(row_position == remain)
  1747. if(getObj(obj, i).disabled == false)
  1748. getObj(obj, i).checked = isCheck;
  1749. }
  1750. }
  1751. }
  1752. /**
  1753. * 체크박스에 체크된 항목이 있는지 여부를 리턴한다.
  1754. * 파라미터)> obj, row개수(화면상의 타이틀), row위치
  1755. * 사용예)> isChecked(f.checked);
  1756. */
  1757. function isChecked(obj) {
  1758. try {
  1759. if( obj == null )
  1760. return false;
  1761. var isChecked = false;
  1762. if( obj.length == null ) {
  1763. isChecked = obj.checked;
  1764. }
  1765. else {
  1766. for( var i = 0 ; i < obj.length ; i++ ) {
  1767. if( obj[i].checked ) {
  1768. isChecked = true;
  1769. break;
  1770. }
  1771. }
  1772. }
  1773. return isChecked;
  1774. }
  1775. catch(errorObject) {
  1776. showErrorDlg(errorObject);
  1777. }
  1778. }
  1779. /**
  1780. * 체크박스 Disabled 속성 조정
  1781. * 파라미터)> obj:객체이름, val:값 , disValue: true,false
  1782. * 사용예)> isChecked(f.checked);
  1783. */
  1784. function setCheckDisabled(obj, val, disValue)
  1785. {
  1786. if( obj != null && val != null )
  1787. {
  1788. if( obj.length == null ) {
  1789. if( obj.value == val )
  1790. obj.disabled = disValue;
  1791. }
  1792. else {
  1793. for( var i = 0 ; i < obj.length ; i++ )
  1794. {
  1795. if( obj[i].value == val )
  1796. {
  1797. obj[i].disabled = disValue;
  1798. break;
  1799. }
  1800. }
  1801. }
  1802. }
  1803. }
  1804. /**
  1805. * 모든 체크박스 Disabled 속성 조정
  1806. * 파라미터)> obj:객체이름, disValue: true,false
  1807. * 사용예)> setCheckDisabledAll(f.checked, true);
  1808. */
  1809. function setCheckDisabledAll(obj, disValue)
  1810. {
  1811. if( obj != null )
  1812. {
  1813. if( obj.length == null ) {
  1814. obj.disabled = disValue;
  1815. }
  1816. else {
  1817. for( var i = 0 ; i < obj.length ; i++ )
  1818. {
  1819. obj[i].disabled = disValue;
  1820. }
  1821. }
  1822. }
  1823. }
  1824. function copyTableRow(destTableID, srcTableID) {
  1825. var destStr = "document.all." + destTableID;
  1826. var srcStr = "document.all." + srcTableID;
  1827. var destTableBody = eval(destStr + ".children[0]");
  1828. var srcTableBody = eval(srcStr + ".children[0].children[0]");
  1829. // ??
  1830. var srcCopy = eval(srcStr + ".innerHTML");
  1831. var size = eval(srcStr + ".children[0].children[0].children.length");
  1832. for( var i = 0 ; i < size ; i++ ) {
  1833. destTableBody.appendChild(srcTableBody.children[0]);
  1834. }
  1835. eval(srcStr + ".innerHTML = srcCopy");
  1836. }
  1837. //##############################################################################
  1838. // 메세지전달 관련 function
  1839. /**
  1840. * 페이지를 이동하는 메세지창
  1841. * 파라미터)> msg:메시지, url:주소
  1842. * 사용예)> showMoveDlg("이동합니다.", "/com/calljsp.screen");
  1843. */
  1844. function showMoveDlg(msg, url)
  1845. {
  1846. if( confirm(msg) )
  1847. {
  1848. self.location = url;
  1849. }
  1850. }
  1851. /**
  1852. * 메세지를 출력하고, Object로 focus를 돌려준다.
  1853. * 파라미터)> obj:객체명, msg:메시지
  1854. * 사용예)> ErrMsg(f.gets, "전화번호를 입력하세요");
  1855. */
  1856. function ErrMsg( obj, msg ) {
  1857. try {
  1858. //alert( msg );
  1859. dlgAlert(msg);
  1860. try {
  1861. obj.focus();
  1862. }
  1863. catch(errorObject) {
  1864. }
  1865. try {
  1866. obj.select();
  1867. }
  1868. catch(errorObject) {
  1869. }
  1870. return false;
  1871. }
  1872. catch(errorObject) {
  1873. showErrorDlg("common_js.ErrMsg()", errorObject);
  1874. }
  1875. }
  1876. // Explorer Exception 처리
  1877. function showErrorDlg(methodName, errorObject) {
  1878. try {
  1879. if( errorObject == null ) {
  1880. errorObject = methodName;
  1881. methodName = "unknowned method";
  1882. }
  1883. var msg = "";
  1884. msg += "Method Name : " + methodName + "\n\n";
  1885. if( errorObject.description != null ) {
  1886. msg += errorObject.description + "\n\n"
  1887. + "Error Number : " + (errorObject.number>>16 & 0x1FFF) + "\n\n";
  1888. }
  1889. else {
  1890. msg += "Error Number : " + (errorObject.number>>16 & 0x1FFF) + "\n\n";
  1891. }
  1892. alert(msg);
  1893. }
  1894. catch(eo) {
  1895. alert(eo);
  1896. }
  1897. }
  1898. //2004-05-13추가 sukjin chang
  1899. /*
  1900. 내 용 : 파라미터로 받은 일자의 요일 리턴
  1901. 파라미터 : pDate - 일자 (8자리 숫자로 이루어진 문자열)
  1902. Return값 : 요일 (일,월,화,수,목,금,토 => 0,1,2,3,4,5,6)
  1903. */
  1904. function fGetDay(pDate)
  1905. {
  1906. try {
  1907. var vDate = pDate.toString();
  1908. // var vDayArray = ["일", "월", "화", "수", "목", "금", "토"];
  1909. var vTempDate = new Date();
  1910. vTempDate.setYear(vDate.substring(0, 4));
  1911. vTempDate.setMonth(eval(vDate.substring(4, 6))-1);
  1912. vTempDate.setDate(vDate.substring(6, 8));
  1913. var vDay = vTempDate.getDay();
  1914. return vDay;
  1915. }
  1916. catch(errorObject) {
  1917. showErrorDlg(errorObject);
  1918. }
  1919. }
  1920. /*
  1921. 내 용 : 시작일자와 기간을 받아 종료일자를 리턴
  1922. 파라미터 : pStartDate - 시작일자
  1923. pDateTerm - 기간
  1924. Return값 : 종료 일자
  1925. */
  1926. function fGetEndDate(pStartDate, pDateTerm)
  1927. {
  1928. try {
  1929. // 파라미터로 받은 날짜로 Date 객체 초기화
  1930. var vStartDate = new Date(eval(pStartDate.toString(10).substring(0, 4)), eval(pStartDate.toString(10).substring(4, 6)) - 1, eval(pStartDate.toString(10).substring(6, 8)));
  1931. // 파라미터로 받은 숫자만큼 이후 일자로 setting
  1932. vStartDate.setDate(vStartDate.getDate() + eval(pDateTerm));
  1933. // 년도 문자열화
  1934. var vTempYear = vStartDate.getFullYear();
  1935. vTempYear = vTempYear.toString(10);
  1936. // 월 문자열화
  1937. var vTempMonth = vStartDate.getMonth()+1;
  1938. vTempMonth = vTempMonth.toString(10);
  1939. // 일 문자열화
  1940. var vTempDate = vStartDate.getDate();
  1941. vTempDate = vTempDate.toString(10);
  1942. if(vTempMonth.length == 1) vTempMonth = "0" + vTempMonth;
  1943. if(vTempDate.length == 1) vTempDate = "0" + vTempDate;
  1944. // 날짜 포맷으로 변환
  1945. var vReturnDate = vTempYear + vTempMonth + vTempDate;
  1946. return vReturnDate;
  1947. }
  1948. catch(errorObject) {
  1949. showErrorDlg(errorObject);
  1950. }
  1951. }
  1952. //2004-05-28 추가 sukjin chang
  1953. /*-------------------------------------------------------------------------
  1954. fDisplayDiv()
  1955. Spec : //파라미터로 받은 DIV 영역에 새로운 HTML Code 를 삽입
  1956. Example : fDisplayDiv(tdivid,html);
  1957. -------------------------------------------------------------------------*/
  1958. function fDisplayDiv(pDivName, pHtml)
  1959. {
  1960. // 파라미터로 받은 DIV 영역에 새로운 HTML Code 를 삽입
  1961. //alert ('[' + parent.document.getElementById(pDivName).innerHTML + ']');
  1962. parent.document.getElementById(pDivName).innerHTML = pHtml;
  1963. //pHtml = "";
  1964. // vHtml Clear
  1965. }
  1966. /*-------------------------------------------------------------------------
  1967. f_chkJumin()
  1968. Spec : //수량형식으로 변환한다. 12345 -> 12345.000
  1969. Example : formatQty(this);
  1970. -------------------------------------------------------------------------*/
  1971. //수량형식으로 변환한다. 12345 -> 12345.000
  1972. function formatQty(obj){
  1973. obj.value = getQty(obj.value);
  1974. }
  1975. function getQty(str){
  1976. var value = str == ""? "0": str;
  1977. var num1, num2;
  1978. var len = value.length;
  1979. var off = value.indexOf(".");
  1980. if( off != -1){
  1981. num1 = value.substring(0, off);
  1982. num2 = value.substring(off+1);
  1983. if(num2.length<3){
  1984. num2 = rpad(num2, 3, '0');
  1985. } else {
  1986. num2 = num2.substring(0, 3);
  1987. }
  1988. value = plusComma(num1.replace(/,/g, "")) + "." + num2;
  1989. } else {
  1990. value = plusComma(value.replace(/,/g, "")) +".000";
  1991. }
  1992. return value;
  1993. }
  1994. /*-------------------------------------------------------------------------
  1995. Spec : //수량형식으로 변환한다. 12345 -> 12345.0000
  1996. Example : formatQty4Hous(this);
  1997. -------------------------------------------------------------------------*/
  1998. // Left 빈자리 만큼 padStr 을 붙인다.
  1999. function lpad(src, len, padStr){
  2000. var retStr = "";
  2001. var padCnt = Number(len) - String(src).length;
  2002. for(var i=0;i<padCnt;i++) retStr += String(padStr);
  2003. return retStr+src;
  2004. }
  2005. // Right 빈자리 만큼 padStr 을 붙인다.
  2006. function rpad(src, len, padStr){
  2007. var retStr = "";
  2008. var padCnt = Number(len) - String(src).length;
  2009. for(var i=0;i<padCnt;i++) retStr += String(padStr);
  2010. return src+retStr;
  2011. }
  2012. //수량형식으로 변환한다. 12345 -> 12345.0000
  2013. function formatQty4Hous(obj){
  2014. obj.value = getQty4Hous(obj.value);
  2015. }
  2016. function getQty4Hous(str){
  2017. var value = str == ""? "0": str;
  2018. var num1, num2;
  2019. var len = value.length;
  2020. var off = value.indexOf(".");
  2021. if( off != -1){
  2022. num1 = value.substring(0, off);
  2023. num2 = value.substring(off+1);
  2024. if(num2.length<4){
  2025. num2 = rpad(num2, 4, '0')+"";
  2026. } else {
  2027. num2 = num2.substring(0, 4);
  2028. }
  2029. value = plusComma(num1.replace(/,/g, "")) + "." + num2;
  2030. } else {
  2031. value = plusComma(value.replace(/,/g, "")) +".0000";
  2032. }
  2033. return value;
  2034. }
  2035. //수량형식으로 변환한다. 12345 -> 12345.000
  2036. function formatQty3Hous(obj){
  2037. obj.value = getQty4Hous(obj.value);
  2038. }
  2039. function getQty3Hous(str){
  2040. var value = str == ""? "0": str;
  2041. var num1, num2;
  2042. var len = value.length;
  2043. var off = value.indexOf(".");
  2044. if( off != -1){
  2045. num1 = value.substring(0, off);
  2046. num2 = value.substring(off+1);
  2047. if(num2.length<3){
  2048. num2 = rpad(num2, 3, '0')+"";
  2049. } else {
  2050. num2 = num2.substring(0, 3);
  2051. }
  2052. value = plusComma(num1.replace(/,/g, "")) + "." + num2;
  2053. } else {
  2054. value = plusComma(value.replace(/,/g, "")) +".000";
  2055. }
  2056. return value;
  2057. }
  2058. /*-------------------------------------------------------------------------
  2059. f_chkJumin()
  2060. Spec : 주민등록번호 Check
  2061. Argument : (document.form_name.input_name,document.form_name.input_name)
  2062. Return : boolean
  2063. Example : if(f_chkJumin(document.form.Jumin1,document.form.Jumin2) == false) return;
  2064. -------------------------------------------------------------------------*/
  2065. function f_chkJumin(jumin1,jumin2)
  2066. {
  2067. var jumin_1 = jumin1.value;
  2068. var jumin_2 = jumin2.value;
  2069. var number = jumin_1 + jumin_2;
  2070. var sum=0;
  2071. var mod=0;
  2072. var yearin=0;
  2073. var monthin=0;
  2074. var datein=0;
  2075. // 외국인 일때....
  2076. //if((jumin_2.substring(0,1) == "7") || (jumin_2.substring(0,1) == "8")) {
  2077. // if ((jumin_2.substring(1,2) == "1") || (jumin_2.substring(1,2) == "2") ||
  2078. // (jumin_2.substring(1,2) == "3") || (jumin_2.substring(1,2) == "4")
  2079. // )
  2080. // return true;
  2081. //}
  2082. // 외국인 일때....2005.06.21수정
  2083. if((jumin_2.substring(0,1) == "5") || (jumin_2.substring(0,1) == "6")) {
  2084. var fgsum = 0;
  2085. var odd = 0;
  2086. buf = new Array(13);
  2087. for (i=0;i<13;i++ )
  2088. {
  2089. buf[i] = parseInt(number.charAt(i));
  2090. }
  2091. if ((buf[11]!=6) && (buf[11]!=7) && (buf[11]!=8) && (buf[11]!=9)) {
  2092. ErrMsg2("","【 입력오류 】: 사용되지않는 주민등록번호입니다. 다시 입력하여 주십시오.");
  2093. jumin1.value = "";
  2094. jumin2.value = "";
  2095. jumin1.focus();
  2096. return false;
  2097. }
  2098. multipliers = [2,3,4,5,6,7,8,9,2,3,4,5];
  2099. for (i=0,fgsum=0;i<12;i++)
  2100. {
  2101. fgsum += (buf[i] *= multipliers[i]);
  2102. }
  2103. fgsum = 11-(fgsum%11);
  2104. if (fgsum>=10) fgsum -= 10;
  2105. fgsum += 2;
  2106. if (fgsum>=10) fgsum -= 10;
  2107. if (fgsum!=buf[12]) {
  2108. ErrMsg2("","【 입력오류 】: 사용되지않는 주민등록번호입니다. 다시 입력하여 주십시오.");
  2109. jumin1.value = "";
  2110. jumin2.value = "";
  2111. jumin1.focus();
  2112. return false;
  2113. }
  2114. return true;
  2115. }
  2116. //내국인일때
  2117. else {
  2118. for ( var i=0; i<12; i++ ) {
  2119. if (i==0) yearin += parseInt(number.charAt(i),10)*10;
  2120. if (i==1) yearin += parseInt(number.charAt(i),10);
  2121. if (i==2) monthin += parseInt(number.charAt(i),10)*10;
  2122. if (i==3) monthin += parseInt(number.charAt(i),10);
  2123. if (i==4) datein += parseInt(number.charAt(i),10)*10;
  2124. if (i==5) datein += parseInt(number.charAt(i),10);
  2125. if (i<6) sum += parseInt(number.charAt(i),10)*(i+2);
  2126. if (i>5&&i<8) sum += parseInt(number.charAt(i),10)*(i+2);
  2127. if (i>7) sum += parseInt(number.charAt(i),10)*(i-6);
  2128. }
  2129. mod = 11 - (sum%11);
  2130. if ((11-(sum%11)) >= 10) mod -= 10;
  2131. if(mod!=parseInt(number.charAt(12),10)) {
  2132. //alert("【 입력오류 】: 사용되지않는 주민등록번호입니다. 다시 입력하여 주십시오.");
  2133. ErrMsg2("","【 입력오류 】: 사용되지않는 주민등록번호입니다. 다시 입력하여 주십시오.");
  2134. jumin1.value = "";
  2135. jumin2.value = "";
  2136. jumin1.focus();
  2137. return false;
  2138. }
  2139. if(monthin < 1 || monthin > 12 || datein < 1 || datein > 31) {
  2140. //alert("【 입력오류 】: 사용되지않는 주민등록번호입니다. 다시 입력하여 주십시오.");
  2141. ErrMsg2("","【 입력오류 】: 사용되지않는 주민등록번호입니다. 다시 입력하여 주십시오.");
  2142. jumin1.value = "";
  2143. jumin2.value = "";
  2144. jumin1.focus();
  2145. return false;
  2146. }
  2147. if((monthin ==4 || monthin == 6 || monthin == 9 || monthin ==11 ) && datein > 30) {
  2148. //alert("【 입력오류 】: 사용되지않는 주민등록번호입니다. 다시 입력하여 주십시오.");
  2149. ErrMsg2("","【 입력오류 】: 사용되지않는 주민등록번호입니다. 다시 입력하여 주십시오.");
  2150. jumin1.value = "";
  2151. jumin2.value = "";
  2152. jumin1.focus();
  2153. return false;
  2154. }
  2155. if(monthin ==2 && datein > 29) {
  2156. //alert("【 입력오류 】: 사용되지않는 주민등록번호입니다. 다시 입력하여 주십시오.");
  2157. ErrMsg2("","【 입력오류 】: 사용되지않는 주민등록번호입니다. 다시 입력하여 주십시오.");
  2158. jumin1.value = "";
  2159. jumin2.value = "";
  2160. jumin1.focus();
  2161. return false;
  2162. }
  2163. }
  2164. return true;
  2165. }
  2166. /*-------------------------------------------------------------------------
  2167. f_dayLaborChkJumin()
  2168. Spec : 노무관리 - 일용직 주민등록번호 Check
  2169. Argument : (document.form_name.input_name,document.form_name.input_name)
  2170. Return : boolean
  2171. Example : if(f_chkJumin(document.form.Jumin1,document.form.Jumin2) == false) return;
  2172. -------------------------------------------------------------------------*/
  2173. function f_dayLaborChkJumin(jumin1,jumin2)
  2174. {
  2175. var jumin_1 = jumin1.value;
  2176. var jumin_2 = jumin2.value;
  2177. // 외국인 일때....
  2178. if((jumin_2.substring(0,1) == "7") || (jumin_2.substring(0,1) == "8")) {
  2179. if ((jumin_2.substring(1,2) == "1") || (jumin_2.substring(1,2) == "2") ||
  2180. (jumin_2.substring(1,2) == "3") || (jumin_2.substring(1,2) == "4")
  2181. )
  2182. return true;
  2183. }
  2184. var number = jumin_1 + jumin_2;
  2185. var sum=0;
  2186. var mod=0;
  2187. var yearin=0;
  2188. var monthin=0;
  2189. var datein=0;
  2190. for ( var i=0; i<12; i++ ) {
  2191. if (i==0) yearin += parseInt(number.charAt(i),10)*10;
  2192. if (i==1) yearin += parseInt(number.charAt(i),10);
  2193. if (i==2) monthin += parseInt(number.charAt(i),10)*10;
  2194. if (i==3) monthin += parseInt(number.charAt(i),10);
  2195. if (i==4) datein += parseInt(number.charAt(i),10)*10;
  2196. if (i==5) datein += parseInt(number.charAt(i),10);
  2197. if (i<6) sum += parseInt(number.charAt(i),10)*(i+2);
  2198. if (i>5&&i<8) sum += parseInt(number.charAt(i),10)*(i+2);
  2199. if (i>7) sum += parseInt(number.charAt(i),10)*(i-6);
  2200. }
  2201. mod = 11 - (sum%11);
  2202. if ((11-(sum%11)) >= 10) mod -= 10;
  2203. if(mod!=parseInt(number.charAt(12),10)) {
  2204. if ( ! dlgConfirm("규정에 맞지않는 주민등록번호입니다.<br>무시하고 그냥 입력하시겠습니까?") ) {
  2205. jumin1.value = "";
  2206. jumin2.value = "";
  2207. jumin1.focus();
  2208. return false;
  2209. }
  2210. return true;
  2211. }
  2212. if(monthin < 1 || monthin > 12 || datein < 1 || datein > 31) {
  2213. if ( ! dlgConfirm("규정에 맞지않는 주민등록번호입니다.<br>무시하고 그냥 입력하시겠습니까?") ) {
  2214. jumin1.value = "";
  2215. jumin2.value = "";
  2216. jumin1.focus();
  2217. return false;
  2218. }
  2219. return true;
  2220. }
  2221. if((monthin ==4 || monthin == 6 || monthin == 9 || monthin ==11 ) && datein > 30) {
  2222. if ( ! dlgConfirm("규정에 맞지않는 주민등록번호입니다.<br>무시하고 그냥 입력하시겠습니까?") ) {
  2223. jumin1.value = "";
  2224. jumin2.value = "";
  2225. jumin1.focus();
  2226. return false;
  2227. }
  2228. return true;
  2229. }
  2230. if(monthin ==2 && datein > 29) {
  2231. if ( ! dlgConfirm("규정에 맞지않는 주민등록번호입니다.<br>무시하고 그냥 입력하시겠습니까?") ) {
  2232. jumin1.value = "";
  2233. jumin2.value = "";
  2234. jumin1.focus();
  2235. return false;
  2236. }
  2237. return true;
  2238. }
  2239. return true;
  2240. }
  2241. //2004-08-05
  2242. var vLastSelectedTabID = ""; // 마지막으로 선택된 탭 ID 를 저장할 전역변수
  2243. function fSelectTab(pDivID)
  2244. {
  2245. // 처음 display 되는 경우가 아니라면(기존에 선택된 탭이 있다면) display 영역의 내용을 해당 탭 영역에 저장
  2246. if(vLastSelectedTabID != "") document.getElementById(vLastSelectedTabID).innerHTML = document.all.tabDiv.innerHTML;
  2247. // 새로 선택한 탭 영역의 내용을 display 영역에 copy
  2248. document.all.tabDiv.innerHTML = document.getElementById(pDivID).innerHTML;
  2249. // 코드중복방지를 위해 원본 소스를 삭제
  2250. document.getElementById(pDivID).innerHTML = "";
  2251. // 새로 선택한 탭 ID 를 전역변수에 저장
  2252. vLastSelectedTabID = pDivID;
  2253. }
  2254. //2004-08-24 sukjin chang
  2255. /*----------------------------------------------------------------------------*/
  2256. /* FUNCTION ID : setEditMark */
  2257. /* 기 능 : */
  2258. /* 정해진 데이터 입력 형식(사업자번호, 주민등록번호, 날짜 등 */
  2259. /* 구분자)을 설정해서 사용자가 쉽게 데이터를 입력하게 한다. */
  2260. /* 인 수 : */
  2261. /* obj (문자) */
  2262. /* as_format(형식) */
  2263. /* 반 환 값 : */
  2264. /* 편집한 문자 */
  2265. /* 특 이 사 항 : */
  2266. /* <a href="javascript: getRow('<%= */
  2267. /* setEditMark(rs.getString("MV_NO"), "0000-000")%>')"> */
  2268. /*----------------------------------------------------------------------------*/
  2269. function setEditMark(as_value, as_format)
  2270. {
  2271. /*------------------------------------------------------------------------*/
  2272. /* 변수선언 및 초기화. */
  2273. /*------------------------------------------------------------------------*/
  2274. var i = 0, j = 0, k = 0; /* Index */
  2275. var ls_value = ""; /* Value */
  2276. /*------------------------------------------------------------------------*/
  2277. /* 숫자만 입력가능하게 처리. */
  2278. /*------------------------------------------------------------------------*/
  2279. for(i = 0; i < as_value.value.length; i++)
  2280. {
  2281. /*--------------------------------------------------------------------*/
  2282. /* 숫자가 아닌것은 제거. */
  2283. /*--------------------------------------------------------------------*/
  2284. if (!IsDecimal(as_value.value.charAt(i)))
  2285. {
  2286. as_value.value = as_value.value.substring(0, i)
  2287. + as_value.value.substring(i + 1, as_value.value.length);
  2288. }
  2289. }
  2290. /*------------------------------------------------------------------------*/
  2291. /* 문자를 원하는 형식으로 편집. */
  2292. /*------------------------------------------------------------------------*/
  2293. for(i = 0; i < as_value.value.length; i++)
  2294. {
  2295. /*--------------------------------------------------------------------*/
  2296. /* 지정한 형식이 존재한 경우. */
  2297. /*--------------------------------------------------------------------*/
  2298. if (as_format.length > j)
  2299. {
  2300. /*----------------------------------------------------------------*/
  2301. /* 구분자가 아닌 경우. */
  2302. /*----------------------------------------------------------------*/
  2303. if ((as_format.substring(j, j + 1) >= "0") && (as_format.substring(j, j + 1) <= "9"))
  2304. {
  2305. /*------------------------------------------------------------*/
  2306. /* 문자 Edit. */
  2307. /*------------------------------------------------------------*/
  2308. ls_value = ls_value + as_value.value.substring(i, i + 1);
  2309. }
  2310. /*----------------------------------------------------------------*/
  2311. /* 구분자인 경우. */
  2312. /*----------------------------------------------------------------*/
  2313. else
  2314. {
  2315. /*------------------------------------------------------------*/
  2316. /* 구분자 추가. */
  2317. /*------------------------------------------------------------*/
  2318. ls_value = ls_value + as_format.substring(j, j + 1);
  2319. j = j + 1;
  2320. /*------------------------------------------------------------*/
  2321. /* 문자 Edit. */
  2322. /*------------------------------------------------------------*/
  2323. ls_value = ls_value + as_value.value.substring(i, i + 1);
  2324. }
  2325. }
  2326. j = j + 1;
  2327. }
  2328. /*------------------------------------------------------------------------*/
  2329. /* 편집한 문자 Setting. */
  2330. /*------------------------------------------------------------------------*/
  2331. as_value.value = ls_value;
  2332. return;
  2333. }
  2334. /*----------------------------------------------------------------------------*/
  2335. /* FUNCTION ID : IsDecimal */
  2336. /* 기 능 : */
  2337. /* 지정한 문자열이 유효한 숫자 값인지를 검사한다. */
  2338. /* 인 수 : */
  2339. /* ad_decimal(숫자) */
  2340. /* 반 환 값 : */
  2341. /* True or False */
  2342. /* 특 이 사 항 : */
  2343. /*----------------------------------------------------------------------------*/
  2344. function IsDecimal(ad_decimal)
  2345. {
  2346. /*------------------------------------------------------------------------*/
  2347. /* Decimal type validation check. */
  2348. /*------------------------------------------------------------------------*/
  2349. if ((ad_decimal >= 0) && (ad_decimal <= 9))
  2350. {
  2351. return true;
  2352. }
  2353. else
  2354. {
  2355. return false;
  2356. }
  2357. }
  2358. /*-------------------------------------------------------------------------
  2359. onlyNumber()
  2360. Spec : 숫자만 입력가능하게처리
  2361. Argument : (document.form_name.input_name, 6)
  2362. Return : string
  2363. Example : var val = onlyNumber(document.form.Jumin1,document.form.Jumin2);
  2364. -------------------------------------------------------------------------*/
  2365. function onlyNumber(obj,default_value)
  2366. {
  2367. var i = 0, j = 0, k = 0; /* Index */
  2368. var ls_value = ""; /* Value */
  2369. /*------------------------------------------------------------------------*/
  2370. /* 숫자만 입력가능하게 처리. */
  2371. /*------------------------------------------------------------------------*/
  2372. for(i = 0; i < obj.value.length; i++)
  2373. {
  2374. /*--------------------------------------------------------------------*/
  2375. /* 숫자가 아닌것은 제거. */
  2376. /*--------------------------------------------------------------------*/
  2377. //alert(IsDecimal(obj.value.charAt(i)));
  2378. //alert(obj.value.charAt(i));
  2379. if (IsDecimal(obj.value.charAt(i)))
  2380. {
  2381. ls_value += obj.value.substring(i, i+1);
  2382. }
  2383. }
  2384. /*------------------------------------------------------------------------*/
  2385. /* 편집한 문자 Setting. */
  2386. /*------------------------------------------------------------------------*/
  2387. var position;
  2388. position = ls_value.indexOf(" ");
  2389. while (position != -1){
  2390. ls_value = ls_value.replace(" ", "");
  2391. position = ls_value.indexOf(" ");
  2392. }
  2393. if(ls_value == '') ls_value = default_value;
  2394. obj.value = ls_value;
  2395. return;
  2396. }
  2397. /*-------------------------------------------------------------------------
  2398. f_chk_DDiff()
  2399. Spec : 시작일자와 끝 일자를 비교하여 시작일자가 크면 true, 시작일자가 작으면 false를 리턴한다.
  2400. Argument : (document.form_name.input_name, 6)
  2401. Return : boolean
  2402. Example : if( f_chk_DDiff("20050101","20050301") );
  2403. -------------------------------------------------------------------------*/
  2404. function f_chk_DDiff(Start,End) {
  2405. //i_Start = removeMaskForString(Start.value);
  2406. //i_End = removeMaskForString(End.value);
  2407. i_Start = Start;
  2408. i_End = End;
  2409. if(i_End == "")
  2410. i_End = 99999999;
  2411. num = i_End - i_Start;
  2412. if ( num < 0 )
  2413. return false;
  2414. else
  2415. return true;
  2416. }
  2417. //sukjin chang 2004-10-07 추가
  2418. /*-------------------------------------------------------------------------
  2419. parseInt_isNaN()
  2420. Spec : parseInt해서 NaN이면 0을 리턴하고 아니면 값을 리턴한다
  2421. Argument : ('123')
  2422. Return : int
  2423. Example : var intVal = parseInt_isNaN("1234");
  2424. -------------------------------------------------------------------------*/
  2425. function parseInt_isNaN(str)
  2426. {
  2427. if( isNaN( parseInt(str) ) )
  2428. {
  2429. return 0;
  2430. } else {
  2431. return parseInt(str);
  2432. }
  2433. }
  2434. //sukjin chang 2005-05-03 추가
  2435. /*-------------------------------------------------------------------------
  2436. parseFloat_isNaN()
  2437. Spec : parseFloat해서 NaN이면 0을 리턴하고 아니면 값을 리턴한다
  2438. Argument : ('123.12')
  2439. Return : float
  2440. Example : var floatVal = parseInt_isNaN("1234");
  2441. -------------------------------------------------------------------------*/
  2442. function parseFloat_isNaN(str)
  2443. {
  2444. if( isNaN( parseFloat(str) ) )
  2445. {
  2446. return 0;
  2447. } else {
  2448. return parseFloat(str);
  2449. }
  2450. }
  2451. //sukjin chang 2004-10-14 추가
  2452. /*-------------------------------------------------------------------------
  2453. fDivScroll()
  2454. Spec : 리스트에서 상단타이틀과 리스트 목록이 같이 이동 Scroll
  2455. Argument : ('123.12')
  2456. Return : float
  2457. Example : fDivScroll(f.div1, f.div2)
  2458. -------------------------------------------------------------------------*/
  2459. function fDivScroll( obj1, obj2 )
  2460. {
  2461. // 스크롤바 따라가기 스크립트
  2462. // obj2 가 obj1 을 따라합니다.
  2463. obj2.scrollLeft = obj1.scrollLeft;
  2464. }
  2465. //sukjin chang 2004-11-05 추가
  2466. /**
  2467. * 문자길이를 체크
  2468. * 파라미터)> obj:객체이름, field_name:입력할 제목, max_len:허용할 최대길이
  2469. * 사용예)> if(f_check_len( obj, "필드명", 길이 ) == false) return;
  2470. */
  2471. function f_check_len( obj, field_name, max_len )
  2472. {
  2473. len = getObjectByteLength(obj);
  2474. if (len > max_len) {
  2475. dlgAlert(field_name + "는(은) 숫자 영문은" + max_len + "자 까지 한글은 " + max_len/2 + "자 까지 가능합니다.");
  2476. obj.focus();
  2477. return false;
  2478. }
  2479. return true;
  2480. }
  2481. /**
  2482. * YMI 2007-09-19 추가
  2483. * 문자길이를 체크(소수점표현식) -- 소수점 뒤는 DB에서 자동으로 해당 자릿수 만큼만 저장한다.
  2484. * 파라미터)> obj:객체이름, field_name:입력할 제목, max_len:허용할 최대길이, str:소수점(.) 앞에 값 [ex: 123.432 -> str= 123]
  2485. * 사용예)> if(f_check_len( obj, "필드명", 길이 ) == false) return;
  2486. */
  2487. function f_float_len( obj, field_name, max_len, str)
  2488. {
  2489. len = getStringByteLength(str);
  2490. if (len > max_len) {
  2491. dlgAlert(field_name + "는(은) 소수점 앞자리는 " + max_len + "자 까지 가능합니다.");
  2492. obj.focus();
  2493. return false;
  2494. }
  2495. return true;
  2496. }
  2497. //onblur
  2498. /**
  2499. * 문자길이를 체크
  2500. * 파라미터)> obj:객체이름, max_len:허용할 최대길이
  2501. * 사용예)> if(f_check_limit(this, this.maxLength) == false) return;
  2502. */
  2503. function f_check_limit( obj, max_len )
  2504. {
  2505. len = getObjectByteLength(obj);
  2506. if (len > max_len) {
  2507. dlgAlert("숫자 영문은" + max_len + "자 까지 한글은 " + max_len/2 + "자 까지 가능합니다.");
  2508. obj.focus();
  2509. return false;
  2510. }
  2511. return true;
  2512. }
  2513. //onkeyup
  2514. /**
  2515. * 문자길이를 체크
  2516. * 파라미터)> obj:객체이름, max_len:허용할 최대길이
  2517. * 사용예)> if(f_check_limit2(this, this.maxLength) == false) return;
  2518. */
  2519. function f_check_limit2(obj, max_len)
  2520. {
  2521. var strCount = 0;
  2522. var tempStr, tempStr2;
  2523. for(i = 0;i < obj.value.length;i++)
  2524. {
  2525. tempStr = obj.value.charAt(i);
  2526. if(escape(tempStr).length > 4) strCount += 2;
  2527. else strCount += 1 ;
  2528. }
  2529. if (strCount > max_len){
  2530. alert("숫자 영문은" + max_len + "자 까지 한글은 " + max_len/2 + "자 까지 가능합니다.");
  2531. strCount = 0;
  2532. tempStr2 = "";
  2533. for(i = 0; i < obj.value.length; i++)
  2534. {
  2535. tempStr = obj.value.charAt(i);
  2536. if(escape(tempStr).length > 4) strCount += 2;
  2537. else strCount += 1 ;
  2538. if (strCount > max_len)
  2539. {
  2540. if(escape(tempStr).length > 4) strCount -= 2;
  2541. else strCount -= 1 ;
  2542. break;
  2543. }
  2544. else tempStr2 += tempStr;
  2545. }
  2546. obj.value = tempStr2;
  2547. }
  2548. //return true;
  2549. }
  2550. /*-------------------------------------------------------------------------
  2551. function f_chkDate()
  2552. Example : if(f_chkDate(obj, "필드명") == false) return;
  2553. -------------------------------------------------------------------------*/
  2554. /**
  2555. * 날자타입 체크
  2556. * 파라미터)> stObj:객체이름, alertMSG:에러 발생시 띄울 메시지
  2557. * 사용예)> if(f_check_limit2(this, this.maxLength) == false) return;
  2558. */
  2559. function f_chkDate(stObj,alertMSG)
  2560. {
  2561. var st = removeMaskForString(stObj.value);
  2562. var d_yy = st.substr(0,4);
  2563. var d_mm = st.substr(4,2);
  2564. var d_dd = st.substr(6,2);
  2565. if ((st == "") || (st == null)) return true;
  2566. if (st == "00000000" || st == "0000-00-00")
  2567. {
  2568. stObj.value = ''
  2569. return true;
  2570. }
  2571. if (st.length != 8) {
  2572. dlgAlert(alertMSG + "의 문자형식은 YYYYMMDD로 입력하여 주십시오.");
  2573. stObj.focus();
  2574. return false;
  2575. }
  2576. if ((st.charAt(0) < "1") || (st.charAt(0) > "2")) {
  2577. dlgAlert(alertMSG + "의 년도를 올바르게 입력하여 주십시오.");
  2578. stObj.focus();
  2579. return false;
  2580. }
  2581. for(j=0; j < 3; j++)
  2582. if ((st.charAt(j) < "0") || (st.charAt(j) > "9")) {
  2583. dlgAlert(alertMSG + "의 년도를 숫자로 입력하여 주십시오.");
  2584. stObj.focus();
  2585. return false;
  2586. }
  2587. for(j=4; j < 6; j++)
  2588. if ((st.charAt(j) < "0") || (st.charAt(j) > "9"))
  2589. {
  2590. dlgAlert(alertMSG + "의 월을 숫자로 입력하여 주십시오.");
  2591. stObj.focus();
  2592. return false;
  2593. }
  2594. for(j=6; j < 8; j++)
  2595. if ((st.charAt(j) < "0") || (st.charAt(j) > "9"))
  2596. {
  2597. dlgAlert(alertMSG + "의 일자를 숫자로 입력하여 주십시오.");
  2598. stObj.focus();
  2599. return false;
  2600. }
  2601. if (st.charAt(4) == "0") // parseInt가 "08"을 0으로 인식하여 할 수없이 자리수를 나누어 처리...
  2602. d_mm = st.charAt(5);
  2603. if (((parseInt(d_mm)) < 1) || ((parseInt(d_mm)) > 12))
  2604. {
  2605. dlgAlert(alertMSG + "의 월은 01부터12까지 입니다");
  2606. stObj.focus();
  2607. return false;
  2608. }
  2609. if (st.substr(6,2) == "08") {
  2610. d_dd = st.charAt(8);
  2611. }
  2612. if (st.substr(6,2) == "09") {
  2613. d_dd = st.charAt(8);
  2614. }
  2615. num = Number(d_mm);
  2616. if ((0 < num) && (num < 8)) {
  2617. // 윤달체크 시작
  2618. year = Number(d_yy);
  2619. if (parseInt(d_mm) == 2) {
  2620. if (year%4 == 0)
  2621. {
  2622. if (((parseInt(d_dd)) < 0) || ((parseInt(d_dd)) > 29))
  2623. {
  2624. dlgAlert(alertMSG + "의 일자는 01부터 29일까지 입니다.");
  2625. stObj.focus();
  2626. return false;
  2627. }
  2628. }else
  2629. {
  2630. if (((parseInt(d_dd)) < 0) || ((parseInt(d_dd)) > 28))
  2631. {
  2632. dlgAlert(alertMSG + "의 일자는 01부터 28일까지 입니다.");
  2633. stObj.focus();
  2634. return false;
  2635. }
  2636. }
  2637. }
  2638. //윤달체크 끝.
  2639. if (num%2 == 0)
  2640. {
  2641. if (((parseInt(d_dd)) < 1) || ((parseInt(d_dd)) > 30)) {
  2642. dlgAlert(alertMSG + "의 일자는 01부터30까지 입니다.");
  2643. stObj.focus();
  2644. return false;
  2645. }
  2646. }
  2647. else {
  2648. if (((parseInt(d_dd)) < 1) || ((parseInt(d_dd)) > 31)) {
  2649. dlgAlert(alertMSG + "의 일자는 01부터31까지 입니다.");
  2650. stObj.focus();
  2651. return false;
  2652. }
  2653. }
  2654. } // 여기까지가 01-07월까지 일계산 입니다...
  2655. else {
  2656. if (num%2 == 0)
  2657. {
  2658. if (((parseInt(d_dd)) < 1) || ((parseInt(d_dd)) > 31)) {
  2659. dlgAlert(alertMSG + "의 일자는 01부터31까지 입니다.");
  2660. stObj.focus();
  2661. return false;
  2662. }
  2663. }
  2664. else {
  2665. if (((parseInt(d_dd)) < 1) || ((parseInt(d_dd)) > 30)) {
  2666. dlgAlert(alertMSG + "의 일자는 01부터30까지 입니다.");
  2667. stObj.focus();
  2668. return false;
  2669. }
  2670. }
  2671. }
  2672. return true;
  2673. }
  2674. /*-------------------------------------------------------------------------
  2675. function upArrowClik(obj)
  2676. Example : upArrowClik(obj);
  2677. -------------------------------------------------------------------------*/
  2678. /**
  2679. * obj의 값을 +1시킨다.
  2680. * 파라미터)> Obj:객체이름
  2681. * 사용예)> upArrowClik(obj);
  2682. */
  2683. function upArrowClik(obj){
  2684. obj.value = (obj.value*1)+1;
  2685. }
  2686. /*-------------------------------------------------------------------------
  2687. function downArrowClik(obj)
  2688. Example : downArrowClik(obj);
  2689. -------------------------------------------------------------------------*/
  2690. /**
  2691. * obj의 값을 -1시킨다.
  2692. * 파라미터)> Obj:객체이름
  2693. * 사용예)> upArrowClik(obj);
  2694. */
  2695. function downArrowClik(obj){
  2696. obj.value = (obj.value*1)-1;
  2697. }
  2698. /**
  2699. * 자릿수에 따른 포맷형식
  2700. * 파라미터)> strDigit : 소수점 자릿수
  2701. * 설명)> Report Designer 에 자릿수 형식 표현을 위해 JSP 단에서 파라미터 값을 미리 형식변환 하여 보낸다.
  2702. */
  2703. function getFormatDigit(strDigit){ // 자릿수에 따른 포맷형식
  2704. var strFormat = "";
  2705. if(strDigit == "0") strFormat = "#,###";
  2706. else if(strDigit == "1") strFormat = "#,###.#";
  2707. else if(strDigit == "2") strFormat = "#,###.##";
  2708. else if(strDigit == "3") strFormat = "#,###.###";
  2709. else if(strDigit == "4") strFormat = "#,###.####";
  2710. else if(strDigit == "5") strFormat = "#,###.#####";
  2711. else if(strDigit == "6") strFormat = "#,###.######";
  2712. return strFormat;
  2713. }
  2714. /**
  2715. * Textarea 크기 조절
  2716. * 파라미터 ) imgObj: 사이즈 변화를 주고싶어 클릭할 image, textObj:사이즈 변화를 주고싶은 TEXTAREA, minRows:최저 Row 라인 갯수, maxRows:최대 Row 라인 갯수
  2717. * 사용예 )<IMG src="/images/temp/plus.gif" alt="통지사항의 크기를 조절합니다." border="0" align="top" onClick="JavaScript:toggleTextarea(this, document.form1.req_etc, 2, 10);" style="cursor:hand;">
  2718. */
  2719. function toggleTextarea(imgObj, textObj, minRows, maxRows) {
  2720. var maxImgSrc = "/img/buyer/icon/icon_minus.gif";
  2721. var minImgSrc = "/img/buyer/icon/icon_plus.gif";
  2722. try {
  2723. if( textObj.rows >= maxRows ) { // 축소
  2724. imgObj.src = minImgSrc;
  2725. textObj.rows = minRows;
  2726. }
  2727. else if( textObj.rows < maxRows ) { // 확대
  2728. imgObj.src = maxImgSrc;
  2729. textObj.rows = maxRows;
  2730. }
  2731. }
  2732. catch(errorObject) {
  2733. }
  2734. }
  2735. /**
  2736. * 두 날짜의 차이를 true false로 반환한다 (조회 종료일 - 조회 시작일)
  2737. * 두 월의 차이를 true false로 반환한다 (조회 종료월 - 조회 시작월)
  2738. * @param fromDate - 조회 시작일 or 조회 시작월 (날짜 ex.2002-01-01 or 2002-01)
  2739. * @param toDate - 조회 종료일 or 조회 종료월 (날짜 ex.2002-01-01 or 2002-02)
  2740. * @param delim - 날짜 구분자
  2741. * @param isMonth - 달체크 여부 true인 경우 달로 체크한다
  2742. * @param msgChk - 메시지 출력여부 ( true or false )
  2743. * @return boolean
  2744. */
  2745. function compareDate( fromDate, toDate, delim, isMonth, msgChk ){
  2746. var delimeter = delim;
  2747. var from_dt;
  2748. var to_dt;
  2749. if( msgChk == undefined || msgChk == null ){
  2750. msgChk = true;
  2751. }
  2752. // delimeter가 있는 경우
  2753. if( delimeter != null && delimeter != undefined && delimeter != "" ){
  2754. //년월일체크
  2755. if ( !isMonth && (fromDate.length != 10 || toDate.length != 10) ){
  2756. alert("올바른 날짜 값이 아닙니다.")
  2757. return false;
  2758. }
  2759. //년월 체크
  2760. else if ( isMonth && (fromDate.length != 7 || toDate.length != 7) ){
  2761. alert("올바른 년월 값이 아닙니다.")
  2762. return false;
  2763. }
  2764. if( fromDate.indexOf(delimeter) < 0 || toDate.indexOf(delimeter) < 0 ){
  2765. alert("날짜 구분자가 맞지 않습니다.")
  2766. return false;
  2767. }
  2768. // 년도, 월, 일로 분리
  2769. var start_dt = fromDate.split(delimeter);
  2770. var end_dt = toDate.split(delimeter);
  2771. // 월 - 1(자바스크립트는 월이 0부터 시작하기 때문에...)
  2772. // Number()를 이용하여 08, 09월을 10진수로 인식하게 함.
  2773. start_dt[1] = (Number(start_dt[1]) - 1) + "";
  2774. end_dt[1] = (Number(end_dt[1]) - 1) + "";
  2775. //달체크인 경우
  2776. if( isMonth ){
  2777. from_dt = new Date(start_dt[0], start_dt[1], "01");
  2778. to_dt = new Date(end_dt[0], end_dt[1], "01");
  2779. }
  2780. else{
  2781. from_dt = new Date(start_dt[0], start_dt[1], start_dt[2]);
  2782. to_dt = new Date(end_dt[0], end_dt[1], end_dt[2]);
  2783. }
  2784. }
  2785. // delimeter가 없지만 자릿수가 8자리인 경우
  2786. else if( fromDate.length == 8 && toDate.length == 8 ){
  2787. from_dt = new Date(fromDate.substring(0,4), fromDate.substring(4,6), fromDate.substring(6,8));
  2788. to_dt = new Date(toDate.substring(0,4), toDate.substring(4,6), toDate.substring(6,8));
  2789. }
  2790. // delimeter가 없고 년월 체크이면서 자릿수가 6자리인 경우
  2791. else if( isMonth && (fromDate.length == 6 && toDate.length == 6) ){
  2792. from_dt = new Date(fromDate.substring(0,4), fromDate.substring(4,6), "01");
  2793. to_dt = new Date(toDate.substring(0,4), toDate.substring(4,6), "01");
  2794. }
  2795. else{
  2796. alert("올바른 날짜 값이 아닙니다.")
  2797. return false;
  2798. }
  2799. /*
  2800. if( ( to_dt.getTime() - from_dt.getTime() ) == 0 ){
  2801. if( isMonth ){
  2802. alert("조회기간의 시작월과 종료월이 같습니다.");
  2803. }
  2804. else{
  2805. alert("조회기간의 시작날짜와 종료날짜가 같습니다.");
  2806. }
  2807. return false;
  2808. }
  2809. else
  2810. */
  2811. if( ( to_dt.getTime() - from_dt.getTime() ) < 0 ){
  2812. if( isMonth && msgChk ){
  2813. alert("조회기간의 종료월이 시작월보다 작습니다.");
  2814. }else if( msgChk ){
  2815. alert("조회기간의 종료날짜가 시작날짜보다 작습니다.");
  2816. }
  2817. return false;
  2818. }
  2819. else {
  2820. return true;
  2821. }
  2822. }
  2823. function doDownExcel(sheetObj){
  2824. sheetObj.SpeedDown2Excel(-1);
  2825. }
  2826. /**
  2827. * 엑셀 다운로드
  2828. * 파라미터 > sheetObj 쉬트Object, exceltitle 엑셀 타이틀
  2829. * 사용예 > doDownExcel4sheet(document.all.sheet1,"Project NO")
  2830. * 작성일자 > 2007-12-12
  2831. */
  2832. function doDownExcel4Sheet(sheetObj,exceltitle) {
  2833. if (sheetObj.RowCount <= 0){
  2834. dlgAlert("There is no data to download.");
  2835. return;
  2836. }
  2837. var param = "exceltitle=" + HMCS_MSG+"Project ["+sheetObj.UrlEncoding(exceltitle)+"]";
  2838. // 엑셀 다운로드
  2839. sheetObj.SpeedDown2Excel(-1, false, false, "", "/lib/excel_download.screen?"+param);
  2840. }
  2841. //현재 자식노드인 경우 부모노드의 Row를 반환한다.
  2842. function getParentRow( childRow ){
  2843. var parentRow = 0;
  2844. var sheetObj = document.all.sheet1;
  2845. for ( var i = childRow; i > 0; i-- ) {
  2846. if( sheetObj.RowLevel(i) == 0 ){
  2847. parentRow = i;
  2848. break;
  2849. }
  2850. }
  2851. return parentRow;
  2852. }
  2853. /**
  2854. * PassWord Validation Check
  2855. * 패스워드는 8~16자리 이내, 생일, 주민등록번호, 전화번호 같지 않게 ,영문혼용 사용, ID와 4자이상 중복, 연속된 문자, 순차적인 숫자 4개이상 입력 안됨.
  2856. */
  2857. function doValidPassWord(Object) {
  2858. var minLength = 6; //비밀번호 최소 자리수
  2859. var maxLength = 20; //비밀번호 최대 자리수
  2860. var msg = "";
  2861. try {
  2862. if(Object.passwd01 != Object.passwd02){
  2863. msg = "입력하신 비밀번호가 다릅니다.";
  2864. return msg;
  2865. }
  2866. if(Object.passwd01.length < minLength || Object.passwd01.length > maxLength){
  2867. msg = "비밀번호는 "+minLength+"자 이상 ~"+maxLength+" 자 이내로 입력하세요!";
  2868. return msg;
  2869. }
  2870. if(chkPassword(Object.passwd01) == false ){
  2871. msg = "비밀번호는 영문, 숫자의 조합으로 입력하세요!";
  2872. return msg;
  2873. }
  2874. if(chkNumber(Object.passwd01, Object.tel_no) == false
  2875. ||chkNumber(Object.passwd01, Object.hand_tel) == false){
  2876. msg = "전화번호, 휴대폰번호 등은 비밀번호로 사용할 수 없습니다!"
  2877. return msg;
  2878. }
  2879. var cnt=0,cnt2=1,cnt3=1;
  2880. var temp="";
  2881. for(i=0;i < Object.user_id.length;i++){
  2882. temp_id =Object.user_id.charAt(i);
  2883. for(j=0;j < Object.passwd01.length;j++){
  2884. if (cnt >0)
  2885. j=tmp_pass_no+1;
  2886. if (temp == "r"){
  2887. j=0;
  2888. temp="";
  2889. }
  2890. temp_pass = Object.passwd01.charAt(j);
  2891. if (temp_id == temp_pass){
  2892. cnt = cnt + 1;
  2893. tmp_pass_no = j;
  2894. break;
  2895. }else if(cnt > 0 && j > 0){
  2896. temp="r";
  2897. cnt = 0;
  2898. }else
  2899. cnt = 0;
  2900. }
  2901. //alert("4-cnt="+cnt);
  2902. if (cnt > 3) break;
  2903. }
  2904. if (cnt > 3){
  2905. msg = "비밀번호가 ID와 4자 이상 중복되거나, \n연속된 문자나 순차적인 숫자를 4개이상 사용해서는 안됩니다.";
  2906. return msg;
  2907. }
  2908. for(i=0;i < Object.passwd01.length;i++){
  2909. temp_pass1 = Object.passwd01.charAt(i);
  2910. next_pass = (parseInt(temp_pass1.charCodeAt(0)))+1;
  2911. temp_p = Object.passwd01.charAt(i+1);
  2912. temp_pass2 = (parseInt(temp_p.charCodeAt(0)));
  2913. if (temp_pass2 == next_pass)
  2914. cnt2 = cnt2 + 1;
  2915. else
  2916. cnt2 = 1;
  2917. if (temp_pass1 == temp_p)
  2918. cnt3 = cnt3 + 1;
  2919. else
  2920. cnt3 = 1;
  2921. if (cnt2 > 3) break;
  2922. if (cnt3 > 3) break;
  2923. }
  2924. if (cnt2 > 3){
  2925. msg = "비밀번호에 연속된 문자나 순차적인 숫자를 4개이상 사용해서는 안됩니다.";
  2926. return msg;
  2927. }
  2928. else if (cnt3 > 3){
  2929. msg = "비밀번호에 반복된 문자/숫자를 4개이상 사용해서는 안됩니다.";
  2930. return msg;
  2931. }
  2932. }
  2933. catch(errorObject) {
  2934. showErrorDlg("common_js.doValidPassWord()", errorObject);
  2935. return msg = errorObject ;
  2936. }
  2937. return msg;
  2938. }
  2939. function chkPassword(pass) {
  2940. chk1 = /^[a-z\d]{6,20}$/i; //a-z와 0-9이외의 문자가 있는지 확인
  2941. chk2 = /[a-z]/i; //적어도 한개의 a-z 확인
  2942. chk3 = /\d/; //적어도 한개의 0-9 확인
  2943. return chk1.test(pass) && chk2.test(pass) && chk3.test(pass);
  2944. }
  2945. function chkNumber(pass, Num){
  2946. var check = false;
  2947. var comp = Num.substring(Num.length-4);
  2948. if(pass.match(comp)== null || Num == ""){
  2949. return true;
  2950. }
  2951. return check;
  2952. }
  2953. /**
  2954. * Random PassWord Generator
  2955. * 랜덤 패스워드 생성
  2956. */
  2957. function randomPassWord() {
  2958. var pass = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234507890abcdefghijklmnopqrstuvwxyz";
  2959. var n = 0 ;
  2960. var i = 0 ;
  2961. var s = "" ;
  2962. var len = 8;
  2963. for(k=1; k<=len; k++){
  2964. n = Math.random()*62;
  2965. i = Math.round(n);
  2966. s += pass.charAt(i);
  2967. }
  2968. return s;
  2969. }
  2970. function changePasswd(Obj){
  2971. var url = "/sycs/user/ChangePwd.screen?user_id="+Obj.user_id.value;
  2972. var argObj = new Object();
  2973. argObj.user_id = Obj.user_id.value;
  2974. argObj.tel_no = Obj.tel_no.value;
  2975. argObj.fax_no = Obj.fax_no.value;
  2976. argObj.hand_tel = Obj.hand_tel.value;
  2977. var result = window.showModalDialog(getDummyUrl(url), argObj ,'dialogWidth:430px;dialogHeight:140px; center:yes; help:no; status:no; scroll:no; resizable:no');
  2978. }
  2979. function deciHistoryView(bizCode, linkTable, docGB, processStatus, keyId, chasu) {
  2980. var url = "/common/his/DeciHistoryView.screen"
  2981. + "?biz_code=" + bizCode
  2982. + "&link_table=" + linkTable
  2983. + "&doc_gb=" + docGB
  2984. + "&process_status=" + processStatus
  2985. + "&key_id=" + keyId;
  2986. if(linkTable == "WEEK"){
  2987. url += "&chasu=" + chasu;
  2988. }
  2989. var dlgWidth = 980;
  2990. var dlgHeight = 400;
  2991. window.showModalDialog(getDummyUrl(url), this.window,'dialogWidth:' + dlgWidth + 'px;dialogHeight:' + dlgHeight + 'px; center:yes; help:no; status:no; scroll:yes; resizable:no');
  2992. }
  2993. /*
  2994. * Tab 이미지를 마우스 over/out에 따라 설정한다.
  2995. */
  2996. function setTabImage(obj){
  2997. if(obj.style.backgroundImage == '' || obj.style.backgroundImage == 'url(/img/tab/tab_off.gif)'){
  2998. obj.style.backgroundImage = "url(/img/tab/tab_on.gif)";
  2999. obj.style.setAttribute("color", "white");
  3000. }else{
  3001. obj.style.backgroundImage = "url(/img/tab/tab_off.gif)";
  3002. obj.style.setAttribute("color", "#5e5e5e");
  3003. }
  3004. }
  3005. var isIE = (navigator.appName.indexOf("Microsoft") != -1) ? 1 : 0;
  3006. function trueBody(){
  3007. return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement: document.body;
  3008. }
  3009. function trueBodyParent(){
  3010. return (parent.document.compatMode && parent.document.compatMode!="BackCompat")? parent.document.documentElement: parent.document.body;
  3011. }
  3012. //Layer Popup 오픈
  3013. function fLayerPop(layerID, htmlSrc, width, height, xPos, yPos, scroll)
  3014. {
  3015. fLayerPop(layerID, htmlSrc, width, height, xPos, yPos, scroll, '200');
  3016. }
  3017. function fLayerPop(layerID, htmlSrc, argwidth, argheight, xPos, yPos, scroll, z_index){
  3018. var div1 = document.createElement("DIV");
  3019. div1.id = layerID;
  3020. div1.style.display = "none";
  3021. div1.innerHTML = "<div id='"+layerID+"_divcontent'></div>";
  3022. document.body.appendChild(div1);
  3023. $('#'+layerID).width(argwidth);
  3024. $('#'+layerID).height(argheight+25);
  3025. $('#'+layerID+ '_divcontent').width(argwidth);
  3026. $('#'+layerID+ '_divcontent').height(argheight+25);
  3027. if(scroll== 'y' || scroll == 'yes' || scroll == 'YES'){
  3028. scroll = 'scrolling="yes"';
  3029. }else{
  3030. scroll = 'scrolling="no"';
  3031. }
  3032. //테스트중
  3033. $('#'+layerID).bPopup({
  3034. modalClose: false,
  3035. escClose: true,
  3036. opacity: 0.5,
  3037. iframeAttr: scroll,
  3038. content:'iframe', //'ajax', 'iframe' or 'image'
  3039. contentContainer:"#"+layerID+"_divcontent",
  3040. loadUrl: htmlSrc //Uses jQuery.load()
  3041. });
  3042. }
  3043. function fLayerPopBack(layerID, htmlSrc, width, height, xPos, yPos, scroll, z_index)
  3044. {
  3045. var yScroll = document.all ? (!document.documentElement.scrollTop ? document.body.scrollTop : document.documentElement.scrollTop) : (window.pageYOffset ? window.pageYOffset : window.scrollY);
  3046. if(yScroll<width){
  3047. yScroll = 0 ;
  3048. }
  3049. adjX = xPos ? xPos : (document.documentElement.scrollWidth/2 - width/2);
  3050. adjY = yPos ? yPos : (window.screen.height /2 + (isIE?document.body.scrollTop:document.documentElement.scrollTop) - height/2 - 100)+yScroll;
  3051. nowY = document.all ? (!document.documentElement.scrollTop ? document.body.scrollTop : document.documentElement.scrollTop) : (window.pageYOffset ? window.pageYOffset : window.scrollY);
  3052. if(z_index == undefined){z_index = 1000;}
  3053. if(nowY == undefined){nowY = 0;}
  3054. nowY += (trueBody().clientHeight - height) / 2;
  3055. // 배경이 되는 반투명 레이어를 생성한다.
  3056. var div1 = document.createElement("DIV");
  3057. div1.id = layerID;
  3058. //div1.onclick = function () {fLayerPopClose(layerID);};
  3059. div1.style.zIndex= z_index;
  3060. div1.style.position = "absolute";
  3061. div1.style.height = document.documentElement.scrollHeight+"px";
  3062. // div1.style.width = document.documentElement.scrollWidth+ "px";
  3063. div1.style.width = "100%";
  3064. div1.style.top = "0";
  3065. div1.style.left = "0";
  3066. div1.style.background = "#000000";
  3067. div1.style.opacity = "0.3";
  3068. div1.style.filter = "alpha(opacity=30)";
  3069. div1.style.display = "none";
  3070. var iframe = document.createElement('iframe');
  3071. iframe.style.zIndex= (z_index+10);
  3072. iframe.style.position = "absolute";
  3073. iframe.style.border = "3px solid #2b81d9";
  3074. iframe.style.width = width+"px";
  3075. iframe.style.height = (parseInt(height,10)+30)+"px";
  3076. //iframe.style.top = adjY+"px";
  3077. iframe.style.top =nowY+"px";
  3078. iframe.style.left = adjX+"px";
  3079. // 오른쪽 경계 넘어가면 위치 조정
  3080. var xMax = parseInt(document.body.clientWidth);
  3081. if( (parseInt(adjX)+parseInt(iframe.style.width)) > xMax)
  3082. iframe.style.left = xMax - parseInt(iframe.style.width) - 20;
  3083. if(scroll == null || scroll.length == 0){
  3084. scroll = "yes"
  3085. }
  3086. iframe.id = layerID + "_iframe";
  3087. iframe.marginwidth = "0px";
  3088. iframe.marginheight = "0px";
  3089. iframe.scrolling = scroll;
  3090. iframe.frameBorder = "0px";
  3091. iframe.src = htmlSrc;
  3092. //document.body.appendChild(iframe);
  3093. document.body.appendChild(div1);
  3094. //document.body.appendChild(iframe);
  3095. document.body.insertBefore(iframe, div1);
  3096. $('#'+layerID).fadeIn();
  3097. }
  3098. // Layer Popup 닫기
  3099. function fLayerPopClose(layerID)
  3100. {
  3101. var oNode = document.getElementById(layerID);
  3102. if(oNode != null)
  3103. {
  3104. $('#'+layerID+ '_divcontent').empty();
  3105. $('#'+layerID).bPopup().close();
  3106. document.body.removeChild(oNode);
  3107. }
  3108. }
  3109. //시간 호출
  3110. function dpTime(){
  3111. var now = new Date();
  3112. hours = now.getHours();
  3113. minutes = now.getMinutes();
  3114. seconds = now.getSeconds();
  3115. if (hours > 12){
  3116. hours -= 12;
  3117. ampm = "오후 ";
  3118. }else{
  3119. ampm = "오전 ";
  3120. }
  3121. if (hours < 10)
  3122. hours = "0" + hours;
  3123. if (minutes < 10)
  3124. minutes = "0" + minutes;
  3125. if (seconds < 10)
  3126. seconds = "0" + seconds;
  3127. document.getElementById("dpTime").innerHTML = ampm + hours + ":" + minutes + ":" + seconds;
  3128. }
  3129. // 숫자 3자리수마다 콤마(,) 찍기
  3130. function formatComma(num, pos) {
  3131. if (!pos) pos = 0; //소숫점 이하 자리수
  3132. var re = /(-?\d+)(\d{3}[,.])/;
  3133. var strNum = stripComma(num.toString());
  3134. var arrNum = strNum.split(".");
  3135. if(arrNum.length > 1 && pos > 0){
  3136. arrNum[0] += ".";
  3137. }
  3138. while (re.test(arrNum[0])) {
  3139. arrNum[0] = arrNum[0].replace(re, "$1,$2");
  3140. }
  3141. if (arrNum.length > 1) {
  3142. if (arrNum[1].length > pos) {
  3143. arrNum[1] = arrNum[1].substr(0, pos);
  3144. }
  3145. return arrNum.join("");
  3146. }
  3147. else {
  3148. return arrNum[0].split(".")[0];
  3149. }
  3150. }
  3151. // 콤마(,) 제거
  3152. function stripComma(str) {
  3153. var re = /,/g;
  3154. return str.replace(re, "");
  3155. }
  3156. /**
  3157. * Sheet1 List 엑셀 다운로드
  3158. */
  3159. function sheetExcelDown(obj,Name){
  3160. var DownCol = "";
  3161. var ColEnd = "|";
  3162. for(var i=0;i < 99;i++){
  3163. var ColName = obj.ColSaveName(0, i);
  3164. if(ColName == -1){
  3165. i = 100;
  3166. }else{
  3167. if(obj.GetColHidden(ColName) == 0){
  3168. DownCol = DownCol + ColName + ColEnd;
  3169. }
  3170. }
  3171. }
  3172. DownCol = DownCol.substring(0,DownCol.length-1);
  3173. var params = { FileName : Name+".xls", SheetName : Name, SheetDesign:1 , DownCols:DownCol , AutoSizeColumn : 1, Merge : 1} ;
  3174. obj.Down2Excel(params);
  3175. }
  3176. //중복 요청을 막기 위하여 로딩바 추가 2019.08.23
  3177. function showLoadingBar() {
  3178. var maskHeight = $(document).height();
  3179. var maskWidth = window.document.body.clientWidth;
  3180. var mask = "<div id='mask' style='position:absolute; z-index:9000; background-color:#000000; display:none; left:0; top:0;'></div>";
  3181. var loadingImg = '';
  3182. loadingImg += "<div id='loadingImg' style='position:absolute; left:50%; top:40%; display:none; z-index:10000;'>";
  3183. loadingImg += " <img src='/img/com/loading.gif'/>";
  3184. loadingImg += "</div>";
  3185. $('body').append(mask).append(loadingImg);
  3186. $('#mask').css({
  3187. 'width' : maskWidth
  3188. , 'height': maskHeight
  3189. , 'opacity' : '0.3'
  3190. });
  3191. $('#mask').show();
  3192. $('#loadingImg').show();
  3193. }
  3194. //중복 요청을 막기 위하여 로딩바 추가 2019.08.23
  3195. function hideLoadingBar() {
  3196. $('#mask, #loadingImg').hide();
  3197. $('#mask, #loadingImg').remove();
  3198. }