
/************************************************************************************************************************
	@Namespace : System
	@Author : emong ( emong@nexon.co.kr )
	@Description : none
************************************************************************************************************************/

var System																= window;

/************************************************************************************************************************
	@Namespace : System.Object
	@Description : none
************************************************************************************************************************/

System.Object															= function (){};

/************************************************************************************************************************
	@Namespace : System.Extend
	@Description : none
************************************************************************************************************************/

System.Extend															= function (){

	var _args	= arguments;
	var _object = null;

	if ( _args.length == 1 )
		_object = System._private_ExtendToObject( _args[ 0 ] );

	else if ( _args.length == 2 )
		_object = System._private_ExtendToElement( _args[ 0 ], _args[ 1 ] );

	return _object;
};

/************************************************************************************************************************
	@Namespace : System._private_ExtendToObject
	@Description : none
************************************************************************************************************************/

System._private_ExtendToObject											= function ( object ){

	var _object_old		= function (){};
	var _object_new		= function (){ this.Initialize.call( this, arguments ); };

	for ( _key in object.prototype )
		_object_new.prototype[ _key ] = object.prototype[ _key ];

	for ( _key in object.prototype )
	{
		//<! ÀÓ½Ã °´Ã¼¸¦ »ý¼ºÇÏ¿© ÇØ´çÇÏ´Â ¼Ó¼º¿¡ Base Å¬·¡½º ±â´ÉÀ» ³Ö¾îÁØ´Ù.
		var _object_base = function (){};

		_object_base.prototype.Base		= object.prototype[ _key ];
		_object_base.prototype.Apply	= function () { this.Base.call( arguments[ 0 ], arguments[ 1 ] ); };

		_object_old.prototype[ _key ]	= new _object_base();
	}

	_object_new.prototype.Base			= new _object_old();
	_object_new.prototype.Initialize	= function (){};//<! »ý¼ºÀÚ

	//<! ÀÌº¥Æ®¸¦ µî·ÏÇÑ´Ù.
	_object_new.prototype.onclick		= function ( evt ) {

		var _evt		= System.EventArgs( event || evt );
		var _key		= "boolean:isUsePostBackForwarding";

		if ( this.isEnablePostBack )
		{
			if ( _evt.element.uniqueID == this.uniqueID )
			{
				this.OnPrePostBack( _evt );
				this.OnPostBack( _evt );

				System.ViewState( { key:_key, value:this.isUsePostBackForwarding } );
			}
			else
			{
				if ( System.ViewState( { key:_key } ) )
				{
					this.OnPrePostBack( _evt );
					this.OnPostBack( _evt );
				}
			}
		}

		return false;
	};

	_object_new.prototype.onmouseup		= function ( evt ) {

		var _evt = System.EventArgs( event || evt );

		if ( this.isEnableMouseUpEvent )
			this.OnMouseUp( _evt );
	};

	_object_new.prototype.onmouseout	= function ( evt ) {

		var _evt = System.EventArgs( event || evt );

		if ( this.isEnableMouseOutEvent )
			this.OnMouseOut( _evt );
	};

	_object_new.prototype.onmouseover	= function ( evt ) {

		var _evt = System.EventArgs( event || evt );

		if ( this.isEnableMouseOverEvent )
			this.OnMouseOver( _evt );
	};

	_object_new.prototype.onmousemove	= function ( evt ) {

		var _evt = System.EventArgs( event || evt );

		if ( this.isEnableMouseMoveEvent )
			this.OnMouseMove( _evt );
	};

	_object_new.prototype.onmousedown	= function ( evt ) {

		var _evt = System.EventArgs( event || evt );

		if ( this.isEnableMouseDownEvent )
			this.OnMouseDown( _evt );
	};

	_object_new.prototype.onblur		= function ( evt ) { this.OnBlur( System.EventArgs( event || evt ) ); };
	_object_new.prototype.onfocus		= function ( evt ) { this.OnFocus( System.EventArgs( event || evt ) ); };
	_object_new.prototype.onkeydown		= function ( evt ) { this.OnKeyDown( System.EventArgs( event || evt ) ); };
	_object_new.prototype.onchange		= function ( evt ) { this.OnPostDataChanged( System.EventArgs( event || evt ) ); };

	return _object_new;
};

/************************************************************************************************************************
	@Namespace : System._private_ExtendToElement
	@Description : none
************************************************************************************************************************/

System._private_ExtendToElement											= function ( el, object ){

	if ( System.Util.IsNull( el ) )
		throw new System.Exception ( { message:"NULL Àº DOMElement °´Ã¼°¡ ¾Æ´Õ´Ï´Ù." } );

	for ( _key in object.prototype )
		el[ _key ] = object.prototype[ _key ];

	return el;
};

/************************************************************************************************************************
	@Namespace : System.Exception
	@Description : none
************************************************************************************************************************/

System.Exception														= function ( opt ){

	return Error( opt.message );
};

/************************************************************************************************************************
	@Namespace : System.EventArgs
	@Description : none
************************************************************************************************************************/

System.EventArgs														= function ( evt ){

	var _info	= System.Util.GetClientInfo();
	var _args	= {};

	if ( !System.Util.IsUndefined( evt ) )
	{
		_args.element	= ( _info.IsMSIE ) ? evt.srcElement		: evt.target;
		_args.clientX	= ( _info.IsMSIE ) ? evt.clientX		: evt.clientX;
		_args.clientY	= ( _info.IsMSIE ) ? evt.clientY		: evt.clientY;
		_args.offsetX	= ( _info.IsMSIE ) ? evt.offsetX		: evt.layerX;
		_args.offsetY	= ( _info.IsMSIE ) ? evt.offsetX		: evt.layerX;
		_args.screenX	= ( _info.IsMSIE ) ? evt.screenX		: evt.pageX;
		_args.screenX	= ( _info.IsMSIE ) ? evt.screenY		: evt.pageY;
		_args.keyCode	= ( _info.IsMSIE ) ? evt.keyCode		: evt.which;
	}

	return _args;
};

/************************************************************************************************************************
	@Namespace : System.AddEventListener
	@Description : none
************************************************************************************************************************/

System.AddEventListener													= function ( opt ){
	
	System.Event.List.Add( { key:opt.type, value:opt.delegator } );
};

/************************************************************************************************************************
	@Namespace : System.ViewState
	@Description : none
************************************************************************************************************************/

System.ViewState														= function ( opt ){

	//<! keyPattern : [ type ]:[ ViewStateName ]

	if ( !System.Util.IsArray( opt ) )
	{
		if ( System.Util.IsUndefined( opt.value ) )
			return System._private_LoadViewState( opt.key );
		else
			System._private_SaveViewState( opt.key, opt.value );
	}
	else
	{
		var _value = {};

		for ( var i = 0; i < opt.length; i++ )
		{
			if ( System.Util.IsUndefined( opt[ i ].value ) )
				_value[ opt[ i ].key ] = System._private_LoadViewState( opt[ i ].key );
			else
				System._private_SaveViewState( opt[ i ].key, opt[ i ].value );
		}

		return _value;
	}
};

