//////////////////////////////////////////////////////////////////////////
// Á¦¸ñ				: Rich Framework For Javascript	jquery plugin		//
// Á¦ÀÛÀÚ			: (ÁÖ)¸®Ä¡¿þ¾î ½Ã½ºÅÛÁî ±èÅÂ¿µ(www.richware.co.kr)	//
// ¹®ÀÇ				: ¹®ÀÇÀüÈ­ 02-6409-6842								//
// ÀÌ¸ÞÀÏ			: nukiboy@naver.com									//
// ÃÖÁ¾ ¼öÁ¤ÀÏ		: 2009.12.08(È­)									//
// ¶óÀÌ¼¾½º			: »ó¿ë :: Á¦ÀÛÀÚÀÇ µ¿ÀÇ¾øÀÌ »ç¿ë Àý´ë ºÒ°¡			//
// ¹öÀü				: ver 1.1											//
// ÇÁ·Î±×·¥µî·Ï¹øÈ£	: 1003-3445345										//
// ** ºÒ¹ýÀûÀÎ »ç¿ë½Ã ¹ýÀûÀÎ Á¶Ä¡¸¦ ÃëÇÒ ¼ö ÀÖ½À´Ï´Ù. **				//
// ¾÷µ¥ÀÌÆ® ³»¿ë	:													//
//	- firefox ¿¡¼­ µ¿ÀÛ													//
//	- ÇÚµé·¯¿¡ ÀÎÀÚ »ç¿ë °¡´É											//
//	- ÀÌº¥Æ® ÇÚµé·¯ ÈÄÀ§ÀÚ ¼³Á¤ ±â´É									//
//	- ÀÌº¥Æ® ÀüÃ³¸® °¡´É												//
//	- ÀÌº¥Æ® this »ç¿ë ÅëÀÏ(V1.0)										//
//  - ÀÌº¥Æ® °É±â¸¦ ¼±ÅÃÀûÀ¸·Î ÇÒ ¼ö ÀÖ°Ô ÇÏ´Â function Á¦°ø(V1.0)		//
//  - Å¬·¡½º ½ºÅ¸ÀÏ º¯°æ												//
//  - Element ¹è¿­ ¶Ç´Â °´Ã¼¿¡ interator Áö¿ø							//
//////////////////////////////////////////////////////////////////////////

/* ¸®Ä¡ÇÁ·¹ÀÓ¿öÅ© Á¤ÀûÀÎ °ª Á¤ÀÇ */ 
var RichFrameworkStatic = {

	Version	: '1.1',

	SPECIFY		: 1,			// init È£Ãâ ½Ã¿¡ ½ÇÇà
	END			: 2,			// ÃÊ±âÈ­ ÇÔ¼ö ½ÇÇà ½Ã±â ³¡

	// ¿¡·¯ ÄÚµå
	DEPRECATED	: 0,
	WARNNING	: 1,
	ERROR		: 2,
	
	empty : function() { },
	
	evHandlerPostfix : "Handler",
	target		: "self" ,

	init		:

		function()
		{
			// IE ¿Í FIREFOX ÀÌº¥Æ® °´Ã¼ µ¿±âÈ­
			if( jQuery.browser.Gecko )
			{
				var events = [ "load" , "submit","change","mousedown", "mouseover", "mouseout", "mousemove","mousedrag", "click", "dblclick","keypress"] ;     
			
				for (var i = 0; i < events.length; i++)
				{    
					window.addEventListener(events[i], 
							function(e)
							{     
								window.event = e;    
								window.event.srcElement = e.target ;
		
							}, true) ;   
			
				}  
			}
		}

} ;

// ±âº» RichFrameworkStatic ÃÊ±âÈ­
RichFrameworkStatic.init() ;

