/**
 * nhn.Timer 080930
 */
nhn.Timer=$Class({_timer:null,$init:function(){},start:function(a,b){var c=this;this.abort();this.fireEvent('wait');this._timer=setInterval(function(){c.fireEvent('run');var r=a();if(!r){clearInterval(c._timer);c._timer=null;c.fireEvent('end');return}
c.fireEvent('wait')},b);return true},abort:function(){var a=false;if(this._timer){clearInterval(this._timer);this.fireEvent('abort');a=true}this._timer=null;return a}}).extend(nhn.Component);

/**
 * nhn.Effect 080930
 */
nhn.Effect=function(h){if(this instanceof arguments.callee)throw new Error("You can't create a instance of this");var j=/^(\-?[0-9\.]+)(%|px|pt|em)?$/;var k=/^rgb\(([0-9]+)\s?,\s?([0-9]+)\s?,\s?([0-9]+)\)$/i;var l=/^#([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i;var m
=/^#([0-9A-F])([0-9A-F])([0-9A-F])$/i;var n=function(v){var a;if(j.test(v))v=parseFloat(v),a=RegExp.$2;else if(k.test(v))v=[parseInt(RegExp.$1),parseInt(RegExp.$2),parseInt(RegExp.$3)],a='color';else if(l.test(v=v.replace(m,'#$1$1$2$2$3$3')))v=[
parseInt(RegExp.$1,16),parseInt(RegExp.$2,16),parseInt(RegExp.$3,16)],a='color';return{value:v,unit:a}};return function(b,c){var e;if(arguments.length>1)b=n(b),c=n(c),e=c.unit;else c=n(b),b=null,e=c.unit;if(b&&c&&b.unit!=
c.unit)throw new Error('unit error');b=b&&b.value;c=c&&c.value;var f,cacheResult;var g=function(p){var s=b;var d=c;var a=function(s,d){return(d-s)*h(p)+s+e};if(e=='color'){var r=parseInt(a(s[0],d[0]))<<16;r|=parseInt(a(s[1],
d[1]))<<8;r|=parseInt(a(s[2],d[2]));r=r.toString(16).toUpperCase();for(var i=0;6-r.length;i++)r='0'+r;return'#'+r}return a(s,d)};if(b===null){g.setStart=function(s){if(isNaN(parseInt(s)))s=0+e;s=n(s);if(s.unit!=e)throw new Error('unit eror');b=s.value}}
return g}};nhn.Effect.linear=nhn.Effect(function(s){return s});nhn.Effect.easeIn=nhn.Effect(function(s){y=Math.sqrt(1-(s*s));return(1-y)});nhn.Effect.easeOut=nhn.Effect(function(s){y=Math.sqrt((2-s)*s);return y});nhn.Effect.overphase=nhn.Effect(function(s){s/=0.69643223;y=Math.sqrt((2-s)*s)+
0.1;return y.toFixed(7)});nhn.Effect.bounce=nhn.Effect(function(s){if(s<(1/2.75))return(7.5625*s*s);else if(s<(2/2.75))return(7.5625*(s-=(1.5/2.75))*s+.75);else if(s<(2.5/2.75))return(7.5625*(s-=(2.25/2.75))*s+.9375);else return(7.5625*(s-=(2.625/2.75))*s+.984375)});(function(){var b=
$Element.prototype.css;$Element.prototype.css=function(k,v){if(k=='opacity')return typeof v!='undefined'?this.opacity(parseFloat(v)):this.opacity();return v!='undefined'?b.call(this,k,v):b.call(this,k)}})();

/**
 * nhn.Transition 080930
 */