/************************************************************************************************************************
	@Namespace : System._private_SaveViewState ( private )
	@Description : none
************************************************************************************************************************/

System._private_SaveViewState											= function ( key, value ){

	if ( System.Util.IsUndefined( System.m_viewStateData ) )
		System.m_viewStateData = {};

	System.m_viewStateData[ key ] = value;
};

/************************************************************************************************************************
	@Namespace : System._private_LoadViewState ( private )
	@Description : none
************************************************************************************************************************/

System._private_LoadViewState											= function ( key ){

	var _value = null;

	if ( System.Util.IsUndefined( System.m_viewStateData ) )
		System.m_viewStateData = {};

	if ( !System.Util.IsUndefined( System.m_viewStateData[ key ] ) )
		_value = System.m_viewStateData[ key ];

	return _value;
};

/************************************************************************************************************************
	@Namespace : System.onload
	@Description : none
************************************************************************************************************************/

System.onload															= function (){

	System.Event.PageOnLoad( arguments );
};

/************************************************************************************************************************
	@Namespace : System.onunload
	@Description : none
************************************************************************************************************************/

System.onunload															= function (){

	System.Event.PageOnUnLoad( arguments );
};

/************************************************************************************************************************
	@Namespace : System.onerror
	@Description : none
************************************************************************************************************************/

System.onerror															= function (){

	System.Event.PageOnError( arguments );
	return true;
};

/************************************************************************************************************************
	@Namespace : System.onresize
	@Description : none
************************************************************************************************************************/

System.onresize															= function (){

	System.Event.PageOnResize( arguments );
};


/************************************************************************************************************************
	@Namespace : System.Util
	@Author : emong ( emong@nexon.co.kr )
	@Description : none
************************************************************************************************************************/

System.Util																= new System.Object();

/************************************************************************************************************************
	@Namespace : System.Util.FindElement
	@Description : none
************************************************************************************************************************/

System.Util.FindElement													= function ( id ) {

	return document.getElementById( id );
};

/************************************************************************************************************************
	@Namespace : System.Util.FindChildren
	@Description : none
************************************************************************************************************************/

System.Util.FindChildren												= function ( eL, condition ) {

	var _children	= eL.childNodes;

	for ( var i = 0; i < _children.length; i++ )
	{
		var _child = _children.item( i );

		if ( System.Util.IsFunction( condition ) && condition( _child ) )
			System.Util.m_arrResultList[ System.Util.m_arrResultList.length ] = _child;

		System.Util.FindChildren( _child, condition );
	}
};

/************************************************************************************************************************
	@Namespace : System.Util.FindChildrenByClassName
	@Description : none
************************************************************************************************************************/

System.Util.FindChildrenByClassName										= function ( eL, className ) {

	var _return = null;

	System.Util.m_arrResultList = [];

	System.Util.FindChildren( eL, function ( child ) { return ( !System.Util.IsNull( child.className ) && child.className.toLowerCase() == className.toLowerCase() ); } );

	if ( System.Util.m_arrResultList.length > 0 )
		_return = ( System.Util.m_arrResultList.length > 1 ) ? System.Util.m_arrResultList : System.Util.m_arrResultList[ 0 ];

	return _return;
};

/************************************************************************************************************************
	@Namespace : System.Util.FindChildrenById
	@Description : none
************************************************************************************************************************/

System.Util.FindChildrenById											= function ( eL, Id ) {

	var _return = null;

	System.Util.m_arrResultList = [];

	System.Util.FindChildren( eL, function ( child ) { return ( !System.Util.IsNull( child.id ) && child.id.toLowerCase() == Id.toLowerCase() ); } );

	if ( System.Util.m_arrResultList.length > 0 )
		_return = ( System.Util.m_arrResultList.length > 1 ) ? System.Util.m_arrResultList : System.Util.m_arrResultList[ 0 ];

	return _return;
};

/************************************************************************************************************************
	@Namespace : System.Util.CreateControl
	@Description : none
************************************************************************************************************************/

System.Util.CreateControl												= function ( opt ) {

	var _items	= {};

	for ( var i = 0; i < opt.length; i++ )
	{
		var _ctrl		= null;
		var _id			= ( !System.Util.IsUndefined( opt[ i ].id ) ) ? opt[ i ].id : null;
		var _type		= ( !System.Util.IsUndefined( opt[ i ].type ) ) ? opt[ i ].type : null;
		var _extend		= ( !System.Util.IsUndefined( opt[ i ].extend ) ) ? opt[ i ].extend : null;

		if ( System.Util.IsNull( _id ) )
		{
			throw new System.Exception( { message:"»ý¼ºÇÒ °´Ã¼ÀÇ id °ªÀº nullÀÌ¾î¼± ¾ÈµË´Ï´Ù." } );
		}
		else if ( System.Util.IsNull( _type ) )
		{
			throw new System.Exception( { message:"»ý¼ºÇÒ °´Ã¼ÀÇ type °ªÀº nullÀÌ¾î¼± ¾ÈµË´Ï´Ù." } );
		}
		else
		{
			_ctrl		= document.createElement( _type.ToString() );
			_ctrl.id	= _ctrl.uniqueID + "_" + _id;

			if ( !System.Util.IsNull( _extend ) )
				_ctrl = System.Extend( _ctrl, _extend );

			_items[ _id ]	= _ctrl;
		}
	}

	return _items;
};

/************************************************************************************************************************
	@Namespace : System.Util.RemoveControls
	@Description : none
************************************************************************************************************************/

System.Util.RemoveControls												= function ( eL ) {

	while ( eL.firstChild )
		eL.removeChild( eL.firstChild );
};

/************************************************************************************************************************
	@Namespace : System.Util.IsNull
	@Description : none
************************************************************************************************************************/

System.Util.IsNull														= function ( object ) {

	var _bool = false;

	switch ( ( typeof object ) )
	{
		case "string"	: _bool = ( object.toLowerCase() == "null" ); break;
		default			: _bool = ( object == null ); break;
	}

	return _bool;
};

/************************************************************************************************************************
	@Namespace : System.Util.IsEmpty
	@Description : none
************************************************************************************************************************/

System.Util.IsEmpty														= function ( object ) {

	return ( object == "" ) ? true : false;
};

/************************************************************************************************************************
	@Namespace : System.Util.IsBlock
	@Description : none
************************************************************************************************************************/

System.Util.IsBlock														= function ( object ) {

	return ( object == "block" ) ? true : false;
};

