function parse_query_string(query) {
  var vars = query.split("&");
  var query_string = {};
  for (var i = 0; i < vars.length; i++) {
    var pair = vars[i].split("=");
    var key = decodeURIComponent(pair[0]);
    var value = decodeURIComponent(pair[1]);
    // If first entry with this name
    if (typeof query_string[key] === "undefined") {
      query_string[key] = decodeURIComponent(value);
      // If second entry with this name
    } else if (typeof query_string[key] === "string") {
      var arr = [query_string[key], decodeURIComponent(value)];
      query_string[key] = arr;
      // If third or later entry with this name
    } else {
      query_string[key].push(decodeURIComponent(value));
    }
  }
  return query_string;
}Ext.UrlParam=function(name)
		{
			var query = window.location.search.substring(1);
			var qs = parse_query_string(query);
			if (!(name in qs)) return null;
			var c=qs[name];
			return c;
		};Ext.ECSearch=function(cfg) { cfg.renderTo="ecsearch";this.irbDb = cfg.irbDb; cfg.bodyStyle="border: 0;"; cfg.layout="fit";this.udcsearch=new Ext.form.TextField({name:"udcsearch", value:"",width:200});this.udcsearchbutton=new Ext.Button({text:"Поиск по рубрикам...", iconCls:"irb-search",name:"udcsearchbutton",handler:function()
                     {
                       var v=this.udcsearch.getRawValue();
                       if (v=="") { this.udctree.setRootNode({ nodeType: "async", text: "Поиск по УДК", draggable: false, id: "source"}); }
                       else
                       {
                         this.udctree.setRootNode({ nodeType: "async", text: "Результаты поиска по термину "+v, draggable: false, id: "search",loader:new Ext.tree.TreeLoader({dataUrl:"?id=WIrbis&action=ATHRU/GetUdcNodes&db=ATHRU&term="+v})});
                         this.udctree.getRootNode().expand();
                       }
                     },scope:this});
this.udctree = new Ext.tree.TreePanel({ autoHeight:true,useArrows: true, hidden:true, autoScroll: true, animate: true, enableDD: true, containerScroll: true, layout:"fit", border: false, title:"УДК", dataUrl: "?id=WIrbis&action=ATHRU/GetUdcNodes&db=ATHRU",
                       tbar:[this.udcsearch,this.udcsearchbutton], root: { nodeType: "async", text: "Поиск по УДК", draggable: false, id: "source"}});this.grntisearch=new Ext.form.TextField({name:"grntisearch", value:"",width:200});this.grntisearchbutton=new Ext.Button({text:"Поиск по рубрикам...", iconCls:"irb-search",name:"grntisearchbutton",handler:function()
                     {
                       var v=this.grntisearch.getRawValue();
                       if (v=="") { this.grntitree.setRootNode({ nodeType: "async", text: "Поиск по ГРНТИ", draggable: false, id: "source"}); }
                       else
                       {
                         this.grntitree.setRootNode({ nodeType: "async", text: "Результаты поиска по термину "+v, draggable: false, id: "search",loader:new Ext.tree.TreeLoader({dataUrl:"?id=WIrbis&action=GRNTI/GetGrntiNodes&termdb="+this.irbDb+"&db=HELP&term="+v})});
                         this.grntitree.getRootNode().expand();
                       }
                     },scope:this});
this.grntitree = new Ext.tree.TreePanel
                  ({
                     autoHeight:true,useArrows: true, autoScroll: true, animate: true, enableDD: true,
                     containerScroll: true, layout:"fit", border: false,
                     tbar:[this.grntisearch,this.grntisearchbutton],
                     title:"ГРНТИ",
                     dataUrl: "?id=WIrbis&action=GRNTI/GetGrntiNodes&termdb="+this.irbDb,
                     root: { nodeType: "async", text: "Поиск по ГРНТИ", draggable: false, id: "source"}
                  });this.complexRegion=new WIrbis.SearchSelector
			({
				fieldLabel:"Область поиска",
				value:"",
				submitValue: false,
				layout:"anchor",
				anchor:"98%",
				irbDb:"KSHI",
				listeners:
				{
					select: function (combo, record, index)
					{
						this.complexTerm.setPrefix(record.data.Pref, record.data.Menu);
					},
					keyup: function (field, event) {
						if (event.getKey() == 113) {
							this.complexTerm.setPrefix(field.getRawValue(), "");
							return;
						}
					},
					scope: this
				}
            });this.complexTerm  = new WIrbis.SearchField
			({
				irbDb: "KSHI",
				pref: "K=",
				submitValue: false,
				layout:"anchor",
				anchor:"98%",
				fieldLabel:"Термин",
				value:"",
				listeners:
				{
					select: function (_combo, record, _index)
					{
						if (!this.complexQuery.isDirty()) {
							var newQuery = "\"" + this.complexRegion.getValue() + record.get("key") + this.complexUs.getValue() + "\"";
							if (String(this.complexQuery.originalValue) === "") {
								this.complexQuery.setRawValue(newQuery);
							} else {
								this.complexQuery.setRawValue("(" + this.complexQuery.originalValue + ")*(" + newQuery + ")");
							}
						}
					},
					scope: this
				}
			});this.complexQuery = new Ext.form.TextArea({ layout:"anchor", flex:10,anchor:"98%",fieldLabel:"Комплексный поисковый запрос", name:"query", value:cfg.query });this.complexUs    = new Ext.form.ComboBox({
					mode: "local",
					editable:false,
					value:"$",
					flex: 1,
					submitValue: false,
                    store: new Ext.data.ArrayStore({id: 0,fields: ["myId","displayText"],data: [ ["", "Без усечения"], ["$", "Усечение справа"], ["@", "Морфология"] ] }),
                    valueField: "myId", displayField: "displayText",lazyRender: true,
					forceSelection: true, triggerAction: "all"
                  });this.applyComplexLogic=function(logic)
            {
				var prefix   = this.complexRegion.getValue();
				var term     = this.complexTerm.getValue();
				var query    = this.complexQuery.getRawValue();
				var fullterm = "\"" + prefix + term + this.complexUs.getValue() + "\"";
				if (term === "" || query.indexOf(fullterm) !== -1) {
					return;
				}
				this.complexTerm.clearValue();
				query = "(" + query + ")" + logic + "(" + fullterm + ")";
				this.complexQuery.setRawValue(query);
            };
this.extsearchtab = new Ext.Panel
			({
			 defaults: { layout: "form"},
			 layout: "fit",
			 autoHeight:true,
			 border: false,
             title:"Профи",
             items:[
               this.complexRegion,
               this.complexTerm,
               new Ext.form.CompositeField
               ({
                 layout:"anchor", anchor:"98%", name:"fldCompositeExtSearchLogic", fieldLabel:"Добавить с использованием логики",
                 items:
                 [
                  {xtype:"button",  text: "И", iconCls:"irb-log-and", flex:1,name:"btnAnd" ,handler:function(a,b){this.applyComplexLogic("*");},scope:this},
                  {xtype:"button",  text: "ИЛИ",iconCls:"irb-log-or", flex:1,name:"btnOr", handler: function(a,b){this.applyComplexLogic("+");},scope:this },
                  {xtype:"button",  text: "И НЕ", iconCls:"irb-log-not", flex:1,name:"btnNot", handler: function(a,b){this.applyComplexLogic("^");}, scope: this },
                  {xtype:"label",text:"Усечение: "},
                  this.complexUs
                 ]
               }),
               this.complexQuery
             ]});this.specialKeyEvent=function(fld,evt) { if (evt.getKey() == evt.ENTER) { this.doSearch(); } };
this.iamsearchfield=new WIrbis.SearchField({ irbDb:cfg.irbDb, spaceisnew:1, pref:"DS=", layout:"anchor", flex:10,anchor:"98%", name:"ftexpression", value:"" });this.simplesearchpanel=new Ext.Panel({ autoHeight:true,layout:"fit",bodyStyle: "padding-top:15px; border: 0;", defaults: { layout:"anchor",anchor:"98%"},labelWidth:150,  title: "Расширенный", items:[new WIrbis.SearchField({irbDb:cfg.irbDb, pref:"A=", Menu:"",fieldLabel:"Автор", name:"simples[A=][]", inputValue:"", value:""}),new WIrbis.SearchField({irbDb:cfg.irbDb, pref:"T=", Menu:"",fieldLabel:"Заглавие", name:"simples[T=][]", inputValue:"", value:""}),new WIrbis.SearchField({irbDb:cfg.irbDb, pref:"O=", Menu:"",fieldLabel:"Издательство", name:"simples[O=][]", inputValue:"", value:""}),new Ext.form.TextField({fieldLabel:"Год издания с", name:"simples[GSTART=][]", inputValue:"", value:""}),new WIrbis.SearchField({irbDb:cfg.irbDb, pref:"GEND=", Menu:"",fieldLabel:"Год издания по", name:"simples[GEND=][]", inputValue:"", value:""}),new Ext.form.Checkbox({fieldLabel:"Наличие полного текста", name:"simples[V=][]", inputValue:"EXT", value:""}),new Ext.form.TextField({fieldLabel:"Год издания с", name:"simples[GSTART=][]", inputValue:"", value:""}),new Ext.form.TextField({fieldLabel:"Год издания по", name:"simples[GEND=][]", inputValue:"", value:""}),new WIrbis.SearchField({irbDb:cfg.irbDb, pref:"SYNCI=KATBW-", Menu:"",fieldLabel:"Поиск по шифру KATBW", name:"simples[SYNCI=KATBW-][]", inputValue:"", value:""}),new WIrbis.SearchField({irbDb:cfg.irbDb, pref:"S=", Menu:"",fieldLabel:"Предметная рубрика", name:"simples[S=][]", inputValue:"EXT", value:""}),new WIrbis.Mnu.ComboSelector({irbDb:cfg.irbDb, irbMnuName:"vd.mnu", hiddenName:"simples[V=][]", fieldLabel:"Вид/тип документа", name:"simples[V=][]", inputValue:"", value:""}),new Ext.form.Checkbox({fieldLabel:"Наличие полного текста.", name:"simples[V=][]", inputValue:"EXT", value:""})]});this.searchtabpanel=new Ext.TabPanel
 ({
   activeTab:0,
   //height:500,
   defaults: { layout: "form"},labelWidth:250,
   deferredRender: false,
   enableTabScroll: true,
   autoHeight:true,
   border:false,
   items:
   [this.simplesearchpanel,this.udctree,this.grntitree,this.extsearchtab]
 });
 this.tabpaneltit=new Ext.Panel({title:"Расширенный ", bodyStyle: "border: 0;",items:[this.searchtabpanel],collapsible:true,collapsed:false,titleCollapse:true,headerCfg:{align:"right"},layout:"anchor",anchor:"98%"});
 this.doSearch=function()
 {
  var fp=this.ecform;
  form = fp.getForm();
  var pn=fp.ownerCt;
  if (form.isValid())
  {
   if (fp.baseParams && !fp.paramsAdded)
   {
    for (i in fp.baseParams)
    {
     fp.add
     ({
       xtype: "hidden",
       name: i,
       value: fp.baseParams[i]
     });
    }
    fp.doLayout();
    fp.paramsAdded = true;
   }tree=pn.udctree; sel=tree.getChecked(); for (i=0;i=32) v=v.substr(0,v.length-32); fp.add({xtype:"hidden",name:"orsrc[]",value:"\"UDC="+v+"$\""}); }tree=pn.grntitree; sel=tree.getChecked(); for (i=0;i=32) v=v.substr(0,v.length-32); fp.add({xtype:"hidden",name:"orsrc[]",value:"\"R="+v+"$\""}); }
		if (!this.complexQuery.isDirty() && this.complexTerm.getRawValue() !== "" && this.complexRegion.getValue() !== "")
		{
			var newQuery = "\"" + this.complexRegion.getValue() + this.complexTerm.getRawValue() + this.complexUs.getValue() + "\"";
			if (String(this.complexQuery.originalValue) === "") {
				this.complexQuery.setRawValue(newQuery);
			} else {
				this.complexQuery.setRawValue("(" + this.complexQuery.originalValue + ")*(" + newQuery + ")");
			}
		}
		
   fp.doLayout();
   form.submit();
  }
 }
 this.searchButton=new Ext.Button({  text: "ПОИСК", align:"right",flex:1,iconCls:"irb-search", handler: function(a,b){this.th.doSearch();} });
 this.searchButtonFull=new Ext.form.CompositeField({fieldLabel:"", defaults: { layout: "form",flex:1 }, layout:"anchor",anchor:"98%",labelWidth:300,items:[this.iamsearchfield,this.searchButton]});
