var VISIBLE="visible";var HIDDEN="hidden";var ASCENDING=1;var DESCENDING=-1;var doc=document;var finder=new BounceFind('finder');var results=new BounceResults('results');window.onresize=function(){ results.setWidth();finder.closeAllMenus();};Bounce.queues=[];Bounce.fadeSteps;Bounce.fadeDelay;BOUNCE.prototype.isIE6=function(){ var appVer=navigator.appVersion;if(appVer.indexOf("MSIE") > -1&&document.all){ var start=appVer.indexOf("MSIE ")+5;var ver=parseFloat(appVer.substring(start,appVer.indexOf(";",start)));if(ver < 7){ return true;}}return false;};BOUNCE.prototype.stopEvent=function(ev){ ev=(ev||window.event);if(ev){ if(ev.stopPropagation){ ev.stopPropagation();}else{ ev.cancelBubble=true;}}};BOUNCE.prototype.ajax=function(url,paramString,method,onSuccess,onError){ var req;method=method.toUpperCase();if(method=='GET'&&paramString){ url+= '?'+paramString;}if(window.XMLHttpRequest){ req=new XMLHttpRequest();}else if(window.ActiveXObject){ try { req=new ActiveXObject("Msxml2.XMLHTTP");}catch(e){ req=new ActiveXObject("Microsoft.XMLHTTP");}}req.onreadystatechange=function(){ if(req.readyState!=4){ return;}if(req.status!=200){ onError();}else{ onSuccess(req.responseText);}};req.open(method,url,true);req.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");if(req.overrideMimeType){ req.overrideMimeType('text/plain');}if(method=='POST'){ req.send(paramString);}else if(window.XMLHttpRequest){ req.send('');}else{ req.send();}};BOUNCE.prototype.fade=function(queue,el,vis){ var start=(parseFloat(el.opacity)||0);var end=(vis==VISIBLE) ? 0.99 : 0.01;var stepSize=(end-start)/this.fadeSteps;for(var i=0;i < this.fadeSteps;i++){ queue.push( function(opacity){ if(el.filters){ el.style.filter="progid:DXImageTransform.Microsoft.BasicImage(opacity="+opacity+")";}else{ el.style.opacity=opacity;}el.opacity=opacity;if(vis==VISIBLE){ el.style.visibility=VISIBLE;}},start+(stepSize *(i+1)),this.fadeDelay );}queue.push( function(v){ el.style.filter=null;if(v==VISIBLE){ el.style.opacity=el.opacity=1;}else{ el.style.visibility=HIDDEN;el.style.opacity=el.opacity=0;}},vis,this.fadeDelay );};BOUNCE.prototype.Queue=function(name,autoAdvance){ this.actions=[];this.name=name;this.autoAdvance=autoAdvance;this.timer=null;var thisQueue=this;this.push=function(func,args,delay){ this.add(func,args,false,delay);};this.unshift=function(func,args,delay){ this.add(func,args,true,delay);};this.add=function(func,args,top,delay){ if(!args){ args=[];}else if(!isArray(args)){ args=[args];}if(top){ this.actions.unshift(new Bounce.QueueAction(func,args,delay));}else{ this.actions.push(new Bounce.QueueAction(func,args,delay));}if(this.timer==null&&this.autoAdvance){ this.next();}};this.next=function(){ this.clearTimeout();if(this.actions.length > 0){ var action=thisQueue.actions.shift();if(action.delay){ this.timer=setTimeout( function(){ action.run();delete action;if(thisQueue.autoAdvance){ thisQueue.next();}},action.delay );}else{ action.run();}}};this.addPause=function(ms){ this.push(function(){true;},[],ms);};this.stop=function(){ this.clearTimeout();Bounce.queues[name]=null;};this.clearTimeout=function(){ clearTimeout(this.timer);this.timer=null;};if(Bounce.queues[name]){ Bounce.queues[name].stop();}Bounce.queues[name]=this;};BOUNCE.prototype.QueueAction=function(func,args,delay){ this.func=func;this.args=args;this.delay=delay ? delay : 1;this.run=function(){ this.func.apply(this,args);};};BOUNCE.prototype.enhance=function(el){ if(el&&typeof el=="object"){ el.unshift=function(e){ if(this.childNodes.length > 0){ this.insertBefore(e,this.childNodes[0]);}else{ this.appendChild(e);}return e;};el.hasClass=function(c){ var test=" "+this.className+" ";if(test.indexOf(" "+c+" ") > -1){ return true;}return false;};el.addClass=function(c){ if(!this.hasClass(c)){ if(this.className){ this.className=trim(this.className+" "+c);}else{ this.className=trim(c);}}};el.removeClass=function(c){ var re=new RegExp(" "+c+" ");var cName=" "+this.className+" ";this.className=trim(cName.replace(re,' '));};el.swapClass=function(old,noo){ this.removeClass(old);this.addClass(noo);};el.computeStyle=function(prop,float){ if(doc.defaultView&&doc.defaultView.getComputedStyle){ var style=doc.defaultView.getComputedStyle(this,"");if(style!=null){ value=style.getPropertyValue(prop);}}else if(this.currentStyle){ if(prop=='height'){ return this.offsetHeight;}if(prop=='width'){ return this.offsetWidth;}prop=prop.replace(/-(.)/g,function(str,m1){ return m1.toUpperCase();} );value=eval("this.currentStyle."+prop);}else{ value=null;}if(float){ value=parseFloat(value);}return value;};el.getByClassName=function(name){ var kids=this.getElementsByTagName("*");var matches=[];for(var i=0;i < kids.length;i++){ if($(kids[i]).hasClass(name)){ matches.push(kids[i]);}}return matches;};}return el;};BOUNCE.prototype.fixPngs=function(pngs,sizing){ if(!this.isIE6()){ return;}var p1="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='";var e,parent;if(!pngs){ return;}if(!isArray(pngs)){ pngs=[pngs];}for(var i=0;i < pngs.length;i++){ e=pngs[i];if(e.tagName=='IMG'&&e.src.indexOf(".png") > -1){ parent=e.parentNode;parent.removeChild(e);parent.style.filter=p1+e.src+"',sizingMethod='"+sizing+"')";}else{ var bg=e.computeStyle("background-image");var src=bg.substring(5,bg.length-2);e.style.backgroundImage='none';e.style.filter=p1+src+"',sizingMethod='"+sizing+"')";}}};BOUNCE.prototype.setCookie=function(name,value,path,saveYears){ var expire=new Date();expire.setYear(expire.getFullYear()+saveYears);expire=expire.toGMTString();var cString=escape(name)+"="+escape(value)+";expires="+expire;if(path!=null){ cString+= ";path="+path;}document.cookie=cString;};BOUNCE.prototype.getRoot=function(){ return $(doc.body||doc.documentElement);};BOUNCE.prototype.getInnerWidth=function(){ if(self.innerWidth){ return self.innerWidth;}else if(doc.documentElement&&doc.documentElement.clientWidth){ return doc.documentElement.clientWidth;}else if(doc.body&&doc.body.clientWidth){ return doc.body.clientWidth;}return 0;};BOUNCE.prototype.getInnerHeight=function(){ if(self.innerHeight){ return self.innerHeight;}else if(doc.documentElement&&doc.documentElement.clientHeight){ return doc.documentElement.clientHeight;}else if(doc.body&&doc.body.clientHeight){ return doc.body.clientHeight;}return 0;};function $(id){ var el;if(typeof(id)=="string"){ el=doc.getElementById(id);}else{ el=id;}return Bounce.enhance(el);}function twoDigit(num){ if(parseInt(num) < 10){ return "0"+num;}return num;}function trim(str){ if(!str){ return '';}else{ return str.replace(/^\s+|\s+$/g,"");}}function hex(num){ var str=Math.round(num).toString(16);if(str.length==1){ str="0"+str;}return str;}function isArray(obj){ if(typeof obj=='object'&&obj.length!=null&&obj.pop){ return true;}return false;}function escapeRegExp(text){ if(!arguments.callee.sRE){ var specials=[ '/','.','*','+','?','|','(',')','[',']','{','}','\\' ];arguments.callee.sRE=new RegExp('(\\'+specials.join('|\\')+')','g');}return text.replace(arguments.callee.sRE,'\\$1');}function BounceFind(varName){ var myself=this;this.varName=varName;this.defaultMode;this.slideDelay;this.formSlideSteps;this.optionSlideSteps;this.devMode;this.searchServer;this.queue=null;this.searchTypes=[];this.currentSearchType=null;this.init=function(){ this.queue=new Bounce.Queue(this.varName,true);var el=$('searchResultsTitle');if(el.filters){ Bounce.fadeSteps=1;Bounce.fadeDelay=1;}Bounce.fixPngs(Bounce.getRoot().getByClassName("pngImage"),"image");};this.showForm=function(){ $('search').style.display='block';doc.searchForm.Keywords.focus();};this.addSearchType=function(id,groupName,keywordsLabel,zipLabel,excludeLabel){ var sType=new this.SearchType(id,groupName,keywordsLabel,zipLabel,excludeLabel);this.searchTypes.push(sType);return sType;};this.startSearch=function(){ this.closeAllMenus();if(doc.searchForm.Keywords.value==''){ doc.searchForm.Keywords.focus();}else if($('zipArea').style.display!="none"&&doc.searchForm.Postal.value==''){ doc.searchForm.Postal.focus();}else{ this.slideForm(this.queue);if(results.entries){ Bounce.fade(this.queue,$('searchResults'),HIDDEN);}this.queue.push( function(){ if(!finder.currentSearchType.zipLabel){ doc.searchForm.Postal.value='';}doc.searchForm.submit();} );}};this.search=function(searchType,keywords,postal,exclude){ doc.searchForm.Keywords.value=keywords;doc.searchForm.Postal.value=postal;doc.searchForm.Exclude.value=exclude;$('topCover').style.display="none";$('search').style.display="block";doc.searchForm.Keywords.focus();if(results.entries){ $('searchResults').style.visibility='visible';}else{ Bounce.fade(this.queue,$('loading'),VISIBLE);results.getResults(searchType,keywords,postal,exclude);}Bounce.setCookie('group',searchType,'/',1);if(postal){ Bounce.setCookie('Postal',postal,'/',1);}};this.showMoreOptions=function(){ this.closeAllMenus();var el=$('moreOptions');var butt=$('optionsButton');var form=$('searchFormArea');var height,diff=0;var left=butt.offsetLeft+form.offsetLeft-el.computeStyle('border-left-width',true);var top=$('searchOptions').offsetHeight-10;el.style.left=left+"px";el.style.top="-1000px";el.style.display="block";height=el.offsetHeight;butt.style.backgroundImage="url("+this.imagesDir+"button_options_on.png)";this.slideY(this.queue,el,(top-height),top,this.optionSlideSteps,this.slideDelay);this.queue.push(function(){ doc.searchForm.Exclude.focus();});};this.hideMoreOptions=function(setFocus){ var el=$('moreOptions');if(el.style.display!='block'){ return;}var top=$('searchOptions').offsetHeight-10;var height=el.offsetHeight;if(setFocus){ doc.searchForm.Keywords.focus();}$('optionsButton').style.backgroundImage="url("+this.imagesDir+"button_options.png)";this.slideY(this.queue,el,top,(top-height),this.optionSlideSteps,this.slideDelay);this.queue.push(function(){ el.style.display="none";});};this.toggleMoreOptions=function(){ var el=$('moreOptions');if(el.style.display!="block"){ this.showMoreOptions();}else{ this.hideMoreOptions(true);}};this.closeAllMenus=function(){ this.hideMoreOptions();results.closeExportList();results.flipFromEmail();};this.watchForEnterKey=function(ev){ ev=(ev||window.event);if(ev.keyCode==13){ this.startSearch();}else if(ev.keyCode==9){ }};this.slideForm=function(queue){ var topCover=$('topCover');var start=topCover.offsetHeight;var step=start/this.formSlideSteps;if(start > 0){ for(var i=start;i > 0;i-=step){ queue.push( function(height){ topCover.style.height=height+"px";},i,this.slideDelay );}queue.push( function(){ topCover.style.display="none";},[],this.slideDelay );}};this.slideY=function(queue,el,start,target,steps,delay){ if(start!=target){ var step=(target-start)/steps;for(var i=0;i < steps&&i < 100;i++){ queue.push( function(top){ el.style.top=top+"px";},start+(step * i),delay );}queue.push(function(){ el.style.top=target+"px";},[],delay);}};}BounceFind.prototype.SearchType=function(id,groupName,keywordsLabel,zipLabel,excludeLabel){ var myself=this;this.id=id;this.groupName=groupName;this.keywordsLabel=keywordsLabel;this.zipLabel=zipLabel;this.excludeLabel=excludeLabel;this.el=$(this.id+"SearchType");this.el.onclick=function(){ var zipEl=$('zipArea');var keywordInput=$('keywordInput');myself.highlight();if(myself.zipLabel!=''){ zipEl.style.display="block";keywordInput.removeClass("keywordLong");keywordInput.addClass("keywordShort");}else{ zipEl.style.display="none";keywordInput.removeClass("keywordShort");keywordInput.addClass("keywordLong");}$('keywordsLabel').innerHTML=myself.keywordsLabel;$('zipLabel').innerHTML=myself.zipLabel;$('excludeLabel').innerHTML=myself.excludeLabel;setTimeout("$('keywordInput').focus()",100);};this.highlight=function(){ var kids;for(var i=0;i < finder.searchTypes.length;i++){ kids=finder.searchTypes[i].el.childNodes;for(var j=0;j < kids.length;j++){ if(kids[j].className&&kids[j].className.indexOf("activeSearchType")==0){ if(finder.searchTypes[i]==this){ kids[j].style.visibility="visible";}else{ kids[j].style.visibility="hidden";}}}if(finder.searchTypes[i]==this){ finder.searchTypes[i].el.addClass("activeSearchType");}else{ finder.searchTypes[i].el.removeClass("activeSearchType");}}doc.searchForm.group.value=this.groupName;finder.currentSearchType=this;};};function BounceResults(varName){ var myself=this;this.varName=varName;this.maxResults;this.flipSteps;this.flipDelay;this.flipDark;this.flipLight;this.baseColor;this.emailColor;this.strings;this.devMode;this.strings=[];this.sorts={};this.imagesDir='';this.feedUrl='';this.queue=null;this.imgRegExp=new RegExp("<img .*?src=[\"\'](.*?)[\"\'].*?>",'i');this.tagRegExp=new RegExp("<[A-Za-z\/][^<>]*>",'ig');this.styleRegexp=new RegExp("style=['\"]\".*?['\"]",'ig');this.ampersandRegExp=new RegExp('&amp;','g');this.title='';this.entries=null;this.monthNames=new Array("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC");this.dayNames=new Array("SUN","MON","TUE","WED","THU","FRI","SAT");this.init=function(){ var el=$('searchResultsTitle');this.queue=new Bounce.Queue(this.varName,true);this.sorts={ 'score' : new this.Sort('score',ASCENDING),'date' : new this.Sort('date',DESCENDING),'price' : new this.Sort('price',ASCENDING)};if(el.filters){ }this.setWidth();};this.clearEmailError=function(){ $('emailHelp').style.display='block';$('emailError').style.display='none';};this.exportToReader=function(readerUrl){ readerUrl=readerUrl.replace(/%1%/,escape(this.feedUrl));window.open(readerUrl,'_blank');finder.closeAllMenus();};this.toggleExportList=function(){ el=$('exportList');if(el.style.display=='block'){ this.closeExportList();}else{ this.openExportList();}};this.openExportList=function(){ finder.closeAllMenus();var el=$('exportList');this.queue.push(function(){ el.style.display='block';});Bounce.fade(this.queue,el,VISIBLE);};this.closeExportList=function(){ var el=$('exportList');if(el.style.display!='block'){ return;}Bounce.fade(this.queue,el,HIDDEN);this.queue.push(function(){ el.style.display='none';});};this.setWidth=function(){ var s=$('searchResults');var width=Bounce.getInnerWidth()-s.computeStyle('padding-left',true)-s.computeStyle('padding-right',true);s.style.width=width+"px";};this.getResults=function(searchType,keywords,postal,exclude){ var myself=this;var url=this.searchServer+"?aid=BounceFind"+"&g="+escape(searchType)+"&Keywords="+escape(keywords);if(postal&&finder.currentSearchType.zipLabel){ url+= "&Postal="+escape(postal);}if(exclude){ url+= "&Exclude="+escape(exclude);}fetcher=new Bounce.FeedFetcher(url,this.serverTimeout);fetcher.get( function(feedAssArray){ if(feedAssArray.error){ feedAssArray.title="Error";feedAssArray.entries=[ { "title" : myself.strings['title.error'],"content" : feedAssArray.error,"snippet" : feedAssArray.error} ];}else{ if(feedAssArray.entries.length > 0){ for(var i=0;i < feedAssArray.entries.length;i++){ var e=feedAssArray.entries[i];if(e.date){ dateSort=true;}if(e.price){ priceSort=true;}}}}doc.title="BounceFind: "+feedAssArray.title;myself.entries=feedAssArray.entries;myself.title=feedAssArray.entries.length+" "+myself.strings['text.results_for']+' "'+keywords+'"';myself.buildResultsHTML(feedAssArray,myself.sorts['score']);Bounce.fade(myself.queue,$('searchResults'),VISIBLE);} );};this.buildResultsHTML=function(feedAssArray,sort){ var html='';var entries=feedAssArray.entries;entries.sort(sort.getComparator());for(var i=0;i < entries.length;i++){ html+= this.getResultRowHTML(entries[i],i);}html+= "<div class='entryGap'></div>";$('searchResultsTitle').innerHTML=this.title;$("searchResultsInner").innerHTML=html;};this.getResultRowHTML=function(entry,rowNum){ var html="";html+= "<div class='entryGap'></div>"+"<div id='entryRow"+rowNum+"' class='feedEntryRow'>"+"<div class='feedEntry' id='entry"+rowNum+"'>"+"<div id='entry"+rowNum+"Inner' class='feedEntryInner'>"+this.getDateHTML(entry.date)+"<br/>";if(entry.title){ html+= "<img src='"+this.getIcon(entry.icon)+"' onerror=\"this.onerror=null;this.src='"+this.imagesDir+"icon_error_16.gif';\" class='favicon'/>";if(entry.link){ html+= "<a href='"+entry.link+"' class='entryTitle'>";}else{ html+= "<span class='entryTitle'>";}html+= entry.title;if(entry.link){ html+= "</a>";}else{ html+= "</span>";}html+= "<br/>";}if(entry.author){ html+= "<span class='entryByline'>"+this.strings['text.posted_by']+" "+entry.author+" "+"</span><br/><br/>";}else if(entry.title){ html+= "<br/>";}html+= "<div class='feedEntryBody' id='entry"+rowNum+"Body'>"+this.prepBody(entry)+"<br/><br/>";html+= "<div class='entryOptions'>";if(entry.link){ html+= this.leftLink(this.strings['link.read_more'],entry.link,rowNum);}html+= this.rightLink(this.strings['link.email_to_friend'],'icon_email.gif',"results.flipToEmail("+rowNum+");");html+= "</div>"+"</div>"+"</div>"+"</div>"+"</div>";this.html=html;return html;};this.prepBody=function(entry){ var body=(entry.content||entry.snippet);var title=(entry.title) ? entry.title.replace(this.ampersandRegExp,'&') : '';var titleRegExp=new RegExp(">"+escapeRegExp(title)+"<",'i');if(body){ body=body.replace(this.ampersandRegExp,'&');body=body.replace(this.styleRegexp,'');body=body.replace(" align="," removed=");body=body.replace(titleRegExp,'><');}return body;};this.getIcon=function(url){ return "http://icons.bouncebase.com/?i="+escape(url);};this.getDateHTML=function(date){ if(!date||!date.getDate||!date.getDate()) return '';var key=date.getFullYear()+date.getMonth()+date.getDate();var html="";html+="<div id='date"+this.objID+"' class='entryDate'>";html+="<div class='day'>"+this.dayNames[date.getDay()]+"</div>";html+="<div class='monthYear'>"+this.monthNames[date.getMonth()]+"<br/>"+this.monthDay(date.getDate())+"</div>";html+="</div>";return html;};this.formatBody=function(){ var body=trim(this.body);return body;};this.rightLink=function(label,icon,action){ var html="";html+= "<div class='entryOption'>"+"<span class='iconLink rightLink'"+" style='background-image: url("+this.imagesDir+icon+");'"+" onclick=\""+action+";Bounce.stopEvent(arguments[0]);\">";html+= label;html+= "</span></div>";return html;};this.leftLink=function(label,url,objectID){ var html="";html+= "<div class='entryOption'>"+"<a href='"+url+"' class='leftLink'\">";html+= label;html+= "</a></div>";return html;};this.monthDay=function(num){ if(num==1||num==21||num==31){ return num+"ST";}if(num==2||num==22){ return num+"ND";}if(num==3||num==23){ return num+"RD";}return num+"TH";};this.flipToEmail=function(rowNum){ this.flipFromEmail();this.clearEmailError();var queue=this.flipTo($("entryRow"+rowNum),$("entry"+rowNum),$("emailItem"),this.baseColor,this.emailColor,'emailBack','',true);queue.push( function(){ doc.bounceToFriend.from.focus();doc.bounceToFriend.title.value=myself.entries[rowNum].title;doc.bounceToFriend.body.value=(myself.entries[rowNum].content||myself.entries[rowNum].snippet);doc.bounceToFriend.url.value=myself.entries[rowNum].link;} );};this.flipFromEmail=function(rowNum){ if(rowNum==null){ var eForm=$("emailItem");var parent=$(eForm.parentNode);if(parent.hasClass('feedEntryRow')){ rowNum=parent.id.substr(8);this.flipFromEmail(rowNum);}}else{ var body=Bounce.getRoot();body.appendChild($("emailItem"));var queue=this.flipTo($("entryRow"+rowNum),$("emailItem"),$("entry"+rowNum),this.emailColor,this.baseColor,'','emailBack',false);}};this.flipTo=function(rowEl,hideEl,showEl,startColor,endColor,addClass,removeClass,darkenFirst){ var flipper=new Bounce.Queue('flipper'+rowEl.id,true);var height=rowEl.computeStyle('height',true);rowEl.style.height=height+"px";rowEl.addClass('flipping');hideEl.style.display="none";for(var i=this.flipSteps;i > 0;i--){ flipper.push(this.flipState,[rowEl,(100/this.flipSteps) * i,startColor,darkenFirst],this.flipDelay);}flipper.push( function(){ rowEl.style.width="1px";rowEl.style.marginLeft="50%";if(addClass){ rowEl.addClass(addClass);}if(removeClass){ rowEl.removeClass(removeClass);}},[],this.flipDelay );for(var i=1;i <= this.flipSteps;i++){ flipper.push(this.flipState,[rowEl,(100/this.flipSteps) * i,endColor,!darkenFirst],this.flipDelay);}flipper.push( function(){ rowEl.removeClass('flipping');rowEl.style.width="";rowEl.style.marginLeft="0px";rowEl.appendChild(showEl);showEl.style.display="block";} );return flipper;};this.flipState=function(row,percent,baseColor,darken){ var bgColor='#';var lev;row.style.width=percent+"%";row.style.marginLeft=((100-percent)/2)+"%";if(darken){ lev=((100-percent)/100) * myself.flipDark;for(var i=0;i < baseColor.length;i++){ bgColor+= hex(baseColor[i] -(lev * baseColor[i]));}}else{ lev=((100-percent)/100) * myself.flipLight;for(var i=0;i < baseColor.length;i++){ bgColor+= hex((lev *(255-baseColor[i]))+baseColor[i]);}}row.style.backgroundColor=bgColor;};this.sendToFriend=function(form){ return this.ajaxSubmit($(form));};this.ajaxSubmit=function(form){ var params="";for(var i=0;i < form.elements.length;i++){ if(form.elements[i].name){ params+= escape(form.elements[i].name)+"="+escape(form.elements[i].value);if(i+1 < form.elements.length){ params+= "&";}}}Bounce.ajax( form.action,params,form.method,function(str){ eval(str);},function(){ alert("Oh dear... an error occurred while sending data to the server.  Please try again in a few minutes.");} );return false;};}BounceResults.prototype.Sort=function(field,direction){ this.field=field;this.direction=direction;this.getComparator=function(){ var sort=this;var func=function(A,B){ if(A[sort.field]==B[sort.field]){ return 0;}return(Number(A[sort.field]) > Number(B[sort.field])) ? direction : direction * -1;};return func;};};