/************************************************************************************************************************
	@Namespace : System.Util.IsArray
	@Description : none
************************************************************************************************************************/

System.Util.IsArray														= function ( object ) {

	return System.Util.Instancof( object ).Equals( Array );
};

/************************************************************************************************************************
	@Namespace : System.Util.IsFunction
	@Description : none
************************************************************************************************************************/

System.Util.IsFunction													= function ( object ) {

	return System.Util.Typeof( object ).Equals( "Function" );
};

/************************************************************************************************************************
	@Namespace : System.Util.IsUndefined
	@Description : none
************************************************************************************************************************/

System.Util.IsUndefined													= function ( object ) {

	return System.Util.Typeof( object ).Equals( "Undefined" );
};

/************************************************************************************************************************
	@Namespace : System.Util.IsString
	@Description : none
************************************************************************************************************************/

System.Util.IsString													= function ( object ) {

	return System.Util.Typeof( object ).Equals( "String" );
};

/************************************************************************************************************************
	@Namespace : System.Util.IsNumber
	@Description : none
************************************************************************************************************************/

System.Util.IsNumber													= function ( object ) {

	return System.Util.Typeof( object ).Equals( "Number" );
};

/************************************************************************************************************************
	@Namespace : System.Util.IsObject
	@Description : none
************************************************************************************************************************/

System.Util.IsObject													= function ( object ) {

	return System.Util.Typeof( object ).Equals( "Object" );
};

/************************************************************************************************************************
	@Namespace : System.Util.Instancof
	@Description : none
************************************************************************************************************************/

System.Util.Instancof													= function ( object ) {

	var _object_new = {};

	_object_new.Value = object;
	_object_new.Equals = function ( type ) {

		return ( this.Value instanceof type );
	};

	return _object_new;
};

/************************************************************************************************************************
	@Namespace : System.Util.Typeof
	@Description : none
************************************************************************************************************************/

System.Util.Typeof														= function ( object ) {

	var _object_new = {};

	_object_new.Value = object;
	_object_new.Equals = function ( type ) {

		var _bool = false;

		try
		{
			_bool = ( ( typeof this.Value ).toString() == type.toLowerCase() );
		}
		catch ( ex )
		{
			_bool = false;
		}

		return _bool;
	};

	return _object_new;
};

/************************************************************************************************************************
	@Namespace : System.Util.ToBoolean
	@Description : none
************************************************************************************************************************/

System.Util.ToBoolean													= function ( object ) {

	var _bool = false;

	if ( !System.Util.IsUndefined( object ) )
	{
		switch ( ( typeof object ) )
		{
			case "string"	: _bool = ( object.toLowerCase() == "true" ); break;
			case "boolean"	: _bool = object; break;
		}
	}

	return _bool;
};

/************************************************************************************************************************
	@Namespace : System.Util.ToByte
	@Description : none
************************************************************************************************************************/

System.Util.ToByte														= function ( object ) {

	return object;
};

/************************************************************************************************************************
	@Namespace : System.Util.ToInit32
	@Description : none
************************************************************************************************************************/

System.Util.ToInit32													= function ( object ) {

	return +object;
};

/************************************************************************************************************************
	@Namespace : System.Util.ToString
	@Description : none
************************************************************************************************************************/

System.Util.ToString													= function ( object ) {

	return object.toString();
};

/************************************************************************************************************************
	@Namespace : System.Util.ToObject
	@Description : none
************************************************************************************************************************/

System.Util.ToObject													= function ( object ) {

	return object;
};

/************************************************************************************************************************
	@Namespace : System.Util.ToArray
	@Description : none
************************************************************************************************************************/

System.Util.ToArray														= function ( object ) {

	var _array = [];

	for ( _key in object )
		_array[ _array.length ] = _key.toString() + "=" + object[ _key ].toString();


	return _array;
};

/************************************************************************************************************************
	@Namespace : System.Util.ToDateTime
	@Description : none
************************************************************************************************************************/

System.Util.ToDateTime													= function ( totalsec ) {

	var _date = {};

	_date.Minute = parseInt( totalsec / 60 );
	_date.Second = parseInt( totalsec ) % 60;

	return _date;
};

/************************************************************************************************************************
	@Namespace : System.Util.Trim
	@Description : none
************************************************************************************************************************/

System.Util.Trim														= function ( word ) {

	return word.replace( /(^\s*)|(\s*$)/g, "" );
};

/************************************************************************************************************************
	@Namespace : System.Util.Encoding
	@Description : none
************************************************************************************************************************/

System.Util.Encoding													= function ( url ) {

	var _value = url;

	if ( encodeURIComponent )
		_value = encodeURIComponent( url );

	else if ( escape )
		_value = escape( url );

	return _value;
};

/************************************************************************************************************************
	@Namespace : System.Util.Decoding
	@Description : none
************************************************************************************************************************/

System.Util.Decoding													= function ( url ) {

	var _value = url;

	if ( decodeURIComponent )
		_value = decodeURIComponent( url );

	else if ( unescape )
		_value = unescape( url );

	return _value;
};

/************************************************************************************************************************
	@Namespace : System.Util.GetClientInfo
	@Description : none
************************************************************************************************************************/

System.Util.GetClientInfo												= function () {

	var _info = {};

	_info.n4DocWidth		= System.Util._private_n4DocWidth();
	_info.n4DocHeight		= System.Util._private_n4DocHeight();

	_info.n4BodyHeight		= System.Util._private_n4BodyHeight();
	_info.n4BodyWidth		= System.Util._private_n4BodyWidth();

	_info.n4DocScrollTop	= System.Util._private_n4DocScrollTop();
	_info.n4DocScrollLeft	= System.Util._private_n4DocScrollLeft();

	_info.n4ScreenWidth		= System.Util._private_n4ScreenWidth();
	_info.n4ScreenHeight	= System.Util._private_n4ScreenHeight();

	_info.IsFireFox			= System.Util._private_IsFireFox();
	_info.IsMSIE			= System.Util._private_IsMSIE();

	return _info;
};

/************************************************************************************************************************
	@Namespace : System.Util._private_IsMSIE
	@Description : none
************************************************************************************************************************/

System.Util._private_IsMSIE												= function () {

	return ( navigator.userAgent.indexOf( "MSIE" ) > -1 ) ? true : false;
};

/************************************************************
	@Namespace : System.Util._private_IsFireFox
	@Description : none
************************************************************/

System.Util._private_IsFireFox											= function () {

	return ( navigator.userAgent.indexOf( "Firefox" ) > -1 ) ? true : false;
};

/************************************************************************************************************************
	@Namespace : System.Util._private_n4DocWidth
	@Description : none
************************************************************************************************************************/