nhn.Transition=$Class({_fps:15,_queue:null,_timer:null,_waiting:true,_playing:false,$init:function(){this._queue=[];this._timer=new nhn.Timer()},fps:function(a){if(arguments.length>0){this._fps=a;return this}return this._fps},abort:function(){this._queue=[];this._timer.abort();if
(this._playing)this.fireEvent('abort');this._waiting=true;this._playing=false;this._now=null},start:function(){this.abort();return this.precede.apply(this,arguments)},pause:function(){if(this._timer.abort())this.fireEvent('pause')},resume:function(){var b=this;if(!this._now)return;if
(this._waiting==false&&this._playing==true)this.fireEvent('resume');this._goOn();this._waiting=false;this._playing=true;this._timer.start(function(){var a=!b._goOn();if(a){b._waiting=true;setTimeout(function(){b._try()},0)}return!a},this._now.interval)},precede:
function(c,d){if(typeof c=='function'){this._queue.push(c)}else{var e={duration:c,lists:[]};for(var f=arguments,nLen=f.length,i=1;i<nLen-1;i+=2){var g=[];$H(f[i+1]).forEach(function(a,b){if(/^(@|style\.)(\w+)/i.test(b))g.push([
'csses',RegExp.$2,a]);else g.push(['attrs',b,a])});e.lists.push({element:$Element(f[i]),values:g})}this._queue.push(e)}this._try();return this},_dequeue:function(){var a=this._queue.shift();if(!a)return;if(typeof a=='function')return a;
var b=a.lists;for(var i=0,nLen=b.length;i<nLen;i++){var c=b[i].element;for(var j=0,aValues=b[i].values,nJLen=aValues.length;j<nJLen;j++){var d=aValues[j][0];var e=aValues[j][2];if(typeof e!='function'){if(e instanceof Array)e=
nhn.Effect.linear(e[0],e[1]);else e=nhn.Effect.linear(e)}if(e.setStart){switch(d){case'csses':e.setStart(c.css(aValues[j][1]));break;case'attrs':e.setStart(c.$value()[aValues[j][1]]);break}}aValues[j][2]=e}}return a},_try:function(){var a=
this;if(!this._waiting)return false;var b;do{b=this._dequeue();if(!b){if(this._playing){this.fireEvent('end');this._playing=false;this.abort()}return false}if(!this._playing)this.fireEvent('start');if(typeof b=='function'){this._playing=true;b.call(this)}}while
(typeof b=='function');var c=1000/this._fps;this._now={lists:b.lists,ratio:0,interval:c,step:c/b.duration};this.resume();return true},_goOn:function(){var a=this._now;var b=a.ratio;var c=a.lists;b=parseFloat(b.toFixed(5));if(b
>1)b=1;for(var i=0,nLen=c.length;i<nLen;i++){var d=c[i].element;for(var j=0,aValues=c[i].values,nJLen=aValues.length;j<nJLen;j++){switch(aValues[j][0]){case'csses':d.css(aValues[j][1],aValues[j][2](b));break;case'attrs':d.$value()[aValues[j][1]]=aValues[j][2](b);
break}}}a.ratio+=a.step;return b!=1}}).extend(nhn.Component);

/**
 * nhn.LayerRelation 080930
 */
nhn.LayerRelation=$Class({_layer:null,_links:null,_visible:false,_timer:null,$init:function(c,d){this.option({checkEvent:'',showDelay:0,hideDelay:100});this.option(d||{});this._layer=$(c);this._links=[this._layer];this._timer=new nhn.Timer();if(this.option('checkEvent')){
$Fn(function(a){if(!this._visible)return;var b=a.element;if(this._check(b)){this._timer.abort();return}this.hide()},this).attach(document,this.option('checkEvent'))}},_check:function(a){var b=$Element(a);for(var i=0,oLink;oLink=this._links[i];i++)if(a==oLink||
b.isChildOf(oLink))return true;return false},_find:function(a){for(var i=0,oLink;oLink=this._links[i];i++)if(oLink==a)return i;return-1},link:function(a){if(arguments.length>1){for(var i=0,len=arguments.length;i<len;i++)this.link(arguments[i]);return this}a=$(a);if(this._find(a)!=
-1)return this;this._links.push(a);return this},unlink:function(a){if(arguments.length>1){for(var i=0,len=arguments.length;i<len;i++)this.unlink(arguments[i]);return this}a=$(a);var b=this._find(a);if(b==-1)return this;this._links.splice(b,1);return this},show:function(){
var d=this;this._timer.start(function(){if(d.fireEvent('show',{layer:d._layer}))d._visible=true;var a=d.option('group');if(!a)return;var b=d.constructor._instances;for(var i=0,len=b.length;i<len;i++){var c=b[i];if(c!==d&&
c.option('group')==a)c.hide()}},this.option('showDelay'));return this},hide:function(){var a=this;this._timer.start(function(){if(a.fireEvent('hide',{layer:a._layer}))a._visible=false},this.option('hideDelay'));return this},toggle:function(){return this[this._visible?
'hide':'show']()}}).extend(nhn.Component);
