
var WS_SEARCH='ws/parts/search.php';var WS_COUNT='ws/parts/count.php';var COOKIE_STATE='partsearch_state';var COOKIE_QUERY='partsearch_query';var currView=null;var currPageNum=0;var searchScope=null;var lastSearchParams=null;var currCategory=0;var selectedCatLabel=null;var stateElements=['SearchScope','SearchProcess','SearchCategory','SearchKeywords','CategoryProcess'];var tabView;var catTree,supTree,root;function SearchClick()
{var params={};var keywords=$F('SearchKeywords');if(keywords!='')
params['keywords']=keywords;params['process']=$F('SearchProcess');var categoryID=$F('SearchCategory');if(categoryID!='all')
params['category']=categoryID;Search(params,0);}
function KeywordsKeyPress(e)
{var code=window.event?e.keyCode:e.which;if(code==Event.KEY_RETURN)
SearchClick();}
function SearchBarClick()
{var params={};var keywords=$F('SearchBarKeywords');if(keywords!='')
params['keywords']=keywords;params['process']=0;Search(params,0);}
function SearchBarKeyPress(e)
{var code=window.event?e.keyCode:e.which;if(code==Event.KEY_RETURN)
SearchBarClick();}
function CatNodeClick(categoryID)
{expandCategoryNode(categoryID);highlightCategoryNode(categoryID);var params={};params['category']=currCategory=categoryID;params['process']=$F('CategoryProcess');Search(params,0);}
function SupNodeClick(supplierID)
{var params={};params['sponsor']=supplierID;params['process']=$F('SuppliersProcess');Search(params,0);}
function SwitchView(view,noSearch)
{currView=view;Search(lastSearchParams.toQueryParams(),0);}
function SortResults(field,asc)
{var params=lastSearchParams.toQueryParams();params.sort=field;params.asc=asc;Search(params,0);}
function SearchScopeChanged(elem)
{searchScope=elem.value;UpdateTreeViewCounts('field=category&process='+$F('CategoryProcess'));if(lastSearchParams!=null)
{Search(lastSearchParams.toQueryParams(),0);}}
function SwitchPage(pageNum)
{Search(lastSearchParams.toQueryParams(),pageNum);}
function Search(params,pageNum)
{params.p=currPageNum=pageNum;params.v=currView;params.scope=searchScope;var newParams={};for(var x in params)
{if(params[x]!==null&&params[x]!==undefined)
newParams[x]=params[x];}
var paramsString=$H(newParams).toQueryString();lastSearchParams=paramsString;Cookie.set(COOKIE_QUERY,lastSearchParams,7);if(!params.keywords)params.keywords='';var searchBarHTML;searchBarHTML='<table class="search_bar_header" style="border-bottom: #BEC6CC solid 1px;"><tr>';searchBarHTML+='<td width="180px" style="padding-left:5px"><input id="SearchBarKeywords" name="SearchBarKeywords" type="text" value="'+params.keywords+'" style="width: 180px" onkeypress="SearchBarKeyPress(event);"></td>';searchBarHTML+='<td width="16px" style="padding-left:5px"><img style="cursor: pointer;" src="images/icons/search.png" onclick="SearchBarClick()"></td>';searchBarHTML+='<td class="search_bar_separator">|</td>';searchBarHTML+='<td width="110px;" align="center"><b>View: <font color=\"#cccccc\">Gallery&nbsp;&nbsp;&middot;&nbsp;&nbsp;List</font></b></td>';searchBarHTML+='<td class="search_bar_separator">|</td>';searchBarHTML+='<td width="150px;" align="right" style="padding-right:5px;"><b>Searching .....</b></td>';searchBarHTML+='</tr></table>';$("search_results").innerHTML=searchBarHTML;var myAjax=new Ajax.Updater('search_results',WS_SEARCH,{method:'get',parameters:paramsString});}
function expandCategoryNode(categoryId)
{var node=catTree.getNodeByProperty('uid',categoryId);if(node)
{node.parent.expand();if(node.hasChildren())
{node.expand();}}}
function highlightCategoryNode(categoryId)
{if(selectedCatLabel!=null)
{$(selectedCatLabel).removeClassName('selected');}
var node=catTree.getNodeByProperty('uid',categoryId);if(node)
{selectedCatLabel=node.getLabelEl();$(selectedCatLabel).addClassName('selected');}}
function CategoryProcessChanged()
{UpdateTreeViewCounts('field=category&process='+$F('CategoryProcess'));}
function SupplierProcessChanged()
{UpdateTreeViewCounts('field=sponsor&process='+$F('SuppliersProcess'));}
function UpdateTreeViewCounts(params)
{params+='&scope='+searchScope;var request=new Ajax.Request(WS_COUNT,{method:'get',parameters:params,onSuccess:updateTreeViewCallback});}
function updateTreeViewCallback(response)
{var data=response.responseJSON;var counts,tree;if(data.field=='categoryid')
tree=catTree;counts=data.counts;try
{var children=tree.getRoot().children;var numChildren=children.length;for(var i=0;i<numChildren;i++)
{RecursiveNodeUpdate(children[i],counts);}
tree.getRoot().refresh();highlightCategoryNode(currCategory);}
catch(e)
{}}
function RecursiveNodeUpdate(node,counts)
{var newCount=0;var id=node.data['uid'];newCount=(counts[id]===null||counts[id]===undefined)?0:counts[id];if(node.hasChildren())
{var numChildren=node.children.length;for(var i=0;i<numChildren;i++)
{newCount+=RecursiveNodeUpdate(node.children[i],counts);}}
var countStart=node.label.indexOf(' (');if(countStart==-1)
{node.label+=' ('+newCount+')';}
else
{node.label=node.label.substring(0,countStart)+' ('+newCount+')';}
return newCount;}
function savePageState()
{var state={};for(var i=0;i<stateElements.length;i++)
{state[stateElements[i]]=$F(stateElements[i]);}
state['pagenum']=currPageNum;state['categoryid']=currCategory;state['seltab']=Element.visible('categories_tpage')?'categories_tpage':'search_tpage';state['view']=currView;Cookie.set(COOKIE_STATE,Object.toJSON(state),1);}
function loadPageState(stateJson)
{if(!stateJson)
{stateJson=Cookie.get(COOKIE_STATE);if(!stateJson)
{return false;}}
var state=stateJson.evalJSON();for(var i=0;i<stateElements.length;i++)
{if(state[stateElements[i]])
{$(stateElements[i]).value=state[stateElements[i]];}}
currPageNum=state['pagenum']?state['pagenum']:0;currCategory=state['categoryid']?state['categoryid']:0;expandCategoryNode(currCategory);if(state['seltab']=='search_tpage')
{tabView.set('activeIndex',1);}
if(state['view']=='list')
{currView='list';}
return true;}
function makeStateFromQuery(paramsString)
{var params=paramsString.toQueryParams(),state={};if(params['process'])
{state['SearchProcess']=state['CategoryProcess']=params['process'];}
if(params['category'])
{state['CategoryProcess']=state['categoryid']=params['category'];}
if(params['keywords'])
{state['SearchKeywords']=params['keywords'];}
if(params['p'])
{state['pagenum']=params['p'];}
return Object.toJSON(state);}