System.Util._private_n4DocWidth											= function () {

	return document.documentElement.clientWidth;
};

/************************************************************************************************************************
	@Namespace : System.Util._private_n4DocHeight
	@Description : none
************************************************************************************************************************/

System.Util._private_n4DocHeight										= function () {

	return document.documentElement.clientHeight;
};

/************************************************************************************************************************
	@Namespace : System.Util._private_n4DocScrollTop
	@Description : none
************************************************************************************************************************/

System.Util._private_n4DocScrollTop										= function () {

	return document.documentElement.scrollTop;
};

/************************************************************************************************************************
	@Namespace : System.Util._private_n4DocScrollLeft
	@Description : none
************************************************************************************************************************/

System.Util._private_n4DocScrollLeft									= function () {

	return document.documentElement.scrollLeft;
};

/************************************************************************************************************************
	@Namespace : System.Util._private_n4BodyWidth
	@Description : none
************************************************************************************************************************/

System.Util._private_n4BodyWidth										= function () {

	return document.body.clientWidth;
};

/************************************************************************************************************************
	@Namespace : System.Util._private_n4BodyHeight
	@Description : none
************************************************************************************************************************/

System.Util._private_n4BodyHeight										= function () {

	return document.body.clientHeight;
};

/************************************************************************************************************************
	@Namespace : System.Util._private_n4ScreenWidth
	@Description : none
************************************************************************************************************************/

System.Util._private_n4ScreenWidth										= function () {

	return screen.availWidth;
};

/************************************************************************************************************************
	@Namespace : System.Util._private_n4ScreenHeight
	@Description : none
************************************************************************************************************************/

System.Util._private_n4ScreenHeight										= function () {

	return screen.availHeight;
};

/************************************************************************************************************************
	@Namespace : System.Classes
	@Author : emong ( emong@nexon.co.kr )
	@Description : none
************************************************************************************************************************/

System.Classes															= new System.Object();

/************************************************************************************************************************
	@Namespace : System.Classes.Object
	@Description : none
************************************************************************************************************************/

System.Classes.Object													= System.Extend( System.Object );
System.Classes.Object.prototype.m_key									= null;
System.Classes.Object.prototype.m_form									= null;
System.Classes.Object.prototype.m_value									= null;
System.Classes.Object.prototype.m_delegate								= null;
System.Classes.Object.prototype.m_controls								= null;
System.Classes.Object.prototype.m_readyState							= null;

System.Classes.Object.prototype.Get										= function (){ return this.m_value; };
System.Classes.Object.prototype.Set										= function (){ this.m_value = arguments[ 0 ]; };
System.Classes.Object.prototype.ToByte									= function (){};
System.Classes.Object.prototype.ToInit32								= function (){};
System.Classes.Object.prototype.ToString								= function (){};
System.Classes.Object.prototype.ToArray									= function (){};
System.Classes.Object.prototype.ToObject								= function (){};
System.Classes.Object.prototype.ToBoolean								= function (){};

System.Classes.Object.prototype.AddEventListener						= function ( opt ) {

	if ( System.Util.IsNull( this.m_delegate ) )
		this.m_delegate = new System.Classes.ArrayList();

	this.m_delegate.Add( { key:opt.type, value:opt.delegator } );
};

System.Classes.Object.prototype.Sleep									= function ( timeout ) {

	var _self	= this;
	var _caller = this.Sleep.caller;

	this.m_key = window.setTimeout ( function () { _caller.call( _self, null ); }, timeout );
};

/************************************************************************************************************************
	@Namespace : System.Classes.ArrayList
	@Description : none
************************************************************************************************************************/

System.Classes.ArrayList												= System.Extend( System.Classes.Object );
System.Classes.ArrayList.prototype.ToString								= function () { return "System.Classes.ArrayList" };
System.Classes.ArrayList.prototype.Initialize							= function () {

	this.m_delegate = {};
};

System.Classes.ArrayList.prototype.Add									= function ( opt ){

	var _key	= opt.key || null;
	var _value	= opt.value;

	if ( System.Util.IsNull( _key ) )
	{
		if ( !System.Util.IsArray( this.m_delegate ) )
			this.m_delegate = [];

		this.m_delegate.push( _value );
	}
	else
	{
		if ( System.Util.IsObject( _key ) )
			_key = _key.ToString();

		//alert( _key );

		if ( System.Util.IsUndefined( this.m_delegate[ _key ] ) )
			this.m_delegate[ _key ] = [];

		this.m_delegate[ _key ].push( _value );
	}
};

System.Classes.ArrayList.prototype.Select								= function () {

	var _item = [];

	if ( arguments.length == 0 )
	{
		_item = this.m_delegate;
	}
	else if ( arguments.length == 1 )
	{
		var _key = arguments[ 0 ];

		if ( System.Util.IsObject( _key ) )
			_key = _key.ToString();

		if ( !System.Util.IsUndefined( this.m_delegate[ _key ] ) )
			_item = this.m_delegate[ _key ];
	}

	return _item;
};

/************************************************************************************************************************
	@Namespace : System.Classes.HttpRequest
	@Description : none
************************************************************************************************************************/

System.Classes.HttpRequest												= System.Extend( System.Classes.Object );
System.Classes.HttpRequest.prototype.ToString							= function () { return "System.Classes.HttpRequest" };
System.Classes.HttpRequest.prototype.Initialize							= function () {

	this.m_key		= null;
	this.m_params	= {};
	this.m_request	= null;
	this.m_controls	= null;
	this.m_delegate	= null;

	this.action		= null;
	this.method		= "GET";
	this.expires	= 500;

	this.CreateObject();
};

System.Classes.HttpRequest.prototype.m_key								= null;
System.Classes.HttpRequest.prototype.m_params							= {};
System.Classes.HttpRequest.prototype.m_request							= null;

System.Classes.HttpRequest.prototype.action								= null;
System.Classes.HttpRequest.prototype.method								= "GET";
System.Classes.HttpRequest.prototype.expires							= 500;

System.Classes.HttpRequest.prototype.OnLoaded							= function (){};
System.Classes.HttpRequest.prototype.OnPreLoaded						= function (){};

System.Classes.HttpRequest.prototype.CreateObject						= function (){

	try
	{
		var _args = [ "Msxml2.XMLHTTP", "Microsoft.XMLHTTP" ];

		for ( var i = 0; i < _args.length; i++ )
		{
			this.m_request = new ActiveXObject( _args[ i ] );

			if ( this.m_request != null )
				break;
		}
	}
	catch ( ex )
	{
		this.m_request = new XMLHttpRequest();
	}

	if ( System.Util.IsNull( this.m_request ) )
		throw new System.Exception( { message:"HttpRequest °´Ã¼°¡ »ý¼ºµÇÁö ¾Ê¾Æ ¿äÃ»À» ¼öÇàÇÒ ¼ö ¾ø½À´Ï´Ù." } );
};

