Number.prototype._NaN = function() { return isNaN(this) ? 0 : this; } Object.prototype._expand = function() { var org = arguments[0]; var isOverwrite = arguments[1]; if ( typeof(org) == 'object' ) { for ( var prop in org ) { if ( !this[prop] || (Number(isOverwrite)._NaN() > 0) ) { this[prop] = org[prop]; } } } return this; } var Com = { $Class: { bind: function() { return function() { if ( this.Init ) { if ( !(arguments.length ==2 && (arguments[1] == null)) ) this.Init.apply(this, arguments); } } }, root: function() { return (window.$CLASS) ? window.$CLASS : window.$CLASS={} } }, Cookie: { gets: function() { var searchCookie = arguments[0]; var cookieValue; var cookies = document.cookie.split(';'); for ( var i=0; i < cookies.length; i++) { if ( cookies[i].split('=')[0].replace(/\s/gi, '') == searchCookie ) { cookieValue = cookies[i].split('=')[1]; break; } } return cookieValue; }, sets: function() { var cookieName = arguments[0]; var cookieVal = arguments[1]; document.cookie = cookieName + '=' + cookieVal + '; path=/;'; } }, Date : { Today: { date: new Date(), day: function() { return this.date.getDate(); }, month: function() { return this.date.getMonth()+1; }, year: function(){ return this.date.getYear(); } } }, QueryString: { exist: function(){ var param = arguments[0]; var doc = arguments[1]||document.URL; var re = eval('/([\\?|&])' + param + '=(([^&])*)/gi') ; var rtn = false; if ( doc.search(re) != -1 ) rtn = true; return rtn; }, gets: function() { var param = arguments[0]; var doc = arguments[1]||document.URL; var rtn = ''; if ( !(!param) ) { var re = eval('/([\\?|&])' + param + '=(([^&])*)/gi') ; var matcher = doc.match(re); if ( !(!matcher) ) rtn = matcher[0].replace(re, '$2'); } else rtn = doc.substring(doc.indexOf('?')+1); return rtn; }, removes: function() { var param = arguments[0]; var docUrl = arguments[1]||document.URL; var re = eval('/([\\?|&])(' + param + '=)(([^&])*)/gi') ; var rtn = docUrl.replace(re, ''); return rtn; }, sets: function() { var param = arguments[0]; var val = arguments[1]; var docUrl = arguments[2]||document.URL; var rtn = ''; if ( !(!param) ) { rtn = '?' + param + '=' + val; var splitPos = docUrl.indexOf('?'); if ( splitPos != -1 ) { rtn = docUrl.substring(splitPos); var re = eval('/([\\?|&])(' + param + '=)(([^&])*)/gi') ; if ( docUrl.search(re) != -1 ) rtn = rtn.replace(re, '$1$2'+val); else { rtn += '&' + param + '=' + val; } } return rtn; } } }, Dom: { getParent: function() { var elm = arguments[0]; var attr = arguments[1]; var attrVal = arguments[2]; var rtnObj = null; while ( elm.parentNode ) { elm = elm.parentNode; if (elm.getAttribute(attr) && elm.getAttribute(attr) == attrVal) { rtnObj = elm; break; } } return rtnObj; } }, Event: { Input: { number: function() { if ( (event.keyCode < 48) || (event.keyCode > 57) ){ event.cancelBubble; event.returnValue = null; } } } }, Form: { check: function() { var formObj = arguments[0]; for ( var i=0; i < formObj.elements.length; i++ ) { switch ( formObj.elements[i].getAttribute('_constraint') ) { case 'value': var elmData = this.getElementData(formObj.elements[i].value); if (!elmData || !elmData.replace(/\s/gi, '') ) { var msg = formObj.elements[i].getAttribute('_msg'); if ( !(!msg) ) alert(msg); return false; } default: break; } } return true; }, getElementData: function() { var data = arguments[0]; if ( data.indexOf('^') == 0 ) { switch ( data.split('_')[0].substr(1) ) { case 'QS': data = Com.QueryString.gets(data.substr(4)); break; case 'CK': data = Com.Cookie.gets(data.substr(4)); break; default: break; } } return data||''; }, getFormData: function() { var formObj = arguments[0]; var dataSet = ''; for ( var i=0; i < formObj.elements.length; i++ ) dataSet += '&' + formObj.elements[i].name + '=' + this.getElementData(formObj.elements[i].value); if ( !(!dataSet) ) dataSet = dataSet.substring(1); return dataSet; }, request: function() { var requestUrl = arguments[0]; /* 요청 URL */ var innerObj = arguments[1]; /* 응답 받을 객체 */ var formObj = arguments[2]; /* 폼 객체 */ var resultFn = arguments[3]; var faultFn = arguments[4]; if (!(!formObj) && !this.check(formObj) ) return; if (!(!innerObj) ) { var oParam = { isXml: false, callBack: true, fnResult: resultFn, fnError: faultFn, data: this.getFormData(formObj), url: requestUrl } new window.$CLASS.HttpRequest().send(oParam); } }, submit: function() { var targetUrl = arguments[0]; var formObj = arguments[1]; if ( !this.check(formObj) ) return; formObj.action = targetUrl; formObj.submit(); } }, TabNavi: { lists: new Array(), gets: function(){ var groupId = arguments[0]; var targetProp = arguments[1]; var targetPropVar = arguments[2]; var targetStyle = arguments[3]; var eventGroupId = arguments[4]; var eventStyle = arguments[5]; var eventStyleProc = arguments[6]; var eventStyleVar = arguments[7]; var navigateObj = this.lists[groupId]||new window.$CLASS.TabNavigate(groupId); var eventObj = this.lists[eventGroupId]||new window.$CLASS.TabNavigate(eventGroupId); eventObj.procCmd(targetProp, targetPropVar, eventStyle, eventStyleProc, eventStyleVar); return navigateObj.procCmd(targetProp, targetPropVar, targetStyle); } } } var HttpRequest = (Com.$Class.root().HttpRequest = Com.$Class.bind()).prototype = { $param: { loadTime: 5000, callBack: true, fnResult: null, fnError: null, data: null, isXml: true, url: '', method: 'GET' }, //[ Constructor ] Init: function(){ }, response: function() { var $param = this.$param; if ( $param.fnResult ) { if ( !this.sender.responseXML.documentElement ) { if ( $param.fnResult.Html ) $param.fnResult.Html(this.sender.responseText); else { alert('require Function fnResult.Html'); } } else { var oDocumentElement = this.sender.responseXML.documentElement; if ( oDocumentElement ) { var oResult = oDocumentElement.attributes.getNamedItem('result'); if ( oResult == null ) { switch ( typeof($param.fnResult) ) { case 'function': $param.fnResult(this.sender.responseXML); break; case 'object': if (typeof($param.fnResult.F)=='function') { $param.fnResult.F(this.sender.responseXML); } else alert('define fnResult.F function!!'); break; default: alert('define fnResult function!!'); break; } } else { switch ( typeof($param.fnResult) ) { case 'function': $param.fnResult(this.sender.responseXML); break; case 'object': if ( oResult.nodeValue.toUpperCase() == 'T' ) { if (typeof($param.fnResult.T)=='function') { $param.fnResult.T(this.sender.responseXML); } else alert('define fnResult.T function!!'); } else { if (typeof($param.fnResult.F)=='function') { $param.fnResult.F(this.sender.responseXML); } else alert('define fnResult.F function!!'); } break; default: alert('define fnResult function!!'); break; } } } else alert(this.sender.responseText); } } // else { // alert('require fnResult Object!!'); // } }, send: function() { if ( this.validate() ) { if (typeof(arguments[0])=='object') this.$param = arguments[0]._expand(this.$param); this.$param.url += (this.$param.url.split('?').length > 1) ? '&' : '?'; this.$param.url += 'iProcess=' + new Date().toString().replace(/\s/gi, ''); //alert(this.$param.fnResult.toString()); if ( !(!this.$param.data) ) this.$param.method = 'POST'; this.sender.open(this.$param.method, this.$param.url, this.$param.callBack); //this.oRequester.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); this.sender.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); this.sender.setRequestHeader("Cache-Control",""); this.sender.setRequestHeader("Pragma",""); this.sender.setRequestHeader('Accept', 'text/javascript, text/html, application/xml, text/xml, */*'); if (this.$param.callBack) { (this.sender.onreadystatechange = function(){ if (!arguments.callee._CLASS) arguments.callee._CLASS = arguments.callee.caller._CLASS; var ownerClass = arguments.callee._CLASS; var requester = ownerClass.sender; if (requester.readyState == '4') { if (requester.status == '200') { ownerClass.response(); } } })._CLASS = this; } this.sender.send(this.$param.data); } else { alert('Object is used already!! [ new Instance Create and Use ]'); } }, sender: ((window.XMLHttpRequest) ? new window.XMLHttpRequest : new ActiveXObject("Microsoft.XMLHTTP")), validate: function() { var rtn = true; if ( !(this instanceof window.$CLASS.HttpRequest) ) { alert('Invalid Request Object!!'); rtn = false; } return rtn; } } var Rolling = (Com.$Class.root().Rolling = Com.$Class.bind()).prototype = { _list: null, _id: null, _parent: null, _childId: null, _children: null, _seperate: null, _seperator: null, _type: 'replace', _nTime: 100, _nPauseTime: 100, _nHeight: 1, _nStop: 20, _bStop: false, _timer: null, _rollCount: 1, Init: function() { /* * default require */ this._id = arguments[1]; this._childId = arguments[2]; this._type = arguments[3]||this._type; /* * option */ this._nTime = arguments[4]||this._nTime; this._nPauseTime = arguments[5]||this._nPauseTime; this._nHeight = arguments[6]||this._nHeight; this._nStop = arguments[7]||this._nHeight; this._rollCount = arguments[8]||1; this._seperate = arguments[9]; this._children = document.getElementsByName(this._childId); this._seperator = document.getElementsByName(this._seperate); this._list = arguments[0]; this._list[this._id] = this; (this.roll = function() { var fnRoll = arguments.callee; var Roll = fnRoll.CLASS; if ( !(!Roll) ) { if ( !(!Roll._timer) ) clearTimeout(Roll._timer); if ( Roll._stop ) return; if ( !(!Roll._parent) && !(!Roll._children) ) { switch (Roll._type) { case 'move': if ( !Roll._parent.style.top ) Roll._parent.style.top = 0; var iTop = parseInt(Roll._parent.style.top); Roll._parent.style.top = isNaN(iTop) ? -Roll._nHeight : iTop -Roll._nHeight; if (Math.abs(iTop - Roll._nHeight) == Roll._nStop) { for (var i = 0; i < Roll._rollCount; i++) { Roll._children[0].parentElement.appendChild(Roll._children[0]); if (!(!Roll._seperator[0])) { Roll._seperator[0].parentElement.appendChild(Roll._seperator[0]); } } Roll._parent.style.top = 0; Roll._timer = setTimeout(arguments.callee, Roll._nPauseTime); } else { Roll._timer = setTimeout(arguments.callee, Roll._nTime); } break; case 'replace': default: break; } } } }).CLASS = this; (this.start = function() { var ownClass = arguments.callee.CLASS; if ( ownClass.hasMousePoint() ) { ownClass._stop = false; ownClass.roll(); } }).CLASS = this; (this.stop = function() { var ownClass = arguments.callee.CLASS; ownClass._stop = true; if ( !(!ownClass._timer) ) clearTimeout(ownClass._timer); }).CLASS = this; this._parent = document.getElementById(this._id); this._parent.onmouseover = this.stop; this._parent.onmouseout = this.start; }, /* * test Require */ hasMousePoint: function() { var fnPoint = arguments.callee; var hasFocus = true; if (window.event) { var x = window.event.x; var y = window.event.y; var _parent = this._parent.parentElement; var posX = parseInt(_parent.style.width);// + fnPoint.CLASS._parent.offsetParent.offsetLeft; var posY = parseInt(_parent.style.height);// + fnPoint.CLASS._parent.offsetParent.offsetTop; if ( (parseInt(x) > parseInt(this._parent.offsetLeft)) && (parseInt(y) > parseInt(this._parent.offsetTop)) && (parseInt(x) < parseInt(posX)) && (parseInt(y) < parseInt(posY))) { hasFocus = false; } } return hasFocus; } } var TabNavigate = (Com.$Class.root().TabNavigate = Com.$Class.bind()).prototype = { _id: null, _lists: new Array(), Init: function() { this._id = arguments[0]; this._lists = document.getElementsByName(this._id); }, procCmd: function(){ var rtnObj = null; var prop = arguments[0]; var propVar = arguments[1]; var cmdStyle = arguments[2]; var procCode = arguments[3]; var procVar = arguments[4]; for( var i=0; i < this._lists.length; i++ ) { if ( this._lists[i].getAttribute(prop) == propVar ) rtnObj = this.procStyle(this._lists[i], cmdStyle, 1, procCode, procVar); else this.procStyle(this._lists[i], cmdStyle, 0, procCode, procVar); } return rtnObj; }, procStyle: function() { var obj = arguments[0]; var cmd = arguments[1]; var bit = arguments[2]; var procCode = arguments[3]; var procVar = arguments[4]; switch ( cmd.toUpperCase() ) { case 'BOLD': if ( bit ) obj.style.fontWeight = 'bold'; else obj.style.fontWeight = 'normal'; break; case 'DISPLAY': if ( bit ) obj.style.display = 'block'; else obj.style.display = 'none'; break; case 'SRC': switch ( procCode.toUpperCase() ) { case 'ADD': if ( bit ) { if ( obj.src.indexOf(procVar) == -1 ) obj.src = obj.src.substring(0, obj.src.length-procVar.split('.')[1].length-1) + procVar; } else { if ( obj.src.indexOf(procVar) != -1 ) obj.src = obj.src.substring(0, obj.src.length-procVar.length) + '.' + procVar.split('.')[1]; } default: break; } break; default: break; } return obj; } }