var RichFrameworkJS = Class.create({

	initialize : 

		// nPointOfInit  : ÆäÀÌÁö ÃÊ±âÈ­ ÇÔ¼ö Æ÷ÀÎÅÍ
		function(submitOfType)
		{
			this.eDoc				= new Array() 				;	// html µµÅ¥¸ÕÆ® ÀüÃ¼ °´Ã¼ ÄÃ·º¼Ç
			this.eForms				= null						;	// html µµÅ¥¸ÕÆ®ÀÇ Æû°´Ã¼ ÄÃ·º¼Ç
			this.domain				= document.domain			;	// ÇöÀç µµÅ¥¸ÕÆ®ÀÇ µµ¸ÞÀÎ
			this.aCacheForm			= new Array()				;	// Ä³½Ã¸¦ À§ÇÑ Æû °´Ã¼ ¹è¿­
			this.nPointOfInt		= RichFrameworkStatic.END	;	// ÃÊ±âÈ­ ÇÔ¼ö ½ÇÇà ½Ã±â : [END] , [BEGIN]
			this.submitOfType		= submitOfType				;	// Æû submit Å¸ÀÔ [NORMAL] , [AJAX]
			this.target				= RichFrameworkStatic.target ;			;
			this.evHandlerPostfix	= RichFrameworkStatic.evHandlerPostfix 	;	// ÀÌº¥Æ®¸í ÈÄÀ§Ç¥±âÀÚ

			// V0.6 
			this.url	= null									;	// ÇöÀç À¯¾Ë¿¤
			this.sc		= null									;	// ÇöÀç ½ºÅ©¸³Æ® ¸í
			this.qs		= null 									;	// Äõ¸® ½ºÆ®¸µ
			this.cookie	= document.cookie						;	// ÇöÀç ÄíÅ°
			// V0.7
			this.aInitFN	= new Array()						;	// V0.7 ÆäÀÌÁö¿¡¼­ ½ÇÇàµÉ callback ÇÔ¼ö ¸®½ºÆ® 
			this.autoCreateRurl	= true							;	// ÀÚµ¿À¸·Î Æû Submit µÉ¶§ ÇöÀç ÆäÀÌÁöÀÇ encoded return url »ý¼ºÇÒ°ÇÁö
		
			// ÆäÀÌÁö ÃÊ±â ÈÄ ÀÌº¥Æ® ¼¼ÆÃ
			RHEventUtil.attachEventSingle(this,window,"onload",this.init.bind(this)) ;
		},

	init :

		function()
		{
			this.eDoc		= document.all			;	// html µµÅ¥¸ÕÆ® ÀüÃ¼ °´Ã¼ ÄÃ·º¼Ç
			this.eForms		= document.forms		;	// html µµÅ¥¸ÕÆ®ÀÇ Æû°´Ã¼ ÄÃ·º¼Ç
			this.eFrames	= document.frames		;
			
			this.submitNativeHandlerDisable() ;		// submit Native Handler ºÒ´ÉÈ­

			this.initURL()		;		// URL Properties ÃÊ±âÈ­


			this.invokeFn()		;		// »ç¿ëÀÚ Á¤ÀÇ ÃÊ±âÈ­ ÇÔ¼ö È£Ãâ

		},

	//0.7 URL °ü·Ã µÈ Property ÃÊ±âÈ­ :: url , sc , qs , rurl ÃÊ±âÈ­
	initURL  :

		function()
		{
			// ÇöÀç URL Á¤º¸ ÆÄ½Ì
			this.url	= document.URL ;
			var arr = this.url.split("?") ;

			this.sc		= arr[0] ;
			this.qs		= ( arr.length > 1 ) ? arr[1] : "" ;

			// ¸®ÅÏ À¯¾Ë¿¤ ¸¸µé±â
			this.rurl	= this.url ;

		},

	//V0.7 Ãß°¡ÇÑ init ÇÔ¼ö È£Ãâ
	invokeFn :

		function()
		{
			// Ãß°¡ÇÑ ÇÔ¼ö È£Ãâ
			for(var i = 0 ; i < this.aInitFN.length ; i++ )
			{
				this.aInitFN[i].call(this) ;
			}
		},

	//V1.1 ÇÚµé·¯ POSTFIX ¸¦ ¼³Á¤ÇÑ´Ù.
	setPostfix :

		function(str)
		{
			this.evHandlerPostfix = str ;
		},
	

	//V0.7 init ÇÔ¼ö Ãß°¡ :: init() ÇÔ¼ö°¡ È£ÃâµÇ±â Àü¿¡ »ç¿ëÇØ¾ß ÇÔ
	addInit :

		function(pFn)
		{
			this.aInitFN.push(pFn) ;
		},

	//V0.7 init ÇÔ¼ö »èÁ¦ :: init() ÇÔ¼ö°¡ È£ÃâµÇ±â Àü¿¡ »ç¿ëÇØ¾ß ÇÔ
	popInit :

		function(pFn)
		{
			return this.aInitFN.pop() ;
		},

	//V0.5 private Æû submit disbale ½ÃÅ°±â 
	submitNativeHandlerDisable :

	function()
	{
		for(var i = 0 ; i < this.eForms.length ; i++ )
			this.eForms[i].onsubmit = function(){ return false; } ;
	},

	/* overridable methods */

	// V0.8 ÀÌº¥Æ® ÀüÃ³¸® ÇÚµé·¯
	prepareGlobalHandler	: RichFrameworkStatic.empty,
	prepareLoadHandler		: RichFrameworkStatic.empty,
	prepareClickHandler		: RichFrameworkStatic.empty,
	prepareChangeHandler	: RichFrameworkStatic.empty,
	prepareSubmitHandler	: RichFrameworkStatic.empty,
	prepareMousedownHandler : RichFrameworkStatic.empty,
	prepareMouseoverHandler : RichFrameworkStatic.empty,
	prepareMouseoutHandler	: RichFrameworkStatic.empty,
	prepareMousemoveHandler : RichFrameworkStatic.empty,
	prepareMousedragHandler : RichFrameworkStatic.empty,
	prepareKeypressHandler	: RichFrameworkStatic.empty,

	// ############################################# Reference & value °¡Á®¿À±â ################################################ //


	//V1.0 Native Element Object ¿¡ RichElement ¸¦ Ãß°¡ÇÑ´Ù.
	// safe mode 
	wrapElement :
	
		function(ele)
		{
			if( ele != undefined )
				Object.extend(ele,RichElement) ;

			return ele ;
		},

	// safe mode 
	wrapElements : /** [Array<RichElement>] **/
	
		function(ele)
		{
			for(var i = 0 ; i < ele.length ; i++ )
			{
				if( ele[i] != undefined )
					Object.extend(ele[i],RichElement) ;
			}

			return ele ;
		},


	// ¹«Á¶°Ç ¹è¿­·Î ¸®ÅÏ V0.5
	// tag ¿¡¼­ ¹«Á¶°Ç name °ªÀ¸·Î ¼¼ÆÃÇÏ¿©¾ß ÇÑ´Ù.

	 get : /** [Array<RichElement>] **/

		function(name)
		{
			var obj = null ;

			// tag ¿¡ ÇÊÈ÷ name ¼Ó¼ºÀ¸·Î ¼¼ÆÃÇÑ´Ù.
			obj = window.document.getElementsByName(name) ;

			this.wrapElements(obj) ;

			return obj ;
		},

	// Ã¹¹øÂ° ¿ä¼Ò ¸®ÅÏ V0.5
	// ¹è¿­À» ´ÜÀÏ º¯¼ö·Î ¸®ÅÏ

	geta : 	/** [ RichElement ] **/

		function(name)
		{
			return this.get(name)[0] ;
		},


	// TEXT/HTML ¿ä¼Ò ¹è¿­·Î ¸®ÅÏ V0.7
	getT :	/** Array<String> **/

		function(name)
		{
			var obj = null ;
			var aData = new Array() ;

			obj = this.get(name) ;

			for(var i = 0 ; i < obj.length ; i++ )
				aData.push(obj[i].innerHTML) ;

			return aData ;
		},


	// Ã¹¹øÂ° TEXT/HTML ¿ä¼Ò ¸®ÅÏ V0.7
	getaT :	/** String **/

		function(name)
		{
			return this.getT(name)[0] ;
		},

	// ÀÌ¸§À¸·Î Æû  ¸®ÅÏ
	getForm : 	/** [ RHForm ] **/

		function(sName)
		{
			if( this.aCacheForm[sName] == undefined )	{
				if( this.eForms[sName] == undefined )	{
					this.alert('ÇöÀç µµ±Ô¸ÕÆ®¿¡  "' + sName + '" ÆûÀ» Á¤ÀÇ ÇÏ¼Å¾ß ÇÕ´Ï´Ù. <form name="' + sName + '">....</form> ÀÇ¿µ¾Æ! Á¤½ÅÂ÷·Á~ È¤½Ã ¼¼ÁøÀÌ?') ;
				}
				else	{
					var wf = new RHForm(this,document.forms[sName]) ;
					this.aCacheForm[sName] = wf ;

				}
			}
			
			return this.aCacheForm[sName] ;
		},
	
	getFrame :	/** DOM **/

		function(sName)
		{
			return this.eFrames[sName] ;
		},


	// ÀÎÄÚµù µÈ À¯¾Ë¿¤ °¡Á®¿À±â  V0.7
	getEurl : /** String **/

		function(url)
		{
			return WPUtil.bin2hex(url) ;
		},

	// ÄíÅ°°¡Á®¿À±â V0.6
	getCookie :	/** String **/

		function(name)
		{
			return WPUtil.getCookie(name) ;
		},

// ############################################### Setter Methods ######################################################### //

// ÄíÅ° ¼¼ÆÃÇÏ±â V0.6
	setCookie :
		
		function(name, value) {

			WPUtil.setCookie(name,value) ;
		},


	// V0.7 ÅØ½ºÆ® ¼¼ÆÃ ( value : string , array ) 
	setT :

		function(name,value)
		{
			var array = WPUtil.toArray(value) ;

			var aDO = this.get(name) ;

			for(var i = 0 ; i < aDO.length ; i++ ) 
			{
				if( array[i] != undefined )
					aDO[i].innerHTML = array[i] ;
			}
		},


	// »óÅÂ Ã³¸®
	status : 

		function(msg)
		{
			window.status = msg ;
		},

	// Alert Ã³¸®
	alert : 

		function(msg)
		{
			alert(msg) ;

		},


// ################## ÀÌº¥Æ® °ü·Ã ¸Þ¼Òµå ############################################ ////

	// Object ·Î ÀÌº¥Æ® ºÙÀÌ±â
	attachEvent : 

		function(oTarget,typeOfEvent,handlerOfEvent,fnOfCondition)
		{

			RHEventUtil.attachEvent(this,oTarget,typeOfEvent,handlerOfEvent,fnOfCondition) ;
		},



	// Object name À¸·Î ÀÌº¥Æ® ºÙÀÌ±â
	// V1.0 Á¶°Ç ÇÔ¼ö¿¡ µû¸¥ ÀÌº¥Æ® ¿©ºÎ Ã³¸®
	attachEventByName : 

		function(objName,typeOfEvent,handlerOfEvent,fnOfCondition)
		{

			oTarget = this.get(objName) ;

			try
			{
				handlerOfEvent = ( handlerOfEvent == undefined ) ? eval(objName + this.evHandlerPostfix) : handlerOfEvent ;				
			}
			catch (e)
			{
				this.alert(e) ;
			}
			


			RHEventUtil.attachEvent(this,oTarget,typeOfEvent,handlerOfEvent,fnOfCondition) ;
		},

	// ÀÌº¥Æ® ÀÌ¸§À» ¹è¿­·Î ¹Þ¾Æ¼­ Ã³¸® ver 0.32
	attachEventByArray :

		function(array,typeOfEvent,handlerOfEvent,fnOfCondition)
		{
			try
			{
				for(var i = 0 ; i < array.length ; i++ )
				{
					objName = array[i] ;
					oTarget = this.get(objName) ;

					handlerOfEvent = ( handlerOfEvent == undefined ) ? eval(objName + this.evHandlerPostfix) : handlerOfEvent ;	
					RHEventUtil.attachEvent(this,oTarget,typeOfEvent,handlerOfEvent,fnOfCondition) ;

				}				
			
			}
			catch (e)
			{
				this.alert(e) ;
			}

		},

	// Å¬¸¯ ÀÌº¥Æ® ºÙÀÌ±â V0.6
	anc : 

		function(objName,handlerOfEvent,fnOfCondition)
		{

			if( typeof(objName) == "string")
				this.an(objName,"onclick",handlerOfEvent,fnOfCondition) ;
			else	{
				this.attachEventByArray(objName,"onclick",handlerOfEvent,fnOfCondition) ;
			}

		},

	// change ÀÌº¥Æ® ºÙÀÌ±â V0.6
	anch : 

		function(objName,handlerOfEvent,fnCondition)
		{
			if( typeof(objName) == "string")
				this.an(objName,"onchange",handlerOfEvent,fnOfCondition) ;
			else
				this.attachEventByArray(objName,"onchange",handlerOfEvent,fnOfCondition) ;
		},

//##################################### ³»Àå Attach ½Ã¸®Áî(ÀÌº¥Æ® + ÇÚµé·¯ ±â´ÉÀ» ÇÔ) #########################################

	// ¸µÅ© ¾×¼ÇÀ» Ã³¸®ÇÑ´Ù.
	attachLink : 

		function(objName,typeOfEvent,url,msg,type,target)
		{
			this.an(objName,typeOfEvent,this.linkHandler.bind(url,msg,type,target)) ;
				
		},

	// Alert ¾×¼ÇÀ» Ã³¸®ÇÑ´Ù.
	attachAlert : 

		function(objName,typeOfEvent,msg)
		{
			this.an(objName,typeOfEvent,this.alertHandler.bind(msg)) ;			
		},

	// ÀÚµ¿À¸·Î ÄÞ¸¶Ã³¸®ÇÑ´Ù.
	attachAutoComma : 

		function(objName)
		{
			var typeOfEvent = "onkeyup" ;

			this.an(objName,typeOfEvent,WPHandler.autoComma.bind()) ;			
		},	

	// ¿£ÅÍ Ã³¸® ÇÏ±â V0.6
	attachEnter :

		function(objName,fn)
		{	
			var typeOfEvent = "onkeypress" ;

			this.an(objName,typeOfEvent,this.enterHandler.bind(fn)) ;			

		},


	// °Ë»ö Å¬¸¯ Ã³¸® + ¿£ÅÍ Ã³¸® V0.6
	attachSearch :

		function(textObjNm,clickObjNm,fn)
		{	
			this.attachEnter(textObjNm,fn)	;
			this.anc(clickObjNm,fn)			;
		},

	// Attribute ·Î ºÎÅÍ µ¥ÀÌÅÍ¸¦ °¡Á®¿Í¼­ ReQuery Ã³¸®ÇØ¼­ ±× ÁÖ¼Ò·Î °£´Ù. V0.6
	attachGo :

		function(objName,typeOfEvent,attNm,paramNm,assoc)
		{
			if( typeof(attNm) == "string" )
				this.an(objName,typeOfEvent,this.oneReQueryHandler.bindChange(this,attNm,paramNm,assoc)) ;
			else
				this.an(objName,typeOfEvent,this.manyReQueryHandler.bindChange(this,attNm,paramNm,assoc)) ;

		},

	// Attribute ·Î ºÎÅÍ ReQuery ÈÄ ÆË¾÷±îÁö Ã³¸® V0.7
	attachPop : 

		function(objName,typeOfEvent,attNm,paramNm,assoc,popNm,popWidth,popHeight,popScroll)
		{
				this.an(objName,typeOfEvent,
					this.selfPopHandler.bindChange(
						this,attNm,paramNm,assoc,popNm,popWidh,popHeight,popScroll)) ;

		},

//################################################## ±âº» Á¦°ø ÇÚµé·¯ ########################################################

	// µµ±Ô¸ÕÆ®ÀÇ Å¸ÄÏ ¼¼ÆÃ
	setTarget :

		function(str)
		{
			this.target = str ;
		
		},


	// ¸µÅ© ÇÚµé·¯ ==> ¿©·¯°¡Áö ±â´ÉÀ» ÇÔ
	linkHandler : 

		
		function(url,msg,type,target)
		{
			if( target == "undefined" ) 
				target = "self" ;
			
			if( type == "confirm" )
				if( confirm(msg) )
					eval(target).location.href = url ;
			else if( type == "alert" )	{
				this.alert(msg) ;
				eval(target).location.href = url ;
			}
			else	{			
				eval(target).location.href = url ;
			}
			
		},
		
	// ¾Ë¸² ÇÚµé·¯
	alertHandler : 

		function(msg)
		{	
			alert(msg) ;
		},

	// ¿£ÅÍ Ã£±â ÇÚµé·¯
	enterHandler :

		function(fn)
		{
			if( event.keyCode == 13 )
				fn() ;
		},

	// ÇÑ°³ÀÇ ÆÄ¶ó¹ÌÅÍ ReQuery ÇÚµé·¯ V0.6
	oneReQueryHandler :

		function(attNm,paramNm,restAssoc)
		{
			this.go(this.reQueryForOneAttr(attNm,paramNm,restAssoc)) ;
		},

	// ¿©·¯°³ÀÇ ÆÄ¶ó¹ÌÅÍ ReQuery ÇÚµé·¯ V0.6
	manyReQueryHandler :

		function(aAttNm,aParamNm,restAssoc)
		{
			this.go(this.reQueryForManyAttr(attNm,paramNm,restAssoc)) ;
		},


	// ¿©·¯°³ÀÇ ÆÄ¶ó¹ÌÅÍ ReQuery ÇÚµé·¯ + ÆË¾÷ V0.6
	selfPopHandler :

		function(attNm,paramNm,restAssoc,popNm,popWidth,popHeight,popScroll)
		{
			var url ; 

			if( typeof(attNm) == "string" )
				url = this.reQueryForOneAttr(attNm,paramNm,restAssoc) ;
			else
				url = this.reQueryForManyAttr(attNm,paramNm,restAssoc) ;

			this.pop(url,popNm,popWidth,popHeight,popScroll) ;

		},

	// ReQuery ÈÄ popup Ã³¸®
	pop : 

		function(theURL, winName, winWidth, winHeight , isScroll ) {
			//alert("aa") ;
			var tmp_focus;
			var winSize;

			if ((winWidth=="" || winWidth==null) && (winHeight=="" || winHeight==null)) {
				tmpFocus = window.open(theURL, winName );
			}
			else {
			
				if (winWidth=="" || winWidth==null)
				  winSize = "height="+winWidth;
				else if (winHeight=="" || winHeight==null)
				  winSize = "height="+winWidth;
				else
				  winSize = "width="+winWidth+",height="+winHeight;
				  
				if( isScroll == true )
					winSize += ",scrollbars=1" ;
				else
					winSize += ",scrollbars=no" ;
				
				tmpFocus = window.open(theURL, winName, winSize );
			}

			this.movePop(tmpFocus,winWidth) ;
			tmpFocus.focus() ;

			return tmpFocus ;
		},

	// ÆË¾÷ °¡¿îµ¥·Î ¿Å±â±â
	movePop :

		function(target,winWidth) {

		  var winWidth = (screen.width - winWidth) / 2;
		  var winHeight = (screen.height - 500) / 2;
		  
		  target.moveTo(winWidth, winHeight);

		},


	moveFreePop :

		function(target,left,top) {

		  
		  target.moveTo(left, top);

		},

	// °¡±â
	go : 

		function(url)
		{
			location.href = url ;
		
		},

	// Cmd ·Î °¡±â
	goCmd :

		function(sc,cmd,qs)
		{		
			location.href = this.getCmdUrl(sc,cmd,qs) ;
		},

	getCmdUrl : 

		function(sc,cmd,qs)
		{
			gurl = sc + "?cmd=" + cmd ;

			if( qs != undefined ) 
				gurl += "&" + qs ;

			return gurl ;

		},

	// µµ¸ÞÀÎ °¡Á®¿À±â
	getDomain : 

		function()
		{
			return this.domain ;
		},

	// ########################################## ReQuery °ü·Ã À¯Æ¿ ¸Þ½îµå ################################################# //

	// V0.6 ¿¡¼­ bug fix
	http_build_query :

		function(array) 
		{ 
				var i = 0 ;
				var str = "" ; 
		 
				for(var key in array) {

					if(array.hasOwnProperty(key))	{

						if(! (array[key] == "undefined" || array[key] == "" || array[key] == undefined) )
						{ 
							str += key + "=" + array[key] ;
							str += "&" ;
						}
						i++ ;
					}
				}

				return "?" + str.substr(0,str.length - 1) ; 
		}, 


	// Äõ¸® ½º¸£¸µÀ» ÆÄ½ÌÇØ¼­ o(Array) ¿¡ ³Ö´Â´Ù.
	parse_str : 

		function(s, o) 
		{ 
			 var i, f, p, m, r = /\[(.*?)\]/g; 
			 s = s.toString().replace(/\+/g,' ').split('&'); 
	  
			 function c(o, k, v, p) 
			 { 
					 var n, m = r.exec(p); 
	  
					 if(m != null) 
					 { 
							 n = m[1]; 
							 if(typeof(o[k]) == 'undefined'){ o[k] = []; }; 
							 c(o[k], n || o[k].length.toString(), v, p); 
							 return; 
					}; 
	  
					 o[k] = v;
					  
			 }; 
	  
			 for(i=0,f=s.length;i<f;i++) 
			 { 
					 p = s[i].split('='), m = p[0].indexOf('['); 
					 c(o || this, (0 <= m) ? p[0].slice(0, m) : p[0], p[1], p[0]); 
			 }; 
			 
		},
		

	// Äõ¸® ½ºÆ®¸µ °ª  º¯°æ
	reQuery : 

		function(qs,key,value)
		{ 	
			var array = new Array() ;
			this.parse_str(qs,array)	;	
			array[key] = value ;

			return this.http_build_query(array) ;
		},

	// request		:	ÆÄ¶ó¹ÌÅÍ , assoc : º¯°æÇÒ ¼Â
	// Process Date :	2008.07.02
	reQueryForPost : 

		function(request,assoc)
		{
			var queryString = "?" ;
			var isSame = false ;

			for( reqKey in request)	
			{
				if(request.hasOwnProperty(reqKey)){

					for( chKey in assoc )
					{
						if(assoc.hasOwnProperty(chKey)){
							if( chKey == reqKey )	{
								queryString += reqKey + "=" +  assoc[reqKey] ;
								isSame = true ;
								break ;
							}
						}
					}
		
					if( isSame == false )	
						queryString += reqKey + "=" +  request[reqKey] ;
		
					isSame = false ;
					
					queryString += "&" ;
					
				}

			}

			return queryString ;

		},


		
	// Äõ¸® ½ºÆ®¸µ °ª  º¯°æ
	reQueryByArray : 

		function(qs,set)
		{ 	
			var array = new Array() ;
			this.parse_str(qs,array)	;
			
			for( key in set)
				if(set.hasOwnProperty(key)){				
					array[key] = set[key] ;			
				}
			
			return this.http_build_query(array) ;
		},


	// ÇÏ³ªÀÇ ¾îÆ®¸®ºäÆ®¿Í ¿¬°ü Ã³¸® V0.6
	reQueryForOneAttr :

		function(attNm,paramNm,restAssoc)
		{
			var attVn = event.srcElement.getAttribute(attNm) ;

			var assoc = new Array() ;

			if( restAssoc != undefined )
			{
				for(key in restAssoc )
					if(restAssoc.hasOwnProperty(key))
						assoc[key] = restAssoc[key] ;
			}

			assoc[paramNm] = attVn ;

			return this.reQueryByArray(this.qs,assoc) ;
		},

	// ¿©·¯°³ÀÇ ¾îÆ®¸®ºäÆ®¿Í ¿¬°ü Ã³¸® V0.6
	reQueryForManyAttr :

		function(aAttNm,aParamNm,restAssoc)
		{
			var attVn = "" ;

			var assoc = new Array() ;

			if( restAssoc != undefined )
			{
				for(key in restAssoc )
					if(restAssoc.hasOwnProperty(key))
						assoc[key] = restAssoc[key] ;
			}

			for(var i = 0 ; i < aParamNm.length ; i++ )
			{
				attVn = event.srcElement.getAttribute(aAttNm[i]) ;
				assoc[aParamNm[i]] = attVn ;
			}

			if( restAssoc != undefined )
				assoc.concat(restAssoc) ;

			return this.reQueryByArray(this.qs,assoc) ;
		},


	// #################################################################################################################### //



	// ÅØ½ºÆ® ÇÊµå ¼±ÅÃ ÇÚµé·¯
	selectHandler :

		function ()
		{
			event.srcElement.select() ;
		},
	 

	// ¿£ÅÍ ÀÔ·Â ½Ã submit ÇÚµé·¯
	enterHandler :

		function (obj)
		{
	//		alert(obj) ;
			/*
			var keyCode = event.keyCode ;

			if( keyCode == "13" )
				obj.fireEvent("onclick") ;
				*/
		},



	// UTF8·Î ÀÎÄÚµù º¯°æ
enEncodeUTF8 :

function(s)
{

	var sbuf = '';
	var len;
	var i;
	var ch;

	if(s == null) return "" ;
	s = s + "" ;
	len = s.length;

	for (i = 0; i < len; i++)	{
		ch = s.charCodeAt(i);
		if	( (65 <= ch && ch <= 90) || // 'A'..'Z'
			(97 <= ch && ch <= 122) || // 'a'..'z'
			(46 <= ch && ch <= 57) ) { // '.', '/', '0'..'9'
			
			sbuf += s.charAt(i);
		} 
		else if (ch == 32) { // space
			sbuf += '+';
		} else if (ch <= 0x007f) { // other ASCII
			sbuf += this.enEncodeChar(ch);
		} else if (ch <= 0x07FF) { // non-ASCII <= 0x7FF
			sbuf += this.enEncodeChar(0xc0 | (ch >> 6));
			sbuf += this.enEncodeChar(0x80 | (ch & 0x3F));
		} else { // 0x7FF < ch <= 0xFFFF
			sbuf += this.enEncodeChar(0xe0 | (ch >> 12));
			sbuf += this.enEncodeChar(0x80 | ((ch >> 6) & 0x3F));
			sbuf += this.enEncodeChar(0x80 | (ch & 0x3F));
		}
	}
	
	return sbuf;
},

enEncodeChar :

function(ch)
{
	var enHexChars = "0123456789ABCDEF" ;

	return '%' + enHexChars.charAt(ch >> 4) + enHexChars.charAt(ch & 0x0F);
}




}) ;


