+Ext.onReady(function(){
+
+ Ext.QuickTips.init();
+
+ var api = new ApiPanel();
+ var mainPanel = new MainPanel();
+
+ api.on('click', function(node, e){
+ if(node.isLeaf()){
+ e.stopEvent();
+ mainPanel.loadClass(node.attributes.href, node.id);
+ }
+ });
+
+ mainPanel.on('tabchange', function(tp, tab){
+ api.selectClass(tab.cclass);
+ });
+
+ var viewport = new Ext.Viewport({
+ layout:'border',
+ items:[ {
+ cls: 'docs-header',
+ height: 36,
+ region:'north',
+ xtype:'box',
+ el:'header',
+ border:false,
+ margins: '0 0 5 0'
+ }, api, mainPanel ]
+ });
+
+ api.expandPath('/root/apidocs');
+
+ // allow for link in
+ var page = window.location.href.split('?')[1];
+ if(page){
+ var ps = Ext.urlDecode(page);
+ var cls = ps['class'];
+ mainPanel.loadClass('output/' + cls + '.html', cls, ps.member);
+ }
+
+ viewport.doLayout();
+
+ setTimeout(function(){
+ Ext.get('loading').remove();
+ Ext.get('loading-mask').fadeOut({remove:true});
+ }, 250);
+
+});
+
+
+Ext.app.SearchField = Ext.extend(Ext.form.TwinTriggerField, {
+ initComponent : function(){
+ if(!this.store.baseParams){
+ this.store.baseParams = {};
+ }
+ Ext.app.SearchField.superclass.initComponent.call(this);
+ this.on('specialkey', function(f, e){
+ if(e.getKey() == e.ENTER){
+ this.onTrigger2Click();
+ }
+ }, this);
+ },
+
+ validationEvent:false,
+ validateOnBlur:false,
+ trigger1Class:'x-form-clear-trigger',
+ trigger2Class:'x-form-search-trigger',
+ hideTrigger1:true,
+ width:180,
+ hasSearch : false,
+ paramName : 'query',
+
+ onTrigger1Click : function(){
+ if(this.hasSearch){
+ this.store.baseParams[this.paramName] = '';
+ this.store.removeAll();
+ this.el.dom.value = '';
+ this.triggers[0].hide();
+ this.hasSearch = false;
+ this.focus();
+ }
+ },
+
+ onTrigger2Click : function(){
+ var v = this.getRawValue();
+ if(v.length < 1){
+ this.onTrigger1Click();
+ return;
+ }
+ if(v.length < 2){
+ Ext.Msg.alert('Invalid Search', 'You must enter a minimum of 2 characters to search the API');
+ return;
+ }
+ this.store.baseParams[this.paramName] = v;
+ var o = {start: 0};
+ this.store.reload({params:o});
+ this.hasSearch = true;
+ this.triggers[0].show();
+ this.focus();
+ }
+});
+
+