System.Classes.HttpRequest.prototype.EventListener						= function (){

	if ( this.expires > 0 )
	{
		this.OnPreLoaded( this.m_request.readyState );

		if ( this.m_request.readyState == 4 && this.m_request.status == 200 )
		{
			this.OnLoaded( this.m_request.responseXml );
			this.Dispose();
		}
		else
		{
			this.Sleep( 1 );
		}
	}
	else
	{
		this.Dispose();

		throw new System.Exception( { message:"½Ã°£ÀÌ ¸¸·áµÇ¾î ¿äÃ»À» ¼öÇàÇÒ ¼ö ¾ø½À´Ï´Ù." } );
	}

	this.expires--;
};

System.Classes.HttpRequest.prototype.Dispose							= function (){

	delete this.m_request;
};

System.Classes.HttpRequest.prototype.Send								= function (){

	this.m_request.open( this.method, this.action + "?" + this.GetParams(), true );
	this.m_request.setRequestHeader( "Content-Type", "application/x-www-form-unlencoded" );
	this.m_request.send( null );

	this.EventListener();
};

System.Classes.HttpRequest.prototype.AddParam							= function ( key, value ){

	this.m_params[ key ] = value;
};

System.Classes.HttpRequest.prototype.GetParams							= function (){

	return System.Util.ToArray( this.m_params ).join( "&" );
};

/************************************************************************************************************************
	@Namespace : System.Classes.Control
	@Description : none
************************************************************************************************************************/

System.Classes.Control													= System.Extend( System.Classes.Object );
System.Classes.Control.prototype.ToString								= function () { return "System.Classes.Control" };

System.Classes.Control.prototype.strText								= null;
System.Classes.Control.prototype.strPostData							= null;
System.Classes.Control.prototype.DelegatedData							= null;

System.Classes.Control.prototype.AsyncServerUrl							= null;
System.Classes.Control.prototype.AsyncServerParam						= {};

System.Classes.Control.prototype.isEnablePostBack						= false;
System.Classes.Control.prototype.isUsePostBackForwarding				= false;

System.Classes.Control.prototype.isEnableMouseUpEvent					= true;
System.Classes.Control.prototype.isEnableMouseOutEvent					= true;
System.Classes.Control.prototype.isEnableMouseOverEvent					= true;
System.Classes.Control.prototype.isEnableMouseMoveEvent					= true;
System.Classes.Control.prototype.isEnableMouseDownEvent					= true;

System.Classes.Control.prototype.OnInit									= function (){};
System.Classes.Control.prototype.OnLoad									= function (){};
System.Classes.Control.prototype.OnPreRender							= function (){};

System.Classes.Control.prototype.OnFocus								= function (){};
System.Classes.Control.prototype.OnBlur									= function (){};
System.Classes.Control.prototype.OnKeyDown								= function (){};

System.Classes.Control.prototype.OnMouseOver							= function (){};
System.Classes.Control.prototype.OnMouseOut								= function (){};
System.Classes.Control.prototype.OnMouseMove							= function (){};
System.Classes.Control.prototype.OnMouseDown							= function (){};
System.Classes.Control.prototype.OnMouseUp								= function (){};

System.Classes.Control.prototype.OnPostBack								= function (){};
System.Classes.Control.prototype.OnPrePostBack							= function (){};
System.Classes.Control.prototype.OnPostDataChanged						= function (){};
System.Classes.Control.prototype.OnDataBinded							= function (){};
System.Classes.Control.prototype.OnDataBinding							= function (){};
System.Classes.Control.prototype.OnDataLoaded							= function (){};

System.Classes.Control.prototype.SetProperties							= function (){};
System.Classes.Control.prototype.SetAttribute							= function ( opt ){

	for ( _key in opt )
		this[ _key ] = opt[ _key ];
};

System.Classes.Control.prototype.SetStyleSheet							= function ( opt ){

	for ( _key in opt )
		this.style[ _key ] = opt[ _key ];
};

System.Classes.Control.prototype.Visible								= function ( bool ) {

	this.style.display = ( bool ) ? "block" : "none";
};

System.Classes.Control.prototype.FindChildren							= function ( args ) {

	var _output = null;

	if ( System.Util.IsString( args ) )
		_output = System.Util.FindChildrenById( this, args );

	else if ( System.Util.IsObject( args ) )
		_output = System.Util.FindChildrenByType( this, args );

	return _output;
};

System.Classes.Control.prototype.RemoveControl							= function () {

	System.Util.RemoveControls( this );
};

/************************************************************************************************************************
	@Namespace : System.Classes.HtmlControl
	@Author : emong ( emong@nexon.co.kr )
	@Description : none
************************************************************************************************************************/

System.Classes.HtmlControl												= new System.Object();

/************************************************************************************************************************
	@Namespace : System.Classes.HtmlControl.Button
	@Description : none
************************************************************************************************************************/

System.Classes.HtmlControl.Button										= System.Extend( System.Classes.Control );
System.Classes.HtmlControl.Button.prototype.isEnablePostBack			= true;
System.Classes.HtmlControl.Button.prototype.ToString					= function () { return "System.Classes.HtmlControl.Button" };

/************************************************************************************************************************
	@Namespace : System.Classes.HtmlControl.Label
	@Description : none
************************************************************************************************************************/

System.Classes.HtmlControl.Label										= System.Extend( System.Classes.Control );
System.Classes.HtmlControl.Label.prototype.isEnablePostBack				= false;
System.Classes.HtmlControl.Label.prototype.ToString						= function () { return "System.Classes.HtmlControl.Label" };

/************************************************************************************************************************
	@Namespace : System.Classes.HtmlControl.Container
	@Description : none
************************************************************************************************************************/

System.Classes.HtmlControl.Container									= System.Extend( System.Classes.Control );
System.Classes.HtmlControl.Container.prototype.isEnablePostBack			= true;
System.Classes.HtmlControl.Container.prototype.ToString					= function () { return "System.Classes.HtmlControl.Container" };

System.Classes.HtmlControl.Container.prototype.FindControl				= function ( opt ) {

	var _lst	= this.m_controls.Select();
	var _ctrl	= new System.Classes.ArrayList();

	for ( var i = 0; i < _lst.length; i++ )
	{
		if ( System.Util.IsFunction( opt.option ) )
		{
			if ( opt.option( _lst[ i ] ) )
				_ctrl.Add( { value:_lst[ i ] } );
		}
	}

	return _ctrl;
};

/************************************************************************************************************************
	@Namespace : System.Classes.HtmlControl.Form
	@Description : none
************************************************************************************************************************/

