(function($){$.fn.Flyout=function(o){this.each(function(){var el=$(this);if(el.is('a')){var p=el.parent();p.attr('_pageid',el.attr('_pageid')||'').attr('_childpages',el.attr('_childpages')||'').attr('_exclude',el.attr('_exclude')||'').attr('_corner',el.attr('_corner')||'').attr('_maxitems',el.attr('_maxitems')||'').attr('_maxlevels',el.attr('_maxlevels')||'');el.removeAttr('_pageid').removeAttr('_childpages').removeAttr('_exclude').removeAttr('_corner').removeAttr('_maxitems').removeAttr('_maxlevels');el=p;}if(!el[0].flyout)new $.cobalt.flyout(el[0],o);});return this;};$.cobalt=$.cobalt||{};$.cobalt.flyout=function(el,o){if(!el)return;this.options=$.extend({},o||{});this.getChildrenUrl=this.options.getChildrenUrl||this.getChildrenUrl;this.element=el;this.init();};if(!window.$fo){window.$fo=$.cobalt.flyout;}$.extend($.cobalt.flyout,{pageHtml:'<div class="ifly" _pageid="{0}" _childpages="{1}"><a href="{2}">{3}</a></div>',flyouts:[],ajaxip:false,ajaxStack:[],_superScript:new RegExp('\\^(\\S+)','g'),pageFormat:function(pageName){return pageName.replace($fo._superScript,"<sup>$1</sup>");},_paused:false,pause:function(){$fo._paused=true;$fo.hideItems();},play:function(){$fo._paused=false;},itemOver:function(e){if($fo._paused)return;var item=e.target;while(item&&!item._p){item=item.parentNode;}if(!item)return true;$fo.flyItem(item,e);},flyItem:function(item,e){var p=item._p;if(p.timeout){clearTimeout(p.timeout);p.timeout=0;}if(p._active){if(p._active==item&&!$fo.fadeStarted)return;else if(p._active._children){var pos=$(item).absPosition();var distance=(pos.left+pos.width)-e.clientX;if(distance>=0&&distance<50)p.timeout=setTimeout(function(){$fo.showItem.apply(item,[e]);},250);else $fo.showItem.apply(item,[e]);return;}}$fo.showItem.apply(item,[e]);},itemOut:function(e){if($fo._paused)return;var p=e.relatedTarget;while(p&&!p._p&&!p._f){try{p=p.parentNode;}catch(ex){p=null;}}if(p&&(p._p||p._f))return true;if($fo._timeout){clearTimeout($fo._timeout);$fo._timeout=0;}var levels=$fo.fadeOut();$fo._timeout=setTimeout($fo.hideItems,(300*levels)+800);},fadeOut:function(){var active=$fo._active;var levels=1;var fadeStarted=$fo.fadeStarted;while(active&&active._children){if(active._active&&active._active._children){active=active._active;levels++;}else{$fo.fadeStarted=true;var speed=300+(fadeStarted?0:800);active._children.animate({opacity:0},speed,'linear',function(){$fo.hideItem.apply(active,[{}]);$fo.fadeOut();});break;}}return levels;},stopFadeOut:function(){if($fo._timeout){clearTimeout($fo._timeout);$fo._timeout=0;}if($fo.fadeStarted){var active=$fo._active;while(active&&active._children){active._children.stop().css({opacity:1});active=active._active;}$fo.fadeStarted=false;}},showItem:function(e){$fo.stopFadeOut();this._p.timeout=0;$fo.setScroll(this,e);var active=this._p._active;if(active&&active!=this)$fo.hideItem.apply(active,[{}]);this._p._active=this;this.isactive=true;this._self.addClass('iflyOver');if(this._callajax){if(this._killajax)this._killajax=false;else if(!this._ajaxip)this.flyout.loadChildren.call(this.flyout,this,this.pageid);}else{var div=this._children;if(div&&div.length){var corner=this._corner||$._DIR._UPPER_RIGHT;var dir=this._dir||$._DIR._LOWER_RIGHT;var isreverse={};div.css({opacity:0}).relativePos(this,corner,dir,this._offset||{left:-1,top:-1},null,isreverse,this._top).animate({opacity:1},100,'linear');var max=this.flyout.options.maxitems;var size=div[0].childNodes.length;if(max&&size>max){if(!div[0]._scrollHeight){var h=div.children(':first').absPosition().height;div.css({height:max*h}).addClass('iflyOverflow');div[0]._scrollHeight=(size-max)*h;}div[0]._pos=div.absPosition();div[0]._pos.top+=(50+$.toInt($(document.body).css('paddingTop')));div[0]._pos.height-=100;div[0]._scrollTop=0;div[0].childNodes[0].style.marginTop='0px';}if(isreverse.left)this._self.addClass('iflyLeft');else this._self.removeClass('iflyLeft');}}var item=this._p;while(item&&item._p){$fo.flyItem(item,e);item=item._p;}},setScroll:function(item,e){var div=item.parentNode;if(e.clientY&&div._scrollHeight){var top=parseInt((e.clientY-div._pos.top)/div._pos.height*div._scrollHeight);if(top<0)top=0;else if(top>div._scrollHeight+2)top=div._scrollHeight+2;div._scrollTop=top;div.childNodes[0].style.marginTop='-'+top+'px';}},hideItem:function(e){if(this._p){if(this._p.timeout){clearTimeout(this._p.timeout);this._p.timeout=0;}this._p._active=null;}if(this.isactive){this.isactive=false;this._self.removeClass('iflyOver');if(this._children){this._children.children().each($fo.hideItem);this._children.hide();}}if(this._ajaxip)this._killajax=true;},hideItems:function(e){$($fo.flyouts).each($fo.hideItem).find('div.ifly').each($fo.hideItem);},navigatePage:function(e){if(e&&e.target&&e.target.nodeName&&e.target.nodeName.toLowerCase()=='a')return;else{var href=$(this).children('a').attr('href');if(href)window.location.href=href;return false;}}});$.extend($.cobalt.flyout.prototype,{getChildrenUrl:'CobaltAjax.ashx?M=GetPage',loadChildren:function(el,pageid){var fo=this;var url=$.getAjaxUrl(fo.getChildrenUrl,{P:pageid});if(url){el._self.addClass('iflyLoading');el._ajaxip=true;var fn=function(){$fo.ajaxip=true;$.ajax({url:url,dataType:'json',success:function(data){fo.renderChildren(data,el);},error:function(){fo.renderChildren(null,el);}});};if($fo.ajaxip)$fo.ajaxStack.push(fn);else fn();return;}},renderChildren:function(results,el){if($fo.ajaxStack.length)$fo.ajaxStack.shift()();else $fo.ajaxip=false;el._callajax=false;if(!results)return;el._self.removeClass('iflyLoading');if(!el._children||!el._children.length)el._children=$('<div class="iflylist"></div>').appendTo(this.offset);var ex=el.flyout&&el.flyout.options&&el.flyout.options.exclude;for(var i=0;i<results.ChildPages.length;i++){var page=results.ChildPages[i];if(ex&&ex.indexOf(page.PageID)>=0)continue;var item=$($fo.pageHtml.replace('{0}',page.PageID).replace('{1}',page.ChildPages.length).replace('{2}',page.URL||page.Path).replace('{3}',$fo.pageFormat(page.PageName))).appendTo(el._children);if(page.URLProperties.indexOf('target,_blank')>=0)item.children('a').attr('target','_blank');}this.setupChildren(el);el._ajaxip=false;if(el._killajax)el._killajax=false;else $fo.showItem.apply(el,[{target:el}]);},setupChildren:function(el){if(!el._self)el._self=$(el);el.flyout=this;el.pageid=$.toInt(el._self.attr('_pageid'));if(el._children)el._children.bind('mouseover',$fo.itemOver).bind('mouseout',$fo.itemOut).each(function(i){this._f=el;});if(el.pageid){var fo=this;var lis=el._children&&el._children.find('>div.ifly').click($fo.navigatePage).each(function(i){this._p=el;this._levels=el._levels-1;fo.setupChildren(this);});if(el._levels!=0){if(lis&&lis.length)el._self.addClass('iflyRight');else{if($.toInt(el._self.attr('_childpages'))>0){el._callajax=true;el._self.addClass('iflyRight');}}}if($.browser.msie6)el._self.addClass('iflyie6');}else if(!el._children||!el._children.length)el._children=el._self.find('>div:first');},init:function(){var el=this.element;var p=this.element.parentNode;while(p&&p.parentNode&&($.curCSS(p,'position')==='static'||/^(tr|th|tbody|table)$/i.test(p.nodeName))&&!/^BODY$/i.test(p.nodeName)){p=p.parentNode;}this.offset=p||document.body;$fo.flyouts.push(el);el._p=$fo;el._self=$(el);el._children=el._self.find('div.iflylist:first');this.offsetParent=el._self.offsetParent();el._levels=$.toInt(el._self.attr('_maxlevels'))||this.options.maxlevels||-1;this.setupChildren(el);var corner,dir;try{corner=eval('('+el._self.attr('_corner')+')');}catch(ex){;}try{dir=eval('('+el._self.attr('_dir')+')');}catch(ex){;}el._corner=this.options.corner||corner||$._DIR._LOWER_LEFT;el._dir=this.options.dir||dir||$._DIR._LOWER_RIGHT;el._top=true;if($.browser.msie6)this.options.maxitems=0;else this.options.maxitems=$.toInt(el._self.attr('_maxitems'))||16;if(!this.options.exclude){this.options.exclude=[];var exclude=(el._self.attr('_exclude')||'').split(',');for(var i=0;i<exclude.length;i++){var id=$.toInt(exclude[i]);if(id)this.options.exclude.push(id);}}if(el.pageid&&!el._children.length){el._killajax=true;this.loadChildren(el,el.pageid);}el._self.bind('mouseover',$fo.itemOver).bind('mouseout',$fo.itemOut);}});})(jQuery);