Object.extend(RichFrameworkJS.prototype,{
		// ´ÜÃà ÇÔ¼öµé
		an				: RichFrameworkJS.prototype.attachEventByName,
		atLink			: RichFrameworkJS.prototype.attachLink,
		atAlert			: RichFrameworkJS.prototype.attachAlert,
		atAutoComma		: RichFrameworkJS.prototype.attachAutoComma,
		atEnter			: RichFrameworkJS.prototype.attachEnter,
		atSearch		: RichFrameworkJS.prototype.attachSearch,
		atGo			: RichFrameworkJS.prototype.attachGo,
		attachPop		: RichFrameworkJS.prototype.atPop,

		///////////////////////// Deprecated Methods 0.5 //////////////////////////////////////////////////////////////////////

		// deprecated from 1.5
		// Dep·¦ÇÎ µÈ °´Ã¼¸¦ ¹ÝÈ¯
		// get() ¿Í µ¿ÀÏ
		getObject :

			function(name)
			{
				return this.get(name) ;
			},
			
		// deprecated from 0.5
		// °´Ã¼¸¦ ¹è¿­·Î °¡Á®¿Â´Ù.
		// get() °ú µ¿ÀÏ
		getByArray :

			function(name)
			{
				return this.get(name) ;
			},

		// deprecated from 0.5
		// get() °ú µ¿ÀÏ
		getArray :

			function(name)
			{
				return this.getByArray(name) ;

			},

		// deprecated from 0.5
		// IE == FireFox ÀÌº¥Æ® °´Ã¼ È£È¯Ã³¸®
		wrapEvent :
			
			function(event) {

			  if (! window.event ) { //IEÀÌ¸é.. À¥Ç¥ÁØÀ» ´õ ÂüÁ¶ÇØ¾ßÇÔ

					event.srcElement = event.target ;
			  }
			
			  return event;
			}

		///////////////////////// Deprecated Methods 0.32 //////////////////////////////////////////////////////////////////////


		// Ã¹¹øÂ° Æû °´Ã¼¸¦ ¸®ÅÏÇÑ´Ù. 
		/* Deprecated  by 0.32
		getFirstForm :

			function()
			{
				return new WPForm(this.eForms[0],this.submitOfType) ;
			},

		*/

		// ¸¶Áö¸· Æû °´Ã¼¸¦ ¸®ÅÏÇÑ´Ù.
		/* Deprecated  by 0.32
		getLastForm : 

			function()
			{
				var lindex = this.eForms.length -1 ;
				return this.getForm(this.eForms[lindex].name) ;
			}
		*/


}) ;