System.Classes.HtmlControl.Form											= System.Extend( System.Classes.Control );
System.Classes.HtmlControl.Form.prototype.isEnablePostBack				= false;
System.Classes.HtmlControl.Form.prototype.ToString						= function () { return "System.Classes.HtmlControl.Form" };
System.Classes.HtmlControl.Form.prototype.Controls						= {};
System.Classes.HtmlControl.Form.prototype.CreateControls				= function () {};
System.Classes.HtmlControl.Form.prototype.InitializeControls			= function () {

	if ( !System.Util.IsUndefined( this.Controls ) )
	{
		for ( _key in this.Controls )
		{
			var _ctrl = this.Controls[ _key ];

			_ctrl.m_form = this;
			_ctrl.Initialize();
		}
	}
};

/************************************************************************************************************************
	@Namespace : System.Classes.HtmlControl.Layer
	@Description : none
************************************************************************************************************************/

System.Classes.HtmlControl.Layer										= System.Extend( System.Classes.Control );
System.Classes.HtmlControl.Layer.prototype.ToString						= function () { return "System.Classes.HtmlControl.Layer" };
System.Classes.HtmlControl.Layer.prototype.PixelTop						= function () { return 0; };
System.Classes.HtmlControl.Layer.prototype.PixelLeft					= function () { return 0; };
System.Classes.HtmlControl.Layer.prototype.PixelWidth					= function () { return 0; };
System.Classes.HtmlControl.Layer.prototype.PixelHeight					= function () { return 0; };
System.Classes.HtmlControl.Layer.prototype.Open							= function ( opt ) {

	this.CheckValidation();

	if ( !System.Util.IsUndefined( opt.attributes ) )
		this.SetAttribute( opt.attributes );

	if ( !System.Util.IsUndefined( opt.styleSheet ) )
		this.SetStyleSheet( opt.styleSheet );

	this.AddEventListener
	(
		{
			type:System.Properties.Event.PageOnLoad,
			delegator:{
				sender:this,
				method:this.OnLoad
			}
		}
	);

	this.AddEventListener
	(
		{
			type:System.Properties.Event.PageUnLoad,
			delegator:{
				sender:this,
				method:this.OnUnLoad
			}
		}
	);

	this.AddEventListener
	(
		{
			type:System.Properties.Event.PageOnLoaded,
			delegator:{
				sender:this,
				method:this.OnLoaded
			}
		}
	);

	this.AddEventListener
	(
		{
			type:System.Properties.Event.PageOnResize,
			delegator:{
				sender:this,
				method:this.OnResize
			}
		}
	);

	this.AddEventListener
	(
		{
			type:System.Properties.Event.PageOnScroll,
			delegator:{
				sender:this,
				method:this.OnScroll
			}
		}
	);

	this.m_controls = ( !System.Util.IsUndefined( opt.controls ) ) ? opt.controls : null;
	this.m_readyState = System.Properties.Event.PageOnLoad;

	this.EventListener();
};

System.Classes.HtmlControl.Layer.prototype.Close						= function () {

	this.m_readyState = System.Properties.Event.PageUnLoad;
};

System.Classes.HtmlControl.Layer.prototype.Depth						= function () {

	if ( arguments.length > 0 )
		this.SetStyleSheet( { zIndex:arguments[ 0 ] } );

	return this.style.zIndex;
};

System.Classes.HtmlControl.Layer.prototype.Dispose						= function () {

	window.clearTimeout( this.m_key );

	this.m_key		= null;
	this.m_delegate = null;

	this.SetStyleSheet
	(
		{
			pixelWidth:0,
			pixelHeight:0,
			pixelTop:0,
			pixelLeft:0
		}
	);
};

System.Classes.HtmlControl.Layer.prototype.CheckValidation				= function () {

	if ( System.Util.IsUndefined( this.style.display ) )
		throw new System.Exception( { message:this.id + "°´Ã¼´Â ÀÌ¹Ì È°¼ºÈ­ µÇ¾î ÀÖ½À´Ï´Ù." } );
};

System.Classes.HtmlControl.Layer.prototype.RemoveControl				= function () {

	System.Util.RemoveControls( this );
};

System.Classes.HtmlControl.Layer.prototype.EventListener				= function () {

	if ( !System.Util.IsNull( this.m_delegate ) )
	{
		if ( this.m_readyState.ToByte() > System.Properties.Event.None.ToByte() )
		{
			System.Event.Listener( this.m_delegate.Select( this.m_readyState ) );
		}
		else
		{
			System.Event.Listener( this.m_delegate.Select( System.Properties.Event.PageOnResize ) );
			System.Event.Listener( this.m_delegate.Select( System.Properties.Event.PageOnScroll ) );
		}

		this.Sleep( 1 );
	}
};

System.Classes.HtmlControl.Layer.prototype.OnLoad						= function () {

	this.SetStyleSheet
	(
		{
			pixelWidth:this.PixelWidth(),
			pixelHeight:this.PixelHeight()
		}
	);

	this.SetStyleSheet
	(
		{
			pixelTop:this.PixelTop(),
			pixelLeft:this.PixelLeft()
		}
	);

	this.m_readyState = System.Properties.Event.PageOnLoaded;
};

System.Classes.HtmlControl.Layer.prototype.OnLoaded						= function () {

	if ( !System.Util.IsNull( this.m_controls ) )
	{
		for ( var i = 0; i < this.m_controls.length; i++ )
		{
			var _form = this.m_controls[ i ].form;

			if ( System.Util.IsFunction( _form.CreateControls ) )
				_form.CreateControls.call( this, null );

			if ( System.Util.IsFunction( _form.InitializeControls ) )
				_form.InitializeControls.call( this, null );
		}
	}

	this.m_readyState = System.Properties.Event.None;

	this.Visible( true );
};

System.Classes.HtmlControl.Layer.prototype.OnUnLoad						= function () {

	this.Visible( false );

	this.RemoveControl();
	this.Dispose();
};

System.Classes.HtmlControl.Layer.prototype.OnResize						= function () {};
System.Classes.HtmlControl.Layer.prototype.OnScroll						= function () {};

System.Classes.HtmlControl.Layer.prototype.OnFadeIn						= function () {

	var _info = System.Util.GetClientInfo();

	if ( System.Util.IsBlock( this.style.display ) )
	{
		this.SetStyleSheet
		(
			{
				pixelTop:Math.round( ( _info.n4DocHeight - this.style.pixelHeight ) / 2 ) + _info.n4DocScrollTop,
				display:"block"
			}
		);
	}
};

/************************************************************************************************************************
	@Namespace : System.Properties
	@Author : emong ( emong@nexon.co.kr )
	@Description : none
************************************************************************************************************************/

System.Properties														= new System.Object();

/************************************************************************************************************************
	@Namespace : System.Properties.Event
	@Author : emong ( emong@nexon.co.kr )
	@Description : none
************************************************************************************************************************/

