function UserReviewBlock(albumId,buildClass,servUrl,sessionId,limited,x,y,h,w,addReviewLink,emptyRow,revTable,ratingBlock,summaryBlock,reviewBlock,avgScoreSpace){this.id=albumId;this.uri=servUrl;this.sessId=sessionId;this.ajax=null;this.ratingDiv=null;this.buildClass=buildClass;this.limited=limited;this.pr=null;this.ex=null;this.sw=null;this.or=null;this.x=x;this.y=y;this.h=h;this.w=w;this.retry=0;this.addReview=addReviewLink;this.emptyRow=emptyRow;this.reviewTable=revTable;this.lockLink=null;this.ratingBl=ratingBlock;this.summaryBl=summaryBlock;this.reviewBl=reviewBlock;this.locked=false;this.summary=null;this.review=null;this.ready=false;this.inited=false;this.terms=null;this.acceptTerms=null;this.isSent=false;this.showOnLoad=false;this.avgScoreSpace=avgScoreSpace;this.ajaxresponse=function(){if(this.responseStatus[0]==200||this.responseStatus[1]=="OK"){var responseArray=this.response.split("|");if(responseArray.length==3){thisObj=this.controller;thisObj.isSent=true;if(responseArray[0]=="true"){thisObj.sw.setReadOnly(true);thisObj.or.setReadOnly(true);thisObj.ex.setReadOnly(true);thisObj.pr.setReadOnly(true);thisObj.review.readOnly=true;thisObj.summary.readyOnly=true;}if(responseArray[1]=="alert"){alert(responseArray[2]);}else if(responseArray[1]=="print"){printMsg(responseArray[2],document.getElementById(thisObj.reviewTable),'#ff9900');}else if(responseArray[1]=="duplicate"){printMsg(responseArray[2],document.getElementById(thisObj.reviewTable),'#ff9900');}else if(responseArray[1]=="login"){var logon=showLogon(thisObj.uri,thisObj.sessId,responseArray[2]);logon.logonCallback=function(){thisObj.sendReview();}}}}};this.setupBlocks=function(){var revT=document.getElementById(this.reviewTable);var term=et_getElementsByClassName(revT.parentNode,'DIV','termsConditions')[0];term.style.display='none';this.acceptTerms=term.getElementsByTagName('INPUT')[0];this.terms=term;var ratB=document.getElementById(this.ratingBl);var canv=et_getElementsByClassName(ratB,'DIV','blockContent')[0];canv.id='new_revCanvasBlock';this.ratingDiv=canv.id;var lockLink=ratB.getElementsByTagName('A')[0];this.lockLink=lockLink;et_setupLink(lockLink,this,this.toggleLock);var addLinks=et_getElementsByClassName(document,'A','addReview');for(var i=0;i<addLinks.length;i++)et_setupLink(addLinks[i],this,this.toggleReview);var sumB=document.getElementById(this.summaryBl);var subBC=et_getElementsByClassName(sumB,'DIV','blockContent')[0];var stah=et_findChild(et_findChild(subBC,'DIV'),'DIV');var sta=document.createElement('TEXTAREA');sta.cols=10;sta.rows=5;stah.appendChild(sta);this.summary=sta;var revB=document.getElementById(this.reviewBl);var revBC=et_getElementsByClassName(revB,'DIV','blockContent')[0];var rtah=et_findChild(et_findChild(revBC,'DIV'),'DIV');var rta=document.createElement('TEXTAREA');rta.cols=10;rta.rows=8;rtah.appendChild(rta);this.review=rta;};this.setupAvgScoreSpace=function(){this.sw.scoreCallback=this.scoreCallback;this.sw.rt_controller=this;this.or.scoreCallback=this.scoreCallback;this.or.rt_controller=this;this.ex.scoreCallback=this.scoreCallback;this.ex.rt_controller=this;this.pr.scoreCallback=this.scoreCallback;this.pr.rt_controller=this;};this.scoreCallback=function(){var thisObj=this.rt_controller;if(thisObj.avgScoreSpace){var prWeight=(thisObj.sw.limited)?0.30:0.10;var exWeight=(thisObj.sw.limited)?0.70:0.30;var orWeight=(thisObj.sw.limited)?0:0.30;var swWeight=(thisObj.sw.limited)?0:0.30;var score=thisObj.sw.lastScore*swWeight+thisObj.or.lastScore*orWeight+thisObj.ex.lastScore*exWeight+thisObj.pr.lastScore*prWeight;var text="("+Math.floor(score)+"/100)";document.getElementById(thisObj.avgScoreSpace).innerHTML=text;}};this.initialize=function(){if(!document.getElementById(this.ratingBl)||!document.getElementById(this.addReview)){var thisObj=this;this.retry++;if(this.retry<20){window.setTimeout(function(){thisObj.initialize()},200);}}else{this.setupBlocks();this.pr=new RatingScorer("nrev_prRating",null,null,null,this.ratingDiv,this.buildClass,'Production',false);this.ex=new RatingScorer("nrev_exRating",null,null,null,this.ratingDiv,this.buildClass,'Execution',false);this.sw=new RatingScorer("nrev_swRating",null,null,null,this.ratingDiv,this.buildClass,'Songwriting',this.limited);this.or=new RatingScorer("nrev_orRating",null,null,null,this.ratingDiv,this.buildClass,'Originality',this.limited,true);this.sw.startMonitoring(this.x,this.y,this.h,this.w);this.pr.startMonitoring(this.x,this.y,this.h,this.w);this.ex.startMonitoring(this.x,this.y,this.h,this.w);this.or.startMonitoring(this.x,this.y,this.h,this.w);this.sw.setReadOnly(this.limited);this.or.setReadOnly(this.limited);if(this.avgScoreSpace)this.setupAvgScoreSpace();this.inited=true;if(this.showOnLoad){this.toggleReview();this.showOnLoad=false;}}};this.toggleLock=function(evt){var thisObj=this;if(evt){var source=et_findEventSource(evt,true);thisObj=source.controller;}if(thisObj.locked){thisObj.unlockScores();if(thisObj.lockLink)thisObj.lockLink.innerHTML="Lock Scores";}else{thisObj.lockScores();if(thisObj.lockLink)thisObj.lockLink.innerHTML="Unlock";}};this.lockScores=function(){this.sw.lock();this.pr.lock();this.ex.lock();this.or.lock();this.locked=true;return this;};this.unlockScores=function(){this.sw.unlock();this.pr.unlock();this.ex.unlock();this.or.unlock();this.locked=false;return this;};this.addSpacing=function(child){var revs=et_getElementsByClassName(document,'DIV','albumReviewBlock');if(revs.length>1){var pDiv=child.parentNode;if(pDiv)pDiv.style.marginTop='6';}};this.toggleReview=function(evt){var source=(evt||window.event)?et_findEventSource(evt,true):null;var thisObj=(evt||window.event)?source.controller:this;if(!thisObj.ready){var add=document.getElementById(thisObj.addReview);var rev=document.getElementById(thisObj.reviewTable);var terms=document.getElementById(thisObj.termsBl);try{rev.style.display='table';}catch(err){rev.style.display='inline';}if(thisObj.emptyRow&&document.getElementById(thisObj.emptyRow)){var er=document.getElementById(thisObj.emptyRow);var nr=new NodeRemover(er);nr.removeChildren();nr.removeRoot();}thisObj.terms.style.display='block';add.innerHTML="Submit Review";add.onclick=thisObj.submitReview;thisObj.addSpacing(rev);sizer();}window.scrollTo(et_scrollLeft(),et_clientHeight());};this.showSendMessage=function(numDots){if(!this.isSent){var msg='Sending review';for(var i=0;i<5;i++){if(i<numDots)msg+='.';else msg+='&nbsp';}printMsg(msg,document.getElementById(this.reviewTable),'#ff9900');var thisObj=this;var nextDots=(numDots<4)?(numDots+1):0;window.setTimeout(function(){thisObj.showSendMessage(nextDots)},400);}};this.sendReview=function(){window.scrollTo(et_scrollLeft(),et_clientHeight());var add=document.getElementById(thisObj.addReview);add.onclick=null;this.isSent=false;this.showSendMessage(0);var reqFile=this.uri+"/ajaxservlet;jsessionid="+this.sessId;this.ajax=new sack(reqFile);this.ajax.setVar("albumId",this.id);this.ajax.setVar("summary",this.summary.value);this.ajax.setVar("details",et_filterQuotes(this.review.value));this.ajax.setVar("originality",this.or);this.ajax.setVar("songwriting",this.sw);this.ajax.setVar("musicmanship",this.ex);this.ajax.setVar("production",this.pr);this.ajax.setVar("proc_class","nfm.core.entity.ajax.AJAXAddUserReview");this.ajax.method="POST";this.ajax.onCompletion=this.ajaxresponse;this.ajax.controller=this;this.ajax.runAJAX();};this.validateText=function(){var failed=false;var summaryText=this.summary.value;var reviewText=this.review.value;if(!summaryText||summaryText.length<10){this.summary.style.border='solid 2px red';failed=true;}else{this.summary.style.borderStyle='none';}if(!reviewText||reviewText.length<75){this.review.style.border='solid 2px red';failed=true;}else{this.review.style.borderStyle='none';}return failed;};this.expandReview=function(){if(this.inited)this.toggleReview();else this.showOnLoad=true;};this.submitReview=function(evt){var source=et_findEventSource(evt,true);thisObj=source.controller;var scvalid=thisObj.pr.validate()&thisObj.ex.validate()&thisObj.sw.validate()&thisObj.or.validate();if(scvalid&&!thisObj.validateText()){if(thisObj.acceptTerms.checked==false){var msg='You must accept the terms and conditions';printMsg(msg,document.getElementById(thisObj.reviewTable),'#ff9900');}else{thisObj.sendReview();}}else{var msg='Cannot submit review, please resolve the indicated errors';printMsg(msg,document.getElementById(thisObj.reviewTable),'#ff9900');}};this.initialize();}