/**
 * Accordion menu
 * @name Accordion
 * @class
 * @extends nhn.Component
  * @author mania
 */
 
var Accordion = $Class({
/**
 * @scope Accordion
 */
 
 	/**
	 * option ÃÊ±âÈ­
	 * @param {object} oOption		JSON À¸·Î ³Ñ°Ü¹ÞÀº option
	 * @return {object} oOption 
	 */
	_initOption:function(oOption){
		var defaultOption = {
			duration : "0.3",
			setopenno : "0",
			setevent : "click",
			setopen : "true"
		};
		
		for(var i in defaultOption){
			if(typeof oOption[i] == "undefined"){
				oOption[i] = defaultOption[i];
			}
		}	
		
		return oOption;
	},
	
	/**
	 * Å¬·¡½º ÁØºñ
	 *
	 */
	$init : function() {	

	},
	
	/** 
	 *	°´Ã¼¸¦ ¼±¾ðÇÏ°í ¿ÜºÎ¿¡¼­ »ç¿ëµÇ´Â function
	 *	@param {String} sData		ÀÌº¥Æ® ¹ß»ý½ÃÅ³ ·¹ÀÌ¾îÀÇ id °ª
	 *	@param {Array} arguments	ÀÌº¥Æ®ÀÇ ¿É¼Ç (setevent , setopen, duration)
	 */	
	 
	actAccordion : function(sData){
		this.oBeforeEl = "";		
		this._sId = sData;
		this.option(this._initOption(arguments[1]?arguments[1]:new Object()));
		
		this._setevent = this.option("setevent");
		this._setopenno = this.option("setopenno");
		this._setopen = this.option("setopen");
		this._duration = (typeof this.option("duration") == "undefined" || this.option("duration")<0.1) ? 0.1 : (this.option("duration")>0.5) ? 0.5 : this.option("duration");
		
		//	ÄÁÅÙÃ÷¿¡ ÇØ´çµÈ Element ´Ý±â.
		this._getElement();
		// Event Attach
		$Fn(this.openLayer, this).attach($(this._sId), this._setevent);
	},
		
	/** 
	 *	ÃÊ±â Cssquery ·Î contents ¿¡ ÇØ´çµÈ element ´Ý±â.
	 *
	 */	
	 
	_getElement : function(){
	
		var oBrotherEl = new Array();
		var _elEl = $(this._sId);
		var _aCss = cssquery("li div.accordion_content", _elEl);
		var _nCssLength = _aCss.length;

		for (var i = 0 ; i < _nCssLength ; i++){
			if( this._setopenno - 1 == i) {
				this.oBeforeEl = $(_aCss[i]); 
				this.openLayer($(_aCss[i]));
			} else {
				$Element(_aCss[i]).css('display','none');
			}
		}
		
		
	},

	/** 
	 *	event Ã³¸® ÇÔ¼ö
	 *	@param {Object}	e
	 */	
	openLayer : function(e){

		try{ 
		
			var _oChoiceEl = "";
			var _oCheckEl  = "";
			if(e.element) { 
				_oChoiceEl = $(e.element); 
				_oCheckEl = cssquery.getSingle("! div", _oChoiceEl);
			} else { 
				_oChoiceEl = e ;
				_oCheckEl = cssquery.getSingle("!~ div", _oChoiceEl);
				this.oBeforeEl = "";
			}

			if($Element(_oCheckEl).hasClass('accordion_title')){

			var _oParentEl = cssquery.getSingle("! li", _oChoiceEl);
			var _oChildEl = cssquery("> div", _oParentEl);
			var _oFEPram = this.oBeforeEl;
			
				if(this._setopen == "true"){
				
					if(e.element) {if(this.oBeforeEl == _oChildEl[1]) return;}
					else {_oFEPram = "";}
					$Element(_oChildEl[1]).show();
					if(this.oBeforeEl && ($Element(this.oBeforeEl).visible()== true)) {
						$Element(this.oBeforeEl).hide();
					}
					
				}else{
					$Element(_oChildEl[1]).toggle();
					var _bCheckVisible = $Element(_oChildEl[1]).visible();
					
					if(!_bCheckVisible) {_oFEPram = _oChildEl[1] ; }
					else { _oFEPram = ""; }
				}
				
				this.oBeforeEl = _oChildEl[1] ;
				this.fireEvent("modifyLayout",{oeChoiceLi : _oParentEl, oeBeforeEl : _oFEPram});	
			}
		}
		catch(e){}

	}
	

}).extend(nhn.Component);