System.Properties.Event													= new System.Object();

/************************************************************************************************************************
	@Namespace : System.Properties.Event.None
	@Description : none
************************************************************************************************************************/

System.Properties.Event.None											= new System.Classes.Object();
System.Properties.Event.None.ToByte										= function () { return 0; };
System.Properties.Event.None.ToString									= function () { return "System.Properties.Event.None"; };

/************************************************************************************************************************
	@Namespace : System.Properties.Event.PageOnLoad
	@Description : none
************************************************************************************************************************/

System.Properties.Event.PageOnLoad										= new System.Classes.Object();
System.Properties.Event.PageOnLoad.ToByte								= function () { return 1; };
System.Properties.Event.PageOnLoad.ToString								= function () { return "System.Properties.Event.PageOnLoad"; };

/************************************************************************************************************************
	@Namespace : System.Properties.Event.PageOnLoaded
	@Description : none
************************************************************************************************************************/

System.Properties.Event.PageOnLoaded									= new System.Classes.Object();
System.Properties.Event.PageOnLoaded.ToByte								= function () { return 2; };
System.Properties.Event.PageOnLoaded.ToString							= function () { return "System.Properties.Event.PageOnLoaded"; };

/************************************************************************************************************************
	@Namespace : System.Properties.Event.PageUnLoad
	@Description : none
************************************************************************************************************************/

System.Properties.Event.PageUnLoad										= new System.Classes.Object();
System.Properties.Event.PageUnLoad.ToByte								= function () { return 3; };
System.Properties.Event.PageUnLoad.ToString								= function () { return "System.Properties.Event.PageUnLoad"; };

/************************************************************************************************************************
	@Namespace : System.Properties.Event.PageOnError
	@Description : none
************************************************************************************************************************/

System.Properties.Event.PageOnError										= new System.Classes.Object();
System.Properties.Event.PageOnError.ToByte								= function () { return 4; };
System.Properties.Event.PageOnError.ToString							= function () { return "System.Properties.Event.PageOnError"; };

/************************************************************************************************************************
	@Namespace : System.Properties.Event.PageOnResize
	@Description : none
************************************************************************************************************************/

System.Properties.Event.PageOnResize									= new System.Classes.Object();
System.Properties.Event.PageOnError.ToByte								= function () { return 5; };
System.Properties.Event.PageOnError.ToString							= function () { return "System.Properties.Event.PageOnResize"; };

/************************************************************************************************************************
	@Namespace : System.Properties.Event.PageOnScroll
	@Description : none
************************************************************************************************************************/

System.Properties.Event.PageOnScroll									= new System.Classes.Object();
System.Properties.Event.PageOnScroll.ToByte								= function () { return 6; };
System.Properties.Event.PageOnScroll.ToString							= function () { return "System.Properties.Event.PageOnScroll"; };

/************************************************************************************************************************
	@Namespace : System.Properties.Event.DataOnLoaded
	@Description : none
************************************************************************************************************************/

System.Properties.Event.DataLoaded										= new System.Classes.Object();
System.Properties.Event.DataLoaded.ToByte								= function () { return 7; };
System.Properties.Event.DataLoaded.ToString								= function () { return "System.Properties.Event.DataLoaded"; };

/************************************************************************************************************************
	@Namespace : System.Properties.Event.DataPreLoaded
	@Description : none
************************************************************************************************************************/

System.Properties.Event.DataPreLoaded									= new System.Classes.Object();
System.Properties.Event.DataPreLoaded.ToByte							= function () { return 8; };
System.Properties.Event.DataPreLoaded.ToString							= function () { return "System.Properties.Event.DataPreLoaded"; };

/************************************************************************************************************************
	@Namespace : System.Properties.HtmlControl
	@Author : emong ( emong@nexon.co.kr )
	@Description : none
************************************************************************************************************************/

System.Properties.HtmlControl											= new System.Object();

/************************************************************************************************************************
	@Namespace : System.Properties.HtmlControl.link
	@Description : none
************************************************************************************************************************/

System.Properties.HtmlControl.link										= new System.Classes.Object();
System.Properties.HtmlControl.link.ToString								= function () { return "a" };

/************************************************************************************************************************
	@Namespace : System.Properties.HtmlControl.li
	@Description : none
************************************************************************************************************************/

System.Properties.HtmlControl.li										= new System.Classes.Object();
System.Properties.HtmlControl.li.ToString								= function () { return "li" };

/************************************************************************************************************************
	@Namespace : System.Properties.HtmlControl.img
	@Description : none
************************************************************************************************************************/

System.Properties.HtmlControl.img										= new System.Classes.Object();
System.Properties.HtmlControl.img.ToString								= function () { return "img" };

/************************************************************************************************************************
	@Namespace : System.Properties.HtmlControl.div
	@Description : none
************************************************************************************************************************/

System.Properties.HtmlControl.div										= new System.Classes.Object();
System.Properties.HtmlControl.div.ToString								= function () { return "div" };

/************************************************************************************************************************
	@Namespace : System.Properties.HtmlControl.ul
	@Description : none
************************************************************************************************************************/

System.Properties.HtmlControl.ul										= new System.Classes.Object();
System.Properties.HtmlControl.ul.ToString								= function () { return "ul" };

/************************************************************************************************************************
	@Namespace : System.Properties.HtmlControl.h3
	@Description : none
************************************************************************************************************************/

System.Properties.HtmlControl.h3										= new System.Classes.Object();
System.Properties.HtmlControl.h3.ToString								= function () { return "h3" };

/************************************************************************************************************************
	@Namespace : System.Properties.HtmlControl.dl
	@Description : none
************************************************************************************************************************/

System.Properties.HtmlControl.dl										= new System.Classes.Object();
System.Properties.HtmlControl.dl.ToString								= function () { return "dl" };

/************************************************************************************************************************
	@Namespace : System.Properties.HtmlControl.dt
	@Description : none
************************************************************************************************************************/

System.Properties.HtmlControl.dt										= new System.Classes.Object();
System.Properties.HtmlControl.dt.ToString								= function () { return "dt" };

/************************************************************************************************************************
	@Namespace : System.Properties.HtmlControl.dd
	@Description : none
************************************************************************************************************************/

System.Properties.HtmlControl.dd										= new System.Classes.Object();
System.Properties.HtmlControl.dd.ToString								= function () { return "dd" };

/************************************************************************************************************************
	@Namespace : System.Properties.HtmlControl.input
	@Description : none
************************************************************************************************************************/

System.Properties.HtmlControl.input										= new System.Classes.Object();
System.Properties.HtmlControl.input.ToString							= function () { return "input" };

