
lang.search_win={'es':{cancel:"Cancelar",search:"Buscar",title:"Búsqueda",searching:"Buscando",no_results:"No hay resultados"},'en':{cancel:"Cancel",search:"Search",title:"Search",searching:"Searching",no_results:"No results found"}};search_browser={};SearchBrowser=Class.create();SearchBrowser.prototype={initialize:function(root,url,app,options){this.options=options||{};if(this.options.type!='page'){this.app=app;this.id='search_win';this.self=$(this.id);this.form=$('search_form');this.wrapper=$('search_form_wrapper');this.tab_holder=$('search_tabs');this.results_holder=$('search_results');this.btn={};this.btn.cancel=new ButtonComponent(this,'search_btn_cancel','../../../view/theme/'+theme+'/media/shared/icon_cancel.gif',lang.search_win[cur_lang].cancel);this.btn.search=new ButtonComponent(this,'search_btn_search','../../../view/theme/'+theme+'/media/shared/icon_search.gif',lang.search_win[cur_lang].search);var stat_col=this.options.color||status_color;this.status=new StatusComponent('search_status',stat_col);this.errcount=0;this.initAjax(root+'/'+url);this.init_query='';var me=this;page_init.scripts.search=function(){me.injectBehaviours();};}},injectBehaviours:function(){$(this.id+'_title').innerHTML=lang.search_win[cur_lang].title;this.btn.cancel.setAction(this.closeBrowser.bind(this));this.btn.search.setAction(this.setupQuery.bind(this));this.form.onkeydown=this.quickSearchTrigger.bindAsEventListener(this,'search_form');},initAjax:function(url){ajaxEngine.registerRequest(this.id+'_request',url);ajaxEngine.registerAjaxObject(this.id+'_init',this);ajaxEngine.registerAjaxObject(this.id+'_query',this);},callRicoAjaxEngine:function(callParams){var additionalParams=this.options.requestParameters||[];for(var i=0;i<additionalParams.length;i++)callParams.push(additionalParams[i]);if(console)console.log('PARAMS: '+callParams);ajaxEngine.sendRequest.apply(ajaxEngine,callParams);},initBrowser:function(){var callParams=[];callParams.push(this.id+'_request');callParams.push('id='+this.id);callParams.push('cmd=InitBrowser');this.callRicoAjaxEngine(callParams);},query:function(module,opts){this.status.show(lang.search_win[cur_lang].searching+' '+module.queue[module.cur_search]+'...');var callParams=[];callParams.push(this.id+'_request');callParams.push('id='+this.id);callParams.push('cmd=Query');callParams.push('type='+module.code);callParams.push('index='+module.queue[module.cur_search]);ApexUtil.extractForm(this.form,callParams);this.callRicoAjaxEngine(callParams);},setupQuery:function(){var module=this.modules[this.cur_tab];this.errcount=0;for(var i=0;i<this.slength;i++){module.cur_search=i;this.query(module);}
this.results_holder.innerHTML='';},ajaxUpdate:function(ajaxResponse){switch(ajaxResponse.getAttribute('id')){case this.id+'_init':this.handleInit(ajaxResponse);break;case this.id+'_query':this.handleQuery(ajaxResponse);break;}},handleInit:function(ajaxResponse){this.tabs=[];this.modules=[];this.cur_tab=0;this.tab_holder.innerHTML='';this.wrapper.innerHTML='';var searchTypes=ajaxResponse.getElementsByTagName('searchtype');if(console)console.log('Found '+searchTypes.length+' search types');var index=0;for(var i=0;i<searchTypes.length;++i){var stype=searchTypes[i];var searches=stype.getElementsByTagName('search');if(searches.length){var code=stype.getAttribute('code');var div=document.createElement('div');div.id='tab_search_'+code;div.className="search_tab";var span=document.createElement('span');span.innerHTML=RicoUtil.getContentAsString(stype.getElementsByTagName('name')[0]);div.appendChild(span);this.tab_holder.appendChild(div);this.tabs.push(new SearchTab(this,div,index));var form_str=RicoUtil.getContentAsString(stype.getElementsByTagName('searchform')[0]);var info={code:code,form:form_str,queue:[],cur_search:0,results:null};this.slength=searches.length;for(var j=0;j<searches.length;++j){if(searches[j].getAttribute('id')!=this.app){info.queue.push(searches[j].getAttribute('id'));}else{info.queue.unshift(searches[j].getAttribute('id'));}}
if(console)console.log('Queue '+info.code+': '+info.queue);this.modules.push(info);index++;}}
this.tabs[this.cur_tab].show();if(this.init_query){this.setQueryString(this.init_query);this.setupQuery();this.init_query='';}
this.self.style.visibility='hidden';this.self.style.display='';this.centerPane();this.self.style.display='none';this.self.style.visibility='';var effect=new Effect.Appear(this.self,{duration:0.5,transition:Effect.Transitions.linear,from:0.0,to:1.0});},updateDisplay:function(index){var module=this.modules[index];this.wrapper.innerHTML=module.form;},handleQuery:function(ajaxResponse){this.status.hide();var error=ajaxResponse.getElementsByTagName('error')[0];if(error){this.errcount++;var code=error.getAttribute('code');switch(code){case"910":if(console)console.log('ERROR CODE: '+code);break;}
if(this.errcount==this.slength){this.status.show(lang.search_win[cur_lang].no_results,'error');}}else{var results=ajaxResponse.getElementsByTagName('results')[0];this.results_holder.innerHTML+=RicoUtil.getContentAsString(results);var me=this;new Effect.Size(this.results_holder.id,null,315,100,25,{onstep:function(){me.centerPane();}});this.results_holder.style.display='';}},show:function(init_query){screen_overlay.show();screen_overlay.parent=this;if(init_query){this.init_query=init_query;}
if(!this.modules){this.initBrowser();}else{var effect=new Effect.Appear(this.self,{duration:0.5,transition:Effect.Transitions.linear,from:0.0,to:1.0});if(this.init_query){this.setQueryString(this.init_query);this.setupQuery();this.init_query='';}}},closeBrowser:function(){screen_overlay.hide();},hide:function(){this.self.style.display='none';},centerPane:function(){var w=this.self.offsetWidth;var h=this.self.offsetHeight;var left=((screen_overlay.arrayPageSize[2]-w)/2);var top=((screen_overlay.arrayPageSize[3]-h)/2);this.self.style.top=(top<0)?"0px":top+"px";this.self.style.left=(top<0)?"0px":left+"px";},setQueryString:function(str){if(str){var module=this.modules[this.cur_tab];var code=module.code;var elmt=$('query_input_'+code);elmt.value=str;}},evalScripts:function(div){var scripts=div.getElementsByTagName('script');for(var i=0;i<scripts.length;++i){var script=scripts[i];if(script.getAttribute('type')=='text/javascript'){var code=RicoUtil.getContentAsString(script);if(console)console.log(code);eval(code);}}},showMore:function(div){this.div=$(div);if(this.div.style.display=='none'){this.div.style.display='';}else{this.div.style.display='none';}},quickSearchTrigger:function(e,id){if(e.keyCode==13){if(id!='search_form'){if(this.options.type=='page'){self.location=this.options.target+'?ref='+this.options.app+'&q='+id;}else{search_browser.show($(id).value);}}else{this.setupQuery();}}},expand:function(id){$(id+'_all').style.display='none';$(id+'_top').style.display='';var items=$(id+'_items_all');if(items){var effect=Effect.BlindDown(items);}},collapse:function(id){$(id+'_all').style.display='';$(id+'_top').style.display='none';var items=$(id+'_items_all');if(items){var effect=Effect.BlindUp(items);}}};SearchTab=Class.create();SearchTab.prototype={initialize:function(parent,elmt,index){this.index=index;this.parent=parent;this.self=elmt;this.self.onclick=this.tabClick.bindAsEventListener(this);this.self.onmouseover=this.tabOver.bindAsEventListener(this);this.self.onmouseout=this.tabOut.bindAsEventListener(this);},tabClick:function(e){this.self.style.cursor='';this.show();},tabOver:function(e){this.self.style.cursor='pointer';},tabOut:function(e){this.self.style.cursor='';},show:function(){if(this.index!=this.parent.cur_tab){this.parent.tabs[this.parent.cur_tab].hide();}
this.self.className=ApexUtil.addClass(this.self,"on");this.parent.cur_tab=this.index;this.parent.updateDisplay(this.index);},hide:function(){this.self.className=ApexUtil.removeClass(this.self,"on");}}