comm_utl.xjs 152 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[/***************************************************************************************
  3. * System Name : HIT
  4. * Job Name :
  5. * File Name : comm_utl.xjs
  6. * Creator : 임준호
  7. * Make Date : 2014-02-18
  8. *
  9. * Description :
  10. *---------------------------------------------------------------------------------------
  11. * Modify Date Modifier Modify Description
  12. *---------------------------------------------------------------------------------------
  13. * 2014-02-18 HIT
  14. *
  15. *---------------------------------------------------------------------------------------
  16. ****************************************************************************************/
  17. //prototype_date
  18. Date.prototype.getAddDate = utlf_getAddDate;
  19. Date.prototype.getDateFormat = utlf_getDateFormat;
  20. String.prototype.toDate = utlf_toDate;
  21. Date.prototype.getDayOfWeek = utlf_getDayOfWeek;
  22. Date.prototype.getMonthDay = utlf_getMonthDay;
  23. Date.prototype.isLeapYear = utlf_isLeapYear;
  24. //prototype_numeric
  25. String.prototype.setAmountToKorean = utlf_setAmountToKorean;
  26. String.prototype.isNumber = utlf_isNumber;
  27. String.prototype.isFloat = utlf_isFloat;
  28. String.prototype.getRound = utlf_getRound;
  29. String.prototype.getTruncate = utlf_getTruncate;
  30. //prototype_string
  31. String.prototype.setReplaceWord = utlf_setReplaceWord;
  32. String.prototype.getByteLength = utlf_getByteLength;
  33. String.prototype.isByteSize = utlf_isByteSize;
  34. String.prototype.getTrim = utlf_getTrim;
  35. String.prototype.getTrimLeft = utlf_getTrimLeft;
  36. String.prototype.getTrimRight = utlf_getTrimRight;
  37. String.prototype.getLeftPad = utlf_getLeftPad;
  38. String.prototype.getRightPad = utlf_getRightPad;
  39. String.prototype.getCarrigeReturnRemove = utlf_getCarrigeReturnRemove;
  40. String.prototype.getByteString = utlf_getByteString;
  41. String.prototype.getCarrigeReturnReplace = utlf_getCarrigeReturnReplace;
  42. String.prototype.subString2 = utlf_subString2;
  43. String.prototype.getRound_medirec = utlf_getRound_medirec;
  44. /********************************************************************************************************************/
  45. /************************* 문자열/숫자 관련 함수 *****************************************************************/
  46. /********************************************************************************************************************/
  47. // utlf_args2Object : "key1=value1 key2=value2" 형태의 문자열을 object literal형식으로 변환한다.
  48. // utlf_trim : 입력받은 문자열의 공백을 제거한다.
  49. // utlf_lTrim : 문자열의 좌측 공백을 제거
  50. // utlf_rTrim : 문자열의 우측 공백을 제거
  51. // utlf_isNull : NULL 여부 체크
  52. // utlf_right : 문자열의 오른쪽 부분을 지정한 길이만큼 가져오는 함수.
  53. // utlf_rPad : 입력된 sValue에 nLength 만큼 오른쪽에 Char를 채운다
  54. // utlf_lPad : 입력된 sValue에 nLength 만큼 왼쪽에 Char를 채운다
  55. // utlf_getLengB : 입력된 sValue에 byte를 리턴한다
  56. // utlf_getStringByte : 입력된 sValue를 주어진 byte만큼 자른다.
  57. // utlf_transNullToEmpty : NULL 일 경우 빈 값을 리턴한다.
  58. // utlf_transEmptyToNull : Empty 일 경우 Null을 리턴한다.(2014.12.02)
  59. // utlf_transNull : NULL 일 경우 예약된값을 리턴한다.
  60. // utlf_transNullToChar : NULL 일 경우 새로운 값을 리턴한다.
  61. // utlf_transNullToSpace : NULL 일 경우 공백을 리턴한다.
  62. // utlf_mid : 입력된 문자열에서 가운데 부분을 주어진 길이만큼 Return 한다
  63. // utlf_isDigit : 숫자 정합성 체크
  64. // utlf_round : 인자로 넘어온 숫자를 반올림 처리한다
  65. // utlf_setComma : 숫자 세자리 단위로 ","를 집어넣는다.
  66. // utlf_pos : 문자열의 위치를 대소문자 구별하여 찾는다
  67. // utlf_isNum : 문자열이 숫자형식에 맞는지 여부 체크
  68. // utlf_getFormat : 문자열을 특정 포맷으로 변환
  69. // utlf_isHangul : 데이터 한글인지 영문인지 구분해주는 함수
  70. // utlf_isAlphabet : 영문인지 확인
  71. // utlf_isSearchString : 전체 문장에서 특정 문장이 있는지를 검사하는 함수
  72. // (prototype-String.setReplaceWord)utlf_setReplaceWord : 문자열중의 특정 문자 또는 단어를 찾아 원하는 문자 또는 단어로 치환
  73. // (prototype-String.getByteLength)utlf_getByteLength : 파라미터 값의 Byte 크기를 리턴
  74. // (prototype-String.isByteSize)utlf_isByteSize : 문자열의 Byte 크기가 제한값을 벗어나는지 체크 (벗어나면 false 리턴)
  75. // utlf_getStringAsByte : 문자열을 원하는 바이트 크기로 만든다.
  76. // (prototype-String.getTrim)utlf_getTrim : 문자열 앞뒤에있는 공백 제거
  77. // (prototype-String.getTrimLeft)utlf_getTrimLeft : 문자열 앞에 있는 공백 제거
  78. // (prototype-String.getTrimRight)utlf_getTrimRight : 문자열 뒤에 있는 공백 제거
  79. // (prototype-String.getLeftPad)utlf_getLeftPad : 숫자 값에 원하는 길이만큼 '0'을 붙여 표현
  80. // (prototype-String.getRightPad)utlf_getRightPad : 숫자 값에 원하는 길이만큼 뒤쪽에 ' '을 붙여 표현
  81. // utlf_getStringLength : 문자열의 길이를 구한다.
  82. // (prototype-String.getCarrigeReturnRemove)utlf_getCarrigeReturnRemove : CarrigeReturn을 없앤 문자열을 리턴한다.
  83. // utlf_getSearchStringRight : 전체 문장에서 특정 문장을 뒤에서 부터 찾는 함수
  84. // (prototype-String.getByteString)utlf_getByteString : 원하는 바이트만큼 문자열을 잘라옴. 만약 현재 문자열보다 자르고자 하는 바이트가 크면 현재 문자열 반환.
  85. // (prototype-String.getCarrigeReturnReplace)utlf_getCarrigeReturnReplace : CarrigeReturn을 원하는 문자열로 반환한 다음 리턴한다.
  86. // (prototype-String.setAmountToKorean)utlf_setAmountToKorean : 금액을 한글로 변환 (단위포함)
  87. // (prototype-String.isNumber)utlf_isNumber : 저장된 값이 Number 형인지 점검
  88. // (prototype-String.isFloat)utlf_isFloat : 저장된 값이 Float 형인지 점검
  89. // (prototype-String.getRound)utlf_getRound : 저장된 값을 지정한 자리에서 올림/반올림/버림 처리
  90. // (prototype-String.getTruncate)utlf_getTruncate : 소수점 버리고 정수형 String으로 생성 (음수인경우에도 마찬가지 음수표시는 유효)
  91. // utlf_getRandomNo : 랜덤숫자 만들기
  92. // (삭제)utlf_isEmpty : 입력값이 null 또는 wihte space로만 이루어져 있으면 빈문자를 리턴하는 함수
  93. // utlf_setColumnTrimStr : 문자열의 앞, 뒤 공백을 제거하여 지정된 dataset의 컬럼에 입력한다.
  94. // utlf_getObjFont : Font Object 생성 반환
  95. // utlf_getTextSize : 텍스트 길이 반환 px
  96. // utlf_setFormat : 입력 값에 format을 적용하여 리턴 (2015.01.19)
  97. // utlf_setAsterisk : 입력 값에 표시할 문자열의 길이 만큼만 보여주고 나머지는 *처리 해서 보여준다. (2015.11.23)
  98. /********************************************************************************************************************/
  99. /************************* 날짜 관련 함수 *************************************************************************/
  100. /********************************************************************************************************************/
  101. // utlf_splitDateS : yyyyMMdd형태의 날짜를 주어진 문자로 년,월,일을 구분하여 출력한다.
  102. // utlf_makeDateYmd : 입력된 문자를 date로 변환.
  103. // utlf_makeDateS : [yyyy][MM][dd] -> yyyyMMdd 형태의 문자열 날짜 출력
  104. // utlf_isLeap : 윤년여부 확인
  105. // utlf_addDate : 입력된 날자에 nOffset 으로 지정된 만큼의 일을 증감한다.
  106. // utlf_addMonth : 입력된 날자에 nOffset 으로 지정된 만큼의 월을 증감한다.
  107. // utlf_lastDateNum : 해당월의 마지막 날짜를 가져온다.
  108. // utlf_solar2Lunar : 양력을 음력으로 변환해주는 함수 (처리가능 기간 1841 - 2043년)
  109. // utlf_lunar2Solar : 음력을 양력으로 변환해주는 함수 (처리가능 기간 1841 - 2043년)
  110. // utlf_getHolidays : 양력 nYear에 해당하는 년도의 법정 공휴일(양력) List 모두 구하기
  111. // (삭제)utlf_isValidDay : 날짜 정합성 체크 - utlf_isValidDateTime로 대체
  112. // (삭제)utlf_isValidMonth : 년월 정합성 체크 - utlf_isValidDateTime로 대체
  113. // utlf_getEpTime : 사용시간 계산
  114. // utlf_getDay : 입력된 날자로부터 요일을 구함
  115. // utlf_getDayKor : 입력된 날자로부터 한글로 요일을 구함
  116. // utlf_diffDate : 두 일자간의 차이 일수 계산
  117. // utlf_diffMonth : 두 월간의 차이 월수 계산
  118. // utlf_getTimeInterval : 두 시간의 차를 초단위로 반환
  119. // utlf_getLastMonth : 한달전 날짜 구하는 함수
  120. // utlf_getFirstDate : 현재월 1일 만들기
  121. // utlf_getLastDate : 현재월 마지막일 만들기
  122. // utlf_getOneMonthAfter : 한달후 날짜 구하는 함수
  123. // utlf_str2Date : 문자를 Date형으로 변환
  124. // utlf_date2Str : Date형을 문자로 변환
  125. // utlf_isValidDateTime : 유효한 날짜, 시간 인지 점검
  126. // utlf_getDateTime : 옵션에 따라 Date형을 DateTime형 String으로 변환
  127. // utlf_getRemoveFormatter : YYYY/MM/DD or YYYY-MM-DD -> YYYYMMDD 로 변환
  128. // utlf_getDateInterval : 두 일자사이의 차를 다양한 형태의 날짜 단위로 반환
  129. // utlf_getDayCountForMonth : 해당년의 해당 월이 몇일인지를 반환
  130. // utlf_getNewDate : 현재날짜 시간 서버시간으로 변경
  131. // utlf_getCurrentDate : 현재 날짜 반환
  132. // utlf_getCurrentTime : 현재 시간 반환
  133. // utlf_getCurrentDateTime : 현재 날짜 시간 반환
  134. // utlf_getCurrentWeek : 현재 요일 반환
  135. // urlf_getStrDate : 스트링형태의 날짜데이터 반환
  136. // (prototype-String.toDate) utlf_toDate : 문자열 날짜를 Date로 반환
  137. // (prototype-Date.getAddDate) utlf_getAddDate : 특정일자의 상대일자(+/-)를 계산
  138. // (prototype-Date.getDateFormat) utlf_getDateFormat : Date type을 문자 포맷으로 바꾼다.
  139. // (prototype-Date.getDayOfWeek) utlf_getDayOfWeek : Kind에 해당하는 요일을 반환
  140. // (prototype-Date.getMonthDay) utlf_getMonthDay : 해당일의 마지막 일을 계산
  141. // (prototype-Date.isLeapYear) utlf_isLeapYear : 윤년인지 아닌지 점검
  142. // utlf_getYear : 현재 년도 반환
  143. // utlf_getMonth : 현재 월 반환
  144. // utlf_getDate : 현재 일 반환
  145. /********************************************************************************************************************/
  146. /************************* 주민등록/사업자번호/법인번호/이메일주소 체크관련 함수 *****************************/
  147. /********************************************************************************************************************/
  148. // utlf_getSex : 주민번호로 성별을 Return 한다
  149. // utlf_isCompRegNo : 사업자 등록번호 확인
  150. // utlf_isCorpRegNo : 법인 등록번호 확인
  151. // utlf_isRsrNo : 주민 등록번호 확인
  152. // utlf_isEmail : Email 적합여부 확인
  153. // utlf_getBefo : 주민번호 뒷 첫번째 자리로 년대를 return 한다.
  154. // utlf_getAge : 법적연령-만나이를 구한다
  155. // utlf_getFullAge : 현재일자를 기준으로 나이계산
  156. // utlf_isForegnResidentNo : 외국인 주민등록번호에 대한 검증을 수행
  157. // (삭제)utlf_getGender : 주민번호로 성별을 return 한다.
  158. /********************************************************************************************************************/
  159. /************************* 기타 ************************************************************************************/
  160. /********************************************************************************************************************/
  161. // utlf_getRandomSubmitUUID : uuid 생성
  162. // utlf_isTelephoneZoneNo : 올바른 DDD번호인지 점검 (필요할까?)
  163. // utlf_transBase64ToImg : base64로 인코딩된 이미지를 imageViewer에 출력
  164. // utlf_transBase64ToBin : base64로 인코딩된 이미지를 binary로 변환 (신규 2014-05-13)
  165. // utlf_saveToImageBinary : imageViewer의 이미지를 binary로 변환 (신규 2014-05-13)
  166. // utlf_transFileToImg : 첨부파일(이미지)을 imageViewer에 출력 (신규 2014-05-08)
  167. // utlf_screenToImage : 화면을 캡쳐한다. (2014-04-04)
  168. // utlf_installBarcodeFont : 바코드 폰트를 등록한다. (2015-07-23)
  169. // utlf_validMaskEditTime : MastEdit를 시간으로 사용할 경우, 부정확한 입력을 제한한다.(ontextchange함수에 사용) (2017-02-13)
  170. // utlf_validMaskEditDateTime : MastEdit를 일자 시간으로 사용할 경우, 부정확한 입력을 제한한다.(ontextchange함수에 사용) (2017-05-14)
  171. /********************************************************************************************************************/
  172. /************************* 문자열/숫자 관련 함수 *****************************************************************/
  173. /********************************************************************************************************************/
  174. /**********************************************************************************
  175. * 함수명 : utlf_args2Object
  176. * 설 명 : "key1=value1 key2=value2" 형태의 문자열을 object literal형식으로 변환한다.
  177. * argument : sParam (원본 문자열)
  178. * return Type : object
  179. * 작성자 : 임준호
  180. **********************************************************************************/
  181. function utlf_args2Object(sParam){
  182. var arrParam = sParam.split(" ");
  183. var objResult = new Array(arrParam.length);
  184. for(var i in arrParam){
  185. var key = arrParam[i].split("=")[0];
  186. var value = stripQuote(arrParam[i].split("=")[1]);
  187. objResult[i]={col: key, val: value};
  188. }
  189. return objResult;
  190. }
  191. /**********************************************************************************
  192. * 함수명 : utlf_trim
  193. * 설 명 : 입력받은 문자열의 공백을 제거한다.
  194. * argument : sValue 문자열 값
  195. * return Type : return 문자열
  196. * 작성자 : tobesoft
  197. **********************************************************************************/
  198. function utlf_trim(sValue)
  199. {
  200. if (sValue == null) return "";
  201. if (new String(sValue).valueOf() == "undefined") return "";
  202. if (new String(sValue) == null) return "";
  203. var retVal = (new String(sValue)).replace(/^\s+|\s+$/g, '');
  204. return retVal;
  205. }
  206. /**********************************************************************************
  207. * 함수명 : utlf_lTrim
  208. * 설 명 : 문자열의 좌측 공백을 제거
  209. * argument : sOrg (원본 문자열)
  210. sTrim (치환대상 문자열)
  211. * return Type : String
  212. * 작성자 : 임준호
  213. **********************************************************************************/
  214. function utlf_lTrim(sOrg, sTrim)
  215. {
  216. var chk, pos;
  217. if( utlf_isNull(sOrg) ) return "";
  218. if( utlf_isNull(sTrim) ) sTrim = " ";
  219. for( pos = 0 ; pos < sOrg.length ; pos+=sTrim.length )
  220. {
  221. if( sOrg.substr( pos, sTrim.length ) != sTrim )
  222. break;
  223. }
  224. return sOrg.substr(pos);
  225. }
  226. /**********************************************************************************
  227. * 함수명 : utlf_rTrim
  228. * 설명 : 문자열의 우측 공백을 제거
  229. * argument : sOrg (원본 문자열)
  230. sTrim (치환대상 문자열)
  231. * return Type : String
  232. * 작성자 : 임준호
  233. **********************************************************************************/
  234. function utlf_rTrim(sOrg, sTrim)
  235. {
  236. var pos, nStart;
  237. if( utlf_isNull(sOrg) ) return "";
  238. if( utlf_isNull(sTrim) ) sTrim = " ";
  239. for( pos = sOrg.length-sTrim.length ; pos >= 0 ; pos -= sTrim.length )
  240. {
  241. if( sOrg.substr( pos, sTrim.length ) != sTrim )
  242. break;
  243. }
  244. return sOrg.substr(0, pos+sTrim.length);
  245. }
  246. /**********************************************************************************
  247. * 함수명 : utlf_isNull
  248. * 설명 : NULL 여부 체크
  249. * argument : sValue (문자열)
  250. * return Type : boolean
  251. * 작성자 : 임준호
  252. **********************************************************************************/
  253. function utlf_isNull(sValue)
  254. {
  255. if( ("x"+sValue == "xNaN") && ( new String(sValue.length).valueOf() == "undefined")) return true;
  256. if (sValue == null) return true;
  257. var v_ChkStr = new String(sValue);
  258. if (v_ChkStr == null) return true;
  259. if (v_ChkStr.toString().length == 0 ) return true;
  260. return false;
  261. }
  262. /*********************************************************************
  263. * 함 수 명 : utlf_setQuote
  264. * 설명 : Argument 전송된 각 Data 값에 Quote(') 를 붙여준다.
  265. * argument : 문자열
  266. * return Type : String
  267. * 작성자 : 임준호
  268. ********************************************************************
  269. function utlf_setQuote(sStr)
  270. {
  271. if (utlf_isNull(sStr))
  272. {
  273. argString = "";
  274. }
  275. var strVal = new String(sStr);
  276. var strRet = new String("'");
  277. for (var i = 0; i < strVal.length; i++)
  278. {
  279. if (strVal.substr(i, 1) == "'")
  280. {
  281. strRet += '"';
  282. } else if (strVal.substr(i, 1) == '"') {
  283. strRet += '"';
  284. } else {
  285. strRet += strVal.substr(i, 1);
  286. }
  287. }
  288. strRet += "'";
  289. return strRet;
  290. }*/
  291. /**********************************************************************************
  292. * 함수명 : utlf_right
  293. * 설명 : 문자열의 오른쪽 부분을 지정한 길이만큼 가져오는 함수
  294. * argument : sOrg (원본 문자열)
  295. nSize (얻어올 크기)
  296. * return Type : String
  297. * 작성자 : 임준호
  298. **********************************************************************************/
  299. function utlf_right(sOrg, nSize)
  300. {
  301. if( utlf_isNull(sOrg) || utlf_isNull(nSize) ) return "";
  302. if( sOrg.length < nSize )
  303. return sOrg;
  304. else
  305. return sOrg.substr(sOrg.length-nSize, nSize);
  306. }
  307. /**********************************************************************************
  308. * 함수명 : utlf_rPad
  309. * 설명 : 입력된 sValue에 nLength 만큼 오른쪽에 Char를 채운다.
  310. * argument : sValue (문자열)
  311. nLength (자리수)
  312. Char (문자)
  313. * return Type : String
  314. * 작성자 : 임준호
  315. **********************************************************************************/
  316. function utlf_rPad(sValue, nLength, Char) {
  317. if (new String(sValue).valueOf() == "undefined") sValue = "";
  318. if (utlf_isNull(sValue)) sValue = "";
  319. var strRetVal = new String(sValue);
  320. var nIteration = nLength - utlf_getLengB(strRetVal);
  321. for (var i = 0; i < nIteration; i++) {
  322. strRetVal = strRetVal + Char;
  323. }
  324. return strRetVal;
  325. }
  326. /**********************************************************************************
  327. * 함수명 : utlf_lPad
  328. * 설명 : 입력된 sValue에 nLength 만큼 왼쪽에 Char를 채운다.
  329. * argument : sValue (문자열)
  330. nLength (자리수)
  331. Char (문자)
  332. * return Type : String
  333. * 작성자 : 임준호
  334. **********************************************************************************/
  335. function utlf_lPad(sValue, nLength, Char) {
  336. if (new String(sValue).valueOf() == "undefined") sValue = "";
  337. if (utlf_isNull(sValue)) sValue = "";
  338. var strRetVal = new String(sValue);
  339. var strChar = "";
  340. var nIteration = nLength - utlf_getLengB(strRetVal);
  341. for (var i = 0; i < nIteration; i++) {
  342. strChar = Char + strChar;
  343. }
  344. return (strChar + strRetVal);
  345. }
  346. /**********************************************************************************
  347. * 함수명 : utlf_getLengB
  348. * 설명 : 입력된 sValue에 byte를 리턴한다.
  349. * argument : sValue (문자열)
  350. * return Type : String
  351. * 작성자 : 임준호
  352. **********************************************************************************/
  353. function utlf_getLengB(sValue)
  354. {
  355. var v_ChkStr = sValue.toString();
  356. var v_cnt = 0;
  357. for (var i=0; i<v_ChkStr.length; i++)
  358. {
  359. if (v_ChkStr.charCodeAt(i) > 127)
  360. {
  361. v_cnt += 2;
  362. } else {
  363. v_cnt += 1;
  364. }
  365. }
  366. return v_cnt;
  367. }
  368. /**********************************************************************************
  369. * 함수명 : utlf_getStringByte
  370. * 설명 : 입력된 sValue를 주어진 byte만큼 자른다.
  371. * argument : sValue (문자열)
  372. * StartByte (시작 byte값)
  373. * EndByte (종료 byte값)
  374. * return Type : String
  375. * 작성자 : 임준호
  376. **********************************************************************************/
  377. function utlf_getStringByte(sValue, StartByte, EndByte){
  378. var buf = sValue.toString();
  379. var Len = 0;
  380. var strText = "";
  381. for(var i=0; i<buf.length; i++){
  382. if (buf.charCodeAt(i) > 127){
  383. Len += 2;
  384. }else{
  385. Len += 1;
  386. }
  387. if( Len >= StartByte && Len <= EndByte){
  388. strText += String.fromCharCode(buf.charCodeAt(i));
  389. }
  390. }
  391. return strText;
  392. }
  393. /**********************************************************************************
  394. * 함수명 : utlf_isNull
  395. * 설명 : NULL 여부 체크
  396. * argument : sValue (문자열)
  397. * return Type : boolean
  398. * 작성자 : 임준호
  399. *********************************************************************************
  400. function utlf_isNull(sValue)
  401. {
  402. if( ("x"+sValue == "xNaN") && ( new String(sValue.length).valueOf() == "undefined")) return true;
  403. if (sValue == null) return true;
  404. var v_ChkStr = new String(sValue);
  405. if (v_ChkStr == null) return true;
  406. if (v_ChkStr.toString().length == 0 ) return true;
  407. return false;
  408. }
  409. */
  410. /**********************************************************************************
  411. * 함수명 : utlf_transNullToEmpty
  412. * 설명 : NULL 일 경우 빈 값을 리턴한다.
  413. * argument : sValue (문자열)
  414. * return Type : String
  415. * 작성자 : 임준호
  416. **********************************************************************************/
  417. function utlf_transNullToEmpty(sValue)
  418. {
  419. if( utlf_isNull(sValue) )
  420. {
  421. return "";
  422. }
  423. return sValue;
  424. }
  425. /**********************************************************************************
  426. * 함수명 : utlf_transEmptyToNull
  427. * 설명 : Empty 일 경우 Null 값을 리턴한다.
  428. Component의 displaynulltext를 사용하기위해 생성(2014.12.02)
  429. * argument : sValue (문자열)
  430. * return Type : String
  431. * 작성자 : 최재원
  432. **********************************************************************************/
  433. function utlf_transEmptyToNull(sValue)
  434. {
  435. if( utlf_isNull(sValue) )
  436. {
  437. return null;
  438. }
  439. return sValue;
  440. }
  441. /**********************************************************************************
  442. * 함수명 : utlf_transNull
  443. * 설명 : NULL 일 경우 예약된 문자열로 리턴한다.
  444. * argument : sValue1 (문자열)
  445. * argument : sValue2 (Null 일때 사용할 문자열)
  446. * return Type : String
  447. * 작성자 : 임준호
  448. **********************************************************************************/
  449. function utlf_transNull(sValue1, sValue2)
  450. {
  451. if( utlf_isNull(sValue1) )
  452. {
  453. return sValue2;
  454. }
  455. return sValue1;
  456. }
  457. /**********************************************************************************
  458. * 함수명 : utlf_transNullToChar
  459. * 설명 : NULL 일 경우 새로운 값을 리턴한다.
  460. * argument : sValue (문자열)
  461. * argument : sNewVal (바뀔 문자열)
  462. * return Type : String
  463. * 작성자 : 임준호
  464. **********************************************************************************/
  465. function utlf_transNullToChar(sValue, sNewVal)
  466. {
  467. return utlf_transNull(sValue, sNewVal);
  468. }
  469. /**********************************************************************************
  470. * 함수명 : utlf_transNullToSpace
  471. * 설명 : NULL 일 경우 공백을 리턴한다.
  472. * argument : sValue (문자열)
  473. * return Type : String
  474. * 작성자 : 임준호
  475. **********************************************************************************/
  476. function utlf_transNullToSpace(sValue)
  477. {
  478. if( utlf_isNull(sValue) )
  479. {
  480. return " ";
  481. }
  482. return sValue;
  483. }
  484. /**********************************************************************************
  485. * 함수명 : utlf_mid
  486. * 설명 : 입력된 문자열에서 가운데 부분을 주어진 길이만큼 Return 한다.
  487. * argument : strString (가운데 부문을 얻어올 원본 문자열)
  488. * nIndex (얻어올 첫 글자의 Index)
  489. * nSize (얻어올 글자수)
  490. * return Type : String
  491. * 작성자 : 임준호
  492. **********************************************************************************/
  493. function utlf_mid(strString, nIndex, nSize)
  494. {
  495. var nStart = ((nIndex == null) ? 0 : ((nIndex.toString().length <= 0) ? 0 : nIndex-1));
  496. var nEnd = ((nSize == null) ? strString.toString().length : ((nSize.toString().length <= 0) ? strString.toString().length : nSize));
  497. var rtnVal = strString.toString().substr(nStart, nEnd);
  498. return String(rtnVal);
  499. }
  500. /**********************************************************************************
  501. * 함수명 : utlf_isDigit
  502. * 설명 : 숫자 정합성 체크
  503. * argument : val(문자열)
  504. * return Type : Boolean
  505. * 작성자 : 임준호
  506. **********************************************************************************/
  507. function utlf_isDigit(val)
  508. {
  509. var lvNum;
  510. var lvFlag = "No";
  511. var lvRetVal = false;
  512. var lvLength;
  513. var i;
  514. if (utlf_isNull(val) == true)
  515. {
  516. lvFlag = "Yes";
  517. lvRetVal = false;
  518. return lvRetVal;
  519. }
  520. lvLength = val.length;
  521. if ((val.toString().split(".").length > 2) && lvFlag == "No")
  522. {
  523. lvFlag = "Yes";
  524. lvRetVal = false;
  525. }
  526. if (lvFlag == "No")
  527. {
  528. for (i = 0; i < lvLength ; i++)
  529. {
  530. lvNum = val.substr(i,1);
  531. if (i == 0)
  532. {
  533. if(utlf_isNum(lvNum) || (lvNum == "-" && val.substr(1,1) != ".")
  534. || (lvNum == "+" && val.substr(1,1) != "."))
  535. lvRetVal = true;
  536. else
  537. {
  538. lvRetVal = false;
  539. break;
  540. }
  541. }
  542. else
  543. {
  544. if(utlf_isNum(lvNum) || (lvNum == "." && val.substr(i+1,1).length != 0))
  545. lvRetVal = true;
  546. else
  547. {
  548. lvRetVal = false;
  549. break;
  550. }
  551. }
  552. }
  553. }
  554. return lvRetVal;
  555. }
  556. /**********************************************************************************
  557. * 함수명 : utlf_round
  558. * 설명 : 인자로 넘어온 숫자를 반올림 처리한다.
  559. * argument : nValue(숫자)
  560. * nDigit(자리수)
  561. * return Type : String
  562. * 작성자 : 임준호
  563. **********************************************************************************/
  564. function utlf_round(nValue, nDigit)
  565. {
  566. var nRound = 1;
  567. for ( var i = 0; i < nDigit; i++) {
  568. nRound = nRound * 10;
  569. }
  570. var nRetValue = nValue * nRound;
  571. nRetValue = Math.round(nRetValue);
  572. nRetValue = nRetValue / nRound;
  573. return nRetValue;
  574. }
  575. /**********************************************************************************
  576. * 함수명 : utlf_setComma
  577. * 설명 : 숫자에 ","를 집어넣기
  578. * argument : sNum ( 문자열 )
  579. * return Type : String
  580. * 작성자 : 임준호
  581. **********************************************************************************/
  582. function utlf_setComma(sNum)
  583. {
  584. sNum = sNum.toString().replace(",", "");
  585. var ppos, sDigit, nEnd, nStart=0, sRet="";
  586. if( sNum.charAt(0) == "+" || sNum.charAt(0) == "-" )
  587. {
  588. sRet += sNum.charAt(0);
  589. nStart = 1;
  590. }
  591. ppos = utlf_pos(sNum, ".", nStart);
  592. if( ppos < 0 )
  593. nEnd = sNum.length;
  594. else
  595. nEnd = ppos;
  596. sDigit = sNum.substr(nStart, nEnd-nStart);
  597. for( pos = 0 ; pos < sDigit.length ; pos ++ )
  598. {
  599. if( pos != 0 && (sDigit.length-pos)%3 == 0 )
  600. sRet += ",";
  601. sRet += sDigit.charAt(pos);
  602. }
  603. sRet += sNum.substr(nEnd);
  604. return sRet;
  605. }
  606. /**********************************************************************************
  607. * 함수명 : utlf_pos
  608. * 설명 : 문자열의 위치를 대소문자 구별하여 찾는다
  609. * argument : sOrg ( 원래 문자열 )
  610. * : sFind ( 찾고자 하는 문자열 )
  611. * : nStart ( 검색 시작위치 )
  612. * return Type : Int(찾고자 하는 문자열의 시작위치, 없을시 -1)
  613. * 작성자 : 임준호
  614. **********************************************************************************/
  615. function utlf_pos(sOrg, sFind, nStart)
  616. {
  617. if( utlf_isNull(nStart) ) nStart = 0;
  618. return sOrg.indexOf(sFind, nStart);
  619. }
  620. /**********************************************************************************
  621. * 함수명 : utlf_isNum
  622. * 설명 : 문자열이 숫자형식에 맞는지 여부 체크
  623. * argument : sNum ( 체크할 문자열 )
  624. * return Type : Boolean
  625. * 작성자 : 임준호
  626. **********************************************************************************/
  627. function utlf_isNum(sNum)
  628. {
  629. var c;
  630. var point_cnt=0;
  631. var ret=true;
  632. if( utlf_isNull(sNum) ) return false;
  633. for( i = 0 ; i < sNum.length ; i++ )
  634. {
  635. c = sNum.charAt(i);
  636. if( i == 0 && ( c == "+" || c == "-" ) );
  637. else if( c >= "0" && c <= "9" );
  638. else if( c == "." )
  639. {
  640. point_cnt++;
  641. if( point_cnt > 1 )
  642. {
  643. ret = false;
  644. break;
  645. }
  646. }
  647. else
  648. {
  649. ret = false;
  650. break;
  651. }
  652. }
  653. return ret;
  654. }
  655. /********************************************************************
  656. * 함수명 : utlf_getFormat
  657. * 설명 : 문자 포맷 형식 변환 ( 해당 문자는 포맷에서 @ 사용)
  658. * argument : strVal: 문자열,
  659. * strMask: 문자열 포맷, (@:문자, 포맷스트링("-", ",", ".")등
  660. * 예) ("abcdef", "@@@-@@@") -> "abc-def"
  661. * return Type : String - 포맷된 문자
  662. * 작성자 : 임준호
  663. ********************************************************************/
  664. function utlf_getFormat(strVal, strMask) {
  665. var strRetVal = "";
  666. var sUnit;
  667. if(utlf_isNull(strVal)) return "";
  668. strVal = "" + strVal;
  669. for(var i = 0; i < strMask.length; i++) {
  670. sUnit = strMask.substr(i, 1);
  671. if( sUnit == "@")
  672. {
  673. strRetVal += strVal.substr(0, 1);
  674. strVal = strVal.substr(1);
  675. }
  676. else
  677. {
  678. strRetVal += sUnit;
  679. }
  680. }
  681. return strRetVal;
  682. }
  683. /*******************************************************************************
  684. * 함수명 : utlf_isHangul
  685. * 설명 : 한글 여부 확인 (첫텟스트가 한이면 "H" 아니면 "E" 리턴
  686. * argument : pData: 한글여부를 비교할 데이터
  687. * return Type : E: 영문, H: 한글
  688. * 주의사항 :
  689. * 작성자 : tobesoft
  690. ex) var diagnm = dsObj.getColumn(0, "diagnm");
  691. frmf_setParameter("SPMMO00800_cond3", utlf_isHangul(diagnm));
  692. ******************************************************************************/
  693. function utlf_isHangul(pData) {
  694. var sBit = pData.charAt(0);
  695. if (escape(sBit).length <= 4) return "E";
  696. return "H";
  697. }
  698. /*******************************************************************************
  699. * 함수명 : utlf_isAlphabet
  700. * 설명 : 입력된 문자 또는 문자열이 모두 Alphabet이면 true, 그렇지 않으면 false를 반환합니다.
  701. * argument : str: 비교할 데이터
  702. * return Type : true /false
  703. * 작성자 : tobesoft
  704. * ex) var str = "abc가나";
  705. var str1 = "abcecAC";
  706. utlf_isAlphabet(str); // return false
  707. utlf_isAlphabet(str1); // return true
  708. ******************************************************************************/
  709. function utlf_isAlphabet(str) {
  710. var chCode;
  711. for (var i = 0; i < str.length; i++){
  712. chCode = str.charCodeAt(i);
  713. if (!((chCode >= 65 && chCode <= 90) || (chCode >= 97 && chCode <= 122) || (chCode == 32)))
  714. {
  715. return false;
  716. }
  717. }
  718. return true;
  719. }
  720. /****************************************************************************************
  721. * Function : utlf_isSearchString
  722. * Description : 전체 문장에서 특정 문장이 있는지를 검사하는 함수
  723. * Argument : 01.sSrc : 전체 문장
  724. * : 02.sFind : 찾을 문장
  725. * return type : boolean
  726. * Creator : 임준호
  727. ****************************************************************************************/
  728. function utlf_isSearchString(sSrc, sFind){
  729. var objRe = null;
  730. var bR = null;
  731. objRe = new RegExp(sFind);
  732. bR = objRe.exec(sSrc);
  733. if(utlf_isNull(bR)) return false;
  734. else return true;
  735. }
  736. /****************************************************************************************
  737. * Function : utlf_setReplaceWord
  738. * Description : 문자열중의 특정 문자 또는 단어를 찾아 원하는 문자 또는 단어로 치환
  739. *
  740. * 1. 찾을 단어를 구분자로 분리한 문자열을 저장할 배열 변수지정
  741. * 2. 치환하여 리턴할 내용을 담을 변수 지정
  742. * 3. 원본 문자열을 찾을 단어를 구분자로 분리
  743. * 4. 찾을 단어의 수만큼 loop
  744. * - 찾을 단어 대신 대체 단어를 붙이면서 누적
  745. * 3. 마지막 찾을 단어의 뒷부분 내용 추가.
  746. * - 찾을 단어가 없었다면 원본 문자열 전체가 됨
  747. *
  748. * Argument : 01.findWord - 찾을 단어
  749. * : 02.replaceWord - 대체 단어
  750. * return type : String - 대체하고난 문자열
  751. * Creator : 임준호
  752. ****************************************************************************************/
  753. function utlf_setReplaceWord(findWord, replaceWord){
  754. var tempArray;
  755. var rtnSting = "";
  756. tempArray = this.split(findWord);
  757. for(var i=0; i < tempArray.length-1; i++)
  758. {
  759. rtnSting += tempArray[i] + replaceWord;
  760. }
  761. rtnSting += tempArray[tempArray.length-1];
  762. return rtnSting;
  763. }
  764. /****************************************************************************************
  765. * Function : utlf_getByteLength
  766. * Description : 파라미터 값의 Byte 크기를 리턴
  767. * Argument :
  768. * return type : Number - 파라미터 값의 Byte 크기
  769. * Creator : 임준호
  770. ****************************************************************************************/
  771. function utlf_getByteLength(){
  772. // Byte 수를 저장할 변수
  773. var rtnValue = 0;
  774. // Value 값의 길이만큼 loop
  775. for(var i=0; i < this.length; i++){
  776. //한글이 들어오면 255보다 크다
  777. (this.charCodeAt(i) > 255) ? rtnValue += 2 : rtnValue += 1;
  778. }
  779. return rtnValue;
  780. }
  781. /****************************************************************************************
  782. * Function : utlf_isByteSize
  783. * Description : 문자열의 Byte 크기가 제한값을 벗어나는지 체크 (벗어나면 false 리턴)
  784. * Argument : 01.pSize - 제한크기
  785. * return type : Boolean - true/false
  786. * Creator : 임준호
  787. ****************************************************************************************/
  788. function utlf_isByteSize(pSize){
  789. return (this.getByteLength() <= eval(pSize) ? true : false);
  790. }
  791. /****************************************************************************************
  792. * Function : utlf_getStringAsByte
  793. * Description : 문자열을 원하는 바이트 크기로 만든다.
  794. * Argument : 01.strValue : 문자열
  795. * : 02.pMakeByteSize : 만들고자 하는 바이트수
  796. * : 03.pByteSize : 문자열의 바이트수
  797. * return type : String
  798. * Creator : 임준호
  799. ****************************************************************************************/
  800. function utlf_getStringAsByte(strValue, pMakeByteSize, pByteSize)
  801. {
  802. var rtnValue = strValue;
  803. var sSpace = "";
  804. if (pByteSize > pMakeByteSize) return strValue;
  805. for( var iCnt = 1; iCnt <= pMakeByteSize-pByteSize; iCnt++) {
  806. sSpace = " " + sSpace;
  807. }
  808. rtnValue = sSpace + rtnValue;
  809. return rtnValue;
  810. }
  811. /****************************************************************************************
  812. * Function : utlf_getTrim
  813. * Description : 문자열 앞뒤에있는 공백 제거
  814. * Argument :
  815. * return type : String - 공백을 제거한 결과 문자열
  816. * Creator : 임준호
  817. ****************************************************************************************/
  818. function utlf_getTrim(){
  819. var startPoint = 0; // subString 하기 위한 시작 포인트
  820. var endPoint = this.length; // subString 하기 위한 끝 포인트
  821. //문자열앞에 공백문자가 들어 있는 Index 추출
  822. while( (startPoint < endPoint) && (this.charCodeAt(startPoint) == 32) )
  823. {
  824. startPoint++;
  825. }
  826. //문자열뒤에 공백문자가 들어 있는 Index 추출
  827. while( (startPoint < endPoint) && (this.charCodeAt(endPoint-1) == 32) )
  828. {
  829. endPoint--;
  830. }
  831. // 공백을 제거했으면 subString하여 결과문자열을 리턴하고 제거한 내용이 없으면 그대로 리턴
  832. return ( (startPoint > 0) || (endPoint < this.length) ) ? this.substring(startPoint, endPoint) : this;
  833. }
  834. /****************************************************************************************
  835. * Function : utlf_getTrimLeft
  836. * Description : 문자열 앞에 있는 공백 제거
  837. * Argument :
  838. * return type : String - 공백을 제거한 결과 문자열
  839. * Creator : 임준호
  840. ****************************************************************************************/
  841. function utlf_getTrimLeft(){
  842. var i, j = 0;
  843. for (i = 0; i < this.length; i++) {
  844. if (this.charAt(i) == ' ') j = j + 1;
  845. else break;
  846. }
  847. return this.substr(j, this.length - j + 1);
  848. }
  849. /****************************************************************************************
  850. * Function : utlf_getTrimRight
  851. * Description : 문자열 뒤에 있는 공백 제거
  852. * Argument :
  853. * return type : String - 공백을 제거한 결과 문자열
  854. * Creator : 임준호
  855. ****************************************************************************************/
  856. function utlf_getTrimRight(){
  857. var i, j = 0;
  858. for (i = this.length - 1; i >= 0; i--) {
  859. if (this.charAt(i) == ' ') j = j + 1;
  860. else break;
  861. }
  862. return this.substr(0, this.length - j);
  863. }
  864. /****************************************************************************************
  865. * Function : utlf_getLeftPad
  866. * Description : 숫자 값에 원하는 길이만큼 '0'을 붙여 표현
  867. * Argument : 01.pLen - 돌려받을 최종문자의 길이
  868. * : 02.padString - 지정된 문자로 대체
  869. * return type : String - 지정길이보다 모자른경우 "0"값이 추가된 문자열
  870. * 지정길이보다 큰경우 원래 문자열을 반환
  871. * Creator : 임준호
  872. ****************************************************************************************/
  873. function utlf_getLeftPad(pLength, padString){
  874. var rtnStr = String(this);
  875. if (this.length < pLength) {
  876. for( var i = this.length; i < pLength; i++){
  877. rtnStr = padString + rtnStr;
  878. }
  879. }
  880. return rtnStr;
  881. }
  882. /****************************************************************************************
  883. * Function : utlf_getRightPad
  884. * Description : 숫자 값에 원하는 길이만큼 뒤쪽에 ' '을 붙여 표현
  885. * Argument : 01.pLen - 돌려받을 최종문자의 길이
  886. * : 02.padString - 지정된 문자로 대체
  887. * return type : String - 지정길이보다 모자른경우 " "값이 추가된 문자열
  888. * 지정길이보다 큰경우 원래 문자열을 반환
  889. * Creator : 임준호
  890. ****************************************************************************************/
  891. function utlf_getRightPad(pLength, padString){
  892. var rtnStr = String(this);
  893. if (this.length < pLength) {
  894. for( var i = this.length; i < pLength; i++){
  895. rtnStr = rtnStr + padString;
  896. }
  897. }
  898. return rtnStr;
  899. }
  900. /****************************************************************************************
  901. * Function : utlf_getStringLength
  902. * Description : 문자열의 길이를 구한다.
  903. * Argument : 01.pData - 문자열
  904. * return type : Number - 문자열 길이
  905. * Creator : 임준호
  906. ****************************************************************************************/
  907. function utlf_getStringLength(pData){
  908. var sBit = "";
  909. var iLen = 0;
  910. for (var i = 0; i < pData.length; i++) {
  911. sBit = pData.charAt(i);
  912. if (escape(sBit).length > 4) iLen = iLen + 2;
  913. else iLen = iLen + 1;
  914. }
  915. return iLen;
  916. }
  917. /****************************************************************************************
  918. * Function : utlf_getCarrigeReturnRemove
  919. * Description : CarrigeReturn을 없앤 문자열을 리턴한다.
  920. * Argument :
  921. * return type : String - CarrigeReturn을 없앤 문자열
  922. * Creator : 임준호
  923. ****************************************************************************************/
  924. function utlf_getCarrigeReturnRemove() {
  925. return this.replace(/\s/g, "");
  926. }
  927. /****************************************************************************************
  928. * Function : utlf_getSearchStringRight
  929. * Description : 전체 문장에서 특정 문장을 뒤에서 부터 찾는 함수
  930. * Argument : 01.strSrc - 전체 문장
  931. * : 02.strFind - 찾을 문장
  932. * return type : Number - 위치
  933. * Creator : 임준호
  934. ****************************************************************************************/
  935. function utlf_getSearchStringRight(strSrc, strFind){
  936. var pos = strSrc.indexOf(strFind);
  937. if(pos == -1)
  938. return -1;
  939. while(pos != -1)
  940. {
  941. var oldPos = pos;
  942. pos = strSrc.indexOf(strFind, oldPos + 1);
  943. }
  944. return oldPos;
  945. }
  946. /****************************************************************************************
  947. * Function : utlf_getByteString
  948. * Description : 원하는 바이트만큼 문자열을 잘라옴. 만약 현재 문자열보다 자르고자 하는 바이트가 크면 현재 문자열 반환.
  949. * Argument : 01.bSize - 자르고자 하는 바이트크기(예:30 => 30byte)
  950. * return type : String - bSize 만큼의 문자열
  951. * Creator : 임준호
  952. ****************************************************************************************/
  953. function utlf_getByteString(bSize) {
  954. if (this.getByteLength() <= bSize) {
  955. return this;
  956. }
  957. var rtnValue = "";
  958. for (var i = 0; i < this.length; i++) {
  959. if (rtnValue.getByteLength() >= bSize) {
  960. break;
  961. }
  962. rtnValue += this.charAt(i);
  963. }
  964. return rtnValue;
  965. }
  966. /****************************************************************************************
  967. * Function : utlf_getCarrigeReturnReplace
  968. * Description : CarrigeReturn을 원하는 문자로 변경한 다음 리턴한다.
  969. * Argument : 01.ch - 바꾸고자 하는 문자열
  970. * return type : String
  971. * Creator : 임준호
  972. ****************************************************************************************/
  973. function utlf_getCarrigeReturnReplace(ch) {
  974. return this.replace(/\s/g, ch) ;
  975. }
  976. /****************************************************************************************
  977. * Function : utlf_subString2
  978. * Description : 영문 한글이 섞인 경우 올바른 인덱스로 subString을 하기 위해 사용
  979. * Argument : start : 시작위치
  980. end : 끝나는 위치
  981. * return type : subString된 String
  982. * Creator : 김상목
  983. ****************************************************************************************/
  984. function utlf_subString2(start, end) {
  985. var lim = 0;
  986. var pos = 0;
  987. var beg = 0;
  988. var minus = 0;
  989. var len = utlf_getLengB(this);
  990. var size = end - start;
  991. for(var i = 0; pos < start; i++)
  992. pos += (this.charCodeAt(i) > 127) ? 2 : 1;
  993. beg = i;
  994. for(var i = beg; i < len; i++) {
  995. lim += (this.charCodeAt(i) > 127) ? 2 : 1;
  996. if(lim > size) {
  997. return this.substring(beg, i);
  998. }
  999. }
  1000. }
  1001. /****************************************************************************************
  1002. * Function : utlf_setAmountToKorean
  1003. * Description : 금액을 한글로 변환 (단위포함)
  1004. * Argument :
  1005. * return type : String - 단위를 포함한 한글String으로 반환
  1006. * Creator : 임준호
  1007. ****************************************************************************************/
  1008. function utlf_setAmountToKorean(){
  1009. var amountTmp = this; // Parameter로 받은 값
  1010. var amount = ""; // Convert할 값
  1011. var rtnAmt = ""; // 전체 CONV된 한글 값
  1012. var amtKor = ""; // 각 단위별 CONV된 한글 값
  1013. var flag = "N"; // 만단위 이상 FLAG값
  1014. var amtLength = amountTmp.length;
  1015. var fstChar = "";
  1016. for(i=0; i < amtLength ;i++) {
  1017. fstChar = amountTmp.substring(i,i+1);
  1018. if('0' <= fstChar && '9' >= fstChar) {
  1019. amount = amount.concat(fstChar);
  1020. }
  1021. }
  1022. amtLength = amount.length; // Parameter로 받은 값의 길이
  1023. for(i=1; i<=amtLength ;i++) {
  1024. var amtEng = (amount.substring(amtLength-i,amtLength)).substring(0,1);
  1025. switch(amtEng) {
  1026. case '1':
  1027. amtKor = "일";
  1028. break;
  1029. case '2':
  1030. amtKor = "이";
  1031. break;
  1032. case '3':
  1033. amtKor = "삼";
  1034. break;
  1035. case '4':
  1036. amtKor = "사";
  1037. break;
  1038. case '5':
  1039. amtKor = "오";
  1040. break;
  1041. case '6':
  1042. amtKor = "육";
  1043. break;
  1044. case '7':
  1045. amtKor = "칠";
  1046. break;
  1047. case '8':
  1048. amtKor = "팔";
  1049. break;
  1050. case '9':
  1051. amtKor = "구";
  1052. break;
  1053. case '0':
  1054. continue;
  1055. default:
  1056. continue;
  1057. }
  1058. if(i==1) {
  1059. rtnAmt = amtKor;
  1060. } else {
  1061. switch((i-1)%4) {
  1062. case 1:
  1063. amtKor = amtKor.concat("십");
  1064. break;
  1065. case 2:
  1066. amtKor = amtKor.concat("백");
  1067. break;
  1068. case 3:
  1069. amtKor = amtKor.concat("천");
  1070. break;
  1071. case 0:
  1072. default:
  1073. break;
  1074. }
  1075. if( i>4 && i<9 && flag!='M') {
  1076. amtKor = amtKor.concat("만");
  1077. flag = 'M';
  1078. }
  1079. if( i>8 && i<13 && flag!='U') {
  1080. amtKor = amtKor.concat("억");
  1081. flag = 'U';
  1082. }
  1083. if( i>12 && flag!='J') {
  1084. amtKor = amtKor.concat("조");
  1085. flag = 'J';
  1086. }
  1087. rtnAmt = amtKor.concat(rtnAmt);
  1088. }
  1089. }
  1090. return rtnAmt;
  1091. }
  1092. /****************************************************************************************
  1093. * Function : utlf_isNumber
  1094. * Description : 값이 Number 형인지 점검
  1095. * Argument :
  1096. * return type : Boolean - true/false
  1097. * Creator : 임준호
  1098. ****************************************************************************************/
  1099. function utlf_isNumber(){
  1100. if( typeof( this ) == "undefined" ) return false;
  1101. if( this.length == 0 ) return false;
  1102. var thisSting = this.toString();
  1103. for( var i=0; i < thisSting.length; i++ ){
  1104. var thisNumber = thisSting.substring( i, i+1 );
  1105. // 숫자가 아니면 FALSE 리턴
  1106. if( isNaN( thisNumber ) ) return false;
  1107. // 공백이면 FALSE 리턴
  1108. if( " " == thisNumber ) return false;
  1109. }
  1110. return true;
  1111. }
  1112. /****************************************************************************************
  1113. * Function : utlf_isFloat
  1114. * Description : 값이 Float 형인지 점검
  1115. * Argument :
  1116. * return type : Boolean - true/false
  1117. * Creator : 임준호
  1118. ****************************************************************************************/
  1119. function utlf_isFloat()
  1120. {
  1121. // 파라미터 값이 parseFloat()후에도 같으면 TRUE 리턴
  1122. return ( this == parseFloat( this ) ) ? true : false;
  1123. }
  1124. /****************************************************************************************
  1125. * Function : utlf_getRound
  1126. * Description : 저장된 값을 지정한 자리에서 올림/반올림/버림 처리
  1127. * Argument : 01.position - 올림/반올림/버림 할 위치(2:10자리, 1:1자리, -1:소수점이하 첫째자리)
  1128. * : 02.mode - UP:올림, HALF_UP:반올림, DOWN:버림
  1129. * return type : Number
  1130. * Creator : 임준호
  1131. ****************************************************************************************/
  1132. function utlf_getRound(position, mode){
  1133. // 파라미터 값을 수치화 하여 변수에 저장
  1134. var valueNumber = eval(this);
  1135. // 소수점을 기준으로 숫자들만 취하여 배열 변수에 저장
  1136. var tempArray = eval(this).toString().setReplaceWord("-", "").split(".");
  1137. // this 가 float 형이 아니면
  1138. if( !this.isFloat() )
  1139. {
  1140. //fAlertMessage(4, "파라미터");
  1141. return "";
  1142. }
  1143. // position 가 float 형이 아니면
  1144. if( !position.toString().isFloat() )
  1145. {
  1146. //fAlertMessage(4, "파라미터");
  1147. return "";
  1148. }
  1149. // 소수점 앞에서 처리하려면
  1150. if(0 < eval( position ))
  1151. {
  1152. // 소수점 이상 자리수보다 크면
  1153. if( tempArray[0].length < eval(position) )
  1154. {
  1155. // 메시지 처리후 리턴
  1156. //fAlertMessage(1, "올림/반올림/버림 할 위치");
  1157. return "";
  1158. }
  1159. }
  1160. // 소수점 뒤에서 처리하려면
  1161. else if(0 > eval(position))
  1162. {
  1163. // 소수점 이하값이 존재하지 않거나 자리수보다 크면
  1164. if(tempArray.length != 2 || tempArray[1].length < eval(position)*(-1))
  1165. {
  1166. return this;
  1167. }
  1168. }
  1169. switch(mode){
  1170. // '올림'이고
  1171. case "UP" :
  1172. // 소수점 앞에서 처리하려면
  1173. if(0 < eval(position))
  1174. {
  1175. // 해당 자리(position)에서 올림 처리
  1176. valueNumber = Math.ceil(valueNumber / Math.pow(10, position)) * Math.pow(10, position);
  1177. return valueNumber;
  1178. }
  1179. // 소수점 뒤에서 처리하려면
  1180. else if(0 > eval(position))
  1181. {
  1182. // 해당 자리(position)에서 올림 처리
  1183. valueNumber = Math.ceil(valueNumber * Math.pow(10, position*(-1)-1)) / Math.pow(10, position*(-1)-1);
  1184. return valueNumber;
  1185. }
  1186. else
  1187. {
  1188. //fAlertMessage(4, "올림자리");
  1189. return "";
  1190. }
  1191. // '반올림'이고
  1192. case "HALF_UP" :
  1193. // 소수점 앞에서 처리하려면
  1194. if(0 < eval(position))
  1195. {
  1196. // 해당 자리(position)에서 반올림 처리
  1197. valueNumber = Math.round(valueNumber / Math.pow(10, position)) * Math.pow(10, position);
  1198. return valueNumber;
  1199. }
  1200. // 소수점 뒤에서 처리하려면
  1201. else if(0 > eval(position))
  1202. {
  1203. // 해당 자리(position)에서 반올림 처리
  1204. valueNumber = Math.round(valueNumber * Math.pow(10, position*(-1)-1)) / Math.pow(10, position*(-1)-1);
  1205. return valueNumber;
  1206. }
  1207. else
  1208. {
  1209. //fAlertMessage(4, "올림자리");
  1210. return "";
  1211. }
  1212. // '버림'이고
  1213. case "DOWN" :
  1214. // 소수점 앞에서 처리하려면
  1215. if(0 < eval(position))
  1216. {
  1217. // 해당 자리(position)에서 내림 처리
  1218. valueNumber = Math.floor(valueNumber / Math.pow(10, position)) * Math.pow(10, position);
  1219. return valueNumber;
  1220. }
  1221. // 소수점 뒤에서 처리하려면
  1222. else if(0 > eval(position))
  1223. {
  1224. // 해당 자리(position)에서 내림 처리
  1225. valueNumber = Math.floor(valueNumber * Math.pow(10, position*(-1)-1)) / Math.pow(10, position*(-1)-1);
  1226. return valueNumber;
  1227. }else{
  1228. //fAlertMessage(4, "올림자리");
  1229. return "";
  1230. }
  1231. // 모두 아니면
  1232. default :
  1233. // 메시지 처리후 리턴
  1234. //fAlertMessage(1, "모드('1'/'0'/'-1')");
  1235. return "";
  1236. }
  1237. }
  1238. /****************************************************************************************
  1239. * Function : utlf_getTruncate
  1240. * Description : 소수점 버리고 정수형 String으로 생성 (음수인경우에도 마찬가지 음수표시는 유효)
  1241. * Argument :
  1242. * return type : String
  1243. * Creator : 임준호
  1244. ****************************************************************************************/
  1245. function utlf_getTruncate(){
  1246. var TempArray = new Array();
  1247. TempArray = this.split(".");
  1248. return TempArray[0];
  1249. }
  1250. /****************************************************************************************
  1251. * Function : utlf_getRandomNo
  1252. * Description : 랜덤숫자 만들기
  1253. * Argument : 01.iRange - 랜덤숫자가 발생할 범위 지정 ( 1 ~ iRange )
  1254. * return type : Number - iRange 범위에 속하는 랜덤숫자
  1255. * Creator : 임준호
  1256. ****************************************************************************************/
  1257. function utlf_getRandomNo(iRange){
  1258. iRnt = Math.floor( Math.random() * iRange ) + 1;
  1259. return iRnt;
  1260. }
  1261. /****************************************************************************************
  1262. * Function : utlf_isEmpty (->utlf_transNullToEmpty)
  1263. * Description : 입력값이 null 또는 wihte space로만 이루어져 있으면 빈문자를 리턴하는 함수
  1264. * Argument : String sValue
  1265. * return type : String sValue
  1266. * Creator : 임준호
  1267. ****************************************************************************************/
  1268. // function utlf_isEmpty(sValue)
  1269. // {
  1270. // if (new String(sValue).valueOf() == "undefined") return "";
  1271. // if (sValue == null) return "";
  1272. // var lv_sChkStr = new String(sValue);
  1273. // if (lv_sChkStr == null) return "";
  1274. // if (lv_sChkStr.toString().length == 0 ) return "";
  1275. // return sValue;
  1276. // }
  1277. /****************************************************************************************
  1278. * Function : utlf_setColumnTrimStr
  1279. * Description : 문자열의 앞, 뒤 공백을 제거하여 지정된 dataset의 컬럼에 입력한다.
  1280. * Argument : 01.sValue - Trim을 적용할 문자열
  1281. * : 02.objDs - dataset object
  1282. * : 03.nRownum - dataset의 row number
  1283. * : 04.sColName - dataset의 column명
  1284. * return type : Boolean - 완료 여부
  1285. * Creator : 임준호
  1286. ****************************************************************************************/
  1287. function utlf_setColumnTrimStr(sValue, objDs:Dataset, nRownum, sColName){
  1288. var bReturn = false;
  1289. if(!utlf_isNull(objDs) && !utlf_isNull(nRowNum) && !utlf_isNull(sColName)){
  1290. objDs.setColumn(nRownum, sColName, sValue.getTrim());
  1291. bReturn = true;
  1292. }
  1293. return bReturn;
  1294. }
  1295. /****************************************************************************************
  1296. * Function : utlf_getObjFont
  1297. * Description : Font Object 생성 반환(텍스트 길이를 반환하기 위해서 사전생성)
  1298. * Argument : iFontSize - 폰트사이즈 : 9
  1299. * : sFontName - 폰트명 : "Dotum"
  1300. * : bBold - 볼드여부 (true/ flase)
  1301. * return type : Font Object
  1302. * Creator : tobesoft
  1303. ex) var objFont = utlf_getObjFont(9, "Dotum", true);
  1304. ****************************************************************************************/
  1305. function utlf_getObjFont(iFontSize, sFontName, bBold)
  1306. {
  1307. var objFont = new Font;
  1308. objFont.size = iFontSize;
  1309. objFont.name = sFontName;
  1310. if(!utlf_isNull(bBold))
  1311. {
  1312. objFont.bold = bBold;
  1313. }
  1314. return objFont;
  1315. }
  1316. /****************************************************************************************
  1317. * Function : utlfn_getTextSize
  1318. * Description : size object를 반환한다.(objFontSize.cx : 사이즈길이 , objFontSize.cy 사이즈 높이)
  1319. * Argument : sText - 문자열
  1320. * : objFont - Font Object
  1321. * return type : objTextSize or flase : Size 오브젝트 나 false를 반환한다.
  1322. * Creator : tobesoft
  1323. ex)
  1324. var objFont = utlf_getObjFont(9, "Dotum", true); //폰트사이즈
  1325. var sText = "가나다라123aAbC"; //사이즈를 잴 텍스트
  1326. var objFontSize =utlf_getTextSize(sText, objFont); //size Object
  1327. alert("'"+sText+"' 텍스트의 사이즈는 = "+objFontSize.cx+"px 입니다.");
  1328. ****************************************************************************************/
  1329. function utlf_getTextSize(sText, objFont)
  1330. {
  1331. var objPainter = this.canvas.getPainter();
  1332. if(utlf_isNull(objPainter)==false)
  1333. {
  1334. var objTextSize = objPainter.getTextSize(sText, objFont);
  1335. return objTextSize;
  1336. }
  1337. else
  1338. {
  1339. return false;
  1340. }
  1341. }
  1342. /****************************************************************************************
  1343. * Function : utlf_getCountStr
  1344. * Description : sStr에서 sChar가 포함된 갯수를 구한다.
  1345. * Argument : sStr - 대상 문자열
  1346. * : sChar - 대상 문자열에서 갯수를 구할 문자열
  1347. * return type : Number - 갯수
  1348. * Creator : 임준호
  1349. ****************************************************************************************/
  1350. function utlf_getStrCount(sStr, sChar){
  1351. var arrDivStr = sStr.split(sChar);
  1352. return arrDivStr.length-1;
  1353. }
  1354. /********************************************************************************************************************/
  1355. /************************* 날짜 관련 함수 *************************************************************************/
  1356. /********************************************************************************************************************/
  1357. /**********************************************************************************
  1358. * 함수명 : utlf_splitDateS
  1359. * 설 명 : yyyyMMdd형태의 날짜를 구분자를 삽입하여 반환한다.
  1360. * argument : sDate ( yyyyMMdd형태의 날짜 )( 예 : "20121122" )
  1361. * sDeli (구분자)
  1362. * return Type : Boolean
  1363. * 예 시 : utlf_splitDateS("20140101", "-"); -> "2014-01-01"
  1364. * 작성자 : 임준호
  1365. **********************************************************************************/
  1366. function utlf_splitDateS(sDate, sDeli){
  1367. if(!utlf_isNull(sDeli)){
  1368. sDate = sDate.substring(0, 4)+sDeli+sDate.substring(4, 6)+sDeli+sDate.substring(6,9);
  1369. }
  1370. return sDate;
  1371. }
  1372. /***********************************************************************
  1373. * 함수명 : utlf_makeDate
  1374. * 설명 : 입력된 문자를 date로 변환.
  1375. * argument : nYear - Year : 년도
  1376. * nMonth - Month : 월
  1377. * nDate - Date : 일
  1378. * Return Type : Date
  1379. * 예 시 : utlf_makeDate("2010", "05", "01");
  1380. * 작성자 : 임준호
  1381. **********************************************************************
  1382. function utlf_makeDate(nYear, nMonth, nDate)
  1383. {
  1384. if( utlf_isNull(nYear) || utlf_isNull(nMonth) || utlf_isNull(nDate) ) return "";
  1385. var objDate = new Date(nYear, nMonth-1, nDate);
  1386. return objDate;
  1387. }
  1388. */
  1389. /***********************************************************************
  1390. * 함수명 : utlf_makeDateYmd
  1391. * 설명 : 입력된 문자를 date로 변환.
  1392. * argument : nYear - Year : 년도
  1393. * nYear - Month : 월
  1394. * nYear - Date : 일
  1395. * Return Type : Date
  1396. * 예 시 : utlf_makeDate("2010", "05", "01");
  1397. * 작성자 : 임준호
  1398. ***********************************************************************/
  1399. function utlf_makeDateYmd(sDate)
  1400. {
  1401. var nYear = "";
  1402. var nMonth = "";
  1403. var nDay = "";
  1404. if(utlf_isNull(sDate)) return "";
  1405. try{
  1406. nYear = toNumber(sDate.substring(0, 4));
  1407. nMonth = toNumber(sDate.substring(4, 6));
  1408. nDay = toNumber(sDate.substring(6,9));
  1409. }catch(e){
  1410. // trace(e.description);
  1411. return "";
  1412. }
  1413. var objDate = new Date(nYear, nMonth-1, nDay);
  1414. return objDate;
  1415. }
  1416. /***********************************************************************
  1417. * 함수명 : utlf_makeDateS
  1418. * 설명 : [yyyy][MM][dd] -> yyyyMMdd 형태의 문자열 날짜 출력
  1419. * argument : nYear - Year : 년도
  1420. * nYear - Month : 월
  1421. * nYear - Date : 일
  1422. * Return Type : string(date)
  1423. * 예 시 : utlf_makeDate("2010", "05", "01");
  1424. * 작성자 : 임준호
  1425. ***********************************************************************/
  1426. function utlf_makeDateS(nYear, nMonth, nDate)
  1427. {
  1428. if( utlf_isNull(nYear) || utlf_isNull(nMonth) || utlf_isNull(nDate) ) return "";
  1429. var objDate = new Date(nYear, nMonth-1, nDate);
  1430. var sYear = objDate.getFullYear().toString();
  1431. var sMonth = utlf_right("0" + (objDate.getMonth() + 1), 2);
  1432. var sDate = utlf_right("0" + objDate.getDate(), 2);
  1433. return sYear + sMonth + sDate;
  1434. }
  1435. /**********************************************************************************
  1436. * 함수명 : utlf_isLeap
  1437. * 설명 : 윤년여부 확인
  1438. * argument : sDate ( yyyyMMdd형태의 날짜 )( 예 : "20121122" or "2012")
  1439. * return Type : Boolean
  1440. * 작성자 : 임준호
  1441. **********************************************************************************/
  1442. function utlf_isLeap(sDate)
  1443. {
  1444. var ret;
  1445. var nY;
  1446. if(utlf_isNull(sDate)) return false;
  1447. if(sDate.length > 4){
  1448. nY = parseInt(sDate.substring(0,4), 10);
  1449. }else{
  1450. nY = sDate;
  1451. }
  1452. if ((nY % 4) == 0)
  1453. {
  1454. if ((nY % 100) != 0 || (nY % 400) == 0)
  1455. ret = true;
  1456. else
  1457. ret = false;
  1458. }
  1459. else
  1460. ret = false;
  1461. return ret;
  1462. }
  1463. /**********************************************************************************
  1464. * 함수명 : utlf_addDate
  1465. * 설명 : 입력된 날자에 nOffset 으로 지정된 만큼의 일을 증감한다.
  1466. * argument : sDate ( 날짜 )( 예 : "20121122" )
  1467. * : nOffset (일 증감값) ( 예 : 10 또는 -10 )
  1468. * return Type : String
  1469. * 작성자 : 임준호
  1470. **********************************************************************************/
  1471. function utlf_addDate(sDate, nOffset)
  1472. {
  1473. if( utlf_isNull(sDate) || utlf_isNull(nOffset) ) return "";
  1474. var nYear = parseInt(sDate.substr(0, 4));
  1475. var nMonth = parseInt(sDate.substr(4, 2));
  1476. var nDate = parseInt(sDate.substr(6, 2)) + nOffset;
  1477. return utlf_makeDateS(nYear, nMonth, nDate);
  1478. }
  1479. /**********************************************************************************
  1480. * 함수명 : utlf_addMonth
  1481. * 설명 : 입력된 날자에 nOffset 으로 지정된 만큼의 월을 증감한다.
  1482. * argument : sDate ( 날짜 )( 예 : "20121122" )
  1483. * : nOffset (월 증감값) ( 예 : 10 또는 -10 )
  1484. * return Type : String
  1485. * 작성자 : 임준호
  1486. **********************************************************************************/
  1487. function utlf_addMonth(sDate, nOffset)
  1488. {
  1489. if( utlf_isNull(sDate) || utlf_isNull(nOffset) ) return "";
  1490. var nYear = parseInt(sDate.substr(0, 4));
  1491. var nMonth = parseInt(sDate.substr(4, 2))+nOffset;
  1492. var nDate = parseInt(sDate.substr(6, 2));
  1493. var nLastDate, sRet;
  1494. if(nDate.toString().length==1)
  1495. {
  1496. nDate = "0"+nDate;
  1497. }
  1498. sRet = utlf_makeDateS(nYear, nMonth, 1);
  1499. nLastDate = utlf_lastDateNum(sRet);
  1500. sRet = sRet.substr(0,6);
  1501. if( nDate > nLastDate )
  1502. sRet += nLastDate.toString();
  1503. else
  1504. sRet += nDate.toString();
  1505. return sRet;
  1506. }
  1507. /****************************************************************************************
  1508. * Function : utlf_getAddDate
  1509. * Description : 특정일자의 상대일자(+/-)를 계산
  1510. * Argument : 01.pNum : 구하고자 하는 상대일 수 (+/-)
  1511. * : 02.pKind : 구하고자 하는 기준
  1512. * return type : Date
  1513. * Creator : 임준호
  1514. * ex :
  1515. * pKind에 따른 상대일자를 계산한다.
  1516. *
  1517. * "Y" : 년
  1518. * "M" : 월
  1519. * "D" : 일
  1520. * "h" : 시
  1521. * "m" : 분
  1522. * "s" : 초
  1523. *
  1524. * default는 "D"
  1525. *
  1526. * 함수 호출시 다음과 같이 사용한다.
  1527. *
  1528. * 1) date.getAddDate(10) --> default로 일에 대한 상대일을 구한다.
  1529. * 2) date.getAddDate(10, "Y") --> 년도에 대한 상대일을 구한다.
  1530. ****************************************************************************************/
  1531. function utlf_getAddDate(pNum, pKind){
  1532. var rtnDate = this;
  1533. if(utlf_isNull(pKind)) pKind = "D";
  1534. switch(pKind){
  1535. case "Y" : rtnDate.setFullYear(this.getFullYear() + pNum);break;
  1536. case "M" : rtnDate.setMonth(this.getMonth() + pNum);break;
  1537. case "D" : rtnDate.setDate(this.getDate() + pNum);break;
  1538. case "h" : rtnDate.setHours(this.getHours() + pNum);break;
  1539. case "m" : rtnDate.setMinutes(this.getMinutes() + pNum);break;
  1540. case "s" : rtnDate.setSeconds(this.getSeconds() + pNum);break;
  1541. }
  1542. return rtnDate;
  1543. }
  1544. /***********************************************************************
  1545. * 함수명 : utlf_lastDateNum
  1546. * 설 명 : 해당월의 마지막 날짜를 가져온다.
  1547. * argument : sDate - yyyyMMdd 형태의 날짜
  1548. * Return Type : integer
  1549. * 작성자 : 임준호
  1550. ***********************************************************************/
  1551. function utlf_lastDateNum(sDate)
  1552. {
  1553. var nMonth, nLastDate;
  1554. if( utlf_isNull(sDate) ) return -1;
  1555. nMonth = parseInt(sDate.substr(4,2), 10);
  1556. if( nMonth == 1 || nMonth == 3 || nMonth == 5 || nMonth == 7 || nMonth == 8 || nMonth == 10 || nMonth == 12 )
  1557. nLastDate = 31;
  1558. else if( nMonth == 2 )
  1559. {
  1560. if( utlf_isLeap(sDate) == true )
  1561. nLastDate = 29;
  1562. else
  1563. nLastDate = 28;
  1564. }
  1565. else
  1566. nLastDate = 30;
  1567. return nLastDate;
  1568. }
  1569. /**********************************************************************************
  1570. * 함수명 : utlf_solar2Lunar
  1571. * 설명 : 양력을 음력으로 변환해주는 함수 (처리가능 기간 1841 - 2043년)
  1572. * argument : sDate ( 날짜 )( 예 : "20121122" )
  1573. * return Type : String
  1574. * 작성자 : 임준호
  1575. **********************************************************************************/
  1576. function utlf_solar2Lunar(sDate)
  1577. {
  1578. var sMd = "31,0,31,30,31,30,31,31,30,31,30,31";
  1579. var aMd = new Array();
  1580. var aBaseInfo = new Array();
  1581. var aDt = new Array(); // 매년의 음력일수를 저장할 배열 변수
  1582. var td; // 음력일을 계산하기 위해 양력일과의 차이를 저장할 변수
  1583. var td1; // 1840년까지의 날수
  1584. var td2; // 현재까지의 날수
  1585. var mm; // 임시변수
  1586. var nLy, nLm, nLd; // 계산된 음력 년, 월, 일을 저장할 변수
  1587. var sLyoon; // 현재월이 윤달임을 표시
  1588. if( IsNull(sDate) ) return "";
  1589. sY = parseInt(sDate.substr(0,4), 10);
  1590. sM = parseInt(sDate.substr(4,2), 10);
  1591. sD = parseInt(sDate.substr(6,2), 10);
  1592. if( sY < 1841 || sY > 2043 ) return "";
  1593. aBaseInfo = utlf_solarBase();
  1594. aMd = sMd.split(",");
  1595. if( utlf_isLeap(sDate) == true )
  1596. aMd[1] = 29;
  1597. else
  1598. aMd[1] = 28;
  1599. td1 = 672069; // 672069 = 1840 * 365 + 1840/4 - 1840/100 + 1840/400 + 23 //1840년까지 날수
  1600. // 1841년부터 작년까지의 날수
  1601. td2 = (sY - 1) * 365 + parseInt((sY - 1)/4) - parseInt((sY - 1)/100) + parseInt((sY - 1)/400);
  1602. // 전월까지의 날수를 더함
  1603. for( i = 0 ; i <= sM - 2 ; i++ )
  1604. td2 = td2 + parseInt(aMd[i]);
  1605. // 현재일까지의 날수를 더함
  1606. td2 = td2 + sD;
  1607. // 양력현재일과 음력 1840년까지의 날수의 차이
  1608. td = td2 - td1 + 1;
  1609. // 1841년부터 음력날수를 계산
  1610. for( i = 0 ; i <= sY - 1841 ; i++ )
  1611. {
  1612. aDt[i] = 0;
  1613. for( j = 0 ; j <= 11 ; j++ )
  1614. {
  1615. switch( parseInt(aBaseInfo[i*12 + j]) )
  1616. {
  1617. case 1 : mm = 29;
  1618. break;
  1619. case 2 : mm = 30;
  1620. break;
  1621. case 3 : mm = 58; // 29 + 29
  1622. break;
  1623. case 4 : mm = 59; // 29 + 30
  1624. break;
  1625. case 5 : mm = 59; // 30 + 29
  1626. break;
  1627. case 6 : mm = 60; // 30 + 30
  1628. break;
  1629. }
  1630. aDt[i] = aDt[i] + mm;
  1631. }
  1632. }
  1633. // 1840년 이후의 년도를 계산 - 현재까지의 일수에서 위에서 계산된 1841년부터의 매년 음력일수를 빼가면수 년도를 계산
  1634. nLy = 0;
  1635. do
  1636. {
  1637. td = td - aDt[nLy];
  1638. nLy = nLy + 1;
  1639. }
  1640. while(td > aDt[nLy]);
  1641. nLm = 0;
  1642. sLyoon = "0"; // 현재월이 윤달임을 표시할 변수 - 기본값 평달
  1643. do
  1644. {
  1645. if( parseInt(aBaseInfo[nLy*12 + nLm]) <= 2 )
  1646. {
  1647. mm = parseInt(aBaseInfo[nLy*12 + nLm]) + 28;
  1648. if( td > mm )
  1649. {
  1650. td = td - mm;
  1651. nLm = nLm + 1;
  1652. }
  1653. else
  1654. break;
  1655. }
  1656. else
  1657. {
  1658. switch( parseInt(aBaseInfo[nLy*12 + nLm]) )
  1659. {
  1660. case 3 :
  1661. m1 = 29;
  1662. m2 = 29;
  1663. break;
  1664. case 4 :
  1665. m1 = 29;
  1666. m2 = 30;
  1667. break;
  1668. case 5 :
  1669. m1 = 30;
  1670. m2 = 29;
  1671. break;
  1672. case 6 :
  1673. m1 = 30;
  1674. m2 = 30;
  1675. break;
  1676. }
  1677. if( td > m1 )
  1678. {
  1679. td = td - m1;
  1680. if( td > m2 )
  1681. {
  1682. td = td - m2;
  1683. nLm = nLm + 1;
  1684. }
  1685. else
  1686. {
  1687. sLyoon = "1";
  1688. }
  1689. }
  1690. else
  1691. {
  1692. break;
  1693. }
  1694. }
  1695. }
  1696. while(1);
  1697. nLy = nLy + 1841;
  1698. nLm = nLm + 1;
  1699. nLd = td;
  1700. return sLyoon+nLy+utlf_right("0" + nLm, 2)+utlf_right("0" + nLd, 2);
  1701. }
  1702. /**********************************************************************************
  1703. * 함수명 : utlf_lunar2Solar
  1704. * 설명 : 음력을 양력으로 변환해주는 함수 (처리가능 기간 1841 - 2043년)
  1705. * argument : sDate ( 날짜 )( 예 : "20121122" )
  1706. * return Type : String
  1707. * 작성자 : 임준호
  1708. **********************************************************************************/
  1709. function utlf_lunar2Solar(sDate)
  1710. {
  1711. var sMd = "31,0,31,30,31,30,31,31,30,31,30,31";
  1712. var aMd = new Array();
  1713. var aBaseInfo = new Array();
  1714. var nLy, nLm, nLd, sLflag; // 전해온 음력 인자값을 저장할 년, 월, 일, 윤달여부 임시변수
  1715. var nSy, nSm, nSd; // 계산된 양력 년, 월, 일을 저장할 변수
  1716. var y1, m1, i, j, y2, y3; // 임시변수
  1717. var leap;
  1718. if( utlf_isNull(sDate) ) return "";
  1719. if( sDate.length != 9 ) return "";
  1720. sLflag = sDate.substr(0,1);
  1721. nLy = parseInt(sDate.substr(1,4), 10);
  1722. nLm = parseInt(sDate.substr(5,2), 10);
  1723. nLd = parseInt(sDate.substr(7,2), 10);
  1724. if( nLy < 1841 || nLy > 2043 ) return "";
  1725. if( sLflag != "0" && sLflag != "1" ) return "";
  1726. aBaseInfo = utlf_solarBase();
  1727. aMd = sMd.split(",");
  1728. if( utlf_isLeap(sDate.substr(1,8)) == true )
  1729. aMd[1] = 29;
  1730. else
  1731. aMd[1] = 28;
  1732. y1 = nLy - 1841;
  1733. m1 = nLm - 1;
  1734. leap = 0;
  1735. if( parseInt(aBaseInfo[y1*12 + m1]) > 2 )
  1736. leap = IsLeayYear(nLy+"0101");
  1737. if( leap == 1 )
  1738. {
  1739. switch( parseInt(aBaseInfo[y1*12 + m1]) )
  1740. {
  1741. case 3 : mm = 29;
  1742. break;
  1743. case 4 : mm = 30;
  1744. break;
  1745. case 5 : mm = 29;
  1746. break;
  1747. case 6 : mm = 30;
  1748. break;
  1749. }
  1750. }
  1751. else
  1752. {
  1753. switch( parseInt(aBaseInfo[y1*12 + m1]) )
  1754. {
  1755. case 1 : mm = 29;
  1756. break;
  1757. case 2 : mm = 30;
  1758. break;
  1759. case 3 : mm = 29;
  1760. break;
  1761. case 4 : mm = 29;
  1762. break;
  1763. case 5 : mm = 30;
  1764. break;
  1765. case 6 : mm = 30;
  1766. break;
  1767. }
  1768. }
  1769. td = 0;
  1770. for( i = 0 ; i <= y1 - 1 ; i++ )
  1771. {
  1772. for( j = 0 ; j <= 11 ; j++ )
  1773. {
  1774. switch( parseInt(aBaseInfo[i*12 + j]) )
  1775. {
  1776. case 1 : td = td + 29;
  1777. break;
  1778. case 2 : td = td + 30;
  1779. break;
  1780. case 3 : td = td + 58;
  1781. break;
  1782. case 4 : td = td + 59;
  1783. break;
  1784. case 5 : td = td + 59;
  1785. break;
  1786. case 6 : td = td + 60;
  1787. break;
  1788. }
  1789. }
  1790. }
  1791. for( j = 0 ; j <= m1 - 1 ; j++ )
  1792. {
  1793. switch( parseInt(aBaseInfo[y1*12 + j]) )
  1794. {
  1795. case 1 : td = td + 29;
  1796. break;
  1797. case 2 : td = td + 30;
  1798. break;
  1799. case 3 : td = td + 58;
  1800. break;
  1801. case 4 : td = td + 59;
  1802. break;
  1803. case 5 : td = td + 59;
  1804. break;
  1805. case 6 : td = td + 60;
  1806. break;
  1807. }
  1808. }
  1809. if( leap == 1 )
  1810. {
  1811. switch( parseInt(aBaseInfo[y1*12 + m1]) )
  1812. {
  1813. case 3 : mm = 29;
  1814. break;
  1815. case 4 : mm = 29;
  1816. break;
  1817. case 5 : mm = 30;
  1818. break;
  1819. case 6 : mm = 30;
  1820. break;
  1821. }
  1822. }
  1823. td = td + nLd + 22;
  1824. if( sLflag == "1" )
  1825. {
  1826. switch( parseInt(aBaseInfo[y1*12 + m1]) )
  1827. {
  1828. case 3 : td = td + 29;
  1829. break;
  1830. case 4 : td = td + 30;
  1831. break;
  1832. case 5 : td = td + 29;
  1833. break;
  1834. case 6 : td = td + 30;
  1835. break;
  1836. }
  1837. }
  1838. y1 = 1840;
  1839. do
  1840. {
  1841. y1 = y1 + 1;
  1842. leap = utlf_isLeap(y1+"0101");
  1843. if( leap == 1 )
  1844. y2 = 366;
  1845. else
  1846. y2 = 365;
  1847. if( td <= y2 )
  1848. break;
  1849. td = td - y2;
  1850. }
  1851. while(1);
  1852. nSy = y1;
  1853. aMd[1] = y2 - 337;
  1854. m1 = 0;
  1855. do
  1856. {
  1857. m1 = m1 + 1;
  1858. if( td <= parseInt(aMd[m1-1]) )
  1859. break;
  1860. td = td - parseInt(aMd[m1-1]);
  1861. }
  1862. while(1);
  1863. nSm = m1;
  1864. nSd = td;
  1865. y3 = nSy;
  1866. td = y3 * 365 + parseInt(y3/4) - parseInt(y3/100) + parseInt(y3/400);
  1867. for( i = 0 ; i <= nSm - 1 ; i++ )
  1868. td = td + parseInt(aMd[i]);
  1869. td = td + nSd;
  1870. return y3 + utlf_right("0" + nSm, 2)+utlf_right("0" + nSd, 2);
  1871. }
  1872. /**********************************************************************************
  1873. * 함수명 : utlf_getHolidays
  1874. * 설명 : 양력 nYear에 해당하는 년도의 법정 공휴일(양력) List 모두 구하기
  1875. * argument : nYear에 ( 년도 )( 예 : 2012 )
  1876. * return Type : Array
  1877. * 작성자 : 임준호
  1878. **********************************************************************************/
  1879. function utlf_getHolidays(nYear)
  1880. {
  1881. var nYear;
  1882. var aHoliday = new Array();
  1883. if( utlf_isNull(nYear) ) return aHoliday;
  1884. /////// 음력 체크
  1885. // 구정
  1886. aHoliday[0] = utlf_lunar2Solar( "0" + (nYear-1) + "1230" ) + "설날";
  1887. aHoliday[1] = utlf_addDate(aHoliday[0], 1) + "설날";
  1888. aHoliday[2] = utlf_addDate(aHoliday[1], 1) + "설날";
  1889. // 석가탄신일
  1890. aHoliday[3] = utlf_lunar2Solar( "0" + nYear + "0408" ) + "석가탄신일";
  1891. // 추석
  1892. aHoliday[4] = utlf_lunar2Solar( "0" + nYear + "0814" ) + "추석";
  1893. aHoliday[5] = utlf_addDate(aHoliday[4], 1) + "추석";
  1894. aHoliday[6] = utlf_addDate(aHoliday[5], 1) + "추석";
  1895. /////// 양력 체크
  1896. aHoliday[7] = nYear+"0101" + "신정";
  1897. aHoliday[8] = nYear+"0301" + "삼일절";
  1898. aHoliday[9] = nYear+"0505" + "어린이날";
  1899. aHoliday[10] = nYear+"0606" + "현충일";
  1900. aHoliday[11] = nYear+"0815" + "광복절";
  1901. aHoliday[12] = nYear+"1225" + "성탄절";
  1902. return aHoliday.sort();
  1903. }
  1904. /**********************************************************************************
  1905. * 함수명 : utlf_solarBase
  1906. * 설명 : 각 월별 음력 기준 정보를 처리하는 함수(처리가능 기간 1841 - 2043년)
  1907. 단, 내부에서 사용하는 함수임
  1908. * argument :
  1909. * return Type : Array
  1910. * 작성자 : 임준호
  1911. *********************************************************************************
  1912. function utlf_solarBase()
  1913. {
  1914. var kk;
  1915. //1841
  1916. kk = "1,2,4,1,1,2,1,2,1,2,2,1,";
  1917. kk += "2,2,1,2,1,1,2,1,2,1,2,1,";
  1918. kk += "2,2,2,1,2,1,4,1,2,1,2,1,";
  1919. kk += "2,2,1,2,1,2,1,2,1,2,1,2,";
  1920. kk += "1,2,1,2,2,1,2,1,2,1,2,1,";
  1921. kk += "2,1,2,1,5,2,1,2,2,1,2,1,";
  1922. kk += "2,1,1,2,1,2,1,2,2,2,1,2,";
  1923. kk += "1,2,1,1,2,1,2,1,2,2,2,1,";
  1924. kk += "2,1,2,3,2,1,2,1,2,1,2,2,";
  1925. kk += "2,1,2,1,1,2,1,1,2,2,1,2,";
  1926. //1851
  1927. kk += "2,2,1,2,1,1,2,1,2,1,5,2,";
  1928. kk += "2,1,2,2,1,1,2,1,2,1,1,2,";
  1929. kk += "2,1,2,2,1,2,1,2,1,2,1,2,";
  1930. kk += "1,2,1,2,1,2,5,2,1,2,1,2,";
  1931. kk += "1,1,2,1,2,2,1,2,2,1,2,1,";
  1932. kk += "2,1,1,2,1,2,1,2,2,2,1,2,";
  1933. kk += "1,2,1,1,5,2,1,2,1,2,2,2,";
  1934. kk += "1,2,1,1,2,1,1,2,2,1,2,2,";
  1935. kk += "2,1,2,1,1,2,1,1,2,1,2,2,";
  1936. kk += "2,1,6,1,1,2,1,1,2,1,2,2,";
  1937. //1861
  1938. kk += "1,2,2,1,2,1,2,1,2,1,1,2,";
  1939. kk += "2,1,2,1,2,2,1,2,2,3,1,2,";
  1940. kk += "1,2,2,1,2,1,2,2,1,2,1,2,";
  1941. kk += "1,1,2,1,2,1,2,2,1,2,2,1,";
  1942. kk += "2,1,1,2,4,1,2,2,1,2,2,1,";
  1943. kk += "2,1,1,2,1,1,2,2,1,2,2,2,";
  1944. kk += "1,2,1,1,2,1,1,2,1,2,2,2,";
  1945. kk += "1,2,2,3,2,1,1,2,1,2,2,1,";
  1946. kk += "2,2,2,1,1,2,1,1,2,1,2,1,";
  1947. kk += "2,2,2,1,2,1,2,1,1,5,2,1,";
  1948. //1871
  1949. kk += "2,2,1,2,2,1,2,1,2,1,1,2,";
  1950. kk += "1,2,1,2,2,1,2,1,2,2,1,2,";
  1951. kk += "1,1,2,1,2,4,2,1,2,2,1,2,";
  1952. kk += "1,1,2,1,2,1,2,1,2,2,2,1,";
  1953. kk += "2,1,1,2,1,1,2,1,2,2,2,1,";
  1954. kk += "2,2,1,1,5,1,2,1,2,2,1,2,";
  1955. kk += "2,2,1,1,2,1,1,2,1,2,1,2,";
  1956. kk += "2,2,1,2,1,2,1,1,2,1,2,1,";
  1957. kk += "2,2,4,2,1,2,1,1,2,1,2,1,";
  1958. kk += "2,1,2,2,1,2,2,1,2,1,1,2,";
  1959. //1881
  1960. kk += "1,2,1,2,1,2,5,2,2,1,2,1,";
  1961. kk += "1,2,1,2,1,2,1,2,2,1,2,2,";
  1962. kk += "1,1,2,1,1,2,1,2,2,2,1,2,";
  1963. kk += "2,1,1,2,3,2,1,2,2,1,2,2,";
  1964. kk += "2,1,1,2,1,1,2,1,2,1,2,2,";
  1965. kk += "2,1,2,1,2,1,1,2,1,2,1,2,";
  1966. kk += "2,2,1,5,2,1,1,2,1,2,1,2,";
  1967. kk += "2,1,2,2,1,2,1,1,2,1,2,1,";
  1968. kk += "2,1,2,2,1,2,1,2,1,2,1,2,";
  1969. kk += "1,5,2,1,2,2,1,2,1,2,1,2,";
  1970. //1891
  1971. kk += "1,2,1,2,1,2,1,2,2,1,2,2,";
  1972. kk += "1,1,2,1,1,5,2,2,1,2,2,2,";
  1973. kk += "1,1,2,1,1,2,1,2,1,2,2,2,";
  1974. kk += "1,2,1,2,1,1,2,1,2,1,2,2,";
  1975. kk += "2,1,2,1,5,1,2,1,2,1,2,1,";
  1976. kk += "2,2,2,1,2,1,1,2,1,2,1,2,";
  1977. kk += "1,2,2,1,2,1,2,1,2,1,2,1,";
  1978. kk += "2,1,5,2,2,1,2,1,2,1,2,1,";
  1979. kk += "2,1,2,1,2,1,2,2,1,2,1,2,";
  1980. kk += "1,2,1,1,2,1,2,5,2,2,1,2,";
  1981. //1901
  1982. kk += "1,2,1,1,2,1,2,1,2,2,2,1,";
  1983. kk += "2,1,2,1,1,2,1,2,1,2,2,2,";
  1984. kk += "1,2,1,2,3,2,1,1,2,2,1,2,";
  1985. kk += "2,2,1,2,1,1,2,1,1,2,2,1,";
  1986. kk += "2,2,1,2,2,1,1,2,1,2,1,2,";
  1987. kk += "1,2,2,4,1,2,1,2,1,2,1,2,";
  1988. kk += "1,2,1,2,1,2,2,1,2,1,2,1,";
  1989. kk += "2,1,1,2,2,1,2,1,2,2,1,2,";
  1990. kk += "1,5,1,2,1,2,1,2,2,2,1,2,";
  1991. kk += "1,2,1,1,2,1,2,1,2,2,2,1,";
  1992. //1911
  1993. kk += "2,1,2,1,1,5,1,2,2,1,2,2,";
  1994. kk += "2,1,2,1,1,2,1,1,2,2,1,2,";
  1995. kk += "2,2,1,2,1,1,2,1,1,2,1,2,";
  1996. kk += "2,2,1,2,5,1,2,1,2,1,1,2,";
  1997. kk += "2,1,2,2,1,2,1,2,1,2,1,2,";
  1998. kk += "1,2,1,2,1,2,2,1,2,1,2,1,";
  1999. kk += "2,3,2,1,2,2,1,2,2,1,2,1,";
  2000. kk += "2,1,1,2,1,2,1,2,2,2,1,2,";
  2001. kk += "1,2,1,1,2,1,5,2,2,1,2,2,";
  2002. kk += "1,2,1,1,2,1,1,2,2,1,2,2,";
  2003. //1921
  2004. kk += "2,1,2,1,1,2,1,1,2,1,2,2,";
  2005. kk += "2,1,2,2,3,2,1,1,2,1,2,2,";
  2006. kk += "1,2,2,1,2,1,2,1,2,1,1,2,";
  2007. kk += "2,1,2,1,2,2,1,2,1,2,1,1,";
  2008. kk += "2,1,2,5,2,1,2,2,1,2,1,2,";
  2009. kk += "1,1,2,1,2,1,2,2,1,2,2,1,";
  2010. kk += "2,1,1,2,1,2,1,2,2,1,2,2,";
  2011. kk += "1,5,1,2,1,1,2,2,1,2,2,2,";
  2012. kk += "1,2,1,1,2,1,1,2,1,2,2,2,";
  2013. kk += "1,2,2,1,1,5,1,2,1,2,2,1,";
  2014. //1931
  2015. kk += "2,2,2,1,1,2,1,1,2,1,2,1,";
  2016. kk += "2,2,2,1,2,1,2,1,1,2,1,2,";
  2017. kk += "1,2,2,1,6,1,2,1,2,1,1,2,";
  2018. kk += "1,2,1,2,2,1,2,2,1,2,1,2,";
  2019. kk += "1,1,2,1,2,1,2,2,1,2,2,1,";
  2020. kk += "2,1,4,1,2,1,2,1,2,2,2,1,";
  2021. kk += "2,1,1,2,1,1,2,1,2,2,2,1,";
  2022. kk += "2,2,1,1,2,1,4,1,2,2,1,2,";
  2023. kk += "2,2,1,1,2,1,1,2,1,2,1,2,";
  2024. kk += "2,2,1,2,1,2,1,1,2,1,2,1,";
  2025. //1941
  2026. kk += "2,2,1,2,2,4,1,1,2,1,2,1,";
  2027. kk += "2,1,2,2,1,2,2,1,2,1,1,2,";
  2028. kk += "1,2,1,2,1,2,2,1,2,2,1,2,";
  2029. kk += "1,1,2,4,1,2,1,2,2,1,2,2,";
  2030. kk += "1,1,2,1,1,2,1,2,2,2,1,2,";
  2031. kk += "2,1,1,2,1,1,2,1,2,2,1,2,";
  2032. kk += "2,5,1,2,1,1,2,1,2,1,2,2,";
  2033. kk += "2,1,2,1,2,1,1,2,1,2,1,2,";
  2034. kk += "2,2,1,2,1,2,3,2,1,2,1,2,";
  2035. kk += "2,1,2,2,1,2,1,1,2,1,2,1,";
  2036. //1951
  2037. kk += "2,1,2,2,1,2,1,2,1,2,1,2,";
  2038. kk += "1,2,1,2,4,2,1,2,1,2,1,2,";
  2039. kk += "1,2,1,1,2,2,1,2,2,1,2,2,";
  2040. kk += "1,1,2,1,1,2,1,2,2,1,2,2,";
  2041. kk += "2,1,4,1,1,2,1,2,1,2,2,2,";
  2042. kk += "1,2,1,2,1,1,2,1,2,1,2,2,";
  2043. kk += "2,1,2,1,2,1,1,5,2,1,2,2,";
  2044. kk += "1,2,2,1,2,1,1,2,1,2,1,2,";
  2045. kk += "1,2,2,1,2,1,2,1,2,1,2,1,";
  2046. kk += "2,1,2,1,2,5,2,1,2,1,2,1,";
  2047. //1961
  2048. kk += "2,1,2,1,2,1,2,2,1,2,1,2,";
  2049. kk += "1,2,1,1,2,1,2,2,1,2,2,1,";
  2050. kk += "2,1,2,3,2,1,2,1,2,2,2,1,";
  2051. kk += "2,1,2,1,1,2,1,2,1,2,2,2,";
  2052. kk += "1,2,1,2,1,1,2,1,1,2,2,1,";
  2053. kk += "2,2,5,2,1,1,2,1,1,2,2,1,";
  2054. kk += "2,2,1,2,2,1,1,2,1,2,1,2,";
  2055. kk += "1,2,2,1,2,1,5,2,1,2,1,2,";
  2056. kk += "1,2,1,2,1,2,2,1,2,1,2,1,";
  2057. kk += "2,1,1,2,2,1,2,1,2,2,1,2,";
  2058. //1971
  2059. kk += "1,2,1,1,5,2,1,2,2,2,1,2,";
  2060. kk += "1,2,1,1,2,1,2,1,2,2,2,1,";
  2061. kk += "2,1,2,1,1,2,1,1,2,2,2,1,";
  2062. kk += "2,2,1,5,1,2,1,1,2,2,1,2,";
  2063. kk += "2,2,1,2,1,1,2,1,1,2,1,2,";
  2064. kk += "2,2,1,2,1,2,1,5,2,1,1,2,";
  2065. kk += "2,1,2,2,1,2,1,2,1,2,1,1,";
  2066. kk += "2,2,1,2,1,2,2,1,2,1,2,1,";
  2067. kk += "2,1,1,2,1,6,1,2,2,1,2,1,";
  2068. kk += "2,1,1,2,1,2,1,2,2,1,2,2,";
  2069. //1981
  2070. kk += "1,2,1,1,2,1,1,2,2,1,2,2,";
  2071. kk += "2,1,2,3,2,1,1,2,2,1,2,2,";
  2072. kk += "2,1,2,1,1,2,1,1,2,1,2,2,";
  2073. kk += "2,1,2,2,1,1,2,1,1,5,2,2,";
  2074. kk += "1,2,2,1,2,1,2,1,1,2,1,2,";
  2075. kk += "1,2,2,1,2,2,1,2,1,2,1,1,";
  2076. kk += "2,1,2,2,1,5,2,2,1,2,1,2,";
  2077. kk += "1,1,2,1,2,1,2,2,1,2,2,1,";
  2078. kk += "2,1,1,2,1,2,1,2,2,1,2,2,";
  2079. kk += "1,2,1,1,5,1,2,1,2,2,2,2,";
  2080. //1991
  2081. kk += "1,2,1,1,2,1,1,2,1,2,2,2,";
  2082. kk += "1,2,2,1,1,2,1,1,2,1,2,2,";
  2083. kk += "1,2,5,2,1,2,1,1,2,1,2,1,";
  2084. kk += "2,2,2,1,2,1,2,1,1,2,1,2,";
  2085. kk += "1,2,2,1,2,2,1,5,2,1,1,2,";
  2086. kk += "1,2,1,2,2,1,2,1,2,2,1,2,";
  2087. kk += "1,1,2,1,2,1,2,2,1,2,2,1,";
  2088. kk += "2,1,1,2,3,2,2,1,2,2,2,1,";
  2089. kk += "2,1,1,2,1,1,2,1,2,2,2,1,";
  2090. kk += "2,2,1,1,2,1,1,2,1,2,2,1,";
  2091. //2001
  2092. kk += "2,2,2,3,2,1,1,2,1,2,1,2,";
  2093. kk += "2,2,1,2,1,2,1,1,2,1,2,1,";
  2094. kk += "2,2,1,2,2,1,2,1,1,2,1,2,";
  2095. kk += "1,5,2,2,1,2,1,2,2,1,1,2,";
  2096. kk += "1,2,1,2,1,2,2,1,2,2,1,2,";
  2097. kk += "1,1,2,1,2,1,5,2,2,1,2,2,";
  2098. kk += "1,1,2,1,1,2,1,2,2,2,1,2,";
  2099. kk += "2,1,1,2,1,1,2,1,2,2,1,2,";
  2100. kk += "2,2,1,1,5,1,2,1,2,1,2,2,";
  2101. kk += "2,1,2,1,2,1,1,2,1,2,1,2,";
  2102. //2011
  2103. kk += "2,1,2,2,1,2,1,1,2,1,2,1,";
  2104. kk += "2,1,6,2,1,2,1,1,2,1,2,1,";
  2105. kk += "2,1,2,2,1,2,1,2,1,2,1,2,";
  2106. kk += "1,2,1,2,1,2,1,2,5,2,1,2,";
  2107. kk += "1,2,1,1,2,1,2,2,2,1,2,2,";
  2108. kk += "1,1,2,1,1,2,1,2,2,1,2,2,";
  2109. kk += "2,1,1,2,3,2,1,2,1,2,2,2,";
  2110. kk += "1,2,1,2,1,1,2,1,2,1,2,2,";
  2111. kk += "2,1,2,1,2,1,1,2,1,2,1,2,";
  2112. kk += "2,1,2,5,2,1,1,2,1,2,1,2,";
  2113. //2021
  2114. kk += "1,2,2,1,2,1,2,1,2,1,2,1,";
  2115. kk += "2,1,2,1,2,2,1,2,1,2,1,2,";
  2116. kk += "1,5,2,1,2,1,2,2,1,2,1,2,";
  2117. kk += "1,2,1,1,2,1,2,2,1,2,2,1,";
  2118. kk += "2,1,2,1,1,5,2,1,2,2,2,1,";
  2119. kk += "2,1,2,1,1,2,1,2,1,2,2,2,";
  2120. kk += "1,2,1,2,1,1,2,1,1,2,2,2,";
  2121. kk += "1,2,2,1,5,1,2,1,1,2,2,1,";
  2122. kk += "2,2,1,2,2,1,1,2,1,1,2,2,";
  2123. kk += "1,2,1,2,2,1,2,1,2,1,2,1,";
  2124. //2031
  2125. kk += "2,1,5,2,1,2,2,1,2,1,2,1,";
  2126. kk += "2,1,1,2,1,2,2,1,2,2,1,2,";
  2127. kk += "1,2,1,1,2,1,5,2,2,2,1,2,";
  2128. kk += "1,2,1,1,2,1,2,1,2,2,2,1,";
  2129. kk += "2,1,2,1,1,2,1,1,2,2,1,2,";
  2130. kk += "2,2,1,2,1,4,1,1,2,1,2,2,";
  2131. kk += "2,2,1,2,1,1,2,1,1,2,1,2,";
  2132. kk += "2,2,1,2,1,2,1,2,1,1,2,1,";
  2133. kk += "2,2,1,2,5,2,1,2,1,2,1,1,";
  2134. kk += "2,1,2,2,1,2,2,1,2,1,2,1,";
  2135. //2041
  2136. kk += "2,1,1,2,1,2,2,1,2,2,1,2,";
  2137. kk += "1,5,1,2,1,2,1,2,2,2,1,2,";
  2138. kk += "1,2,1,1,2,1,1,2,2,1,2,2";
  2139. var arr = new Array();
  2140. arr = kk.split(",");
  2141. return arr;
  2142. }
  2143. */
  2144. /**********************************************************************************
  2145. * 함수명 : utlf_isValidDay
  2146. * 설명 : 날짜 정합성 체크
  2147. * argument : val(문자열)
  2148. * return Type : Boolean
  2149. * 작성자 : 임준호
  2150. **********************************************************************************/
  2151. // function utlf_isValidDay(val)
  2152. // {
  2153. // val = "" + val;
  2154. // try {
  2155. // var objDate = new Date(utlf_getFormat(val, "@@@@-@@-@@"));
  2156. // if(utlf_isNull(objDate)) return false;
  2157. // if(objDate.toFormatString("%Y-%m-%d") != utlf_getFormat(val, "@@@@-@@-@@")) return false;
  2158. // } catch(e) {
  2159. // return false;
  2160. // }
  2161. // return true;
  2162. // }
  2163. /**********************************************************************************
  2164. * 함수명 : utlf_isValidMonth
  2165. * 설명 : 년월 정합성 체크
  2166. * argument : val(문자열)
  2167. * return Type : Boolean
  2168. * 작성자 : 임준호
  2169. **********************************************************************************/
  2170. // function utlf_isValidMonth(val)
  2171. // {
  2172. // if (utlf_isDigit(val) != true)
  2173. // {
  2174. // return false;
  2175. // }
  2176. //
  2177. // if (length(val.trim()) != 6)
  2178. // {
  2179. // return false;
  2180. // }
  2181. //
  2182. // var nYear = toNumber(val.toString().substr(0,4));
  2183. // var nMonth = toNumber(val.toString().substr(4,2));
  2184. //
  2185. // if(utlf_isNull(nYear)||utlf_isNull(nMonth))
  2186. // {
  2187. // return false;
  2188. // }
  2189. //
  2190. // if(nMonth>12||nMonth<1)
  2191. // {
  2192. // return false;
  2193. // }
  2194. // return true;
  2195. // }
  2196. // /**********************************************************************************
  2197. // * 함수명 : utlf_isTime (삭제 utlf_isValidateDateTime으로 대체)
  2198. // * 설명 : 시간 정합성 체크
  2199. // * argument : val(문자열)
  2200. // * return Type : Boolean
  2201. // * 작성자 : 임준호
  2202. // **********************************************************************************/
  2203. // function utlf_isTime(val)
  2204. // {
  2205. // if (utlf_isDigit(val) != true)
  2206. // {
  2207. // return false;
  2208. // }
  2209. //
  2210. // if (val.trim().toString().length != 4)
  2211. // {
  2212. // return false;
  2213. // }
  2214. //
  2215. // var nHH = toNumber(val.toString().substr(0,2));
  2216. // var nMM = toNumber(val.toString().substr(2,2));
  2217. //
  2218. // if(utlf_isNull(nHH)||utlf_isNull(nMM))
  2219. // {
  2220. // return false;
  2221. // }
  2222. //
  2223. // if(nHH>24||nHH<1)
  2224. // {
  2225. // return false;
  2226. // }
  2227. //
  2228. // if(nHH>60||nHH<0)
  2229. // {
  2230. // return false;
  2231. // }
  2232. //
  2233. // return true;
  2234. // }
  2235. /**********************************************************************************
  2236. * 함수명 : utlf_getEpTime
  2237. * 설명 : 사용시간 계산
  2238. * argument : strLoginDate(로그인시간)
  2239. * strLogoutDate(로그아웃시간)
  2240. * return Type : String
  2241. * 작성자 : 임준호
  2242. **********************************************************************************/
  2243. function utlf_getEpTime(strLoginDate, strLogoutDate)
  2244. {
  2245. // 총사용시간
  2246. var SecMilli = 1000;
  2247. var MinMilli = 1000 * 60;
  2248. var HrMilli = MinMilli * 60;
  2249. var DyMilli = HrMilli * 24;
  2250. var objLoginDate = new Date(strLoginDate.substr(0,4),strLoginDate.substr(4,2),strLoginDate.substr(6,2),
  2251. strLoginDate.substr(8,2),strLoginDate.substr(10,2),strLoginDate.substr(12,2));
  2252. var objLogoutDate = new Date(strLogoutDate.substr(0,4),strLogoutDate.substr(4,2),strLogoutDate.substr(6,2),
  2253. strLogoutDate.substr(8,2),strLogoutDate.substr(10,2),strLogoutDate.substr(12,2));
  2254. var nDiffDate = objLogoutDate - objLoginDate;
  2255. var nDays = parseInt(nDiffDate/DyMilli);
  2256. var nHours = parseInt((nDiffDate/HrMilli)%24);
  2257. var nMin = parseInt((nDiffDate/MinMilli)%60);
  2258. var nSec = parseInt((nDiffDate/SecMilli)%60);
  2259. var strReVal = "";
  2260. if (nDays != 0) strReVal += nDays + "일 ";
  2261. if (nHours != 0) strReVal += nHours + "시간 ";
  2262. if (nMin != 0) strReVal += nMin + "분 ";
  2263. if (nSec != 0) strReVal += nSec + "초";
  2264. return(strReVal);
  2265. }
  2266. /**********************************************************************************
  2267. * 함수명 : utlf_getEpTime2
  2268. * 설명 : 시간 차
  2269. * argument : strStartDate(시작시간)
  2270. * strEndDate(종료시간)
  2271. * return Type : String
  2272. * 작성자 : 이돈희
  2273. **********************************************************************************/
  2274. function utlf_getEpTime2(strStartDate, strEndDate)
  2275. {
  2276. // 총사용시간
  2277. var SecMilli = 1000;
  2278. var MinMilli = 1000 * 60;
  2279. var HrMilli = MinMilli * 60;
  2280. var DyMilli = HrMilli * 24;
  2281. var objStartDate = new Date(strStartDate.substr(0,4),strStartDate.substr(4,2),strStartDate.substr(6,2),
  2282. strStartDate.substr(8,2),strStartDate.substr(10,2),strStartDate.substr(12,2));
  2283. var objEndDate = new Date(strEndDate.substr(0,4),strEndDate.substr(4,2),strEndDate.substr(6,2),
  2284. strEndDate.substr(8,2),strEndDate.substr(10,2),strEndDate.substr(12,2));
  2285. var nDiffDate = objEndDate - objStartDate;
  2286. return(nDiffDate);
  2287. }
  2288. /**********************************************************************************
  2289. * 함수명 : utlf_getDay
  2290. * 설명 : 입력된 날자로부터 요일을 구함
  2291. * argument : strDate('yyyyMMdd' 형태로 표현된 날짜)
  2292. * return Type : String(0-일요일 ~ 6-토요일)
  2293. * 작성자 : 임준호
  2294. **********************************************************************************/
  2295. function utlf_getDay(strDate)
  2296. {
  2297. var date = new Date(utlf_getFormat(strDate, "@@@@-@@-@@"));
  2298. /*
  2299. date.setYear(strDate.substr(0, 4));
  2300. date.setMonth(strDate.substr(4, 2) - 1);
  2301. date.setDate(strDate.substr(6, 2));
  2302. */
  2303. return date.getDay();
  2304. }
  2305. /**********************************************************************************
  2306. * 함수명 : utlf_getDayKor
  2307. * 설명 : 입력된 날자로부터 한글로 요일을 구함
  2308. * argument : strDate('yyyyMMdd' 형태로 표현된 날짜)
  2309. * return Type : String(일, 월, 화, 수, 목, 금, 토)
  2310. * 작성자 : 임준호
  2311. **********************************************************************************/
  2312. function utlf_getDayKor(strDate)
  2313. {
  2314. var week = new Array["일", "월", "화", "수", "목", "금", "토"];
  2315. var weekDay = week[utlf_getDay(strDate)];
  2316. return weekDay;
  2317. }
  2318. /**********************************************************************************
  2319. * 함 수 명 : utlf_today
  2320. * 설 명 : client pc의 오늘 날짜를 가져온다.(삭제 사용하지말것..)
  2321. * argument : 01. sDiv - DT: date타입으로 리턴한다. null일경우 string
  2322. * return Type : String
  2323. * 작성자 : 임준호
  2324. **********************************************************************************/
  2325. // function utlf_today(sDiv){
  2326. // var strToday = "";
  2327. // var objDate;
  2328. // var sFlag = "";
  2329. //
  2330. // objDate = new Date();
  2331. //
  2332. // try {
  2333. // if(utlf_isNull(gv_Today)) {
  2334. // objDate = new Date(gv_Today);
  2335. // }
  2336. // }catch(e){}
  2337. //
  2338. // if(!utlf_isNull(sDiv)) sFlag = sDiv.toUpperCase();
  2339. //
  2340. // if(sFlag == "DT"){
  2341. // return objDate;
  2342. // }else{
  2343. // return objDate.toFormatString("%Y%m%d");
  2344. // }
  2345. // }
  2346. /**********************************************************************************
  2347. * 함 수 명 : utlf_getDate
  2348. * 설 명 : client pc의 현재 date정보를 가져온다.
  2349. * argument :
  2350. * return Type : Date
  2351. * 작성자 : 임준호
  2352. **********************************************************************************/
  2353. // function utlf_todayDt(){
  2354. //
  2355. // var strToday = "";
  2356. // var objDate;
  2357. //
  2358. // objDate = new Date();
  2359. //
  2360. // try {
  2361. // if(utlf_isNull(gv_Today)) {
  2362. // objDate = new Date(gv_Today);
  2363. // }
  2364. // }catch(e){}
  2365. //
  2366. // return objDate;
  2367. // }
  2368. /**********************************************************************************
  2369. * 함수명 : utlf_diffDate
  2370. * 설명 : 두 일자간의 차이 일수 계산
  2371. * argument : sStartDate(yyyyMMdd형태의 From 일자) ( 예 : "20121122" )
  2372. * : sEndDate(yyyyMMdd형태의 To 일자) ( 예 : "20121202" )
  2373. * return Type : Int
  2374. * 작성자 : 임준호
  2375. **********************************************************************************/
  2376. function utlf_diffDate(sStartDate, sEndDate)
  2377. {
  2378. sStartDate = "" + sStartDate;
  2379. sEndDate = "" + sEndDate;
  2380. var vFromDate = new Date(parseInt(sEndDate.substring(0,4), 10), parseInt(sEndDate.substring(4,6)-1, 10), parseInt(sEndDate.substring(6,8), 10));
  2381. var vToDate = new Date(parseInt(sStartDate.substring(0,4), 10), parseInt(sStartDate.substring(4,6)-1, 10), parseInt(sStartDate.substring(6,8), 10));
  2382. return parseInt((vFromDate - vToDate)/(1000*60*60*24));
  2383. }
  2384. /**********************************************************************************
  2385. * 함수명 : utlf_diffMonth
  2386. * 설명 : 두 월간의 차이 월수 계산
  2387. * argument : sStartDate(yyyyMMdd형태의 From 일자) ( 예 : "20121122" )
  2388. * : sEndDate(yyyyMMdd형태의 To 일자) ( 예 : "20121202" )
  2389. * return Type : Int
  2390. * 작성자 : 임준호
  2391. **********************************************************************************/
  2392. function utlf_diffMonth(sStartDate, sEndDate)
  2393. {
  2394. var nStartMon, nEndMon;
  2395. nStartMon = parseInt(sStartDate.substring(0,4), 10)*12 + parseInt(sStartDate.substring(4,6)-1, 10);
  2396. nEndMon = parseInt(sEndDate.substring(0,4), 10)*12 + parseInt(sEndDate.substring(4,6)-1, 10);
  2397. return (nEndMon - nStartMon);
  2398. }
  2399. /**********************************************************************************
  2400. * 함수명 : utlf_diffTime
  2401. * 설명 : 두 시간간의 차이 계산
  2402. * argument : sStartTime(HHmmss형태의 From 시간) ( 예 : "20121122" )
  2403. * : sEndTime(HHmmss형태의 To 시간) ( 예 : "20121202" )
  2404. * : sType(구하고자하는 타입(시, 분, 초)) ( 예 : "HH" )
  2405. * return Type : Int
  2406. * 작성자 : 임준호
  2407. **********************************************************************************/
  2408. // function utlf_diffTime(sStartTime, sEndTime, sType)
  2409. // {
  2410. // var nReturnValue;
  2411. // var nFrom_HH = toNumber(sStartTime.substring(0,2));
  2412. // var nFrom_mm = toNumber(sStartTime.substring(2,4));
  2413. // var nFrom_ss = toNumber(sStartTime.substring(4,6));
  2414. //
  2415. // var nTo_HH = toNumber(sEndTime.substring(0,2));
  2416. // var nTo_mm = toNumber(sEndTime.substring(2,4));
  2417. // var nTo_ss = toNumber(sEndTime.substring(4,6));
  2418. //
  2419. // var nFromTotal_ss = (nFrom_HH*3600)+(nFrom_mm*60)+nFrom_ss;
  2420. // var nToTotal_ss = (nTo_HH*3600)+(nTo_mm*60)+nTo_ss;
  2421. //
  2422. // if(sType=="HH")
  2423. // {
  2424. // return (Math.floor((nToTotal_ss - nFromTotal_ss)/3600));
  2425. // }else if(sType=="mm")
  2426. // {
  2427. // return (Math.floor((nToTotal_ss - nFromTotal_ss)/60));
  2428. // }else if(sType=="ss")
  2429. // {
  2430. // return (nToTotal_ss - nFromTotal_ss);
  2431. // }
  2432. // }
  2433. /**********************************************************************************
  2434. * 함수명 : utlf_getTimeInterval
  2435. * 설명 : 두 시간의 차를 초단위로 반환
  2436. * argument : fromTime - 시작시간 문자열 (hhmm or hh:mm or hhmmss or hh:mm:ss)
  2437. * : endTime - 종료시간 문자열 (hhmm or hh:mm or hhmmss or hh:mm:ss)
  2438. * return Type : Number - (종료시간 - 시작시간) 를 초단위로 반환
  2439. * 작성자 : 임준호
  2440. **********************************************************************************/
  2441. function utlf_getTimeInterval(fromTime, endTime)
  2442. {
  2443. var arrFromTime = new Array(3);
  2444. var arrEndTime = new Array(3);
  2445. if(fromTime.length == 4 || fromTime.length == 6) {
  2446. arrFromTime[0] = fromTime.substr(0, 2);
  2447. arrFromTime[1] = fromTime.substr(2, 2);
  2448. arrFromTime[2] = fromTime.substr(4, 2);
  2449. } else if(fromTime.length == 5 || fromTime.length == 8) {
  2450. arrFromTime = fromTime.split(":");
  2451. }
  2452. if(arrFromTime[2].length == 0) arrFromTime[2] = 0;
  2453. if(endTime.length == 4 || endTime.length == 6) {
  2454. arrEndTime[0] = endTime.substr(0, 2);
  2455. arrEndTime[1] = endTime.substr(2, 2);
  2456. arrEndTime[2] = endTime.substr(4, 2);
  2457. } else if(endTime.length == 5 || endTime.length == 8) {
  2458. arrEndTime = endTime.split(":");
  2459. }
  2460. if(arrEndTime[2].length == 0) arrEndTime[2] = 0;
  2461. var rstFromTime = new Date(2000, 1, 1, eval(arrFromTime[0]), eval(arrFromTime[1]), eval(arrFromTime[2]), 0);
  2462. var rstEndTime = new Date(2000, 1, 1, eval(arrEndTime[0]), eval(arrEndTime[1]), eval(arrEndTime[2]), 0);
  2463. var diffTime = (rstEndTime - rstFromTime) / 1000;
  2464. return diffTime;
  2465. }
  2466. /*******************************************************************************
  2467. * 함수명 : utlf_getLastMonth
  2468. * 설명 : 한달 전 날짜 구하는 함수.
  2469. * argument :
  2470. * return Type : 해당날짜를 리턴.
  2471. * 주의사항 :
  2472. * 작성자 : 임준호
  2473. ******************************************************************************/
  2474. function utlf_getLastMonth(strDate) {
  2475. if (strDate) {
  2476. var date = utlf_str2Date(strDate);
  2477. var d = (new Date(date)).addMonth(-1);
  2478. }
  2479. else {
  2480. var d = (new Date).addMonth(-1);
  2481. }
  2482. var s = (new Date(d)).getFullYear()
  2483. + (((new Date(d)).getMonth() + 1) + "").padLeft(2, '0')
  2484. + (((new Date(d)).getDate()) + "").padLeft(2, '0');
  2485. return (s);
  2486. }
  2487. /*******************************************************************************
  2488. * 함수명 : utlf_getFirstDate
  2489. * 설명 : 현재월 1일 만들기.
  2490. * argument :
  2491. * return Type :
  2492. - 해당날짜를 리턴.
  2493. * 주의사항 :
  2494. * 작성자 : 임준호
  2495. ******************************************************************************/
  2496. function utlf_getFirstDate(strDate) {
  2497. var s = "";
  2498. if (strDate == null) {
  2499. s = getToday().substr(0,6) + "01";
  2500. }
  2501. else {
  2502. var date = new Date(parseInt(strDate.substr(0,4)),parseInt(strDate.substr(4,2))-1,1);
  2503. s = (new Date(date)).getFullYear()
  2504. + (((new Date(date)).getMonth()+1)+ "").padLeft(2, '0')
  2505. + ((new Date(date)).getDate() + "").padLeft(2, '0');
  2506. }
  2507. return (s);
  2508. }
  2509. /*******************************************************************************
  2510. * 함수명 : utlf_getLastDate
  2511. * 설명 : 현재월 마지막일 만들기.
  2512. * argument :
  2513. * return Type :
  2514. - 해당날짜를 리턴.
  2515. * 주의사항 :
  2516. * 작성자 : 임준호
  2517. ******************************************************************************/
  2518. function utlf_getLastDate(strDate) {
  2519. var s = "";
  2520. if (strDate == null) {
  2521. var date = (new Date()).addMonth(1);
  2522. }
  2523. else {
  2524. var date = new Date(parseInt(strDate.substr(0,4)),parseInt(strDate.substr(4,2)),1);
  2525. }
  2526. date = (new Date(date)).addDate((new Date(date)).getDate()*-1);
  2527. s = (new Date(date)).getFullYear()
  2528. + (((new Date(date)).getMonth() + 1) + "").padLeft(2, '0')
  2529. + ((new Date(date)).getDate() + "").padLeft(2, '0');
  2530. return (s);
  2531. }
  2532. /*******************************************************************************
  2533. * 함수명 : utlf_getOneMonthAfter
  2534. * 설명 : 한달후 날짜 구하는 함수.
  2535. * argument : strDate - YYYYMMDD
  2536. * return Type :
  2537. - 해당날짜를 리턴.
  2538. * 주의사항 :
  2539. * 작성자 : 임준호
  2540. ******************************************************************************/
  2541. function utlf_getOneMonthAfter(strDate) {
  2542. if (strDate) {
  2543. var date = utlf_str2Date(strDate);
  2544. var d = (new Date(date)).addMonth(1);
  2545. }
  2546. else {
  2547. var d = (new Date).addMonth(1);
  2548. }
  2549. var s = (new Date(d)).getFullYear()
  2550. + (((new Date(d)).getMonth() + 1) + "").padLeft(2, '0')
  2551. + (((new Date(d)).getDate()) + "").padLeft(2, '0');
  2552. return (s);
  2553. }
  2554. /*******************************************************************************
  2555. * 함수명 : utlf_getAddDate
  2556. * 설명 : 지정한 숫자만큼 일(Day)을 더한다.
  2557. * argument :
  2558. * return Type :
  2559. - 해당날짜를 리턴.
  2560. * 주의사항 :
  2561. * 작성자 : 임준호
  2562. ******************************************************************************/
  2563. // function utlf_getAddDate(strDate, diff) {
  2564. // if (strDate) {
  2565. // var date = utlf_str2Date(strDate);
  2566. // var d = (new Date(date)).addDate(diff);
  2567. // }
  2568. // else {
  2569. // var d = (new Date).addDate(diff);
  2570. // }
  2571. //
  2572. // var s = (new Date(d)).getFullYear()
  2573. // + (((new Date(d)).getMonth() + 1) + "").padLeft(2, '0')
  2574. // + (((new Date(d)).getDate()) + "").padLeft(2, '0');
  2575. //
  2576. // return (s);
  2577. // }
  2578. /*******************************************************************************
  2579. * 함수명 : utlf_str2Date
  2580. * 설명 : 문자를 Date형으로 변환.
  2581. * argument : inDate - YYYYMMDD
  2582. * return Type :
  2583. - 해당날짜를 리턴.
  2584. * 주의사항 :
  2585. * 작성자 : 임준호
  2586. ******************************************************************************/
  2587. function utlf_str2Date(inDate)
  2588. {
  2589. var date = new Date(parseInt(inDate.substr(0,4)),parseInt(inDate.substr(4,2))-1,parseInt(inDate.substr(6,2)));
  2590. return date;
  2591. }
  2592. /*******************************************************************************
  2593. * 함수명 : utlf_date2Str
  2594. * 설명 : Date형을 문자로 변환.
  2595. * argument :
  2596. * return Type :
  2597. - 해당날짜를 리턴.
  2598. * 주의사항 :
  2599. * 작성자 : 임준호
  2600. ******************************************************************************/
  2601. function utlf_date2Str(inDate)
  2602. {
  2603. return (new Date(inDate)).getFullYear()
  2604. + "-" +(((new Date(inDate)).getMonth() + 1) + "").padLeft(2, '0')
  2605. + "-" +(((new Date(inDate)).getDate()) + "").padLeft(2, '0');
  2606. }
  2607. /****************************************************************************************
  2608. * Function : utlf_isValidDateTime
  2609. * Description : 유효한 날짜, 시간 인지 점검
  2610. * Argument : 01.pDateString : 날짜 문자열
  2611. * : 02.pFormat : 아래 Syntex 참조
  2612. * # syntex
  2613. *
  2614. * YYYY : hour in am/pm (1~12)
  2615. * MM : month in year(number)
  2616. * MON : month in year(text) 예) "January"
  2617. * DD : day in month
  2618. * DAY : day in week 예) "Sunday"
  2619. * HH : hour in am/pm (1~12)
  2620. * hh : hour in day (0~23)
  2621. * mm : minute in hour
  2622. * ss : second in minute
  2623. * SS : millisecond in second
  2624. * a : am/pm 예) "AM"
  2625. *
  2626. * 사용예> isValidDateTime("20030229", "YYYYMMDD")
  2627. * isValidDateTime("11:61", "hh:mm");
  2628. *
  2629. * return type : Boolean - true/false
  2630. * Creator : 임준호
  2631. ****************************************************************************************/
  2632. function utlf_isValidDateTime(pDateString, pFormat)
  2633. {
  2634. // pDateString default value SET!
  2635. pDateString = utlf_isNull(pDateString) ? "1" : pDateString;
  2636. var dt = pDateString.toDate(pFormat).getDateFormat(pFormat);
  2637. return (pDateString == dt);
  2638. }
  2639. /****************************************************************************************
  2640. * Function : utlf_toDate
  2641. * Description : 문자열 날짜를 Date로 반환
  2642. * Argument : 01.pPattern - Date를 표현하고 있는 현재의 String을 pattern으로 표현한다.
  2643. * return type : 변환된 Date Object
  2644. * Creator : 임준호
  2645. * ex :
  2646. *
  2647. * var date = "2002-03-05".toDate("YYYY-MM-DD")
  2648. *
  2649. * @param : pPattern - Date를 표현하고 있는 현재의 String을 pattern으로 표현한다.
  2650. *
  2651. * # syntex
  2652. *
  2653. * YYYY : year(4자리)
  2654. * YY : year(2자리)
  2655. * MM : month in year(number)
  2656. * DD : day in month
  2657. * hh : hour in day (0~23)
  2658. * mm : minute in hour
  2659. * ss : second in minute
  2660. * SS : millisecond in second
  2661. *
  2662. * <font color=red>주의)</font> 이 중에서 YYYY(YY), MM, DD 는 반드시 있어야 한다.
  2663. *
  2664. ****************************************************************************************/
  2665. function utlf_toDate(pPattern)
  2666. {
  2667. var index = -1;
  2668. var year;
  2669. var month;
  2670. var day;
  2671. var hour = 0;
  2672. var min = 0;
  2673. var sec = 0;
  2674. var ms = 0;
  2675. if(utlf_isNull(pPattern)) pPattern = "YYYYMMDD";
  2676. if ((index = pPattern.indexOf("YYYY")) == -1 ) {
  2677. index = pPattern.indexOf("YY");
  2678. year = "20" + this.substr(index, 2);
  2679. } else {
  2680. year = this.substr(index, 4);
  2681. }
  2682. index = pPattern.indexOf("MM");
  2683. month = this.substr(index, 2);
  2684. index = pPattern.indexOf("DD");
  2685. day = this.substr(index, 2);
  2686. // trace(year);
  2687. if ((index = pPattern.indexOf("hh")) != -1 ) {
  2688. hour = this.substr(index, 2);
  2689. }
  2690. if ((index = pPattern.indexOf("mm")) != -1 ) {
  2691. min = this.substr(index, 2);
  2692. }
  2693. if ((index = pPattern.indexOf("ss")) != -1 ) {
  2694. sec = this.substr(index, 2);
  2695. }
  2696. if ((index = pPattern.indexOf("SS")) != -1 ) {
  2697. ms = this.substr(index, 2);
  2698. }
  2699. return new Date(year, month - 1, day, hour, min, sec, ms);
  2700. }
  2701. /****************************************************************************************
  2702. * Function : utlf_getDateFormat
  2703. * Description : Date type을 문자 포맷으로 바꾼다.
  2704. * Argument : 01.pPattern : syntex 참조
  2705. * return type : Pattern 형태의 문자열
  2706. * Creator : 임준호
  2707. * ex :
  2708. * default pattern은 "YYYYMMDD"이다.
  2709. *
  2710. * 함수 호출시 다음과 같이 사용한다.
  2711. *
  2712. * 1) getDateFormat() --> default로 YYYYMMDD형태로 반환한다.
  2713. * 2) getDateFormat("YYYY/MM/DD") --> pattern 형식으로 반환한다.
  2714. *
  2715. * # syntex
  2716. *
  2717. * YYYY : hour in am/pm (1~12)
  2718. * MM : month in year(number)
  2719. * MON : month in year(text) 예) "January"
  2720. * DD : day in month
  2721. * DAY : day in week 예) "Sunday"
  2722. * HH : hour in am/pm (1~12)
  2723. * hh : hour in day (0~23)
  2724. * mm : minute in hour
  2725. * ss : second in minute
  2726. * SS : millisecond in second
  2727. * a : am/pm 예) "AM"
  2728. *
  2729. ****************************************************************************************/
  2730. function utlf_getDateFormat(pPattern)
  2731. {
  2732. var GLB_MONTH_IN_YEAR = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
  2733. var GLB_DAY_IN_WEEK = new Array("Sunday", "Monday", "Tuesday", "Wednesday","Thursday", "Friday", "Saturday");
  2734. var year = this.getFullYear();
  2735. var month = this.getMonth() + 1;
  2736. var day = this.getDate();
  2737. var dayInWeek = this.getDay();
  2738. var hour24 = this.getHours();
  2739. var ampm = (hour24 < 12) ? 0 : 1;
  2740. var hour12 = (hour24 > 12) ? (hour24 - 12) : hour24;
  2741. var min = this.getMinutes();
  2742. var sec = this.getSeconds();
  2743. var YYYY = "" + year;
  2744. var YY = YYYY.substr(2);
  2745. var MM = (("" + month).length == 1) ? "0" + month : "" + month;
  2746. var MON = GLB_MONTH_IN_YEAR[month-1];
  2747. var DD = (("" + day).length == 1) ? "0" + day : "" + day;
  2748. var DAY = GLB_DAY_IN_WEEK[dayInWeek];
  2749. var HH = (("" + hour12).length == 1) ? "0" + hour12 : "" + hour12;
  2750. var hh = (("" + hour24).length == 1) ? "0" + hour24 : "" + hour24;
  2751. var mm = (("" + min).length == 1) ? "0" + min : "" + min;
  2752. var ss = (("" + sec).length == 1) ? "0" + sec : "" + sec;
  2753. var SS = "" + this.getMilliseconds();
  2754. var a = (a == 0) ? "AM" : "PM";
  2755. var dateStr;
  2756. var index = -1;
  2757. if (typeof(pPattern) == "undefined") {
  2758. dateStr = "YYYYMMDD";
  2759. } else {
  2760. dateStr = pPattern;
  2761. }
  2762. dateStr = dateStr.replace(/a/g, a);
  2763. dateStr = dateStr.replace(/YYYY/g, YYYY);
  2764. dateStr = dateStr.replace(/YY/g, YY);
  2765. dateStr = dateStr.replace(/MM/g, MM);
  2766. dateStr = dateStr.replace(/MON/g, MON);
  2767. dateStr = dateStr.replace(/DD/g, DD);
  2768. dateStr = dateStr.replace(/DAY/g, DAY);
  2769. dateStr = dateStr.replace(/hh/g, hh);
  2770. dateStr = dateStr.replace(/HH/g, HH);
  2771. dateStr = dateStr.replace(/mm/g, mm);
  2772. dateStr = dateStr.replace(/ss/g, ss);
  2773. dateStr = dateStr.replace(/SS/g, SS);
  2774. return dateStr;
  2775. }
  2776. /****************************************************************************************
  2777. * Function : utlf_getDayOfWeek
  2778. * Description : Kind에 해당하는 요일을 반환
  2779. * Argument : 01.pKind : 종류 (위 참조)
  2780. * return type : String - 요일 (아래 참조)
  2781. * Creator : 임준호
  2782. * ex :
  2783. * kind
  2784. * "K" or "k" : 한국어 -> 일,월,화,수,목,금,토
  2785. * "C" or "c" : 한자 -> 日,月,火,水,木,金,土
  2786. * "E" or "e" : 영어 -> Sun,Mon,Tue,Wed,Thu,Fri,Sat
  2787. * "N" or "n" : 숫자 -> 0,1,2,3,4,5,6
  2788. ****************************************************************************************/
  2789. function utlf_getDayOfWeek(pKind)
  2790. {
  2791. if(pKind.toUpperCase() == "K") {
  2792. var week = new Array("일","월","화","수","목","금","토");
  2793. return week[this.getDay()];
  2794. } else if(pKind.toUpperCase() == "C") {
  2795. var week = new Array("日","月","火","水","木","金","土");
  2796. return week[this.getDay()];
  2797. } else if(pKind.toUpperCase() == "E") {
  2798. var week = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");
  2799. return week[this.getDay()];
  2800. } else if(pKind.toUpperCase() == "N") {
  2801. return this.getDay() + "";
  2802. }
  2803. return "";
  2804. }
  2805. /****************************************************************************************
  2806. * Function : utlf_getMonthDay
  2807. * Description : 해당일의 마지막 일을 계산
  2808. * Argument :
  2809. * return type : String - 마지막 일자
  2810. * Creator : 임준호
  2811. ****************************************************************************************/
  2812. function utlf_getMonthDay()
  2813. {
  2814. var year = this.getFullYear();
  2815. var month = this.getMonth();
  2816. with(new Date(year, month + 1, 1, 12)) { //MM = 1 .. 12
  2817. setDate(0);
  2818. return getDate();
  2819. }
  2820. }
  2821. /****************************************************************************************
  2822. * Function : utlf_isLeapYear
  2823. * Description : 윤년인지 아닌지 점검
  2824. * Argument :
  2825. * return type : Boolean - true/false
  2826. * Creator : 임준호
  2827. ****************************************************************************************/
  2828. function utlf_isLeapYear()
  2829. {
  2830. var yyyy = this.getFullYear();
  2831. return (new Date(yyyy, 1, 29)).getMonth() == 1
  2832. }
  2833. /****************************************************************************************
  2834. * Function : utlf_getDateTime
  2835. * Description : 옵션에 따라 Date형을 DateTime형 String으로 변환
  2836. * Argument : 01.pDate : Date 객체
  2837. * : 02.pMode : 대소문자 구분 없음
  2838. * '기본' - 일자 + 시간,
  2839. * 'D' - 일자,
  2840. * 'T' - 시간,
  2841. * 'W' - 요일,
  2842. * 'S' - 시간 + 초,
  2843. * 'A' - 전체 + 초
  2844. * return type : String - "200406081415"
  2845. * Creator : 임준호
  2846. ****************************************************************************************/
  2847. function utlf_getDateTime( pDate, pMode ){
  2848. var rtnStr = null;
  2849. sFDate = pDate.getFullYear();
  2850. sFDate = sFDate.toString() + (( pDate.getMonth() + 1 > 9 ) ? pDate.getMonth() + 1 : "0" + (pDate.getMonth() + 1));
  2851. sFDate = sFDate.toString() + (( pDate.getDate() > 9 ) ? pDate.getDate() : "0" + pDate.getDate());
  2852. sFTime = (( pDate.getHours() > 9 ) ? pDate.getHours() : "0" + pDate.getHours());
  2853. sFTime = sFTime.toString() + (( pDate.getMinutes() > 9 ) ? pDate.getMinutes() : "0" + pDate.getMinutes());
  2854. sFSec = (( pDate.getSeconds() > 9 ) ? pDate.getSeconds() : "0" + pDate.getSeconds() );
  2855. var x = new Array("일", "월", "화", "수", "목", "금", "토");
  2856. sWeek = x[pDate.getDay()];
  2857. switch( pMode.toUpperCase() ){
  2858. case 'D': // YEAR + MONTH + DATE
  2859. rtnStr = sFDate;
  2860. break;
  2861. case 'T': // HOUR + MINUTE
  2862. rtnStr = sFTime;
  2863. break;
  2864. case 'S': // HOUR + MINUTE + SECONDS
  2865. rtnStr = sFTime + sFSec;
  2866. break;
  2867. case 'A': // YEAR + MONTH + DATE + HOUR + MINUTE + SECONDS
  2868. rtnStr = sFDate + sFTime + sFSec;
  2869. break;
  2870. case 'W': // WEEK
  2871. rtnStr = sWeek;
  2872. break;
  2873. default: // YEAR + MONTH + DATE + HOUR + MINUTE
  2874. rtnStr = sFDate + sFTime;
  2875. }
  2876. return rtnStr;
  2877. }
  2878. /****************************************************************************************
  2879. * Function : utlf_getRemoveFormatter
  2880. * Description : YYYY/MM/DD or YYYY-MM-DD -> YYYYMMDD 로 변환
  2881. * Argument : 01.pDateString - 구분자('/' or '-')가 들어간 일자 문자열
  2882. * return type : String - 구분자 제외한 날짜
  2883. * Creator : 임준호
  2884. ****************************************************************************************/
  2885. function utlf_getRemoveFormatter(pDateString)
  2886. {
  2887. if(pDateString.length == 10) {
  2888. var arrDate = new Array(3);
  2889. arrDate = pDateString.split("/");
  2890. if(arrDate.length != 3) {
  2891. arrDate = pDateString.split("-");
  2892. }
  2893. return arrDate[0] + arrDate[1] + arrDate[2];
  2894. } else {
  2895. return pDateString;
  2896. }
  2897. }
  2898. /****************************************************************************************
  2899. * Function : utlf_getDateInterval
  2900. * Description : 두 일자사이의 차를 다양한 형태의 날짜 단위로 반환
  2901. * Argument : 01.fromDate - 시작일자 문자열 (YYYYMMDD or YYYY/MM/DD or YYYY-MM-DD)
  2902. * : 02.endDate - 종료일자 문자열 (YYYYMMDD or YYYY/MM/DD or YYYY-MM-DD)
  2903. * : 03.format - 반환될 날짜차이 포맷(dd:일자, mm:월, yyyy:년, yyyymm:년월, mmdd:월일, yyyymmdd:년월일 / 생략시 일자 반환)
  2904. * return type : String - 종료일자에서 시작일자를 뺀 일자(format 이 주어진 경우 년/월/일 구분은 "/"로 표현된다.)
  2905. * Creator : 임준호
  2906. ****************************************************************************************/
  2907. function utlf_getDateInterval(fromDate, endDate, format)
  2908. {
  2909. var arrFromDate = new Array(3);
  2910. var arrEndDate = new Array(3);
  2911. fromDate = String(fromDate);
  2912. endDate = String(endDate);
  2913. if(fromDate.length == 8) {
  2914. arrFromDate[0] = fromDate.substr(0, 4);
  2915. arrFromDate[1] = fromDate.substr(4, 2);
  2916. arrFromDate[2] = fromDate.substr(6, 2);
  2917. } else if(fromDate.length == 10) {
  2918. arrFromDate = fromDate.split("/");
  2919. if(arrFromDate.length != 3) {
  2920. arrFromDate = fromDate.split("-");
  2921. }
  2922. }
  2923. if(endDate.length == 8) {
  2924. arrEndDate[0] = endDate.substr(0, 4);
  2925. arrEndDate[1] = endDate.substr(4, 2);
  2926. arrEndDate[2] = endDate.substr(6, 2);
  2927. } else if(endDate.length == 10) {
  2928. arrEndDate = endDate.split("/");
  2929. if(arrEndDate.length != 3) {
  2930. arrEndDate = endDate.split("-");
  2931. }
  2932. }
  2933. var rstFromDate = new Date(eval(arrFromDate[0]), eval(arrFromDate[1])-1, eval(arrFromDate[2]));
  2934. var rstEndDate = new Date(eval(arrEndDate[0]), eval(arrEndDate[1])-1, eval(arrEndDate[2]));
  2935. var rstFrom = rstFromDate.getTime();
  2936. var rstEnd = rstEndDate.getTime();
  2937. var daydue = Math.ceil((rstEnd - rstFrom) / (24 * 60 * 60 * 1000));
  2938. var yeardue = 0;
  2939. var monthdue = 0;
  2940. // 일자(dd)로 반환
  2941. if (format == null || format == "" || format.toLowerCase() == "dd") {
  2942. return daydue;
  2943. } else {
  2944. format = format.toLowerCase();
  2945. }
  2946. var year = arrFromDate[0];
  2947. var month = arrFromDate[1];
  2948. var day = arrFromDate[2];
  2949. var dayCount = 0;
  2950. // 시작일자가 1일이 아닌경우
  2951. if (day != 1) {
  2952. month += 1;
  2953. }
  2954. do {
  2955. if (month > 12) {
  2956. month = 1;
  2957. year += 1;
  2958. }
  2959. dayCount = utlf_getDayCountForMonth(year, month);
  2960. if (daydue < dayCount) {
  2961. break;
  2962. }
  2963. daydue = daydue - dayCount;
  2964. month++;
  2965. monthdue++;
  2966. if (format == "yyyy" && daydue < 365 && (monthdue % 12) == 0) {
  2967. break;
  2968. }
  2969. } while (true);
  2970. // 년도 계산
  2971. if (format != "mmdd" && format != "mm" && monthdue >= 12) {
  2972. yeardue = monthdue / 12;
  2973. monthdue = monthdue % 12;
  2974. }
  2975. var result = "";
  2976. if (format == "yyyy") {
  2977. result = yeardue;
  2978. } else if (format == "mm") {
  2979. result = monthdue;
  2980. } else if (format == "mmdd") {
  2981. result = monthdue + "/" + daydue;
  2982. } else if (format == "yyyymm") {
  2983. result = yeardue + "/" + monthdue;
  2984. } else if (format == "yyyymmdd") {
  2985. result = yeardue + "/" + monthdue + "/" + daydue;
  2986. }
  2987. return result;
  2988. }
  2989. /****************************************************************************************
  2990. * Function : utlf_getDayCountForMonth
  2991. * Description : 해당년의 해당 월이 몇일인지를 반환
  2992. * Argument : 01.year - 년도(yyyy)
  2993. * : 02.month - 달(mm)
  2994. * return type : String - 해당 년도의 해당 달이 몇일을 가지고 있는지를 반환한다.(윤년계산 포함)
  2995. * Creator : 임준호
  2996. ****************************************************************************************/
  2997. function utlf_getDayCountForMonth(year, month) {
  2998. var normal = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
  2999. var leap = new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
  3000. if (utlf_isLeap(year)) {
  3001. return leap[month - 1];
  3002. } else {
  3003. return normal[month - 1];
  3004. }
  3005. }
  3006. /****************************************************************************************
  3007. * Function : utlf_getNewDate
  3008. * Description : 현재날짜 시간 서버시간으로 변경
  3009. * Argument :
  3010. * return type : Date
  3011. * Creator : 임준호
  3012. ****************************************************************************************/
  3013. function utlf_getNewDate(){
  3014. var rtnDate = new Date();
  3015. var timediff = sysf_getGlobalVariable("timediff");
  3016. var serverInterval = 0;
  3017. if(!utlf_isNull(timediff)){
  3018. serverInterval = parseInt(timediff);
  3019. }
  3020. rtnDate.setTime(rtnDate.getTime() + serverInterval);
  3021. return rtnDate;
  3022. }
  3023. /****************************************************************************************
  3024. * Function : utlf_getCurrentDate
  3025. * Description : 현재날짜 반환
  3026. * Argument :
  3027. * return type : String - YYYYMMDD
  3028. * Creator : 임준호
  3029. ****************************************************************************************/
  3030. function utlf_getCurrentDate()
  3031. {
  3032. var sDate = utlf_getNewDate();
  3033. rtnDate = sDate.getFullYear();
  3034. rtnDate = rtnDate.toString() + (( sDate.getMonth() + 1 > 9 ) ? sDate.getMonth() + 1 : "0" + (sDate.getMonth() + 1));
  3035. rtnDate = rtnDate.toString() + (( sDate.getDate() > 9 ) ? sDate.getDate() : "0" + sDate.getDate()) ;
  3036. return rtnDate;
  3037. }
  3038. /****************************************************************************************
  3039. * Function : utlf_getCurrentTime
  3040. * Description : 현재 시간 반환
  3041. * Argument :
  3042. * return type : String - hhmmssSS
  3043. * Creator : 임준호
  3044. ****************************************************************************************/
  3045. function utlf_getCurrentTime()
  3046. {
  3047. var sDate = utlf_getNewDate();
  3048. rtnTime = (( sDate.getHours() > 9 ) ? sDate.getHours() : "0" + sDate.getHours());
  3049. rtnTime = rtnTime.toString() + (( sDate.getMinutes() > 9 ) ? sDate.getMinutes() : "0" + sDate.getMinutes());
  3050. rtnTime = rtnTime.toString() + (( sDate.getSeconds() > 9 ) ? sDate.getSeconds() : "0" + sDate.getSeconds());
  3051. return rtnTime;
  3052. }
  3053. /****************************************************************************************
  3054. * Function : utlf_getCurrentDateTime
  3055. * Description : 현재날짜 시간 반환
  3056. * Argument :
  3057. * return type : String - YYYYMMDD HHMMSS
  3058. * Creator : 임준호
  3059. ****************************************************************************************/
  3060. function utlf_getCurrentDateTime(){
  3061. return utlf_getCurrentDate() + " " + utlf_getCurrentTime();
  3062. }
  3063. /****************************************************************************************
  3064. * Function : utlf_getCurrentWeek
  3065. * Description : 현재 요일 반환
  3066. * Argument : 01.flag - 한글(K) or 숫자
  3067. * return type : String - 0, 1, 2.....or 일, 월, 화......
  3068. * Creator : 임준호
  3069. ****************************************************************************************/
  3070. function utlf_getCurrentWeek(flag)
  3071. {
  3072. var sDate = utlf_getNewDate();
  3073. sWeek = new Array("일", "월", "화", "수", "목", "금", "토");
  3074. rtnWeek = (flag == "K") ? sWeek[sDate.getDay()] : sDate.getDay();
  3075. return rtnWeek;
  3076. }
  3077. /****************************************************************************************
  3078. * Function : urlf_getStrDate
  3079. * Description : 스트링형태의 날짜데이터 반환
  3080. * Argument : 01.strDate - 문자열형태 날짜데이터
  3081. * return type : String - 패턴
  3082. * Creator : 임준호
  3083. ****************************************************************************************/
  3084. function urlf_getStrDate(sDate){
  3085. var strYear = "";
  3086. var strMonth = "";
  3087. var strDay = "";
  3088. var strHour = "";
  3089. var strMin = "";
  3090. var strSec = "";
  3091. if (sDate.length < 14) {
  3092. alert("데이터는 14자리 이상이어야 합니다.");
  3093. return null;
  3094. }
  3095. strYear = sDate.substr(0, 4);
  3096. strMonth = sDate.substr(4, 2);
  3097. strDay = sDate.substr(6, 2);
  3098. strHour = sDate.substr(8, 2);
  3099. strMin = sDate.substr(10, 2);
  3100. strSec = sDate.substr(12, 2);
  3101. sDate = strYear + "-";
  3102. sDate += strMonth + "-";
  3103. sDate += strDay + " ";
  3104. sDate += strHour + ":";
  3105. sDate += strMin + ":";
  3106. sDate += strSec;
  3107. return sDate;
  3108. }
  3109. /****************************************************************************************
  3110. * Function : utlf_getYear
  3111. * Description : 현재 년도 반환
  3112. * Argument :
  3113. * return type : String - YYYY
  3114. * Creator : 임준호
  3115. ****************************************************************************************/
  3116. function utlf_getYear(){
  3117. var sDate = utlf_getNewDate();
  3118. return sDate.getFullYear();
  3119. }
  3120. /****************************************************************************************
  3121. * Function : utlf_getMonth
  3122. * Description : 현재 월 반환
  3123. * Argument :
  3124. * return type : String - MM
  3125. * Creator : 임준호
  3126. ****************************************************************************************/
  3127. function utlf_getMonth(){
  3128. var sDate = utlf_getNewDate();
  3129. return ((sDate.getMonth() + 1 > 9 ) ? sDate.getMonth() + 1 : "0" + (sDate.getMonth() + 1));
  3130. }
  3131. /****************************************************************************************
  3132. * Function : utlf_getDate
  3133. * Description : 현재 일 반환
  3134. * Argument :
  3135. * return type : String - DD
  3136. * Creator : 임준호
  3137. ****************************************************************************************/
  3138. function utlf_getDate(){
  3139. var sDate = utlf_getNewDate();
  3140. return ((sDate.getDate() > 9 ) ? sDate.getDate() : "0" + sDate.getDate()) ;
  3141. }
  3142. /********************************************************************************************************************/
  3143. /************************* 주민등록/사업자번호/법인번호/이메일주소 체크관련 함수 *****************************/
  3144. /********************************************************************************************************************/
  3145. /**********************************************************************************
  3146. * 함수명 : utlf_getSex
  3147. * 설명 : 주민번호로 성별을 Return 한다.
  3148. * argument : strRsrno (주민번호)
  3149. * return Type : String (남자-'M' 여자-'F')
  3150. * 작성자 : 임준호
  3151. **********************************************************************************/
  3152. function utlf_getSex(strRsrno)
  3153. {
  3154. if (!(utlf_isRsrNo(strRsrno)))
  3155. return false;
  3156. var vSexGb = strRsrno.substr(6,1);
  3157. if (vSexGb == '1' || vSexGb == '3' || vSexGb == '5' || vSexGb == '7') {
  3158. return "M";
  3159. } else if (vSexGb == '2' || vSexGb == '4' || vSexGb == '6' || vSexGb == '8') {
  3160. return "F";
  3161. } else {
  3162. return "X";
  3163. }
  3164. }
  3165. /**********************************************************************************
  3166. * 함수명 : utlf_isCompRegNo
  3167. * 설명 : 사업자 등록번호 확인
  3168. * argument : sValue ( 사업자 등록 번호 )
  3169. * return Type : Boolean
  3170. * 작성자 : 임준호
  3171. **********************************************************************************/
  3172. function utlf_isCompRegNo(sValue)
  3173. {
  3174. if( utlf_isNull(sValue) ) return false;
  3175. var vCompNo = sValue.replace("-", "");
  3176. var checkID = new Array(1, 3, 7, 1, 3, 7, 1, 3, 5, 1);
  3177. var i, Sum=0, c2, remander;
  3178. if (vCompNo.length != 10)
  3179. return false;
  3180. for (i = 0; i <= 7; i++)
  3181. Sum += checkID[i] * vCompNo.charAt(i);
  3182. c2 = "0" + (checkID[8] * vCompNo.charAt(8));
  3183. c2 = c2.substring(c2.length - 2, c2.length);
  3184. Sum += Math.floor(c2.charAt(0)) + Math.floor(c2.charAt(1));
  3185. remander = (10 - (Sum % 10)) % 10;
  3186. if (Math.floor(vCompNo.charAt(9)) != remander)
  3187. return false;
  3188. return true;
  3189. }
  3190. /**********************************************************************************
  3191. * 함수명 : utlf_isCorpRegNo
  3192. * 설명 : 법인 등록번호 확인
  3193. * argument : sValue ( 법인 등록 번호 )
  3194. * return Type : Boolean
  3195. * 작성자 : 임준호
  3196. **********************************************************************************/
  3197. function utlf_isCorpRegNo(sValue)
  3198. {
  3199. if( utlf_IsNull(sValue) ) return false;
  3200. var vCorpNo = sValue.replace("-", "");
  3201. var checkID = new Array(1,2,1,2,1,2,1,2,1,2,1,2);
  3202. var i, Sum=0, c2, remander;
  3203. if (vCorpNo.length != 13)
  3204. return false;
  3205. for (i = 0; i <= 12; i++)
  3206. Sum += checkID[i] * vCorpNo.charAt(i);
  3207. remander = Sum / 10;
  3208. var nIndex = remander.toString().indexOf(".");
  3209. remander = remander.toString().substring(nIndex+1,nIndex+2);
  3210. remander = 10 - remander;
  3211. if (remander > 9 )
  3212. remander = 0;
  3213. if (remander == sValue.substring(12, 13))
  3214. return true;
  3215. return false
  3216. }
  3217. /**********************************************************************************
  3218. * 함수명 : utlf_isRsrNo
  3219. * 설명 : 주민 등록번호 확인
  3220. * argument : val ( 주민등록번호 )
  3221. * return Type : Boolean
  3222. * 작성자 : 임준호
  3223. **********************************************************************************/
  3224. function utlf_isRsrNo(val)
  3225. {
  3226. var tmp1, tmp2, tmp3;
  3227. var sum = 0;
  3228. var result = 0;
  3229. val = val.replace("-", "");
  3230. if(val.length != 13 ) return false; // 13자리인지 체크
  3231. tmp1 = val.substr( 2, 2 );
  3232. tmp2 = val.substr( 4, 2 );
  3233. tmp3 = val.substr( 6, 1 );
  3234. var j = Array(12);
  3235. j = [2,3,4,5,6,7,8,9,2,3,4,5];
  3236. for(var i=0; i<12; i++)
  3237. {
  3238. sum += 1 * val.substr(i, 1) * j[i];
  3239. }
  3240. if ( (tmp1 < "01") || (tmp1 > "12") ) return false;
  3241. if ( (tmp2 < "01") || (tmp2 > "31") ) return false;
  3242. if ( (tmp3 < "1" ) || (tmp3 > "4" ) ) return false;
  3243. result = (1 * sum) % 11;
  3244. result = (11 - result) % 10;
  3245. if (result == val.substr( 12, 1 )) {
  3246. return true;
  3247. } else {
  3248. return false;
  3249. }
  3250. }
  3251. /**********************************************************************************
  3252. * 함수명 : utlf_isEmail
  3253. * 설명 : Email 적합여부 확인
  3254. * argument : sValue (예 : "oju@yahoo.co.kr" )
  3255. * return Type : Boolean
  3256. * 작성자 : 임준호
  3257. **********************************************************************************/
  3258. function utlf_isEmail(sValue)
  3259. {
  3260. var vChk = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890-._@";
  3261. var i, pos, vEmailFirst, vEmailLast;
  3262. if( utlf_isNull(sValue) ) return false;
  3263. for( i = 0 ; i < sValue.length ; i++)
  3264. {
  3265. if(vChk.indexOf(sValue.charAt(i)) < 0)
  3266. return false;
  3267. }
  3268. pos = utlf_pos(sValue,"@");
  3269. if( pos < 0 )
  3270. return false;
  3271. vEmailFirst = sValue.substr(0, pos);
  3272. vEmailLast = sValue.substr(pos+1);
  3273. if( vEmailFirst.length <= 0 || vEmailLast.length <= 0 )
  3274. return false;
  3275. if( utlf_pos(vEmailLast, ".") <= 0 || utlf_pos(vEmailLast, "..") >= 0 || utlf_right(vEmailLast,1) == "." )
  3276. return false;
  3277. if( utlf_pos(vEmailLast, "@") >= 0 )
  3278. return false;
  3279. return true;
  3280. }
  3281. /**********************************************************************************
  3282. * 함수명 : utlf_getBefo
  3283. * 설명 : 주민번호 뒷 첫번째 자리로 년대를 return 한다.
  3284. * argument : strRsrno (주민등록번호)
  3285. * return Type : String
  3286. * 작성자 : 임준호
  3287. **********************************************************************************/
  3288. function utlf_getBefo(strRsrno)
  3289. {
  3290. if (!utlf_isRsrNo(strRsrno))
  3291. return 'N';
  3292. var vGb = strRsrno.substr(6,1);
  3293. if (vGb == '1' || vGb == '2' || vGb == '5' || vGb == '6')
  3294. {
  3295. return '19';
  3296. }
  3297. else if (vGb == '3' || vGb == '4' || vGb == '7' || vGb == '8')
  3298. {
  3299. return '20';
  3300. }
  3301. }
  3302. /**********************************************************************************
  3303. * 함수명 : utlf_getAge
  3304. * 설명 : 법적연령-만나이를 구한다
  3305. * argument : sValue (생년월일 또는 주민등록번호)
  3306. * sDate (기준일자)
  3307. * return Type : String
  3308. * 작성자 : 임준호
  3309. **********************************************************************************/
  3310. function utlf_getAge(sValue, sDate)
  3311. {
  3312. var vYear;
  3313. var vMonth;
  3314. var vDay;
  3315. if ((sValue).trim().length == 13)
  3316. {
  3317. var vBefor = utlf_getBefo(sValue);
  3318. if (vBefor=="N") return false;
  3319. sValue = vBefor + sValue;
  3320. vYear = parseInt(sValue.substr(0,4),10);
  3321. vMonth = parseInt(sValue.substr(4,2),10);
  3322. vDay = parseInt(sValue.substr(6,2),10);
  3323. }
  3324. else if ((sValue).trim().length == 8)
  3325. {
  3326. vYear = parseInt(sValue.substr(0,4),10);
  3327. vMonth = parseInt(sValue.substr(4,2),10);
  3328. vDay = parseInt(sValue.substr(6,2),10);
  3329. if (!utlf_isValidDateTime(sValue, "YYYYMMDD"))
  3330. return false;
  3331. }
  3332. else
  3333. {
  3334. return false;
  3335. }
  3336. var vCurrentSystemDate;
  3337. if (utlf_isValidDateTime(sDate, "YYYYMMDD") == true) {
  3338. vCurrentSystemDate = sDate;
  3339. } else if (utlf_transNullToEmpty(sDate) != "") {
  3340. return false;
  3341. }
  3342. var vCurrentSystemYear = parseInt(vCurrentSystemDate.substr(0,4),10);
  3343. var vCurrentSystemMonth = parseInt(vCurrentSystemDate.substr(4,2),10);
  3344. var vCurrentSystemDay = parseInt(vCurrentSystemDate.substr(6,2),10);
  3345. var vAge = vCurrentSystemYear - vYear;
  3346. if (vMonth > vCurrentSystemMonth) {
  3347. vAge = vAge - 1;
  3348. } else if (vMonth == vCurrentSystemMonth) {
  3349. if (vDay > vCurrentSystemDay) {
  3350. vAge = vAge - 1;
  3351. }
  3352. }
  3353. if (vAge < 0) {
  3354. vAge = 0;
  3355. }
  3356. return vAge;
  3357. }
  3358. /****************************************************************************************
  3359. * Function : utlf_getFullAge
  3360. * Description : 현재일자를 기준으로 나이계산
  3361. * Argument : 01.pResidentNo : 중간 구분자를 제외한 주민번호 13자리
  3362. * : 02.pDate : 기준이 되는 Date Object 일자 (default는 오늘 일자)
  3363. * : 03.pPosition : 1세이하시 개월 계산
  3364. * return type : Number - (오류시-1)
  3365. * Creator : 임준호
  3366. ****************************************************************************************/
  3367. function utlf_getFullAge(pResidentNo, pDate, pPosition)
  3368. {
  3369. if(utlf_isNull(pResidentNo)) return -1;
  3370. var pivotYY = "";
  3371. var pivotMM = "";
  3372. var pivotDD = "";
  3373. var regYY = "";
  3374. var regMM = "";
  3375. var regDD = "";
  3376. if(typeof(pDate) == "undefined" || pDate == "" || pDate == null) {
  3377. var today = new Date();
  3378. pivotYY = today.getYear();
  3379. pivotMM = today.getMonth() + 1;
  3380. pivotDD = today.getDate();
  3381. } else {
  3382. pivotYY = pDate.getYear();
  3383. pivotMM = pDate.getMonth() + 1;
  3384. pivotDD = pDate.getDate();
  3385. }
  3386. if(pResidentNo.length == 13 && utlf_isRsrNo(pResidentNo)){
  3387. gender = pResidentNo.substr(6, 1);
  3388. regYY = eval(pResidentNo.substr(0, 2));
  3389. regMM = eval(pResidentNo.substr(2, 2));
  3390. regDD = eval(pResidentNo.substr(4, 2));
  3391. if(gender == '3' || gender == '4' || gender == '7' || gender == '8') {
  3392. regYY += 2000;
  3393. } else if(gender == '0' || gender == '9') {
  3394. regYY += 1800;
  3395. } else {
  3396. regYY += 1900;
  3397. }
  3398. }else if(pResidentNo.length == 8 && utlf_isValidDateTime(pResidentNo, "YYYYMMDD")){
  3399. regYY = eval(pResidentNo.substr(0, 4));
  3400. regMM = eval(pResidentNo.substr(4, 2));
  3401. regDD = eval(pResidentNo.substr(6, 2));
  3402. }else{
  3403. return -1;
  3404. }
  3405. var age = pivotYY - regYY;
  3406. if(age > 0) {
  3407. if(pivotMM == regMM) {
  3408. if(pivotDD < regDD) {
  3409. age -= 1;
  3410. }
  3411. } else if(pivotMM < regMM) {
  3412. age -= 1;
  3413. }
  3414. }
  3415. if ( pPosition == "M")
  3416. {
  3417. //12개월이하일때 계산
  3418. if(age <= 0){
  3419. if(pivotYY > regYY) {
  3420. pivotMM += 12;
  3421. }
  3422. age = pivotMM - regMM ;
  3423. if(pivotDD < regDD) {
  3424. age -= 1;
  3425. }
  3426. age = "0."+age;
  3427. }
  3428. }
  3429. return age;
  3430. }
  3431. /****************************************************************************************
  3432. * Function : utlf_isForegnResidentNo
  3433. * Description : 외국인 주민등록번호에 대한 검증을 수행
  3434. * Argument : 01.pResidentNo : 외국인 주민등록번호
  3435. * return type : Boolean
  3436. * Creator : 임준호
  3437. ****************************************************************************************/
  3438. function utlf_isForegnResidentNo(pResidentNo) {
  3439. var sum = 0;
  3440. var odd = 0;
  3441. buf = new Array(13);
  3442. for (i = 0; i < 13; i++) {
  3443. buf[i] = parseInt(pResidentNo.charAt(i));
  3444. }
  3445. odd = buf[7]*10 + buf[8];
  3446. //기관번호 검사, 기관번호를 2로 나눈 경우, 나머지 있는 경우, 주민등록번호 무효
  3447. if (odd%2 != 0) {
  3448. return false;
  3449. }
  3450. //등록자구분이 아래와 같지 않은 경우 오류
  3451. // 6 : ??
  3452. // 7 : 외국국적동포
  3453. // 8 : 재외국인
  3454. // 9 : 순수외국인
  3455. // 2012년 외국인등록번호 11번째 자리가 위와같이 체크되는것에서 일련번호로 변경됨
  3456. // 7번째 자리를 외국인 성별로 사용함으로, 로직 변경 20200106
  3457. if ((buf[6] != 5)&&(buf[6] != 6)&&(buf[6] != 7)&&(buf[6] != 8)) {
  3458. return false;
  3459. }
  3460. //주민번호 13자리 중 12자리를 처음부터 12자리까지 배열값의 순서대로 곱한 후 합계를 낸다.
  3461. //Total = (A * 2) + (B * 3) + (C * 4) + (D * 5) + (E * 6) + (F * 7)
  3462. // + (G * 8) + (H * 9) + (I * 2) + (J * 3) + (K * 4) + (L * 5)
  3463. multipliers = [2,3,4,5,6,7,8,9,2,3,4,5];
  3464. for (i = 0, sum = 0; i < 12; i++) {
  3465. sum += (buf[i] *= multipliers[i]);
  3466. }
  3467. sum=11-(sum%11);
  3468. if (sum>=10) sum-=10;
  3469. sum += 2;
  3470. if (sum>=10) sum-=10;
  3471. if ( sum != buf[12]) {
  3472. return false;
  3473. }
  3474. else {
  3475. return true;
  3476. }
  3477. }
  3478. /****************************************************************************************
  3479. * Function : utlf_getGender
  3480. * Description : 주민번호로 성별을 리턴한다.
  3481. * Argument : 01.pResidentNo : 주민등록번호
  3482. * return type : M/F
  3483. * Creator : tobesoft
  3484. ****************************************************************************************/
  3485. // function utlf_getGender(pResidentNo)
  3486. // {
  3487. //
  3488. // if(pResidentNo.length != 13 && pResidentNo.length != 7) return false;
  3489. //
  3490. // var rrns = 0;
  3491. //
  3492. // if(pResidentNo.length == 13) {
  3493. // rrns = eval(pResidentNo.substr(6, 1));
  3494. // } else {
  3495. // rrns = eval(pResidentNo.substr(0, 1));
  3496. // }
  3497. //
  3498. // return (rrns % 2) ? "M" : "F";
  3499. // }
  3500. /********************************************************************************************************************/
  3501. /************************* 기타 ************************************************************************************/
  3502. /********************************************************************************************************************/
  3503. /**********************************************************************************
  3504. * 함수명 : utlf_getRandomSubmitUUID
  3505. * 설명 : uuid 생성
  3506. * argument :
  3507. * return Type : String - uuid
  3508. * 작성자 : 임준호
  3509. **********************************************************************************/
  3510. function utlf_getRandomSubmitUUID(){
  3511. var s = [], itoh = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'];
  3512. // Make array of random hex digits. The uuid only has 32 digits in it, but we
  3513. // allocate an extra items to make room for the '-'s we'll be inserting.
  3514. for (var i = 0; i <36; i++) {
  3515. s[i] = Math.floor(Math.random()*0x10);
  3516. }
  3517. // Conform to RFC-4122, section 4.4
  3518. s[14] = 4; // Set 4 high bits of time_high field to version
  3519. s[19] = (s[19] & 0x3) | 0x8; // Specify 2 high bits of clock sequence
  3520. // Convert to hex chars
  3521. for (var i = 0; i <36; i++) {
  3522. s[i] = itoh[s[i]];
  3523. }
  3524. // Insert '-'s
  3525. // s[8] = s[13] = s[18] = s[23] = '-';
  3526. return s.join('');
  3527. }
  3528. /****************************************************************************************
  3529. * Function : utlf_isTelephoneZoneNo
  3530. * Description : 올바른 DDD번호인지 점검 (필요할까?)
  3531. * Argument : 01.pDDD : DDD 번호 문자열 혹은 숫자
  3532. * return type : Boolean - true/false
  3533. * Creator : 임준호
  3534. ****************************************************************************************/
  3535. function utlf_isTelephoneZoneNo(pDDD)
  3536. {
  3537. //pDDD 숫자 점검 logic 필요
  3538. var strDDD = pDDD + "";
  3539. if( strDDD != "02" &&
  3540. strDDD != "031" &&
  3541. strDDD != "032" &&
  3542. strDDD != "033" &&
  3543. strDDD != "041" &&
  3544. strDDD != "042" &&
  3545. strDDD != "043" &&
  3546. strDDD != "051" &&
  3547. strDDD != "052" &&
  3548. strDDD != "053" &&
  3549. strDDD != "054" &&
  3550. strDDD != "055" &&
  3551. strDDD != "061" &&
  3552. strDDD != "062" &&
  3553. strDDD != "063" &&
  3554. strDDD != "064" ) return false;
  3555. return true;
  3556. }
  3557. /****************************************************************************************
  3558. * Function : utlf_transBase64ToImg
  3559. * Description : base64로 인코딩된 이미지를 imageViewer에 출력
  3560. * Argument : 01.objImg : imageViewer object
  3561. * : 02.sImgData : base64 인코딩 문자열
  3562. * return type : Boolean - true/false 성공여부
  3563. * Creator : 임준호
  3564. ****************************************************************************************/
  3565. function utlf_transBase64ToImg(objImg, sImgData){
  3566. var objImage = new Image;
  3567. var ExtObj = new ExtCommon();
  3568. var objDebase64 = ExtObj.decodeBase64(sImgData, "OBJ");
  3569. var objBuff = new Buffer(objDebase64);
  3570. var bSucc = objImage.setBinary(objBuff.data);
  3571. if(bSucc){
  3572. objImg.image = objImage;
  3573. }
  3574. return bSucc;
  3575. }
  3576. /****************************************************************************************
  3577. * Function : utlf_transBase64ToBin
  3578. * Description : base64로 인코딩된 이미지를 binary로 변환
  3579. * Argument : 01.sImgData : base64 인코딩 문자열
  3580. * return type : object - 이미지 binary
  3581. * Creator : 임준호
  3582. ****************************************************************************************/
  3583. function utlf_transBase64ToBin(sImgData){
  3584. var ExtObj = new ExtCommon();
  3585. var objDebase64 = ExtObj.decodeBase64(sImgData, "OBJ");
  3586. var objBuff = new Buffer(objDebase64);
  3587. return objBuff.data;
  3588. }
  3589. /****************************************************************************************
  3590. * Function : utlf_saveToImageBinary
  3591. * Description : imageViewer의 이미지를 binary로 변환
  3592. * Argument : 01.objImg : imageViewer object
  3593. * return type : object - 이미지 binary
  3594. * Creator : 임준호
  3595. ****************************************************************************************/
  3596. function utlf_saveToImageBinary(objImg:ImageViewer){
  3597. var objImage = objImg.saveToImageObject();
  3598. if(!utlf_isNull(objImage)){
  3599. return objImage.getBinary();
  3600. }else{
  3601. return null;
  3602. }
  3603. }
  3604. /****************************************************************************************
  3605. * Function : utlf_transFileToImg
  3606. * Description : 첨부파일(이미지)을 imageViewer에 출력
  3607. * Argument : 01.objImg : imageViewer object
  3608. * : 02.objFile : 첨부파일 데이타
  3609. * return type : Boolean - true/false 성공여부
  3610. * Creator : 임준호
  3611. ****************************************************************************************/
  3612. function utlf_transFileToImg(objImg:ImageViewer, objFile){
  3613. var objBuf = new Buffer(objFile);
  3614. var objImage = new Image;
  3615. var bSucc = objImage.setBinary(objBuf.data);
  3616. if(bSucc){
  3617. objImg.image = objImage;
  3618. }
  3619. return bSucc;
  3620. }
  3621. /****************************************************************************************
  3622. * Function : utlf_screenToImage
  3623. * Description : 화면을 캡쳐한다.
  3624. * Argument : 01.sScope - 캡쳐 영역 (this:현재화면, all:전체(default), top:상단, work:업무, bottom:하단)
  3625. * : 02.bPreview - 미리보기 여부 default - true
  3626. * return type : Boolean - true/false 성공여부
  3627. * Creator : 임준호
  3628. ****************************************************************************************/
  3629. function utlf_screenToImage(sScope, bPreview){
  3630. var sFileName = sysf_getUserId()+"_"+utlf_getCurrentDate()+utlf_getCurrentTime();
  3631. var objFd = new FileDialog;
  3632. var objVFile = objFd.open("FileSave", FileDialog.SAVE, "%MYDOCUMENT%", sFileName+".png");
  3633. var bSucc = false;
  3634. if(utlf_isNull(sScope)) sScope = "this";
  3635. if(utlf_isNull(bPreview)) bPreview = true;
  3636. if(sScope == "all"){
  3637. bSucc = application.mainframe.saveToImage(objVFile.fullpath,"PNG");
  3638. }else if(sScope == "top"){
  3639. bSucc = agv_objAppTopPath.form.saveToImage(objVFile.fullpath,"PNG");
  3640. }else if(sScope == "work"){
  3641. bSucc = agv_objAppWorkPath.form.saveToImage(objVFile.fullpath,"PNG");
  3642. }else if(sScope == "bottom"){
  3643. bSucc = agv_objAppBottomPath.form.saveToImage(objVFile.fullpath,"PNG");
  3644. }else if(sScope == "this"){
  3645. bSucc = this.saveToImage(objVFile.fullpath,"PNG");
  3646. }
  3647. if(bSucc && bPreview){
  3648. system.execShell(objVFile.fullpath);
  3649. }
  3650. return bSucc;
  3651. }
  3652. /****************************************************************************************
  3653. * Function : utlf_setFormat
  3654. * Description : 입력 값에 format을 적용하여 리턴
  3655. * Argument : value 입력 값
  3656. format 적용할 포맷 형식
  3657. * return type :
  3658. * Creator : 김상목
  3659. ****************************************************************************************/
  3660. function utlf_setFormat(value, format){
  3661. var str = value.toString();
  3662. if(format == "#,###") {
  3663. var num = parseFloat(str);
  3664. if( isNaN(num) ) return "0";
  3665. if(str == "0") return 0;
  3666. var reg = /(^[+-]?\d+)(\d{3})/;
  3667. var n = (str + '');
  3668. while (reg.test(n)) n = n.replace(reg, '$1' + ',' + '$2');
  3669. return n;
  3670. } else { // "#.#"
  3671. if(utlf_isNull(format)) return str;
  3672. var num = parseFloat(str);
  3673. var temp = format.split('.');
  3674. return num.toFixed(temp[1].length);
  3675. }
  3676. };
  3677. /****************************************************************************************
  3678. * Function : utlf_setAsterisk
  3679. * Description : 입력 값에 표시할 문자열의 길이 만큼만 보여주고 나머지는 *처리 해서 보여준다.
  3680. * Argument : str 입력 값
  3681. length 표시할 문자열의 길이
  3682. * return type : expr에 표현 될 형식
  3683. * 예시 : expr:utlf_setAsterisk(mpphonno, 5)
  3684. * Creator : 김상목
  3685. ****************************************************************************************/
  3686. function utlf_setAsterisk(str, length) {
  3687. if(utlf_isNull(str)) return "";
  3688. var text = str.toString();
  3689. var asteriskCnt = text.length - length;
  3690. if(asteriskCnt <= 0) return "";
  3691. var result = "";
  3692. for(var i = 0; i < length; i++) {
  3693. result += '@';
  3694. }
  3695. result += '{';
  3696. for(var i = 0; i < asteriskCnt; i++) {
  3697. result += '@';
  3698. }
  3699. result += '}';
  3700. return result;
  3701. }
  3702. /****************************************************************************************
  3703. * Function : utlf_getNumberFromString
  3704. * Description : 문자열에서 숫자값만 추출
  3705. * Argument : str 입력 값
  3706. * return type : 숫자값
  3707. * 예시 : expr:utlf_getNumberFromString("010-1234-5678")
  3708. * Creator : 김상목
  3709. ****************************************************************************************/
  3710. function utlf_getNumberFromString(str) {
  3711. if(utlf_isNull(str)) return "";
  3712. if(typeof str != "string") return "";
  3713. return str = str.replace(/[^0-9]/g, "");
  3714. }
  3715. /****************************************************************************************
  3716. * Function : HashArray
  3717. * Description : 해시 배열을 만들거나 값을 리턴한다(리턴할 때 삭제)
  3718. * Argument : 01.push (key : 해시키, val : 해시값)
  3719. * : 02.pop (key : 해시키)
  3720. * return type :
  3721. * Creator : 김상목
  3722. ****************************************************************************************/
  3723. function HashArray() {
  3724. var hash = new Array();
  3725. this.push = function (key, val) {
  3726. hash[key] = val;
  3727. }
  3728. this.pop = function (key) {
  3729. var rtnVal = hash[key];
  3730. delete hash[key];
  3731. return rtnVal;
  3732. }
  3733. }
  3734. /****************************************************************************************
  3735. * Function : SortArray
  3736. * Description : 그리드의 정열을 순서대로 넘기는 값을 리턴해준다.
  3737. * Argument :
  3738. * return type :
  3739. * Creator : 김상목
  3740. ****************************************************************************************/
  3741. function SortArray() {
  3742. var sort = [[0, 'N'],
  3743. [1, '+'],
  3744. [2, '-']];
  3745. var index = 0;
  3746. this.getNext = function() {
  3747. index++;
  3748. if(index >= sort.length)
  3749. index = 0;
  3750. return sort[index][1];
  3751. }
  3752. }
  3753. function utlf_addLog(strLog) {
  3754. if(utlf_isNull(agv_objAppTopPath)) return;
  3755. var oDiv_log = agv_objAppTopPath.form.components["div_log"];
  3756. if(!utlf_isNull(oDiv_log) && oDiv_log.chk_log.value == true)
  3757. gv_LogData += (new Date()).getDateFormat("YYYY/MM/DD hh시 mm분 ss초 SS") + " : " + strLog + "\n";
  3758. }
  3759. function utlf_printLog() {
  3760. sysf_trace("========================= LogData 시작 =========================");
  3761. sysf_trace(gv_LogData);
  3762. sysf_trace("========================= LogData 끝 =========================");
  3763. utlf_clearLog(); // 한번 출력 후에는 지운다.
  3764. }
  3765. function utlf_clearLog() {
  3766. gv_LogData = "";
  3767. }
  3768. /****************************************************************************************
  3769. * Function : utlf_getEllipsisText
  3770. * Description : 실제 컨트롤과 글자 길이에 따라 '...'을 붙혀서 값을 반환해준다.
  3771. * Argument :
  3772. * return type :
  3773. * Creator : 김상목
  3774. ****************************************************************************************/
  3775. function utlf_getEllipsisText(ctrlObj, inputText) {
  3776. var text = inputText;
  3777. var result = text;
  3778. if(utlf_isNull(text)) {
  3779. result = "";
  3780. } else {
  3781. var font = ctrlObj.currentstyle.font;
  3782. if(utlf_isNull(font)) {
  3783. result = "";
  3784. } else {
  3785. var fontStyle = font.toString().split(',');
  3786. var bold = false;
  3787. if(fontStyle.length > 2 && fontStyle[2] == "bold") bold = true;
  3788. var objFont = utlf_getObjFont(fontStyle[1], fontStyle[0], bold); // 실제 폰트의 너비
  3789. var objFontSize = utlf_getTextSize(text, objFont);
  3790. var width = ctrlObj.position.width // 실제 글자가 들어갈 수 있는 영역 너비(width - padding 좌우영역)
  3791. - (utlf_isNull(ctrlObj.currentstyle.padding) ? 0 : ctrlObj.currentstyle.padding.left + ctrlObj.currentstyle.padding.right);
  3792. var index = text.length;
  3793. if(objFontSize.cx > width) {
  3794. var first = 0;
  3795. var last = text.length - 1;
  3796. var mid = 0;
  3797. var textSize;
  3798. while(first <= last) {
  3799. mid = parseInt((first + last) / 2);
  3800. textSize = utlf_getTextSize(text.substring(0, mid) + "...", objFont);
  3801. if(width == textSize.cx) {
  3802. break;
  3803. } else {
  3804. if(textSize.cx < width)
  3805. first = mid + 1;
  3806. else
  3807. last = mid - 1;
  3808. }
  3809. }
  3810. if(textSize.cx > width) // 글자가 걸쳐 있는 경우 인덱스 하나를 더 빼준다.
  3811. mid -= 1;
  3812. if(mid > 0)
  3813. result = text.substring(0, mid) + "...";
  3814. }
  3815. }
  3816. }
  3817. return result;
  3818. }
  3819. //바코드 폰트를 등록한다.
  3820. function utlf_installBarcodeFont(fontNm){
  3821. var objActiveX = new ActiveX("LiveUtilOCX", 0, 0, 0, 0);
  3822. objActiveX.progid = "{7b1f53ab-6137-4773-88cc-53a46af2d289}";
  3823. objActiveX.FontPath = "C:\\himed\\components\\HIT\\LiveUtil";
  3824. this.addChild("LiveUtilOCX", objActiveX);
  3825. objActiveX.show();
  3826. objActiveX.visible = false;
  3827. if (fontNm == null || fontNm == "") {
  3828. fontNm = "FREE3OF9.TTF";
  3829. }
  3830. objActiveX.InstallFont(fontNm);
  3831. }
  3832. //속도체크를 위한 함수 추가 (2015.08.31. beshon)
  3833. function utlf_startLogCheck(logickind) {
  3834. if(agv_objAppTopPath.form.arryStartLogTime == null) agv_objAppTopPath.form.arryStartLogTime = new Array();
  3835. if(agv_objAppTopPath.form.arryStartLogTime[logickind] != null && agv_objAppTopPath.form.arryStartLogTime[logickind] != undefined)
  3836. delete agv_objAppTopPath.form.arryStartLogTime[logickind];
  3837. agv_objAppTopPath.form.arryStartLogTime[logickind] = new Date().getTime();
  3838. }
  3839. function utlf_endLogCheck(logickind, logdata) {
  3840. if(agv_objAppTopPath.form.arryStartLogTime == null || agv_objAppTopPath.form.arryStartLogTime[logickind] == null || agv_objAppTopPath.form.arryStartLogTime[logickind] == undefined)
  3841. return;
  3842. var elapsedTime = new Date().getTime() - agv_objAppTopPath.form.arryStartLogTime[logickind];
  3843. /*
  3844. model.makeValue("/root/hidden/temp/logcheck/logickind", logickind);
  3845. model.makeValue("/root/hidden/temp/logcheck/elapsedTime", elapsedTime);
  3846. if(logdata != null && logdata != undefined) {
  3847. var rowdata = logdata.split('|');
  3848. for(var i = 0; i < rowdata.length; i++) {
  3849. model.makeValue("/root/hidden/temp/logcheck/data" + i, rowdata[i]);
  3850. }
  3851. }
  3852. // <submission id="TRZHM00500" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/hidden/temp/logcheck" resultref="/root/temp"/>
  3853. submit ("TRZHM00500", false); // submission 선언은 상태메시지 창에 있음
  3854. model.removeNodeset("/root/hidden/temp/logcheck");
  3855. */
  3856. var sInDsName = dsf_createDsRow("in_ds_searchLogCheck"
  3857. , [{col: "logickind", val: logickind}
  3858. , {col: "elapsedTime", val: elapsedTime}
  3859. ]);
  3860. if(logdata != null && logdata != undefined) {
  3861. var rowdata = logdata.split('|');
  3862. for(var i = 0; i < rowdata.length; i++) {
  3863. //model.makeValue("/root/hidden/temp/logcheck/data" + i, rowdata[i]);
  3864. dsf_makeValue(in_ds_searchLogCheck,"data"+i, "string", rowdata[i]);
  3865. }
  3866. }
  3867. //trace(in_ds_searchDetl.saveXML());
  3868. var oParam = {};
  3869. oParam.id = "TRZHM00500";
  3870. oParam.service = "monitorapp.MonitorMngt";
  3871. oParam.method = "reqGetElapseTimeCheck";
  3872. oParam.inds = "req="+sInDsName;
  3873. oParam.outds = "";
  3874. oParam.async = false;
  3875. //oParam.callback = "cf_TRZHM00500";
  3876. tranf_submit(oParam);
  3877. delete agv_objAppTopPath.form.arryStartLogTime[logickind];
  3878. }
  3879. function utlf_startLogTempCheck(logickind) {
  3880. if(agv_objAppTopPath.form.arryStartLogTime == null) agv_objAppTopPath.form.arryStartLogTime = new Array();
  3881. if(agv_objAppTopPath.form.arryStartLogTime[logickind] != null && agv_objAppTopPath.form.arryStartLogTime[logickind] != undefined)
  3882. delete agv_objAppTopPath.form.arryStartLogTime[logickind];
  3883. agv_objAppTopPath.form.arryStartLogTime[logickind] = new Date().getTime();
  3884. }
  3885. function utlf_endLogTempCheck(logickind) {
  3886. if(agv_objAppTopPath.form.arryStartLogTime == null || agv_objAppTopPath.form.arryStartLogTime[logickind] == null || agv_objAppTopPath.form.arryStartLogTime[logickind] == undefined)
  3887. return 0;
  3888. var elapsedTime = new Date().getTime() - agv_objAppTopPath.form.arryStartLogTime[logickind];
  3889. delete agv_objAppTopPath.form.arryStartLogTime[logickind];
  3890. return elapsedTime;
  3891. }
  3892. function utlf_beforeTimeCheck() {
  3893. if(agv_objAppTopPath.form.arryStartLogTime == null) {
  3894. agv_objAppTopPath.form.arryStartLogTime = 0;
  3895. return;
  3896. }
  3897. agv_objAppTopPath.form.modalCallCnt++;
  3898. if(agv_objAppTopPath.form.modalCallCnt == 1)
  3899. return new Date().getTime();
  3900. else
  3901. return 0;
  3902. }
  3903. function utlf_exceptPopupTime(beforeTime) {
  3904. if(agv_objAppTopPath.form.arryStartLogTime == null) {
  3905. agv_objAppTopPath.form.arryStartLogTime = 0;
  3906. return;
  3907. }
  3908. agv_objAppTopPath.form.modalCallCnt--;
  3909. if(agv_objAppTopPath.form.modalCallCnt != 0) return;
  3910. var currentTime = new Date().getTime();
  3911. for(var i in agv_objAppTopPath.form.arryStartLogTime) {
  3912. var elapseTime = (currentTime - beforeTime);
  3913. agv_objAppTopPath.form.arryStartLogTime[i] += elapseTime;
  3914. }
  3915. }
  3916. /****************************************************************************************
  3917. * Function : utlf_validMaskEditTime
  3918. * Description : MastEdit를 시간으로 사용할 경우, 부정확한 입력을 제한한다.(ontextchange함수에 사용)
  3919. * Argument : 01.obj - MaskEdit object
  3920. * : 02.e - TextChangeEventInfo event
  3921. * : 03.bHalfTime - 12:00 기준인지 여부(defalt는 24:00, true/false)
  3922. * return type : null
  3923. * Creator : 추민수
  3924. ****************************************************************************************/
  3925. function utlf_validMaskEditTime(obj:MaskEdit, e:TextChangeEventInfo, bHalfTime){
  3926. var sPosttext = utlf_trim((e.posttext).replace(":", "").replace("_", ""));
  3927. var nFirstTime = 2;
  3928. var nSecondTime = 3;
  3929. if( !utlf_isNull(bHalfTime) && bHalfTime == true ){
  3930. nFirstTime = 1;
  3931. nSecondTime = 1;
  3932. }
  3933. if( !utlf_isNull(sPosttext.substring(0, 1)) ){
  3934. if( eval(sPosttext.substring(0, 1)) > nFirstTime ){
  3935. obj.value = "";
  3936. obj.setCaretPos(0);
  3937. return;
  3938. }
  3939. }
  3940. if( !utlf_isNull(sPosttext.substring(1, 2)) ){
  3941. if( eval(sPosttext.substring(0, 1)) > (nFirstTime-1) ){
  3942. if( eval(sPosttext.substring(1, 2)) > nSecondTime ){
  3943. obj.value = sPosttext.substring(0, 1);
  3944. obj.setCaretPos(1);
  3945. return;
  3946. }
  3947. }
  3948. }
  3949. if( !utlf_isNull(sPosttext.substring(2, 3)) ){
  3950. if( eval(sPosttext.substring(2, 3)) > 5 ){
  3951. obj.value = sPosttext.substring(0, 2);
  3952. obj.setCaretPos(2);
  3953. return;
  3954. }
  3955. }
  3956. }
  3957. /****************************************************************************************
  3958. * Function : utlf_validMaskEditDateTime
  3959. * Description : MastEdit를 YYYY-MM-DD hh:mm으로 사용할 경우, 부정확한 입력을 제한한다.(ontextchange함수에 사용)
  3960. * Argument : 01.obj - MaskEdit object
  3961. * : 02.e - TextChangeEventInfo event
  3962. * : 03.bHalfTime - 12:00 기준인지 여부(defalt는 24:00, true/false)
  3963. * return type : null
  3964. * Creator :
  3965. ****************************************************************************************/
  3966. function utlf_validMaskEditDateTime(obj:MaskEdit, e:TextChangeEventInfo, bHalfTime){
  3967. if( utlf_isNull(obj.mask) || obj.mask != "####-##-## ##:##" ){
  3968. return;
  3969. }
  3970. var sPosttext = utlf_trim((e.posttext).replace("-", "").replace(":", "").replace("_", "").replace(" ", ""));
  3971. var nFirstDateM = 1;
  3972. var nSecondDateM = 2;
  3973. var nFirstDateD = 3;
  3974. var nFirstTime = 2;
  3975. var nSecondTime = 3;
  3976. if( !utlf_isNull(bHalfTime) && bHalfTime == true ){
  3977. nFirstTime = 1;
  3978. nSecondTime = 1;
  3979. }
  3980. // M
  3981. if( !utlf_isNull(sPosttext.substring(4, 5)) ){
  3982. if( eval(sPosttext.substring(4, 5)) > nFirstDateM ){
  3983. obj.value = eval(sPosttext.substring(0, 4));
  3984. obj.setCaretPos(5);
  3985. return true;
  3986. }
  3987. }
  3988. // MM
  3989. if( !utlf_isNull(sPosttext.substring(5, 6)) ){
  3990. if( eval(sPosttext.substring(4, 5)) > (nFirstDateM-1)
  3991. && eval(sPosttext.substring(5, 6)) > nSecondDateM ){
  3992. obj.value = sPosttext.substring(0, 5);
  3993. obj.setCaretPos(6);
  3994. return true;
  3995. }
  3996. }
  3997. // D
  3998. if( !utlf_isNull(sPosttext.substring(6, 7)) ){
  3999. if( eval(sPosttext.substring(6, 7)) > nFirstDateD ){
  4000. obj.value = sPosttext.substring(0, 6);
  4001. obj.setCaretPos(8);
  4002. return true;
  4003. }else if( eval(sPosttext.substring(6, 7)) == nFirstDateD ){
  4004. if( utlf_isValidDateTime(sPosttext.substring(0, 7) + "0", "YYYYMMDD") == false ){
  4005. obj.value = sPosttext.substring(0, 6);
  4006. obj.setCaretPos(8);
  4007. return true;
  4008. }
  4009. }
  4010. }
  4011. // DD
  4012. if( !utlf_isNull(sPosttext.substring(7, 8)) ){
  4013. if( utlf_isValidDateTime(sPosttext.substring(0, 8), "YYYYMMDD") == false ){
  4014. obj.value = sPosttext.substring(0, 7);
  4015. obj.setCaretPos(9);
  4016. return true;
  4017. }
  4018. }
  4019. // H
  4020. if( !utlf_isNull(sPosttext.substring(8, 9)) ){
  4021. if( eval(sPosttext.substring(8, 9)) > nFirstTime ){
  4022. obj.value = sPosttext.substring(0, 8);
  4023. obj.setCaretPos(11);
  4024. return true;
  4025. }
  4026. }
  4027. // HH
  4028. if( !utlf_isNull(sPosttext.substring(9, 10)) ){
  4029. if( eval(sPosttext.substring(8, 9)) > (nFirstTime-1) ){
  4030. if( eval(sPosttext.substring(9, 10)) > nSecondTime ){
  4031. obj.value = sPosttext.substring(0, 9);
  4032. obj.setCaretPos(12);
  4033. return true;
  4034. }
  4035. }
  4036. }
  4037. // D
  4038. if( !utlf_isNull(sPosttext.substring(10, 11)) ){
  4039. if( eval(sPosttext.substring(10, 11)) > 5 ){
  4040. obj.value = sPosttext.substring(0, 10);
  4041. obj.setCaretPos(14);
  4042. return true;
  4043. }
  4044. }
  4045. }
  4046. /**
  4047. * @---------------------------------------------------
  4048. * @desc : 저장된 값을 지정한 자리에서 올림/반올림/버림 처리
  4049. * @param : position - 올림/반올림/버림 할 위치(2:10자리, 1:1자리, -1:소수점이하 첫째자리)
  4050. * @param : mode - UP:올림, HALF_UP:반올림, DOWN:버림
  4051. * @return : Number
  4052. * @---------------------------------------------------
  4053. */
  4054. function utlf_getRound_medirec( position, mode )
  4055. {
  4056. // 파라미터 값을 수치화 하여 변수에 저장
  4057. var valueNumber = parseFloat(this);
  4058. // 소수점을 기준으로 숫자들만 취하여 배열 변수에 저장
  4059. var tempArray = valueNumber.toString().setReplaceWord("-", "").split(".");
  4060. // this 가 float 형이 아니면
  4061. if( !this.isFloat() )
  4062. {
  4063. //fAlertMessage(4, "파라미터");
  4064. return "";
  4065. }
  4066. // position 가 float 형이 아니면
  4067. if( !position.toString().isFloat() )
  4068. {
  4069. //fAlertMessage(4, "파라미터");
  4070. return "";
  4071. }
  4072. var nPosition = parseInt(position);
  4073. // 소수점 앞에서 처리하려면
  4074. if(0 < nPosition)
  4075. {
  4076. // 소수점 이상 자리수보다 크면
  4077. if( tempArray[0].length < nPosition )
  4078. {
  4079. // 메시지 처리후 리턴
  4080. //fAlertMessage(1, "올림/반올림/버림 할 위치");
  4081. return "";
  4082. }
  4083. }
  4084. // 소수점 뒤에서 처리하려면
  4085. else if(0 > nPosition)
  4086. {
  4087. // 소수점 이하값이 존재하지 않거나 자리수보다 크면
  4088. if(tempArray.length != 2 || tempArray[1].length < nPosition*(-1))
  4089. {
  4090. return this;
  4091. }
  4092. }
  4093. switch(mode){
  4094. // '올림'이고
  4095. case "UP" :
  4096. // 소수점 앞에서 처리하려면
  4097. if(0 < nPosition)
  4098. {
  4099. // 해당 자리(position)에서 올림 처리
  4100. valueNumber = Math.ceil(valueNumber / Math.pow(10, position)) * Math.pow(10, position);
  4101. return valueNumber;
  4102. }
  4103. // 소수점 뒤에서 처리하려면
  4104. else if(0 > nPosition)
  4105. {
  4106. // 해당 자리(position)에서 올림 처리
  4107. valueNumber = Math.ceil(valueNumber * Math.pow(10, position*(-1)-1)) / Math.pow(10, position*(-1)-1);
  4108. return valueNumber;
  4109. }
  4110. else
  4111. {
  4112. //fAlertMessage(4, "올림자리");
  4113. return "";
  4114. }
  4115. // '반올림'이고
  4116. case "HALF_UP" :
  4117. // 소수점 앞에서 처리하려면
  4118. if(0 < nPosition)
  4119. {
  4120. // 해당 자리(position)에서 반올림 처리
  4121. valueNumber = Math.round(valueNumber / Math.pow(10, position)) * Math.pow(10, position);
  4122. return valueNumber;
  4123. }
  4124. // 소수점 뒤에서 처리하려면
  4125. else if(0 > nPosition)
  4126. {
  4127. // 해당 자리(position)에서 반올림 처리
  4128. valueNumber = Math.round(valueNumber * Math.pow(10, position*(-1)-1)) / Math.pow(10, position*(-1)-1);
  4129. return valueNumber;
  4130. }
  4131. else
  4132. {
  4133. //fAlertMessage(4, "올림자리");
  4134. return "";
  4135. }
  4136. // '버림'이고
  4137. case "DOWN" :
  4138. // 소수점 앞에서 처리하려면
  4139. if(0 < nPosition)
  4140. {
  4141. // 해당 자리(position)에서 내림 처리
  4142. valueNumber = Math.floor(valueNumber / Math.pow(10, position)) * Math.pow(10, position);
  4143. return valueNumber;
  4144. }
  4145. // 소수점 뒤에서 처리하려면
  4146. else if(0 > nPosition)
  4147. {
  4148. // 해당 자리(position)에서 내림 처리
  4149. valueNumber = Math.floor(valueNumber * Math.pow(10, position*(-1)-1)) / Math.pow(10, position*(-1)-1);
  4150. return valueNumber;
  4151. }else{
  4152. //fAlertMessage(4, "올림자리");
  4153. return "";
  4154. }
  4155. // 모두 아니면
  4156. default :
  4157. // 메시지 처리후 리턴
  4158. //fAlertMessage(1, "모드('1'/'0'/'-1')");
  4159. return "";
  4160. }
  4161. }]]></Script>