/************************************************************************************************************************
	@Namespace : System.Properties.HtmlControl.span
	@Description : none
************************************************************************************************************************/

System.Properties.HtmlControl.span										= new System.Classes.Object();
System.Properties.HtmlControl.span.ToString								= function () { return "span" };

/************************************************************************************************************************
	@Namespace : System.Properties.HtmlControl.p
	@Description : none
************************************************************************************************************************/

System.Properties.HtmlControl.p											= new System.Classes.Object();
System.Properties.HtmlControl.p.ToString								= function () { return "p" };

/************************************************************************************************************************
	@Namespace : System.Properties.HtmlControl.p
	@Description : none
************************************************************************************************************************/

System.Properties.HtmlControl.param										= new System.Classes.Object();
System.Properties.HtmlControl.param.ToString							= function () { return "param" };

/************************************************************************************************************************
	@Namespace : System.Properties.HtmlControl.object
	@Description : none
************************************************************************************************************************/

System.Properties.HtmlControl.object									= new System.Classes.Object();
System.Properties.HtmlControl.object.ToString							= function () { return "object" };

/************************************************************************************************************************
	@Namespace : System.Properties.HtmlControl.bold
	@Description : none
************************************************************************************************************************/

System.Properties.HtmlControl.bold										= new System.Classes.Object();
System.Properties.HtmlControl.bold.ToString								= function () { return "strong" };

/************************************************************************************************************************
	@Namespace : System.Event
	@Author : emong ( emong@nexon.co.kr )
	@Description : none
************************************************************************************************************************/

System.Event															= new System.Object();

/************************************************************************************************************************
	@Namespace : System.Event.List
	@Description : none
************************************************************************************************************************/

System.Event.List														= new System.Classes.ArrayList();

/************************************************************************************************************************
	@Namespace : System.Event.RunTime
	@Description : none
************************************************************************************************************************/

System.Event.Listener													= function ( lst ) {

	for ( var i = 0; i < lst.length; i++ )
	{
		var _item		= lst[ i ];
		var _sender		= ( !System.Util.IsUndefined( lst[ i ].sender ) ) ? lst[ i ].sender : null;
		var _method		= ( !System.Util.IsUndefined( lst[ i ].method ) ) ? lst[ i ].method : null;
		var _arguments	= ( !System.Util.IsUndefined( lst[ i ].arguments ) ) ? lst[ i ].arguments : null;

		if ( System.Util.IsFunction( _method ) )
		{
			if ( System.Util.IsNull( _sender ) )
			{
				_method( _arguments );
			}
			else
			{
				_method.call( _sender, _arguments );
			}
		}
	}
};

/************************************************************************************************************************
	@Namespace : System.Event.PageOnLoad
	@Description : none
************************************************************************************************************************/

System.Event.PageOnLoad													= function ( args ) {

	System.Event.Listener( System.Event.List.Select( System.Properties.Event.PageOnLoad ) );
};

/************************************************************************************************************************
	@Namespace : System.Event.PageOnUnLoad
	@Description : none
************************************************************************************************************************/

System.Event.PageOnUnLoad												= function ( args ) {

	System.Event.Listener( System.Event.List.Select( System.Properties.Event.PageUnLoad ) );
};

/************************************************************************************************************************
	@Namespace : System.Event.PageOnResize
	@Description : none
************************************************************************************************************************/

System.Event.PageOnResize												= function ( args ) {

	System.Event.Listener( System.Event.List.Select( System.Properties.Event.PageOnResize ) );
};

/************************************************************************************************************************
	@Namespace : System.Event.PageOnError
	@Description : none
************************************************************************************************************************/

System.Event.PageOnError = function ( args ) {

	alert( args[ 0 ] );
};

/************************************************************************************************************************
	@Namespace : System.Data
	@Author : emong ( emong@nexon.co.kr )
	@Description : none
************************************************************************************************************************/

System.Data																= new System.Object();

/************************************************************************************************************************
	@Namespace : System.Data.DataSet
	@Description : none
************************************************************************************************************************/

System.Data.DataSet														= function () {

	this.Tables		= [];

	this.Table		= {};
	this.Table.Data = this.Tables;
	this.Table.Add	= function ( dt ) {

		this.Data[ dt.Name ] = { Row : dt.Data.Row, Rows : dt.Data.Rows };
	};
};

/************************************************************************************************************************
	@Namespace : System.Data.DataTable
	@Description : none
************************************************************************************************************************/

System.Data.DataTable													= function ( name ) {

	this.Name		= name;

	this.Data		= {};
	this.Data.Row	= [];
	this.Data.Rows	= [];

	this.Row		= {};
	this.Row.Data	= this.Data;
	this.Row.Add	= function () {

		var _args	= arguments;
		var _key	= this.Data.Rows.length;

		if ( _args.length == 1 )
		{
			this.Data.Rows[ _key ] = [];

			for ( _field in _args[ 0 ] )
			{
				this.Data.Rows[ _key ][ _field ] = _args[ 0 ][ _field ];
			}
		}

		else if ( _args.length == 2 )
		{
			this.Data.Row[ _args[ 0 ] ] = _args[ 1 ];
		}
	};
};

/************************************************************************************************************************
	@Namespace : System.Data.XmlReader
	@Description : none
************************************************************************************************************************/

System.Data.XmlReader													= function ( xml ) {

	var _ds		= new System.Data.DataSet();
	var _dt		= null;

	var _el		= xml.childNodes;
	var _el1	= null;
	var _el2	= null;
	var _el3	= null;

	var _rows	= [];

	try
	{
		for ( var i = 1; i < _el.length; i++ )
		{
			_el1 = _el[ i ].childNodes;

			for ( var j = 0; j < _el1.length; j++ )
			{
				_el2 = _el1[ j ].childNodes;

				_dt = new System.Data.DataTable( _el1[ j ].nodeName );

				for ( var k = 0; k < _el2.length; k++ )
				{
					_el3 = _el2[ k ].childNodes;

					try
					{
						if ( _el3.length > 1 )
						{
							for ( var l = 0; l < _el3.length; l++ )
								_rows[ _el3[ l ].nodeName ] = _el3[ l ].firstChild.nodeValue;

							_dt.Row.Add( _rows );
						}
						else
						{
							_dt.Row.Add( _el2[ k ].nodeName, _el2[ k ].firstChild.nodeValue );
						}
					}
					catch ( ex )
					{
						_dt.Row.Add( _el2[ k ].nodeName, null );
					}

					_rows = [];
				}

				_ds.Table.Add( _dt );
			}
		};
	}
	catch ( ex )
	{
		throw new System.Exception ( { message:"XML µ¥ÀÌÅÍ ÀÐ´Â Áß ¿¡·¯°¡ ¹ß»ýÇß½À´Ï´Ù." } );
	}

	return _ds;
};