var sbPanelWidth=190;var sbMaxBright=0.85;var sbMaxDark=0.5;var sbRotateStep=6;var sbRotateDelay=15;var sbSides=3;var menuTop=55;var menuStep=25;var menuDelay=10;var menuBtnWidth=79;var menuBtnGap=10;var menuRightAdjust=0;var sisBarTop=145;var sisBarStep=60;var sisBarDelay=10;var fadeSteps=6;var fadeDelay=10;var viewerScrollDelay=5;var viewerScrollSteps=20;var viewerScrollAdjust=20;var pollerDelay=2000;var ICU="http://icons.bouncebase.com/?i=";var scrollbarWidth=16;var access;var searchTypes=[];var bounce,bouncebase,server,topBarButtons;window.onload=init;window.onresize=fitToWindow;function init(){ var loading=new Image();loading.src=IMAGES_DIR+"bouncybouncy.gif";scrollbarWidth=$("withScrollbar").getWidth()-$("withoutScrollbar").getWidth();menuRightAdjust=scrollbarWidth+((browser.IE) ? 18 : 15);if(browser.IE){ if(browser.ver < 7){ $('topBarButtons').style.paddingTop="6px";browser.fixPng("bounceLogo","image");browser.fixPng( "topBar","sidebarTitle-myStuff","sidebarTitle-shared","sidebarTitle-search","scale" );$('shadowFiller').style.top="61px";$('shadowFiller').style.right="-1px";dom.getBody().style.backgroundImage="url("+IMAGES_DIR+"/top_bar_no_shadow_ie6.gif)";}fadeSteps=10;fadeDelay=80;}regexps=new RegExpHolder();bounce=new BounceBase(access);bouncebase=bounce;server=new Server();bounce.server=server;bounce.sidebar.draw();fitToWindow();var queue=server.cookieLogin();if(AUTOLOAD){ queue.add("bounce.autoLoad(AUTOLOAD)");}else if(AUTOSHOP){ queue.add("bounce.autoShop(AUTOSHOP)");}else if(AUTOSEARCH){ queue.add("bounce.autoFeedSearch(AUTOSEARCH)");}for(var i=0;i < searchTypes.length;i++){ bounce.searchTypeSelector.add(searchTypes[i]);}bounce.searchTypeSelector.init();}function fitToWindow(){ var splash=$('splash');$('topBar').style.width=(page.getWidth()-scrollbarWidth)+'px';bounce.sidebar.setHeight(page.getHeight());bounce.setViewerAreaSize();$('loading').style.width=$('viewer').getWidth()+"px";}function RotatingSidebar(divId){ this.div=$(divId);this.angle=0;this.radius=Math.round(Math.sqrt(Math.pow(sbPanelWidth,2)-Math.pow(sbPanelWidth/2,2)) *(2/3));this.midpoint=new Point(this.radius,0);this.corners=[];this.sides=[];this.rotater=null;this.currentSide='';this.corners=[ new Point(this.midpoint,this.radius,300),new Point(this.midpoint,this.radius,60),new Point(this.midpoint,this.radius,180) ];this.init=function(){ this.rotater=new Chain("rotater",sbRotateDelay,true);this.addSide("myStuff",0,this.corners[0],this.corners[1]);this.addSide("search",120,this.corners[2],this.corners[0],"bounce.searchTypeSelector.selected.select(true);");this.addSide("shared",240,this.corners[1],this.corners[2]);for(var j=0;j < 360;j+= sbRotateStep){ for(var i in this.sides){ this.sides[i].savePosition(this.angle);}this.turnBy(sbRotateStep);}};this.addSide=function(key,angle,a,b,onSwitch){ this.sides[key]=new SidebarSide(key,angle,new Line(a,b));if(onSwitch) this.sides[key].onSwitch=onSwitch;};this.switchTo=function(key,noDraw){ if(key==this.currentSide) return;var dest=this.sides[key].activeAngle;var dir=1;if(dest==this.angle) return;if(validAngle(this.angle -(360/sbSides))==dest){ dir=-1;}if(noDraw){ this.turnBy((360/sbSides) * dir);}else{ this.closeSisterBars();for(var i=0;i * sbRotateStep < 360/sbSides;i++){ this.rotater.add("bounce.sidebar.turnBy("+(sbRotateStep * dir)+");bounce.sidebar.draw("+this.angle+");");}this.rotater.add("bounce.sidebar.setHeight(page.getHeight());");}this.currentSide=key;};this.turnBy=function(d){ this.angle+= d;this.angle=validAngle(this.angle);for(var i=0;i < this.corners.length;i++){ this.corners[i].setAngle(this.corners[i].angle+d);}};this.draw=function(){ for(var i in this.sides){ this.sides[i].draw(this.angle);}};this.setHeight=function(height){ this.div.style.height=height+"px";for(var i in this.sides){ this.sides[i].setHeight(height);}};this.closeSisterBars=function(){ for(var i in this.sides){ if(this.sides[i].sister) this.sides[i].sister.close();}};this.init();}function SidebarSide(name,angle,line){ this.name=name;this.activeAngle=angle;this.line=line;this.div=$("sidebar-"+name);this.baseColor=this.div.css.getColor('background-color');this.innerDiv=this.div.getChild('div','sidebarSideInner');this.title=this.div.getChild('div','sidebarTitle');this.titleText=this.title.childNodes[0];this.positions=[];this.hiddenInner=false;this.text=$("sidebarText-"+name);this.sister=this.group=this.onSwitch=null;this.isVisible=function(){ if(this.line.a.getY() > 0||this.line.b.getY() > 0){ var maxY=Math.max(this.line.a.getY(),this.line.b.getY());var minY=Math.min(this.line.a.getY(),this.line.b.getY());if(maxY+minY > 0) return true;}return false;};this.init=function(){ this.div.style.backgroundColor=this.baseColor.toString();if(this.text) this.text.style.color=this.baseColor.darken(0.8).toString();};this.draw=function(sidebarAngle){ var pos=this.positions["a:"+sidebarAngle];if(pos.visible){ if(this.div.style.display!="block") this.div.style.display="block";this.div.style.width=pos.width;this.div.style.left=pos.left;this.div.style.backgroundColor=pos.color;if(pos.width==sbPanelWidth+"px"){ if(this.hiddenInner){ this.hiddenInner=false;this.div.push(this.innerDiv);this.title.push(this.titleText);}this.setHeight(page.getHeight());if(this.onSwitch) eval(this.onSwitch);}else if(!this.hiddenInner){ this.hiddenInner=true;this.innerDiv=dom.remove(this.innerDiv);this.titleText=dom.remove(this.titleText);}}else{ if(this.div.style.display=="block") this.div.style.display="none";}};this.savePosition=function(sidebarAngle){ var pos=new SidebarPosition();if(this.isVisible()){ var aX=this.line.a.getX();var aY=this.line.a.getY();var bX=this.line.b.getX();var bY=this.line.b.getY();var maxX=Math.max(aX,bX);var minX=Math.min(aX,bX);var visWidth=maxX-minX;var relWidth=visWidth/(sbPanelWidth);pos.width=visWidth+"px";pos.left=minX+"px";if(relWidth==1){ pos.color=this.baseColor.toString();}else{ if((aX < bX&&aY > bY) ||(aX > bX&&aY < bY)){ pos.color=this.baseColor.darken(1-relWidth,sbMaxDark).toString();}else{ pos.color=this.baseColor.lighten(1-relWidth,sbMaxBright).toString();}}}else{ pos.visible=false;}this.positions["a:"+sidebarAngle]=pos;};this.setHeight=function(height){ this.div.style.height=height+"px";if(this.sister) this.sister.setHeight();if(this.onResize) this.onResize(height);};this.setSister=function(id){ this.sister=new SisterBar(id,this);this.sister.setColor(this.baseColor);};this.init();}function SidebarPosition(){ this.visible=true;this.left="";this.width="";this.color="";}function SisterBar(div){ this.div=$(div);this.list=this.div.getChild('div','sisterBarList');this.title=this.div.getChild('div','sidebarTitle');this.id=browser.objectId(this);this.init=function(){ this.close();};this.setHeight=function(){ this.div.style.height=(page.getHeight()-sisBarTop)+'px';if(this.div.offsetHeight) this.list.style.height=(this.div.offsetHeight-this.list.offsetTop)+'px';};this.setColor=function(c){ };this.open=function(group){ group.refreshList();group.buttonClone.select();this.setTitle(group.title);this.div.style.display='block';this.setHeight();var chain=this.div.slideTo(null,sisBarTop,sisBarStep,sisBarDelay);};this.setTitle=function(title){ this.title.getChild('span').innerHTML=title;};this.close=function(){ var chain=this.div.slideTo(null,page.getHeight(),menuStep,menuDelay);chain.add("browser.getObject("+this.id+").div.style.display='none';");};this.init();}function ListButton(owner,isClone,isOddRow){ this.owner=owner;this.iconUrl=owner.iconUrl;this.div=this.icon=this.labelDiv=this.optionsDiv=this.link=null;this.isClone=isClone;this.init=function(){ this.div=dom.create('div','row');this.icon=this.div.push(getIcon(this.owner.iconUrl));this.outOfDate(this.owner.outOfDate);this.labelDiv=this.div.create('span');this.labelDiv.createText(this.owner.title);this.div.create('br');this.div.onmouseover=function(){ this.css.addClass('rowMouseOver');};this.div.onmouseout=function(){ this.css.removeClass('rowMouseOver');};this.optionsDiv=this.div.create('div','rowOptions');if(!isOddRow){ this.div.css.addClass("rowEven");}if(this.isClone){ this.optionsDiv.createText(strings['text.merged_view']);}else{ if(this.owner.items){ this.link=this.optionsDiv.create('span','fakeLink');this.link.createText('+'+strings['link.group_contents']);this.link.owner=this.owner;this.link.onclick=function(){ this.owner.group.sidebarSide.sister.open(this.owner);page.stopPropagation(arguments[0]);};this.div.ondblclick=function(){ this.listButton.owner.group.sidebarSide.sister.open(this.listButton.owner);page.stopPropagation(arguments[0]);};}else{ this.link=this.optionsDiv.create('a');this.link.href="#";this.link.createText('+');this.link.style.color=this.owner.getColor().lighten(0.6).toString();}}this.div.onclick=function(){ bounce.selectNone();this.listButton.select();this.listButton.owner.view();};if(this.owner.siteUrl) this.setLink(this.owner.siteUrl);this.div.listButton=this;};this.setLink=function(url){ this.link.removeChild(this.link.childNodes[0]);this.link.href=url;this.link.createText("+"+strings['link.visit_site']);this.link.style.color='';};this.outOfDate=function(hasNew){ if(hasNew){ this.div.css.addClass('buttonWithNew');}else{ this.div.css.removeClass('buttonWithNew');}};this.changeIcon=function(iconUrl,width,height){ this.icon.src=iconUrl;this.icon.style.width=width+"px";this.icon.style.height=height+"px";};this.select=function(){ this.div.css.addClass('activeRow');this.optionsDiv.display(true);};this.unselect=function(){ this.div.css.removeClass('activeRow');this.optionsDiv.display(false);};this.init();}function SlidingMenu(name,focus,onClose){ this.name=name;this.menuDiv=$(name+"Menu");this.buttonDiv=null;this.focus=focus;this.onClose=onClose;this.isOpen=false;this.top=menuTop-this.menuDiv.offsetHeight;this.index=bounce.menus.length;this.buttonHover=false;this.init=function(){ this.position();this.menuDiv.display(false);this.buttonDiv=topBarButtons.create('div','topBarButton',this.name+"Button");this.buttonDiv.style.backgroundImage="url("+IMAGES_DIR+"button_"+this.name+"_off.png)";this.buttonDiv.menu=this;this.buttonDiv.onclick=function(){ page.stopPropagation(arguments[0]);this.menu.toggle();};this.menuDiv.onclick=function(){ page.stopPropagation(arguments[0]);};this.buttonDiv.onmouseover=function(){ this.menu.buttonHover=true;this.menu.buttonOn();};this.buttonDiv.onmouseout=function(){ this.menu.buttonHover=false;if(!this.menu.isOpen){ this.menu.buttonOff();}};var alt=new Image();alt.src=""+IMAGES_DIR+"button_"+this.name+"_on.png";};this.position=function(){ if(topBarButtons==null) topBarButtons=$('topBarButtons');this.menuDiv.style.top=this.top+"px";var innerCss=this.menuDiv.getChild('div','slidingMenuInner').css;this.menuDiv.style.right=menuRightAdjust+((menuBtnWidth+menuBtnGap) * this.index)+"px";};this.buttonOn=function(){ this.buttonDiv.style.backgroundImage=this.buttonDiv.css.get("background-image").replace(/_off\.png/,"_on.png");};this.buttonOff=function(){ if(!this.buttonHover){ this.buttonDiv.style.backgroundImage=this.buttonDiv.css.get("background-image").replace(/_on\.png/,"_off.png");}};this.toggle=function(){ if(this.isOpen) bounce.closeAllMenus();else this.open();};this.open=function(){ bounce.closeAllMenus();this.menuDiv.display();this.position();this.isOpen=true;this.buttonOn();var chain=this.menuDiv.slideTo(null,menuTop,menuStep,menuDelay);if(this.focus) chain.add("doc."+this.focus+".focus();");};this.close=function(){ this.isOpen=false;this.buttonOff();if(this.onClose) eval(onClose);var chain=this.menuDiv.slideTo(null,menuTop-this.menuDiv.offsetHeight,menuStep,menuDelay);chain.add("if(bounce.getMenu('"+this.name+"')){ bounce.getMenu('"+this.name+"').menuDiv.display(false);}");};this.init();}function FeedGroup(title,group,sidebarSide){ this.title=title;this.group=group;this.iconUrl=this.currentSort=null;this.sidebarSide=sidebarSide;this.items=[];this.id=browser.objectId(this);this.listDiv=this.button=this.buttonClone=null;this.init=function(){ if(this.sidebarSide){ this.sidebarSide.group=this.getTopGroup();}if(this.group) this.iconUrl=IMAGES_DIR+"icon_group_16.gif";else this.iconUrl=IMAGES_DIR+"icon_rss_16.gif";};this.add=function(item){ if(this.onAdd) this.onAdd();this.items.push(item);item.group=this;return item;};this.removeItem=function(item){ for(var i=0;i < this.items.length;i++){ if(this.items[i]==item){ var removed=this.items.splice(i,1);if(removed[0].button) removed[0].button.div=dom.remove(removed[0].button.div);if(removed[0].buttonClone) dom.remove(removed[0].buttonClone.div);removed[0].group=null;if(this.items.length==0&&this.group){ var sister=(this.sidebarSide) ? this.sidebarSide.sister : this.group.sidebarSide.sister;this.group.removeItem(this);sister.close();}return removed[0];}}return null;};this.getEntries=function(sort){ var entries=[];for(var i=0;i < this.items.length;i++){ entries=entries.concat(this.items[i].getEntries());}if(sort) entries.sort(this.getSort().getComparator());return entries;};this.getFeed=function(key){ for(var i=0;i < this.items.length;i++){ if(this.items[i].key==key||this.items[i].xmlUrl==key){ return this.items[i];}else if(this.items[i].items){ var feed=this.items[i].getFeed(key);if(feed!=null){ return feed;}}}return null;};this.getSubgroup=function(title,existingOnly){ for(var i=0;i < this.items.length;i++){ if(this.items[i].title==title&&this.items[i].items){ return this.items[i];}}if(!existingOnly){ group=new FeedGroup(title,this);group.listDiv=this.sidebarSide.sister.list;this.items.push(group);return this.items[this.items.length-1];}};this.clearItems=function(){ if(this.items.length > 0){ this.items=[];if(this.listDiv) this.listDiv.innerHTML="";if(this.onClear) this.onClear();}};this.getButtonClone=function(recreate){ this.buttonClone=new ListButton(this,true,false);return this.buttonClone;};this.refreshList=function(){ var clone;this.items.sort(sortItems);this.listDiv.innerHTML="";if(this.group&&this.items.length > 0){ clone=this.getButtonClone();clone.div.css.addClass('groupButton');this.listDiv.push(clone.div);}if(this.items.length > 0){ if(this.sidebarSide){ if(this.sidebarSide.text) this.sidebarSide.text.display(false);fitToWindow();}}else{ if(this.sidebarSide) this.sidebarSide.text.display(true);}for(var i=0;i < this.items.length;i++){ var btn=this.items[i].getButton(true,i);this.listDiv.push(btn.div);}this.outOfDateCheck();};this.selectNone=function(){ if(this.button) this.button.unselect();if(this.buttonClone) this.buttonClone.unselect();for(var i=0;i < this.items.length;i++){ this.items[i].selectNone();}};this.getTopGroup=function(){ if(!this.group) return this;var tg=this.group;while(tg.group){ tg=tg.group;}return tg;};this.view=function(sortBy){ bounce.load(this,'');};this.getFeeds=function(condition){ var feeds=[];var feed;if(condition==null) condition="true";for(var i=0;i < this.items.length;i++){ feed=this.items[i];if(this.items[i].items) feeds=feeds.concat(this.items[i].getFeeds(condition));else if(eval(condition)) feeds.push(this.items[i]);}return feeds;};this.getOutOfDateFeeds=function(){ return this.getFeeds("feed.outOfDate");};this.getFeedsToPing=function(){ return this.getFeeds("!feed.outOfDate");};this.outOfDateCheck=function(){ var ood=false;for(var i=0;i < this.items.length;i++){ if(this.items[i].outOfDateCheck()){ ood=true;}}if(this.button) this.button.outOfDate(ood);if(this.buttonClone) this.buttonClone.outOfDate(ood);return ood;};this.getButton=function(recreate,index){ if(!this.button||recreate) this.button=new ListButton(this,false,index % 2);return this.button;};this.getColor=function(){ if(this.group) return this.group.getColor();if(this.sidebarSide) return this.sidebarSide.baseColor;};this.init();}function Feed(key,title,description,iconUrl,xmlUrl){ this.key=key;this.title=title;this.description=description;this.iconUrl=iconUrl;this.xmlUrl=xmlUrl;this.siteUrl;this.group;this.error=false;this.outOfDate=false;this.button;this.id=browser.objectId(this);this.hasDates=true;this.defaultSort;this.newTitles=[];this.readTitles=[];this.firstUpdateCheck=false;this.setSiteUrl=function(url){ this.siteUrl=url;if(this.button&&url) this.button.setLink(url);};this.selectNone=function(){ if(this.button) this.button.unselect();};this.getTopGroup=function(){ return this.group.getTopGroup();};this.view=function(sortBy){ if(sortBy){ for(var i=0;i < this.sorts.length;i++){ if(this.sorts[i].label==sortBy){ this.currentSort=this.sorts[i];break;}}}bounce.load(this,'');};this.checkForUpdates=function(onFinish,firstCheck){ var fetcher=new Bounce.FeedFetcher(this.xmlUrl,SERVER_TIMEOUT);var feed=this;if(firstCheck&&this.firstUpdateCheck){ return;}fetcher.get( function(feedData){ if(feedData.entries&&feedData.entries.length > 0){ feed.newTitles=[];for(var i=0;i < feedData.entries.length;i++){ if(!feed.readTitles[feedData.entries[i].title]){ feed.outOfDate=true;feed.group.outOfDateCheck();feed.newTitles[feedData.entries[i].title]=true;}}}feed.firstUpdateCheck=true;if(onFinish){ onFinish();}} );};this.setReadTitles=function(titles){ this.readTitles=[];for(var i=0;i < titles.length;i++){ this.readTitles[titles[i]]=true;}};this.markAsRead=function(titles){ this.setReadTitles(titles);for(var i=0;i < titles.length;i++){ titles[i]="titles[]="+encodeURIComponent(titles[i]);}browser.ajax('ajax/ajax-set-last-read-key.php',"feed="+this.key+"&"+titles.join('&'),'POST');};this.outOfDateCheck=function(){ if(this.button) this.button.outOfDate(this.outOfDate);return this.outOfDate;};this.getButton=function(recreate,index){ if(!this.button||recreate) this.button=new ListButton(this,false,index % 2);return this.button;};this.getColor=function(){ if(this.group) return this.group.getColor();if(this.sidebarSide) return this.sidebarSide.baseColor;};}function BounceBase(access){ this.defaultFeed;this.defaultGroup;this.currentFeed;this.currentGroup;this.access=access;this.menus=[];this.menuError=dom.create("div","","menuError");this.menuErrorText=this.menuError.create("div","","menuErrorInner");this.sidebar=new RotatingSidebar("sidebar");this.viewerFrame=$('viewerContent');this.myStuff=new FeedGroup(strings['title.my_stuff_group'],null,this.sidebar.sides['myStuff']);this.searchResults=new FeedGroup(strings['title.search_results_group'],null,this.sidebar.sides['search']);this.shared=new FeedGroup(strings['title.shared_group'],null,this.sidebar.sides['shared']);this.searchTypeSelector=new FakeSelect('mixedresults_selector','mixedresults_name');this.eCount=0;this.keyCount=0;this.poller=new Chain('poller',pollerDelay,false);this.init=function(){ this.myStuff.listDiv=$('myStuffList');this.myStuff.sidebarSide.setSister('sister-myStuff');this.searchResults.listDiv=$('searchResultsList');this.sidebar.sides['myStuff'].onResize=function(height){ var list=$('myStuffList');if(list){ list.style.height=(height-list.offsetTop)+'px';}};this.sidebar.sides['search'].onResize=function(height){ var list=$('searchResultsList');if(list){ list.style.height=(height-list.offsetTop)+'px';}};this.sidebar.sides['shared'].onResize=function(height){ var list=$('sharedResultsList');if(list){ list.style.height=(height-list.offsetTop)+'px';}};};this.error=function(text,field){ if(field){ var e=dom.get(eval("document."+field));this.menuErrorText.innerHTML=text;e.getParent().unshift(this.menuError);eval("document."+field+".focus()");}else{ alert(text);}};this.noError=function(field){ };this.toggle=function(e){ var kids=$(e).childNodes;for(var i=0;i < kids.length;i++){ $(kids[i]).css.swapClass('toggledOn','toggledOff');}};this.focus=function(field){ field=$(field);field.css.addClass("focus");field.select();};this.blur=function(field){ field=$(field);field.css.removeClass("focus");};this.closeAllMenus=function(){ this.menuError=dom.remove(this.menuError);for(var i=0;i < this.menus.length;i++){ this.menus[i].close();}this.searchTypeSelector.listDiv.display(false);if(viewerContent.viewer) viewerContent.viewer.closeAllMenus();};this.addMenu=function(name,focus,onClose){ this.menus.push(new SlidingMenu(name,focus,onClose));};this.getMenu=function(name){ for(var i=0;i < this.menus.length;i++){ if(this.menus[i].name==name) return this.menus[i];}return null;};this.reset=function(access){ this.access=access;this.closeAllMenus();this.updateForms("","",LANGUAGE);for(var i=0;i < this.menus.length;i++){ dom.remove(this.menus[i].buttonDiv);this.menus[i].buttonDiv=null;}this.menus=[];this.myStuff.clearItems()};this.updateForms=function(name,email,language){ var p=doc.profile;var c=doc.contact;p.real_name.value=(name) ? name : "";p.email.value=c.email.value=(email) ? email : "";c.browser.value=browser.name+" "+browser.ver;};this.reload=function(){ window.location.replace(ROOT_URL);};this.selectNone=function(){ this.myStuff.selectNone();this.searchResults.selectNone();};this.getFeed=function(xmlUrl,autoCreate){ var feed=this.myStuff.getFeed(xmlUrl);if(!feed) feed=this.searchResults.getFeed(xmlUrl);if(!feed&&autoCreate){ feed=this.searchResults.add(new Feed(this.resultKey(),'','','',xmlUrl));}return feed;};this.getGroup=function(name){ var group=this.myStuff.getSubgroup(name,true);if(!group) group=this.searchResults.getSubgroup(name,true);return group;};this.autoSearch=function(type,queryString){ var hash=[];var params=queryString.split(';');var pair;for(var i=0;i < params.length;i++){ pair=params[i].split(':',2);if(pair.length==2) hash[pair[0]]=pair[1];}this.sidebar.switchTo('search');this.searchTypeSelector.autoSearch(type,hash);};this.autoFeedSearch=function(keywords){ this.autoSearch('bounce-feedfinder','Keywords:'+keywords);AUTOSEARCH='';};this.autoShop=function(keywords){ this.autoSearch('bounce-shopping','Keywords:'+keywords);AUTOSHOP='';};this.autoLoad=function(url){ this.loadUrl(url);AUTOLOAD='';};this.setViewerAreaSize=function(){ var div=$('viewer');var contentWidth=div.getWidth(true);div.style.width=this.viewerFrame.style.width=(page.getWidth()-div.offsetLeft)+"px";div.style.height=this.viewerFrame.style.height=(page.getHeight()-div.offsetTop)+"px";this.checkShadowPatch();};this.checkShadowPatch=function(){ if(viewerContent&&viewerContent.viewer){ if(viewerContent.document.documentElement.scrollHeight > page.getHeight()-$('viewer').offsetTop){ viewerContent.viewer.shadowPatch(false);}else{ viewerContent.viewer.shadowPatch(true);}}};this.getLanguage=function(){ return LANGUAGE;};this.resultKey=function(){ return SEARCH_RESULT+this.keyCount++;};this.watchForEnterKey=function(form,ev){ var ev=(ev||window.event);var real=true;if(ev.keyCode==13){ if(form.onsubmit){ real=form.onsubmit();}if(real !== false){ form.submit();}}};this.prepareToLoad=function(title){ browser.stop(viewerContent);$('loading').display(true);return this.fadeViewerArea(false);};this.loadUrl=function(url){ if(url.indexOf(ROOT_URL)=== 0){ if(url.indexOf("session_id")==-1){ if(url.indexOf("?") > -1){ url+= "&";}else{ url+= "?";}url+= "session_id="+SESSION_ID;}else{ url=url.replace(/session_id=.{15}/,"session_id="+SESSION_ID);}}this.load( { "feed" : true,"link" : url,"title" : ""} );};this.load=function(item){ var chain=this.prepareToLoad(item.title);var myself=this;doc.loader.urls.value=doc.loader.titles.value="";doc.loader.searchResult.value='';if(item.items){ doc.loader.group.value=item.title;for(var i=0;i < item.items.length;i++){ doc.loader.urls.value+= item.items[i].xmlUrl+",";doc.loader.titles.value+= item.items[i].title+",";}}else{ doc.loader.group.value="";if(item.feed){ doc.loader.urls.value+= item.link+",";doc.loader.titles.value+= item.title+",";doc.loader.searchResult.value='true';}else{ if(!item.firstUpdateCheck){ item.checkForUpdates( function(){ myself.load(item);} );return;}else{ doc.loader.urls.value+= item.xmlUrl+",";doc.loader.titles.value+= item.title+",";}}}chain.add("doc.loader.submit();");};this.cancelLoad=function(){ browser.stop(viewerContent);this.showViewerArea();bounce.selectNone();item=this.getCurrentItem();if(item){ if(item.button) item.button.select();if(item.buttonClone) item.buttonClone.select();}else{ this.showSplash();}};this.showViewerArea=function(item){ if(item.items){ this.currentGroup=item;this.currentFeed=null;}else{ this.currentGroup=null;this.currentFeed=item;}$('splash').display(false);this.viewerFrame.display();$('viewer').display();this.fadeViewerArea(true);};this.fadeViewerArea=function(visible){ var chain;var v=$('viewer');var percent=(visible) ? "99" : "1";if(browser.IE){ var visibility=(visible) ? "visible" : "hidden";var duration=((fadeDelay * fadeSteps)/1000);chain=new Chain('fader',duration+100,true);v.style.filter="blendTrans(duration="+duration+")";if(v.filters.blendTrans){ v.filters.blendTrans.stop();}if(v.filters.blendTrans.status!=2){ v.filters.blendTrans.apply();v.style.visibility=visibility;v.filters.blendTrans.play();}v.opacity=percent;return chain;}else{ chain=v.setOpacity(percent,fadeSteps,fadeDelay);return chain;}};this.showSplash=function(){ $('splash').display(true);$('loading').display(false);};this.getCurrentItem=function(){ if(this.currentFeed) return this.currentFeed;if(this.currentGroup) return this.currentGroup;return null;};this.scrollViewerTo=function(y,id){ var scrollQueue=new Chain('scrolly',viewerScrollDelay,true);var initTop=0;var diff=y-viewerScrollAdjust-initTop;var stepSize=diff / viewerScrollSteps;scrollQueue.add("viewerContent.location.href+='#top'");for(var i=0;i < viewerScrollSteps;i++){ scrollQueue.add("viewerContent.document.documentElement.scrollTop="+(initTop+(i * stepSize)));}scrollQueue.add("viewerContent.document.documentElement.scrollTop="+(y-viewerScrollAdjust));};this.init();}function Server(){ this.cookieLogin=function(){ var chain=browser.ajax('ajax/ajax-login.php','','POST');chain.add("server.pingForNewData(true);",true);chain.add("setInterval('server.pingForNewData()',UPDATE_INTERVAL * 1000);",true);return chain;};this.login=function(form){ $(form).ajaxSubmit();form.b.value="";return false;};this.logout=function(){ browser.ajax('ajax/ajax-login.php','logout=true','GET');};this.pingForNewData=function(firstCheck){ var feeds=bounce.myStuff.getFeedsToPing();if(feeds.length > 0){ for(var i=0;i < feeds.length;i++){ bounce.poller.add("bounce.getFeed('"+feeds[i].key+"').checkForUpdates(function(){ bounce.poller.next();},"+firstCheck+");");}bounce.poller.start();}};this.contact=function(form){ if(bounce.currentFeed) document.contact.current_feed.value=bounce.currentFeed.url;if(bounce.currentGroup) document.contact.current_group.value=bounce.currentGroup.title;$(form).ajaxSubmit();return false;};this.addUserFeed=function(group){ var feed=bounce.currentFeed;browser.ajax( 'ajax/ajax-change-setting.php',"do=add_feed"+"&feed="+feed.key+"&source="+(feed.getTopGroup().key||'')+"&url="+escape(feed.xmlUrl)+"&title="+escape(feed.title)+"&icon="+escape(feed.iconUrl||'')+"&group="+escape(group||''),'POST' );};this.removeUserFeed=function(){ var feed=bounce.currentFeed;browser.ajax('ajax/ajax-change-setting.php',"do=remove_feed&feed="+feed.key,'POST');};this.deleteUserGroup=function(){ var group=bounce.currentGroup;browser.ajax('ajax/ajax-change-setting.php',"do=delete_group&name="+escape(group.title),'POST');};this.renameUserGroup=function(form){ var group=bounce.currentGroup;form.old.value=group.title;$(form).ajaxSubmit();return false;};this.setGroup=function(form){ var feed=bounce.currentFeed;if(feed.getTopGroup()!=bounce.myStuff){ this.addUserFeed(form.group_name.value);}else{ browser.ajax('ajax/ajax-change-setting.php',"do=set_group&feed="+feed.key+"&name="+escape(form.group_name.value),'POST');}};this.setUserDefaultItem=function(){ var feed=(bounce.currentFeed) ? bounce.currentFeed.key : "";var group=(bounce.currentGroup) ? bounce.currentGroup.title : "";browser.ajax('ajax/ajax-change-setting.php',"do=set_front_page&feed="+feed+"&group="+escape(group),'POST');};this.clearUserDefault=function(){ browser.ajax('ajax/ajax-change-setting.php',"do=set_front_page&feed=&group=",'POST');};}function RegExpHolder(){ this.charFixes={"\uFFFF":"","\xa0":" ","\xa9":"(c)","\xae":"(r)","\xb7":"*","\u2018":"'","\u2019":"'","\u201c":'"',"\u201d":'"',"\u2026":"?","\u2002":" ","\u2003":" ","\u2009":" ","\u2013":"-","\u2014":"--","\u2122":"(tm)"};this.the=new RegExp("^the ",'i');this.charFixList=[];for(var key in this.charFixes){ this.charFixList[key]=new RegExp(key,'g');}}function FakeSelect(div,name){ this.name=name;this.options=[];this.selected;this.div=$(div);this.currentOptDiv=this.div.create('div','fakeSelectOption');this.currentOptLabel=this.currentOptDiv.create('nobr');this.listDiv=this.div.create('div','fakeSelectOptions');this.classDivs=[];this.add=function(opt){ opt.parent=this;opt.init(this.indexCounter++);this.options.push(opt);};this.getClassDiv=function(className){ var div,title;if(this.classDivs[className]){ return this.classDivs[className];}else{ div=this.listDiv.create('div');title=div.create('div','fakeSelectOptionsTitle');title.innerHTML=className;this.classDivs[className]=div;return div;}};this.autoSelect=function(key){ for(var i=0;i < this.options.length;i++){ if(this.options[i].key==key){ this.options[i].select();return this.options[i];}}return null;};this.autoSearch=function(key,paramHash){ var opt=this.autoSelect(key);if(opt){ for(var key in paramHash){ for(var j=0;j < this.options[i].form.elements.length;j++){ if(this.options[i].form.elements[j].name==key){ this.options[i].form.elements[j].value=paramHash[key];break;}}}this.options[i].form.submit();}};this.init=function(){ this.div.css.addClass('fakeSelect');this.div.fakeSelect=this;this.div.onclick=function(){ page.stopPropagation(arguments[0]);this.fakeSelect.selected.select();this.fakeSelect.listDiv.toggle();};this.options[0].select();};}function FakeSelectOption(key,text,value,image,className){ this.parent;this.key=key;this.text=text;this.value=value;this.image=image;this.className=className;this.div;this.label;this.formDiv;this.formName=key+'_f';this.form;this.select=function(focus){ var lastSelected=this.parent.selected;var firstField;this.parent.currentOptDiv.style.backgroundImage="url("+this.image+")";this.parent.currentOptLabel.innerHTML=this.text;for(var i=0;i < this.parent.options.length;i++){ this.parent.options[i].formDiv.style.display='none';}this.formDiv.style.display='block';this.parent.selected=this;this.div.css.addClass('fakeSelectOptionHighlight');if(this.parent.listDiv.style.display=="block"||focus){ for(var i=0;i < this.form.elements.length;i++){ if(this.form.elements[i].type&&this.form.elements[i].type.toLowerCase()=='text'){ if(!firstField){ firstField=this.form.elements[i];}if(lastSelected){ for(var j=0;j < lastSelected.form.elements.length;j++){ if(lastSelected.form.elements[j].type=='text'&&this.form.elements[i].name==lastSelected.form.elements[j].name){ this.form.elements[i].value=lastSelected.form.elements[j].value;}}}}}setTimeout("document."+firstField.form.name+"."+firstField.name+".focus()",100);}};this.init=function(){ this.form=$(this.formName);this.formDiv=this.form.parentNode;this.div=this.parent.getClassDiv(this.className).create('div','fakeSelectOption');this.label=this.div.create('nobr');this.div.style.backgroundImage="url("+this.image+")";this.label.innerHTML=this.text;this.div.fakeSelectOption=this;this.div.onmouseover=function(){ for(var i=0;i < this.fakeSelectOption.parent.options.length;i++){ this.fakeSelectOption.parent.options[i].div.css.removeClass('fakeSelectOptionHighlight');}$(this).css.addClass('fakeSelectOptionHighlight');};this.div.onmouseout=function(){ $(this).css.removeClass('fakeSelectOptionHighlight');};this.div.onclick=function(){ this.fakeSelectOption.select();};};}function getIcon(url,cssClass){ if(!cssClass) cssClass='';if(url.indexOf('favicon.ico') > -1) url=ICU+url;var icon=dom.create('img','favicon '+cssClass);icon.onerror=function(){ this.src=IMAGES_DIR+"icon_placeholder_16.gif";};icon.setAttribute('align','top');icon.setAttribute('src',url);icon.style.height=16;icon.style.width=16;return icon;}function sortItems(a,b){ if(!a.title||!b.title) return 0;a2=a.title.replace(regexps.the,'');b2=b.title.replace(regexps.the,'');if(a2.toLowerCase() > b2.toLowerCase()) return 1;if(a2.toLowerCase() < b2.toLowerCase()) return -1;return 0;}