this.searchButton.th=this;
 this.iamsearchfieldfull=new Ext.form.CompositeField({fieldLabel:"Я ИЩУ", defaults: { layout: "form",flex:1 }, layout:"anchor",anchor:"98%",labelWidth:300,items:[this.iamsearchfield,this.searchButton]});
 this.ecform=new Ext.form.FormPanel
 ({
   method:"GET",
   //layout:"fit",
   bodyStyle: "padding-top:15px; border: 0;",
   autoHeight:true,
   standardSubmit:true,
   hideLabels: false,
   labelAlign: "right",
   labelWidth: 60,       // defaults to 100
   //labelPad: 8,           // defaults to 5, must specify labelWidth to be honored
   border:false,
   items:
   [
    {xtype:"hidden", name:"id", value:"EC"},
    {xtype:"hidden", name:"lf", value:"1"},
    {xtype:"hidden", name:"rc", value:"20"},
    {xtype:"hidden", name:"base[]", value:this.irbDb},
    {xtype:"hidden", name:"showHumanSrc", value:"1"},
    {xtype:"hidden", name:"allowHumanSaveSrc", value:"1"},
    {xtype:"hidden", name:"o", value:"Search"},
    this.iamsearchfieldfull,this.searchButtonFull,{xtype:"hidden", name:"profilesid_EC", value:"d9831437750783d28827ec1e523c06bc"},this.tabpaneltit
   ]
 });
 cfg.items=
 [
  this.ecform
 ];
 Ext.ECSearch.superclass.constructor.call(this,cfg);
this.ecform.ECSearchPanel=this;
};
Ext.extend(Ext.ECSearch,Ext.Panel);