function DropdownManager(){var size=0;var dom_initialized=false;var sliding=false;var manager={};var focus=-1;var timeout=50;var condition=function(){return dom_initialized;};this.get_toggle=function(widget_id,post_toggle,pre_toggle,centered){if(typeof(widget_id)!='string')
return null;if(typeof(post_toggle)!='function')
post_toggle=function(){};if(typeof(pre_toggle)!='function')
pre_toggle=function(){};if(typeof(centered)=='undefined')
centered=false;manager[size]={'post_raise':null,'pre_raise':null,'post_drop':null,'pre_drop':null,'post_toggle':post_toggle,'pre_toggle':pre_toggle,'centered':centered,'widget':null,'dropdown':null,'toggle':true,'analytic':ToolbarAnalytics.getAnalytics(widget_id)};var instance=manager[size];async_loop(condition,function(){instance['dropdown']=$("#"+widget_id+"_dropdown");instance['widget']=$("#"+widget_id);instance['dropdown'].slideUp("fast");},timeout);return new DropdownInterface(size++);};this.get_drop_raise=function(widget_id,post_drop,pre_drop,post_raise,pre_raise,centered){if(typeof(widget_id)!='string')
return null;if(typeof(post_drop)!='function')
post_drop=function(){};if(typeof(pre_drop)!='function')
pre_drop=function(){};if(typeof(post_raise)!='function')
post_raise=function(){};if(typeof(pre_raise)!='function')
pre_raise=function(){};if(typeof(centered)=='undefined')
centered=false;manager[size]={'post_raise':post_raise,'pre_raise':pre_raise,'post_drop':post_drop,'pre_drop':pre_drop,'post_toggle':null,'pre_toggle':null,'centered':centered,'widget':null,'dropdown':null,'toggle':false,'analytic':ToolbarAnalytics.getAnalytics(widget_id)};var instance=manager[size];async_loop(condition,function(){instance['dropdown']=$("#"+widget_id+"_dropdown");instance['widget']=$("#"+widget_id);instance['dropdown'].slideUp("fast");},timeout);return new DropdownInterface(size++);};var raise=function(index){if(sliding)
return;sliding=true;manager[index]['analytic'].custom('close',null);async_loop(condition,function(){if(focus==index)
focus=-1;var instance=manager[index];var pre=instance['pre_raise'];var post=instance['post_raise'];if(instance['toggle']){pre=instance['pre_toggle'];post=instance['post_toggle'];}
pre();instance['dropdown'].slideUp("slow",function(){post();sliding=false;});});};var toggle=function(index,action){async_loop(condition,function(){if(focus==index)
raise(index);else
drop(index,action);});};var reposition=function(){if(focus==-1)
return;var widget=manager[focus]['widget'];if(widget.is(':hidden')){raise(focus);return;}
var dropdown=manager[focus]['dropdown'];var toolbar=$("div.tbToolbar-view");var widget_left=widget.position().left;var widget_width=widget.outerWidth(true);var toolbar_width=toolbar.outerWidth(true);var dropdown_width=dropdown.outerWidth(true);var scroll_bar=20;var dropdown_left=0;var dropdown_right=0;if(dropdown_width<=toolbar_width){if(manager[focus]['centered']){dropdown_left=widget_left+(widget_width-dropdown_width)/2;dropdown_right=toolbar_width-(dropdown_left+dropdown_width);}else{dropdown_left=widget_left;dropdown_right=toolbar_width-(widget_left+dropdown_width);}
dropdown_left-=scroll_bar;dropdown_right+=scroll_bar;dropdown_left=Math.max(0,Math.min(dropdown_left,toolbar_width-dropdown_width-scroll_bar));dropdown_right=Math.max(0,dropdown_right);}
if(widget.css("float")=="left")
dropdown.css('left',dropdown_left);else
dropdown.css('right',dropdown_right);};this.refactor=reposition;var drop=function(index,action){if(sliding)
return;sliding=true;if(!action)
action="click";async_loop(condition,function(){raise_all(index);focus=index;reposition();var instance=manager[index];manager[index]['analytic'].custom("click",null);var pre=instance['pre_drop'];var post=instance['post_drop'];if(instance['toggle']){pre=instance['pre_toggle'];post=instance['post_toggle'];}
pre();instance['dropdown'].slideDown("slow",function(){post();sliding=false;});});};var raise_all=function(exception){async_loop(condition,function(){for(var index in manager)
if(index!=exception&&((!manager[index]['dropdown'].is(':hidden')||index==focus))){var instance=manager[index];var pre=instance['pre_raise'];var post=instance['post_raise'];if(instance['toggle']){pre=instance['pre_toggle'];post=instance['post_toggle'];}
pre();instance['dropdown'].slideUp("slow",function(){post();instance['analytic'].custom('close',null);});}
focus=-1;});};$(document).ready(function(){dom_initialized=true;});function DropdownInterface(index){var index=index;this.raise=function(){raise(index);};this.drop=function(action){drop(index,action);};this.toggle=function(action){toggle(index,action);};}}
