var Stars=Class.create();Stars.prototype={initialize:function(options){this.options={bindField:null,maxRating:5,container:null,imgPath:'/images/',imgRate:'',imgYourRate:'your_rating.gif',imgOn:'star_on.gif',imgOff:'star_off.gif',imgRateOn:'star_on_r.gif',imgRateOff:'star_off_r.gif',actionURL:null,initialRate:0,locked:false,ratingTextId:'rating_text'};Object.extend(this.options,options);this.yourRate=0;this.stars=[];this.locked=this.options.locked;this.infoImg=new Image();this.starSrc={empty:this.options.imgPath+this.options.imgOff,full:this.options.imgPath+this.options.imgOn,rate_empty:this.options.imgPath+this.options.imgRateOff,rate_full:this.options.imgPath+this.options.imgRateOn};this.display();},display:function(){this.getContainer();var p=document.createElement('p');p.className='stars';if(this.locked){p.className+='_r';};if(this.options.imgRate!=''){p.appendChild(this.setInfoImg());}
p.appendChild(this.buildStars());this.container.appendChild(p);this.setInitialState();},setInfoImg:function(){if(this.locked){this.infoImg.src=this.options.imgPath+this.options.imgYourRate;this.infoImg.alt='';}else{this.infoImg.src=this.options.imgPath+this.options.imgRate;this.infoImg.alt='';}
return this.infoImg;},getContainer:function(){if(this.options.container){this.container=$(this.options.container);}else{var containerId='starsContainer.'+Math.random(0,100000);document.write('<p class="rate" id="'+containerId+'"></p>');this.container=$(containerId);}},buildStars:function(){var span=document.createElement('span');for(var i=0;i<this.options.maxRating;i++){var star=new Image();star.src=this.starSrc.empty;if(!this.locked){star.style.cursor='pointer';}
if(!this.locked){Event.observe(star,'mouseover',this.starMouseOver.bind(this));Event.observe(star,'click',this.starMouseClick.bind(this));Event.observe(star,'mouseout',this.starMouseOut.bind(this));}
this.stars.push(star);span.appendChild(star);}
return span;},starMouseOver:function(e){if(this.locked){return;}
if(!e)e=window.event;var star=Event.element(e);var rating_text='';var markFull=true;for(var i=0;i<this.stars.length;i++){this.stars[i].src=markFull?this.starSrc.full:this.starSrc.empty;if(this.stars[i]==star){markFull=false;switch(i+1){case 1:rating_text='Needs Work';break;case 2:rating_text='Okay';break;case 3:rating_text='Really good';break;case 4:rating_text='Totally awesome!';break;case 5:rating_text='Best thing EVER!';break;}
var rating_text_el=$(this.options.ratingTextId);if(rating_text_el){rating_text_el.innerHTML=rating_text;}}}},starMouseClick:function(e){if(this.locked){return;}
if(!e)e=window.event;var star=Event.element(e);for(var i=0;i<this.stars.length;i++){if(this.stars[i]==star){this.yourRate=i+1;this.setState();break;}}},starMouseOut:function(e){if(this.locked){return;}
this.setStarsSrc(this.options.initialRate);var rating_text_el=$(this.options.ratingTextId);if(rating_text_el){rating_text_el.innerHTML=' ';}},setStarsSrc:function(rateValue){var prefix=this.locked?"rate_":"";for(var i=1;i<this.stars.length+1;i++){this.stars[i-1].src=(i<=rateValue+0.5)?eval("this.starSrc."+prefix+"full"):eval("this.starSrc."+prefix+"empty");}},sendAjaxRequest:function(){if(this.options.actionURL){new Ajax.Request(this.options.actionURL+"&rate="+this.yourRate,{method:'get'});}},setInitialState:function(){this.setStarsSrc(this.options.initialRate)
this.setWidgetValue(this.options.initialRate);},setState:function(){var markFull=true;for(var i=0;i<this.stars.length;i++){this.stars[i].src=markFull?this.starSrc.full:this.starSrc.empty;if(i+1==this.yourRate){markFull=false;}}
this.sendAjaxRequest();this.locked=true;this.setInfoImg();this.setStarsSrc(this.yourRate);this.setWidgetValue(this.yourRate);},setWidgetValue:function(rate){if(this.options.bindField){$(this.options.bindField).value=rate;}}};function getElementsByTagNames(list,obj){if(!obj)obj=document;var tagNames=list.split(',');var resultArray=new Array();for(var i=0;i<tagNames.length;i++){var tags=obj.getElementsByTagName(tagNames[i]);for(var j=0;j<tags.length;j++){resultArray.push(tags[j]);}}
return resultArray;}
if(!Scrolling)var Scrolling={};Scrolling.createScroll=function(scroller_id,scrollbar_id,width,height){var scroller=new Scrolling.Scroller(document.getElementById(scroller_id),width,height,new Scrolling.ScrollTween());var scrollbar=new Scrolling.Scrollbar(document.getElementById(scrollbar_id),scroller,new Scrolling.ScrollTween());return[scroller,scrollbar];};Scrolling.Scrollbar=function(o,s,t){var self=this;var _components={};var _dimensions={};var _temporary={};var _hasTween=t?true:false;var _timer,_ratio;this.onMouseDown=function(){};this.onMouseUp=function(){};this.onScroll=function(){};this.scrollAmount=5;this.scrollSpeed=30;this.disabled=false;function initialize(){var c=_components;var d=_dimensions;var g=s.getDimensions();s.scrollBar=self;c.up=findComponent("Scrollbar-Up",o);c.down=findComponent("Scrollbar-Down",o);c.track=findComponent("Scrollbar-Track",o);c.handle=findComponent("Scrollbar-Handle",c.track);c.spinner=findComponent("Scrollbar-Preloader",o)||false;d.trackTop=findOffsetTop(c.track);d.trackHeight=c.track.offsetHeight;d.handleHeight=c.handle.offsetHeight;d.x=0;d.y=0;if(_hasTween)t.apply(self);addEvent(s.getContent(),"mousewheel",scrollbarWheel);addEvent(o,"mousedown",scrollbarClickPrimer);self.reset();};function findOffsetTop(o){var t=0;if(o.offsetParent){while(o.offsetParent){t+=o.offsetTop;o=o.offsetParent;}}
return t;};function addEvent(o,t,f){if(o.attachEvent)o.attachEvent('on'+t,f);else o.addEventListener(t,f,false);};function removeEvent(o,t,f){if(o.detachEvent)o.detachEvent('on'+t,f);else o.removeEventListener(t,f,false);};function findComponent(c,o){var kids=o.childNodes;for(var i=0;i<kids.length;i++){if(kids[i].className&&kids[i].className.indexOf(c)>=0){return kids[i];}}};function scroll(y){if(y<0)y=0;if(y>_dimensions.trackHeight-_dimensions.handleHeight)
y=_dimensions.trackHeight-_dimensions.handleHeight;_components.handle.style.top=y+"px";_dimensions.y=y;s.scrollTo(0,Math.round(_dimensions.y*_ratio));self.onScroll();};function scrollbarClickPrimer(e){if(self.disabled)return false;e=e?e:event;if(!e.target)e.target=e.srcElement;scrollbarClick(e.target.className,e);};function scrollbarClick(c,e){var d=_dimensions;var t=_temporary;var cy=e.clientY+document.body.scrollTop;if(c.indexOf("Scrollbar-Up")>=0)
startScroll(-self.scrollAmount);if(c.indexOf("Scrollbar-Down")>=0)
startScroll(self.scrollAmount);if(c.indexOf("Scrollbar-Track")>=0)
if(_hasTween)self.tweenTo((cy-d.trackTop-d.handleHeight/2)*_ratio);else scroll(cy-d.trackTop-d.handleHeight/2);if(c.indexOf("Scrollbar-Handle")>=0){t.grabPoint=cy-findOffsetTop(_components.handle);addEvent(document,"mousemove",scrollbarDrag,false);}
t.target=e.target;t.select=document.onselectstart;document.onselectstart=function(){return false;};self.onMouseDown(e.target,c,e);addEvent(document,"mouseup",stopScroll);};function scrollbarDrag(e){e=e?e:event;var d=_dimensions;var t=parseInt(_components.handle.style.top);var v=e.clientY+document.body.scrollTop-d.trackTop;if(v>=d.trackHeight-d.handleHeight+_temporary.grabPoint)
v=d.trackHeight-d.handleHeight;else if(v<=_temporary.grabPoint)
v=0;else v=v-_temporary.grabPoint;scroll(v);};function scrollbarWheel(e){if(self.disabled)return false;e=e?e:event;var dir=0;if(e.wheelDelta>=120)dir=-1;if(e.wheelDelta<=-120)dir=1;self.scrollBy(dir*20);e.returnValue=false;};function startScroll(y){_temporary.disty=y;_timer=window.setInterval(function(){self.scrollBy(_temporary.disty);},self.scrollSpeed);};function stopScroll(e){e=e?e:event;removeEvent(document,"mousemove",scrollbarDrag);removeEvent(document,"mouseup",stopScroll);document.onselectstart=_temporary.select;if(_timer)window.clearInterval(_timer);self.onMouseUp(_temporary.target,_temporary.target.className,e);};this.reset=function(){var d=_dimensions;var c=_components;var g=s.getDimensions();_ratio=(g.theight-g.vheight)/(d.trackHeight-d.handleHeight);var pos=Math.round(g.y/_ratio);c.handle.style.top=pos+"px";c.handle.ondragstart=function(){return false;};c.handle.onmousedown=function(){return false;};s.reset();if(g.theight<g.vheight){this.disabled=true;o.className+=" Scrollbar-Disabled";}};this.scrollTo=function(y){scroll(y/_ratio);};this.scrollBy=function(y){scroll((s.getDimensions().y+y)/_ratio);};this.scrollToElement=function(element_id){var element=$(element_id);if(element){this.scrollTo(element.positionedOffset()[1]);}};this.swapContent=function(n,w,h){o=n;s.swapContent(o,w,h);initialize();};this.disable=function(){this.disabled=true;o.className+="Scrollbar-Disabled";};this.enable=function(){this.disabled=false;o.className=o.className.replace(/Scrollbar\-Disabled/,"");};this.getContent=function(){return s.getContent();};this.getComponents=function(){return _components;};this.getDimensions=function(){var d=s.getDimensions();d.trackHeight=_dimensions.trackHeight;d.handleHeight=_dimensions.handleHeight;return d;};this.showSpinner=function(flag){if(_components.spinner){if(flag){_components.spinner.style.display='block';}else{_components.spinner.style.display='none';}}};this.resetBar=function(){this.reset();};initialize();};if(!Scrolling)var Scrolling={};Scrolling.Scroller=function(o,w,h,t){var list=getElementsByTagNames("div,ul",o);for(var i=0;i<list.length;i++){if(list[i].className.indexOf("Scroller-Container")>-1){o=list[i];}}
var self=this;var _vwidth=w;var _vheight=h;var _o=o;var _twidth=o.offsetWidth;var _theight=o.offsetHeight;var _hasTween=t?true:false;var _requesting=false;var _timer,_x,_y;this.onScrollStart=function(){};this.onScrollStop=function(){};this.onScroll=function(){};this.scrollBar=false;this.scrollSpeed=30;this.preloadDistance=100;this.fetchUrl=false;this.preloadElements=10;this.totalElements=0;this.actualElements=getNumOfItems();this.resetScrollBar=false;function setPosition(x,y){if(x<_vwidth-_twidth)
x=_vwidth-_twidth;if(x>0)x=0;if(y<_vheight-_theight)
y=_vheight-_theight;if(y>0)y=0;if(!_requesting&&self.fetchUrl&&self.actualElements<self.totalElements&&(_theight-_vheight+y)<self.preloadDistance){_requesting=true;self.scrollBar.showSpinner(true);_fetchItemsRequest();}
_x=x;_y=y;o.style.left=_x+"px";o.style.top=_y+"px";};function _fetchItemsRequest(){new Ajax.Request(self.fetchUrl,{method:'get',parameters:'offset='+self.actualElements,requestHeaders:{Accept:'text/html'},onComplete:function(response){_fetchNewItemsResponse(response);}});}
function _fetchNewItemsResponse(response){o.innerHTML+=response.responseText;self.actualElements=getNumOfItems();_twidth=o.offsetWidth;_theight=o.offsetHeight;self.scrollBar.resetBar();_requesting=false;self.scrollBar.showSpinner(false);}
function getNumOfItems(){var num=0;for(var i=0;i<o.childNodes.length;i++){if(o.childNodes[i].nodeName.search(/.*(div|li).*/i)!=-1)num++;}
return num;}
this.setAjaxPreloader=function(url,preloadNum,totalNum,preloadDistance){this.preloadDistance=preloadDistance;this.fetchUrl=url;this.preloadElements=preloadNum;this.totalElements=totalNum;};this.scrollBy=function(x,y){setPosition(_x-x,_y-y);this.onScroll();};this.scrollTo=function(x,y){setPosition(-x,-y);this.onScroll();};this.startScroll=function(x,y){this.stopScroll();this.onScrollStart();_timer=window.setInterval(function(){self.scrollBy(x,y);},this.scrollSpeed);};this.stopScroll=function(){if(_timer)window.clearInterval(_timer);this.onScrollStop();};this.reset=function(){_twidth=o.offsetWidth;_theight=o.offsetHeight;_x=0;_y=0;if(_hasTween)t.apply(this);};this.swapContent=function(c,w,h){o=c;var list=getElementsByTagNames("div,ul",o);for(var i=0;i<list.length;i++){if(list[i].className.indexOf("Scroller-Container")>-1){o=list[i];}}
if(w)_vwidth=w;if(h)_vheight=h;reset();};this.getDimensions=function(){return{vwidth:_vwidth,vheight:_vheight,twidth:_twidth,theight:_theight,x:-_x,y:-_y};};this.getContent=function(){return o;};this.reset();};if(!Scrolling)var Scrolling={};Scrolling.ScrollTween=function(){var self=this;var _steps=[0,25,50,70,85,95,97,99,100];var _values=[];var _idle=true;var o,_inc,_timer;function tweenTo(y){if(!_idle)return false;var d=o.getDimensions();if(y<0)y=0;if(y>d.theight-d.vheight)
y=d.theight-d.vheight;var dist=y-d.y;_inc=0;_timer=null;_values=[];_idle=false;for(var i=0;i<_steps.length;i++){_values[i]=Math.round(d.y+dist*(_steps[i]/100));}
_timer=window.setInterval(function(){o.scrollTo(_values[_inc]);if(_inc==_steps.length-1){window.clearInterval(_timer);_idle=true;}else _inc++;},o.stepSpeed);};function tweenBy(y){o.tweenTo(o.getDimensions().y+y);};function setSteps(s){_steps=s;};this.apply=function(p){o=p;o.tweenTo=tweenTo;o.tweenBy=tweenBy;o.setSteps=setSteps;o.stepSpeed=30;};};function scrollToSectionHandler(event){var link=Event.findElement(event,'a');var element_id='l-'+link.href.split('#').last();if(scrollbar){scrollbar.scrollToElement(element_id);}
var linkList=Event.findElement(event,'ul');linkList.select('a').each(function(e){e.className='';});link.className='active';Event.stop(event);}
Kidzbop.Fall=Class.create({queue:new Array(),frequency:2,limit:5,display_on_load:4,fetch_url:'',fetch_interval:10,first_load:true,max_item_id:null,_request_in_progress:false,_container:null,_items:new Array(),_timer:null,initialize:function(options){try{this.max_item_id=options.max_item_id;this.fetch_url=options.fetch_url;this.queue=options.queue||this.queue;this._container=$(options.container);this._container.observe('mouseover',this.stop.bindAsEventListener(this));this._container.observe('mouseout',this.start.bindAsEventListener(this));this.fetchNewItemsRequest();this.start();this.fetchNewItemsSetInterval();}catch(e){alert(e);}},start:function(){this.stop();this._timer=new PeriodicalExecuter(function(executer){if(this.queue.size()>0){this._showNextItem();}}.bind(this),this.frequency);},stop:function(){if(this._timer){this._timer.stop();delete this._timer;}},_showNextItem:function(item){new Effect.SlideDown(this._addNewItem(),{duration:this.frequency});if(this._items.size()>this.limit){this._removeLastElement();}},_addNewItem:function(){var content=this.queue.pop().createHtml();this._container.insert({top:content});this._items.push(content);return content;},_removeLastElement:function(){var element=this._items.shift();new Effect.Parallel([new Effect.SlideUp(element,{sync:true}),new Effect.Fade(element,{sync:true})],{duration:this.frequency,afterFinish:function(){element.remove();}});},fetchNewItemsSetInterval:function(){new PeriodicalExecuter(function(executer){this.fetchNewItemsRequest();}.bind(this),this.fetch_interval);},fetchNewItemsRequest:function(){if(this.queue.size()==0&&!this._request_in_progress){this._request_in_progress=true;new Ajax.Request(this.fetch_url,{method:'get',parameters:'max_item_id='+this.max_item_id,requestHeaders:{Accept:'application/xml'},onComplete:function(response){this._fetchNewItemsParseResponse(response);}.bind(this)});}},_fetchNewItemsParseResponse:function(response){var params;var mainNode=(returnBrowserType()=='IE')?response.responseXML.documentElement:response.responseXML.firstChild;if(mainNode.tagName=='messages'){var elements=mainNode.childNodes;for(var i=0;i<elements.length;i++){var tag=elements[i];if(tag&&tag.tagName=='message'){params={};for(var j=0;j<tag.childNodes.length;j++){var value;if(returnBrowserType()=='IE'&&tag.childNodes[j].firstChild&&tag.childNodes[j].firstChild.data){value=tag.childNodes[j].firstChild.data;}else{value=tag.childNodes[j].textContent;}
if(value)params[tag.childNodes[j].tagName]=value;}
this.queue.push(new Kidzbop.Message(params));}else if(tag&&tag.tagName=='max_item_id'){if(returnBrowserType()=='IE'&&tag.firstChild&&tag.firstChild.data>0){this.max_item_id=tag.firstChild.data;}else if(tag.textContent>0){this.max_item_id=tag.textContent;}}}}
this._request_in_progress=false;this._firstLoad();},_firstLoad:function(){if(this.first_load){this._container.select('.spinner')[0].hide();for(var i=0;i<this.display_on_load;++i){if(this.queue.size()>0){this._addNewItem().show();}}
this.first_load=false;}}});Kidzbop.Message=Class.create({image_url:null,text:null,initialize:function(params){this.image_link=params.image_link;this.image_url=params.image_url;this.text=params.text;},createHtml:function(){var wrapper=new Element('div',{'style':'display: none'});var div=new Element('div');div.addClassName('fall_row');var img=new Element('img',{src:this.image_url});var clear_div=new Element('div');clear_div.addClassName('clear');if(this.image_link!=''){div.insert(new Element('a',{href:this.image_link}).insert(img));}else{div.insert(img);}
div.insert(new Element('p').update(this.text));div.insert(clear_div);wrapper.insert(div);return wrapper;}});