KaraokePlay.CommentForm=Class.create({initialize:function(){this.form=$("commentForm");this.textArea=$("commentFormArea");this.addProfileButton=$("profileButton");if(this.addProfileButton)this.addProfileButton.observe("click",this.onAddMyProfileClick.bind(this));this.smileyController=new KaraokePlay.SmileyController(this);this.recordingController=new KaraokePlay.RecordingController(this);$("recordingComments").observe("click",this.onCommentListClick.bind(this))},onCommentListClick:function(evt){var link=
evt.findElement("a.quote");if(link){evt.stop();var userid=link.getAttribute("rel");var txtElement=$(link.getAttribute("id").replace("quote_","")+"_content");if(txtElement){var txt=txtElement.innerHTML.replace(/(<([^>]+)>)/ig,"");this.textArea.value+="[QUOTE:"+userid+"]"+txt+"[/QUOTE]"}}},onAddMyProfileClick:function(evt){evt.stop();$("recordingWindow").hide();$("smileyWindow").hide();this.textArea.value+=" [PROFILE] "},_eoo:true});
KaraokePlay.Pagination=Class.create({initialize:function(element,data){this.currentPage=1;this.element=element;this.data=data;var paginationContainer=new Element("div",{id:"pagination"});var room=(new Element("div")).addClassName("d_pagination");paginationContainer.insert(room);this.pagination=(new Element("div")).addClassName("pagination");this.createPagination();room.insert(this.pagination);element.insert(paginationContainer);this.pagination.observe("click",this.onClickElement.bind(this))},createPagination:function(){this.pagination.childElements().invoke("remove");
var link;for(var i=1;i<Math.ceil(this.data.length/5)+1;i++){if(i===this.currentPage)link=(new Element("span")).addClassName("current").update(this.currentPage);else link=(new Element("a",{href:"javascript://",rel:i})).update(i);this.pagination.insert(link)}},onClickElement:function(evt){evt.stop();var a=evt.findElement("a");if(a){this.currentPage=parseInt(a.getAttribute("rel"),10);this.element.select("ul").each(function(ul){ul[ul.hasClassName("pagination_"+(this.currentPage-1))?"show":"hide"]()},
this);this.createPagination()}},_eoo:true});
KaraokePlay.RecordingController=Class.create({initialize:function(commentForm){this.window=$("recordingWindow");this.button=$("recordingButton");this.recordingsLoaded=false;this.commentForm=commentForm;if(this.button)this.button.observe("click",this.onRecordingToggle.bind(this))},onRecordingToggle:function(evt){evt.stop();this.window.toggle();$("smileyWindow").hide();if(this.window.visible()&&this.recordingsLoaded===false)this.loadMyRecordings()},loadMyRecordings:function(){var request=new Ajax.Request("/recordings/mine",
{method:"GET",onSuccess:this.onMyRecordingsReceived.bind(this)})},onMyRecordingsReceived:function(response){this.window.down("img.loading").hide();this.recordingsLoaded=true;var json=response.responseJSON;if(json){var li,recording,a,fragment,ul;json.eachSlice(5,function(group,index){var ul=(new Element("ul")).addClassName("pagination_"+index);ul[index===0?"show":"hide"]();var fragment=document.createDocumentFragment();this.window.insert(ul);group.each(function(element){li=new Element("li");recording=
element.recording;a=(new Element("a",{href:"javascript://",rel:recording.id})).update(recording.name+" - "+recording.title);li.appendChild(a);fragment.appendChild(li)});ul.appendChild(fragment);ul.observe("click",this.onRecordingClick.bind(this))},this);var pagination=new KaraokePlay.Pagination(this.window,json)}},onRecordingClick:function(evt){evt.stop();var a=evt.findElement("a");this.commentForm.textArea.value+=" [RECORDING:"+a.getAttribute("rel")+"] ";this.window.hide()},_eoo:true});
KaraokePlay.SmileyController=Class.create({initialize:function(commentForm){this.smileyButton=$("smileyButton");this.smileyWindow=$("smileyWindow");this.smiliesLoaded=false;this.commentForm=commentForm;this.smileys=["bad","dancingbanana","happy","party","shake","worship","badmusic","evil","headbanger","partybanana","shining","clap","eyebrow","jawdrop","partyblow","singing","cool","flashing","love","partyhat","sleep","cursing","funky","listening","pompoms","smile","dancing","good","mad","sad","verymad"];
this.smileyExceptions={dancingbanana:"dancing",happy:")",partybanana:"banana",love:"(l)",smile:"D",dancing:"dance",good:"y",sad:"("};this.startObserving()},startObserving:function(){if(this.smileyButton)this.smileyButton.observe("click",this.handleSmileyLoad.bind(this))},handleSmileyLoad:function(evt){evt.stop();$("recordingWindow").hide();if(this.smiliesLoaded===false){var title,li,a,img;var fragment=document.createDocumentFragment();var ul=new Element("ul");this.smileyWindow.insert(ul);this.smileyWindow.insert(new Element("br",
{style:"clear: both"}));this.smileys.each(function(smiley){title=smiley;if(this.smileyExceptions[smiley])title=this.smileyExceptions[smiley];title=":"+title;li=new Element("li");a=new Element("a",{title:title,href:"javascript://"});img=new Element("img",{src:"/images/smilies/"+smiley+".gif",alt:title.replace(":","")});a.appendChild(img);li.appendChild(a);fragment.appendChild(li)},this);ul.appendChild(fragment);ul.observe("click",this.onSmileyClick.bind(this));this.smiliesLoaded=true}this.smileyWindow.toggle();
this.smileyButton[this.smileyWindow.visible()===true?"addClassName":"removeClassName"]("selected")},onSmileyClick:function(evt){evt.stop();var smiley=evt.findElement("a").getAttribute("title");this.commentForm.textArea.value+=smiley;this.smileyWindow.hide();this.smileyButton.removeClassName("selected")},_eoo:true});document.observe("dom:loaded",function(){var commentForm=new KaraokePlay.CommentForm});
if(typeof KaraokePlay==="undefined")KaraokePlay={};
KaraokePlay.RecordController=Class.create({initialize:function(){this.isRecording=false;window.onbeforeunload=this.onBeforeUnload.bind(this)},startRecording:function(){this.isRecording=true},stopRecording:function(){this.isRecording=false},onBeforeUnload:function(evt){if(this.isRecording===true){var matches=window.location.href.match(/http:\/\/(.*)\/recordings\/(.*)-(\d*)\.html/);if(matches.length===4){var recording=parseInt(matches[3],10)||0;KaraokePlay.Utils.setCookie("unfinished_recording",recording)}return"ATTENTION!!\nAre you sure you want to leave this page? Your recording will be deleted if you leave this page without first saving your recording.\n\nIf you click ok your recording will be LOST! Please click CANCEL and save your recording."}},
_eoo:true});var controller=new KaraokePlay.RecordController;function startRecording(){controller.startRecording()}function stopRecording(){controller.stopRecording()}function loginRequired(){var dialogOptions={url:"/login?format=ajax&reason=recording",callbacks:[],redirectUrl:window.location.href};var dialog=new KaraokePlay.LoginDialog(dialogOptions);dialog.getContent()};
