var ajax = {};
ajax.xhr = {};

ajax.xhr.Request = function(method, url, callback, params) {
	this.url = url;
	this.params = params;
	this.callback = callback;
	this.method = method;
	this.send();
}
ajax.xhr.Request.prototype = {
	getXMLHttpRequest: function() {
		if (window.ActiveXObject) {
			try {
				return new ActiveXObject("Msxml2.XMLHTTP");
			} catch(e) {
				try {
					return new ActiveXObject("Microsoft.XMLHTTP");
				} catch(e1) { return null; }
			}
		} else if (window.XMLHttpRequest) {
			return new XMLHttpRequest();
		} else {
			return null;
		}		
	},
	send: function() {
		this.req = this.getXMLHttpRequest();
		
		var httpMethod = this.method ? this.method : 'GET';
		if (httpMethod != 'GET' && httpMethod != 'POST') {
			httpMethod = 'GET';
		}
		var httpParams = (this.params == null || this.params == '') ? 
		                 null : this.params;
		var httpUrl = this.url;
		if (httpMethod == 'GET' && httpParams != null) {
			httpUrl = httpUrl + "?" + httpParams;
		}
		this.req.open(httpMethod, httpUrl, true);
		this.req.setRequestHeader(
			'Content-Type', 'application/x-www-form-urlencoded');
		var request = this;
		this.req.onreadystatechange = function() {
			request.onStateChange.call(request);
		}
		this.req.send(httpMethod == 'POST' ? httpParams : null);
	},
	onStateChange: function() {
		if (this.req.readyState == 4) {
			if (this.req.status == 200) {
				this.callback.success(this.req);
			} else {
				this.callback.failure(this.req);
			}
		}
	}
}

var lms = {};
lms.util = {};
lms.util.Dom = function () {}

lms.util.Dom.prototype = {
   get: function (el) {
		var _el = (typeof(document.getElementById(el)) == "object") ? document.getElementById(el) : document.all[el];	
		return _el;
	}
}
var dom = new lms.util.Dom();
//------------------------------------------------------------------- 
// ¹®ÀÚ Ã³¸®±â 
// °ø¹éÁ¦°Å ¿¹) "a aa a a".trim()/ "    aaaaa".rtrim()/ "aaaaa    ".ltrim()
// ¹®ÀÚ¿­ Áß Æ¯Á¤ ¹®ÀÚÆÐÅÏÁ¦°Å ¿¹) "a aa a a".trim()/ "    aaaaa".rtrim()/ "aaaaa    ".ltrim()
// Æ¯Â¡ ) ³»Àå String °´Ã¼ÀÇ prototype ¿¡ È®Àå function À» ÅëÇØ »ç¿ë.
//------------------------------------------------------------------

