
var InfoPopups=new Class({Implements:Options,links:null,options:{defaultTarget:'bomcheck_infowin',width:700,height:580,location:false,toolbar:false,menu:false},initialize:function(links,options){this.setOptions(options);this.links=$$(links);this.links.each(function(link){var options=link.get('rel');if(options){options=JSON.decode(options);}
link.addEvent('click',this.showPopup.bindWithEvent(this,[link,options]));},this);},showPopup:function(event,link,options){options=$merge(this.options,options);var target=$pick(link.get('target'),options.defaultTarget);var windowSize=window.getSize();if(options.width=='large'){var width=windowSize.x*0.9;if(width>1024){width=1024;}}else{var width=options.width;}
if(options.height=='large'){var height=windowSize.y*0.9;}else{var height=options.height;}
var left=(windowSize.x-width)/2+window.screenX;var top=(windowSize.y-height)/2+window.screenY;var win=window.open(link.href+'?format=popup',target,'toolbar='+(options.toolbar?'1':'0')+',scrollbars=1,'+'location='+(options.location?'1':'0')+',statusbar=0,'+'menubar='+(options.menu?'1':'0')+',resizable=1,'+'width='+width+',height='+height+'top='+top+',left='+left);win.focus();event.stop();}});var QuickSearch=new Class({resultPane:null,searchBox:null,hiddenInput:null,searchString:'',searchBoxFocused:null,searchType:null,minSearchStringLength:null,request:null,requestInProgress:false,lastRequestTime:0,limit:10,page:1,pageCount:null,requestPage:0,lookupDelay:300,results:[],cursorPosition:0,resultHandler:null,doSearch:false,hideTimer:null,spinner:null,selected:false,requireExactMatch:false,colour:null,defaultColour:'',optionColour:'orange',statusCheckbox:null,infoDiv:null,initialize:function(searchBox,resultPaneWidth,searchType,requireExactMatch,minSearchStringLength,resultHandler,valueFieldName,statusCheckbox){var clearDiv=new Element('div',{'style':'clear:both;visibility:hidden;'});clearDiv.inject(searchBox,'after');var resultPane=new Element('div');resultPane.set('class','auto-complete-dropdown');resultPane.setStyle('width',resultPaneWidth+'px');resultPane.inject(clearDiv,'after');this.resultPane=resultPane;if($defined(valueFieldName)){var input=resultPane.getNext();if($defined(input)&&input.get('type')=='hidden'&&input.get('name')==valueFieldName){hiddenInput=input;}
else{var hiddenInput=new Element('input');hiddenInput.set('name',valueFieldName);hiddenInput.set('type','hidden');hiddenInput.set('value','');hiddenInput.inject(resultPane,'after');}
this.hiddenInput=hiddenInput;}
if($defined(valueFieldName)){this.statusCheckbox=statusCheckbox;}
this.searchBox=searchBox;this.searchType=searchType;this.requireExactMatch=requireExactMatch;this.minSearchStringLength=minSearchStringLength;this.resultHandler=resultHandler;this.spinner=new Element('div',{'class':'autocomplete-spinner'}).injectBefore(this.resultPane);this.request=new Request.HTML({format:'raw',url:SITEURL+'/parts/autocompletesearch',update:this.resultPane,onComplete:this.loadResults.bind(this),link:'cancel'});this.searchBox.addEvent('keydown',this.doKeyControl.bindWithEvent(this));this.searchBox.addEvent('keydown',this.doQuickSearch.bindWithEvent(this));this.searchBox.addEvent('keyup',this.doDelayedQuickSearch.bindWithEvent(this));this.searchBox.addEvent('focus',this.focusSearchBox.bindWithEvent(this));this.searchBox.addEvent('blur',this.blurSearchBox.bindWithEvent(this));this.spinner.addEvent('click',function(event){$clear(this.hideTimer);event.stop();this.doSearch=null;this.searchBox.focus();}.bindWithEvent(this));if(this.resultHandler.hasInfo){this.infoDiv=new Element('div',{'style':'display: none; min-width: 185px; border: 1px solid red; background: rgb(255,255,153); padding: 5px; position: absolute; z-index: 5;'}).injectAfter(this.resultPane);this.searchBox.addEvent('mouseover',function(){if(this.infoDiv.get('html')!=''&&this.resultPane.getStyle('display')!='block'){this.infoDiv.setStyle('display','block');this.searchBox.addClass('cursor-help');}}.bind(this));this.searchBox.addEvent('mouseout',function(){if(this.infoDiv.getStyle('display')=='block'){this.infoDiv.setStyle('display','none');this.searchBox.removeClass('cursor-help');}}.bind(this));}},focusSearchBox:function(event){this.searchBoxFocused=true;if(this.doSearch!=false&&this.doSearch!=true){this.doSearch=false;return;}
var searchString=this.getSearchString();this.openResultPane();this.showSpinner();if(this.results.length==0||this.searchString!=searchString){this.doSearch=true;this.doQuickSearch(event);}
if(this.requireExactMatch){this.searchBox.removeClass('not-exact-match');}},blurSearchBox:function(event){this.searchBoxFocused=false;this.delayedHideResults();this.validateSearchBoxValue();},getSearchString:function(){return this.searchBox.value.clean().trim();},doQuickSearch:function(event){if(event.key!='enter'&&event.type!='click'&&event.type!='focus'&&this.searchString!=this.getSearchString()){this.selected=false;if(this.resultHandler.hasOptions){this.toggleOptions(null,null);}
if(this.resultHandler.hasInfo){this.infoDiv.set('html','');}
if($defined(this.hiddenInput)){this.hiddenInput.value='';}}
var time=$time();var searchString=this.getSearchString();if((((this.searchString!=searchString&&searchString.length>=this.minSearchStringLength)||this.doSearch||(event.key=='down'&&this.cursorPosition==0&&this.results.length==0&&!this.requestInProgress))&&(this.lastRequestTime==0||time-this.lastRequestTime>this.lookupDelay))){var requestString='type='+this.searchType+'&search='+encodeURIComponent(searchString)+'&exact='+(this.selected?'1':'0')+'&require='+(this.requireExactMatch?1:0);if(this.requestPage!=0){requestString+='&page='+this.requestPage;}
this.request.send(requestString);if(searchString!=this.searchString&&!this.selected){this.resultPane.setStyle('display','block');}
this.requestInProgress=true;this.searchString=searchString;this.lastRequestTime=time;this.cursorPosition=0;this.doSearch=false;this.requestPage=0;this.showSpinner();}},showSpinner:function(){if(this.requestInProgress&&this.resultPane.getStyle('display')=='block'){if(this.resultPane.clientHeight<50){var paddingDiv=new Element('div',{style:'height:'+(50-this.resultPane.clientHeight)+'px'});paddingDiv.inject(this.resultPane);}
var height=this.resultPane.offsetHeight-3;this.spinner.setStyles({'width':this.resultPane.offsetWidth-2,'height':height,'display':'block','opacity':0.8});}},doDelayedQuickSearch:function(event){var delay=this.lookupDelay+1000;if(event.type!='keyup'){this.doSearch=true;}
this.doQuickSearch.delay(delay,this,event);},completeSearchString:function(){if(this.results.length>=1){for(var i=0;i<this.results.length;i++){if($defined(this.hiddenInput)&&this.hiddenInput.get('value')==this.resultHandler.getSubstanceId(this.results[i])){this.selectResult(this.results[i],0);break;}}}
if(this.requireExactMatch){this.validateSearchBoxValue();}},openResultPane:function(){this.resultPane.setStyle('display','block');if(this.resultHandler.hasInfo){this.searchBox.fireEvent('mouseout');}},loadResults:function(){var redirect=this.resultHandler.getRedirect(this.resultPane);if($defined(redirect)){window.location.href=redirect;}
this.requestInProgress=false;var results=this.resultHandler.getResults(this.resultPane);if(this.results!=results){results.each(function(result){result.addEvent('mouseover',function(){this.toggleResultHighlighting(result,true);if(this.cursorPosition>=1&&this.cursorPosition<=this.results.length){this.toggleResultHighlighting(this.results[this.cursorPosition-1],false);this.cursorPosition=0;}}.bind(this));result.addEvent('mouseout',function(){this.toggleResultHighlighting(result,false);if(this.cursorPosition>=1&&this.cursorPosition<=this.results.length){this.toggleResultHighlighting(this.results[this.cursorPosition-1],false);this.cursorPosition=0;}}.bind(this));result.addEvent('click',function(event){this.selectResult(result,1);this.doDelayedQuickSearch(event);}.bind(this));}.bind(this));this.results=results;}
if(!this.searchBoxFocused){if(!this.requestInProgress){this.completeSearchString();}}
else if(this.spinner.getStyle('display')=='block'){this.spinner.setStyle('display','none');}
this.page=this.resultHandler.getPage(this.resultPane);this.pageCount=this.resultHandler.getPageCount(this.resultPane);var pagination=this.resultHandler.getPagination(this.resultPane);if($defined(pagination)){this.resultHandler.getLeftArrow(this.resultPane).addEvent('click',function(event){$clear(this.hideTimer);event.stop();if(this.page>1){this.requestPage=this.page-1;this.doSearch=true;this.doQuickSearch(event);}
this.doSearch=null;this.searchBox.focus();}.bindWithEvent(this));this.resultHandler.getRightArrow(this.resultPane).addEvent('click',function(event){$clear(this.hideTimer);event.stop();if(this.page<this.resultHandler.getPageCount(this.resultPane)){this.requestPage=this.page+1;this.doSearch=true;this.doQuickSearch(event);}
this.doSearch=null;this.searchBox.focus();}.bindWithEvent(this));this.resultHandler.getPageBox(this.resultPane).addEvent('focus',function(event){$clear(this.hideTimer);}.bindWithEvent(this));this.resultHandler.getPageBox(this.resultPane).addEvent('keydown',function(event){if(event.key=='enter'){event.preventDefault();this.resultHandler.getPageButton(this.resultPane).focus();}}.bindWithEvent(this));this.resultHandler.getPageBox(this.resultPane).addEvent('keyup',function(event){var disabled=true;var page=this.resultHandler.getPage(this.resultPane);if(page>=1&&page<=this.pageCount){disabled=false;}
this.resultHandler.getPageButton(this.resultPane).disabled=disabled;}.bindWithEvent(this));this.resultHandler.getPageButton(this.resultPane).addEvent('click',function(event){var page=this.resultHandler.getPage(this.resultPane);if(page==this.page){$clear(this.hideTimer);event.stop();this.doSearch=null;this.searchBox.focus();}
else{this.requestPage=page;this.doSearch=true;this.doQuickSearch(event);this.doSearch=null;this.searchBox.focus();}}.bindWithEvent(this));}},hideResults:function(){this.resultPane.setStyle('display','none');if(this.cursorPosition>0&&this.cursorPosition<=this.results.length){this.toggleResultHighlighting(this.results[this.cursorPosition-1],false);this.cursorPosition=0;}
if(this.spinner.getStyle('display')=='block'){this.spinner.setStyle('display','none');}},delayedHideResults:function(){this.hideTimer=this.hideResults.delay(300,this);},selectResult:function(result,flag,event){this.selected=true;this.searchBox.removeClass('not-exact-match');this.searchBox.value=this.resultHandler.getResultValue(result);if($defined(this.hiddenInput)){this.hiddenInput.value=this.resultHandler.getHiddenValue(result);}
this.hideResults();if(this.resultHandler.hasInfo){var substanceInfo=this.resultHandler.getSubstanceInfo(result,this.hiddenInput);this.infoDiv.set('html',substanceInfo);}
if(this.resultHandler.hasOptions){this.toggleOptions(result,flag);}},toggleOptions:function(result,flag){if(this.searchString!=this.getSearchString()||!this.selected||flag){var colour=this.defaultColour;var substanceCategoryIds;if($defined(result)){colour=this.resultHandler.getResultColour(result);substanceCategoryIds=this.resultHandler.getSubstanceCategoryIds(result);}
this.searchBox.setStyle('color',colour);var disabled;if($defined(substanceCategoryIds)){disabled=false;this.statusCheckbox.set('value',substanceCategoryIds);}
else{disabled=true;}
this.statusCheckbox.set('disabled',disabled);this.statusCheckbox.fireEvent('click',this.statusCheckbox);}},toggleResultHighlighting:function(result,over){this.resultHandler.toggleResultBackground(result,over);},doKeyControl:function(event){if(event.code==9){this.hideResults();return;}
if(event.key=='esc'){if(this.cursorPosition==0){this.hideResults();}
else if(this.cursorPosition<=this.results.length){this.toggleResultHighlighting(this.results[this.cursorPosition-1],false);this.cursorPosition=0;}}
else if(event.key=='up'){if(this.cursorPosition==0){this.hideResults();}
else if(this.cursorPosition>0){this.cursorPosition--;this.toggleResultHighlighting(this.results[this.cursorPosition],false);if(this.cursorPosition>0){this.toggleResultHighlighting(this.results[this.cursorPosition-1],true);}}}
else if(event.key=='down'){if(this.resultPane.getStyle('display')=='none'){var searchString=this.getSearchString();if(this.requestInProgress){this.openResultPane();this.showSpinner();}else if(this.results.length>0&&this.searchString==searchString){this.openResultPane();}
else if(this.searchString!=searchString){this.doQuickSearch(event);}}
else if(!this.requestInProgress&&this.cursorPosition<this.results.length){this.cursorPosition++;if(this.cursorPosition>1){this.toggleResultHighlighting(this.results[this.cursorPosition-2],false);}
this.toggleResultHighlighting(this.results[this.cursorPosition-1],true);}}
else if(event.key=='enter'){event.preventDefault();if(this.cursorPosition>0){this.selectResult(this.results[this.cursorPosition-1],1);this.doDelayedQuickSearch(event);}}
else if(event.code==33||(event.key=='left'&&this.cursorPosition>0)){if(this.page-1>=1){if(this.resultPane.getStyle('display')!='block'){this.openResultPane();}
this.requestPage=this.page-1;this.doSearch=true;this.doQuickSearch(event);this.doSearch=null;this.searchBox.focus();}}
else if(event.code==34||(event.key=='right'&&this.cursorPosition>0)){if(this.page+1<=this.resultHandler.getPageCount(this.resultPane)){if(this.resultPane.getStyle('display')!='block'){this.openResultPane();}
this.requestPage=this.page+1;this.doSearch=true;this.doQuickSearch(event);this.doSearch=null;this.searchBox.focus();}}},validateSearchBoxValue:function(){boxName=this.searchBox.get('name').split('[');if(this.getSearchString()!=''&&!this.selected&&(boxName[0]!='usage')){this.searchBox.addClass('not-exact-match');}}});var ResultHandler=new Class({highlightColour:'#EEEEEE',hasInfo:false,hasOptions:false,toggleResultBackground:function(result,over){result.setStyle('background-color',over?this.highlightColour:'transparent');},getResults:function(resultPane){return resultPane.getElements('.result');},getPagination:function(resultPane){return resultPane.getElement('div.pagination');},getPageCount:function(resultPane){var pageCountElement=resultPane.getElement('div.pagination div.page span.page-count');if($defined(pageCountElement)){return pageCountElement.innerHTML.trim().toInt();}
else{return null;}},getPage:function(resultPane){var pageInputElement=resultPane.getElement('div.pagination div.page input.page-input');if($defined(pageInputElement)){return pageInputElement.value.toInt();}
else{return null;}},getPageBox:function(resultPane){return resultPane.getElement('div.pagination div.page input.page-input');},getPageButton:function(resultPane){return resultPane.getElement('div.pagination div.page input.page-button');},getLeftArrow:function(resultPane){return resultPane.getElements('div.pagination div.floatleft a.arrow');},getRightArrow:function(resultPane){return resultPane.getElements('div.pagination div.floatright a.arrow');},getControl:function(resultPane){return resultPane.getElement('div.control');},getCloseLink:function(resultPane){return resultPane.getElement('div.control a.close-ctrl');},getRedirect:function(resultPane){var redirect=resultPane.getElement('div.redirect');if($defined(redirect)){return redirect.get('html');}
else{return null;}},compareResult:function(result,searchString){var resultString=this.getResultValue(result);if(resultString.toLowerCase()==searchString.toLowerCase()){return true;}
return false;},stripStrongTag:function(html){return html.replace(/<\/{0,1}strong>/ig,'');}});var UsageResultHandler=new Class({Extends:ResultHandler,getResultValue:function(result){return this.stripStrongTag(result.getElement('div.usage-name').get('html')).trim();}});var MaterialResultHandler=new Class({Extends:ResultHandler,getResultValue:function(result){return this.stripStrongTag(result.getElement('div.material-name').get('html')).trim();}});var SubstanceResultHandler=new Class({Extends:ResultHandler,hasInfo:true,hasOptions:true,getResultValue:function(result){return this.stripStrongTag(result.getElement('div.substance-name').get('html')).trim();},getCasNumber:function(result){var casNumberElement=result.getElement('div.substance-info span.cas-number');if($defined(casNumberElement)){return this.stripStrongTag(casNumberElement.get('html')).trim();}
return null;},getSubstanceId:function(result){return result.getElement('div.substance-info input.substance-id').value;},getHiddenValue:function(result){var value=this.getSubstanceId(result);if($defined(value)){return value;}
return'';},getResultColour:function(result){return result.getElement('div.substance-name').getStyle('color');},getSubstanceCategoryIds:function(result){var substanceCategories=result.getElement('div.substance-info input.substance-category');if($defined(substanceCategories)){return substanceCategories.get('value');}
return null;},compareResult:function(result,searchString){var resultString=this.getResultValue(result);var casNumber=this.getCasNumber(result);if(resultString.toLowerCase()==searchString.toLowerCase()||casNumber==searchString){return true;}
return false;},getSubstanceTypes:function(result){var substanceListsElement=result.getElement('div.substance-info span.substance-lists');if($defined(substanceListsElement)){return substanceListsElement.get('html');}
return null;},getSubstanceLists:function(result,type){var substanceListsElement=result.getElement('div.substance-info span.'+type+'-substance-lists');if($defined(substanceListsElement)){return substanceListsElement.get('html');}
return null;},getSubstanceInfo:function(result,hiddenInput){var substanceName=this.getResultValue(result);var substanceId=this.getSubstanceId(result);var casNumber=this.getCasNumber(result);var mainSubstanceLists=this.getSubstanceLists(result,'main');var relevantSubstanceLists=this.getSubstanceLists(result,'relevant');var substanceInfo='';substanceInfo+='<div style="color:#000000;padding-bottom:3px;margin-bottom:3px;border-bottom:1px solid #000000;">';substanceInfo+='<div style="font-weight:bold">'+substanceName+'</div>';if($defined(casNumber)){substanceInfo+='<div>CAS #: '+casNumber+'</div>';}
substanceInfo+='</div>';if($defined(mainSubstanceLists)||$defined(relevantSubstanceLists)){substanceRestriction=result.getElements('div.substance-info span.main-substance-lists span.substance-list-name');substanceRestriction.each(function(restrictionspan){if(restrictionspan.get('html')=='EU RoHS 2002-95'){substanceRestriction='EU RoHS 2002-95';}});if($defined(substanceRestriction)&&(substanceRestriction=='EU RoHS 2002-95')){substanceInfo+='<input type="hidden" class ="rohsSelected" id="rohsSelected'+hiddenInput.name+'" value="exempt" >';}
if($defined(mainSubstanceLists)){substanceInfo+='<div style="font-weight:bold;">'+mainSubstanceLists.replace(/\s*,\s*/g,'<br />')+'</div>';}
if($defined(relevantSubstanceLists)){substanceInfo+='<div style="font-weight:bold;">'+relevantSubstanceLists.replace(/\s*,\s*/g,'<br />')+'</div>';}}
else{substanceInfo+='<div style="color:#000000;">Not restricted</div>';}
return substanceInfo;}});