String.prototype.trim = function() {
    return this.replace(/\s/g,""); 
}
String.prototype.ltrim = function() {
    return this.replace(/(^ *)/g, "");
}
String.prototype.rtrim = function() {
    return this.replace(/( *$)/g, "");
}
String.prototype.rmchar = function (str) {
	var patter = "/^\$|,|" + str +"/g";
  return this.replace(eval(patter), "");
}
//------------------------------------------------------------------- 
// Á¤±Ô½Ä ÆÐÅÏ Ã³¸®±â 
// ¿¹) chkPatten(field, 'H,A', 'y') 
// @param1: field - document object or text (String) »ó°ü¾øÀ½.
// @param1: patternGubun - Àû¿ëÇÒ ÆÐÅÏ ¼±ÅÃ/ ±¸ºÐÀÚ "," ex)H,A,N ÇÑ±Û,¾ËÆÄºª,¼ýÀÚ¸¸ »ç¿ë°¡´É 
// @param1: trimYn - °ø¹éÀ» Á¦°Å ÇÒ Áö ¾ÈÇÒÁö ¼±ÅÃ (°¡±ÞÀû ¹®ÀÚÃ³¸® Àü¿¡ Àû¿ëÇÏ¿© º¯°æ
// ±¸ºÐÀÚ )
// ÄÚµå )¼ýÀÚ=N,¾ËÆÄºª=A,ÇÑ±Û=H,°ø¹é=T 
// ¿Ï¼ºµÈ ÇÑ±ÛÀÌ ¾Æ´Ñ°ÍÀº Ã¼Å©°¡ ¾ÈµÊ ex) ¤±¤²¤»¤© 
// HTML CODE : <input type="text" value="" onKeyUp="chkPatten(this,'N','N')" oldvalue="">
//------------------------------------------------------------------- 
chkPatten = function (field,patternGubun,trimYn) { 
  
  var pattern = getMakePattern(field, patternGubun.toUpperCase()); 

  var regNum =/^[0-9]+$/; 
  var regAlpha =/^[a-zA-Z]+$/; 
  var regHangul =/[°¡-ÆR]/; 
  var regHangulEng =/[°¡-ÆRa-zA-Z]/; 
  var regHangulOnly =/^[°¡-ÆR]*$/; 
  var regHost =/^[a-zA-Z-]+$/; 
  var regPhone =/^[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}$/; 
  var regMail =/^[_a-zA-Z0-9-]+@[._a-zA-Z0-9-]+\.[a-zA-Z]+$/; 
  var regId = /^[a-zA-Z]{1}[a-zA-Z0-9_-]{4,15}$/; 
  var regDate =/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/; 
  var regDomain =/^[.a-zA-Z0-9-]+.[a-zA-Z]+$/; 

  var fieldValue = (typeof(field) == 'object') ? field.value : field; 
  /* °ªÀÌ ¾øÀ»¶§ ¸®ÅÏ */ 
  if(!fieldValue) return true; 
  /* ¹®ÀÚ¿­ÀÇ ÀüÃ¼ °ø¹é¹®ÀÚ Áö¿öÁÖ°í, °ªÀ» ´Ù½Ã ¸®ÅÏ */ 
  var trimcase = trimYn.toUpperCase();
  if(trimcase == "A") { 
    fieldValue = fieldValue.trim(); 
  } else if(trimcase == "L") {
    fieldValue = fieldValue.ltrim();
  } else if(trimcase == "R") {
    fieldValue = fieldValue.rtrim();
  }
  field.value = fieldValue;

  pattern = eval(pattern); //°³Ã¼·Î º¯È¯ÇÏ¸ç °³Ã¼ÀÇ °ªÀ» º¯È¯ 
  var re = new RegExp(pattern); 
  if (typeof(field) == 'object') { 
    var eventObject = event.srcElement;
    var eventType = event.type;
    if(!re.test(fieldValue)){ 
      alert("Ç×¸ñÀÇ Çü½ÄÀÌ ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù.\n"); 
      if (eventType == "keyup") {
        eventObject.value = eventObject.oldvalue;
        eventObject.focus();     
      }
      return false; 
    } else {
      field.oldvalue = (field.value.length == 1) ? "":field.value;
    }
  }
  return true; 
} 

//------------------------------------------------------------------- 
// ÆÐÅÏ¾ç½Ä¸¸µé±â 
// ¿¹) getMakePattern(field, 'H,A') 
// ±¸ºÐÀÚ ) , ex) H,A,N ÇÑ±Û,¾ËÆÄºª,¼ýÀÚ¸¸ »ç¿ë°¡´É 
// ÄÚµå )¼ýÀÚ=N,¾ËÆÄºª=A,ÇÑ±Û=H,°ø¹é=T 
//------------------------------------------------------------------- 
getMakePattern = function (field, patternGubun) { 
  /* ¼ýÀÚ=N,¾ËÆÄºª=A,ÇÑ±Û=H,°ø¹é=T */ 
  var patternNum = "0-9"; 
  var patternAlpha ="a-zA-Z"; 
  var patternHangul ="°¡-ÆR"; 
  var patterngTrim = " "; 

  var patternForm = patternGubun.split(","); 
  var pattern = "/^["; 
  var pattrenVal = ""; 
  var pattrenLength = ""; 
  for(var i=0; i<patternForm.length; i++){ 
    pattrenVal = patternForm[i]; 
    pattrenLength = pattrenVal.length; 
    if(pattrenLength == 1){ 
    if(pattrenVal == "N") pattern+=patternNum; 
    else if(pattrenVal == "A") pattern+=patternAlpha; 
    else if(pattrenVal == "H") pattern+=patternHangul; 
    else if(pattrenVal == "T") pattern+=patterngTrim; 
    }else{ 
      return patternGubun; 
    } 
  } 
  pattern += "]+$/"; 
  return pattern; 
} 

nextTab = function(field,patternGubun,trimYn, len, nextObj) {
	chkPatten(field,patternGubun,trimYn);
	if(field.value.length == len)
		document.getElementById(nextObj).focus();
	return;
}

isNull = function (input) {
    if (input == null || input == "null" || input.replace(/ /gi,"") == "") {
        return true;
    }
    return false;
}

isEmpty = function (input) {
    if (input.value == null || input.value.replace(/ /gi,"") == "") {
        return true;
    }
    return false;
}

/******************* Á¤±Ô½Ä Ã³¸®±â ³¡  (2008.01.17) *******************/