LMI.Lang.getObject("LMI.FormUtils",true);LMI.FormUtils.CharCount=(function(){var E=YAHOO.util,C=E.Dom,B=E.Event,D=LMI.Element.getOne;function A(I,G,F,H){this.init.apply(this,arguments)}A.prototype={init:function(J,G,F,H){var I;H=H||{};this.field=D(J);this.counter=D(G);this.limit=F;this.options=H;this.messageKey="messageKey" in H?H.messageKey:"js.field.chars.left";this.isOverLimit=false;this.countUp=("countUp" in H)&&H.countUp;if(this.counter){if(this.field.value.length>F){C.addClass(this.counter,"tooManyChars")}}I=this;if(this.field){B.on(this.field,"keyup",this.checkLength,this,true);if(YAHOO.env.ua.ie){B.on(this.field,"paste",this.pasteHandler,this,true)}else{if(YAHOO.env.ua.webkit){this.field.onpaste=function(K){I.pasteHandler.call(I)}}else{B.on(this.field,"input",this.checkLength,this,true)}}}this.onOverLimit.subscribe(function(){C.addClass(I.counter,"tooManyChars")});this.onUnderLimit.subscribe(function(){C.removeClass(I.counter,"tooManyChars")});this.checkLength()},checkLength:function(){var F=this.field.value.length;if(F>this.limit){if(!this.isOverLimit){this.isOverLimit=true;this.onOverLimit.fire()}}else{if(this.isOverLimit){this.isOverLimit=false;this.onUnderLimit.fire()}}if(this.counter){this.counter.innerHTML=LMI.Strings.getString(this.messageKey,this.countUp?F:this.limit-F)}},pasteHandler:function(){var F=this;window.setTimeout(function(){F.checkLength.call(F)},1)},onOverLimit:new E.CustomEvent("overLimit"),onUnderLimit:new E.CustomEvent("underLimit")};return A})();LMI.Messages=(function(){var I={FIRST_CHILD:function(L,M){if(L.firstChild){L.insertBefore(M,L.firstChild)}else{L.appendChild(M)}}};var B,F="DSContents",C="firstChild";function K(L){var M=(L&&"insertionStrategy" in L)?L.insertionStrategy:C;switch(M){case"firstChild":return I.FIRST_CHILD;default:return M}}function D(M){var L=(M&&"insertionPoint" in M)?M.insertionPoint:F;if(typeof L=="string"){return document.getElementById(L)}else{return L}}function A(O,M){M=M||{};var N=K(M),L=D(M);if(!B){B=document.createElement("div");B.className="LMIMessages"}B.appendChild(O);if(M.type&&M.type=="error"){if(B.className.match(/error/)==null){B.className+=" error"}}else{if(B.className.match(/error/)!=null){B.className=B.className.replace(/error/,"")}}if(N&&L){N(L,B)}else{throw new Error("LMI.Messages: missing strategy or insertion point")}}function J(N,M){var L;if(typeof N==="string"){L=document.createTextNode(N);N=document.createElement("p");N.appendChild(L)}A(N,M)}function H(L){F=L}function G(L){C=L}function E(){if(B){B.parentNode.removeChild(B);B=null}}return{clear:E,addMessage:J,setInsertionStrategy:G,setInsertionPoint:H}})();LMI.Lang.getObject("LMI.Widget",true);LMI.Widget.Rating=(function(){var E=YAHOO.util,a=E.Dom,Z=E.Event,c=LMI.Element,M=c.getOne,S=c.getAll,K,H,d,R,P={visible:false,constraintoviewport:true,zIndex:1300,close:true,width:"250px",draggable:true,monitorresize:false,y:0,underlay:"none",postmethod:"none",effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.25}},N=new E.CustomEvent("success"),A=new E.CustomEvent("fail"),X=new E.CustomEvent("submit"),G=new E.CustomEvent("close");function L(g,f){var h,Y;if(f){h="ratingHover";Y="ratingFull"}else{h="ratingFull";Y="ratingHover"}LMI.Lang.forEach(S("#ratingHelpText span"),function(i){if(i.id==="ratingHelp"+g){a.addClass(i,"ratingSelected")}else{a.removeClass(i,"ratingSelected")}});LMI.Lang.forEach(d,function(j,i){a.removeClass(j,Y);if(i<g){a.addClass(j,h)}else{a.removeClass(j,h)}});if(LMI.Data.ratingConfig.rating){if(g&&!f){a.removeClass(K.form.reviewText,"disabled");K.form.reviewText.disabled=false}else{if(!g&&!f){a.addClass(K.form.reviewText,"disabled");K.form.reviewText.disabled=true}}}}function B(f){var Y=LMI.Lang.getObject("LMI.Data.userReviews",true);if(f in Y){K.form.reviewText.value=Y[f].reviewText;L(Y[f].rating);K.form.rating.value=Y[f].rating;K.form.origRating.value=Y[f].rating;K.form.isReviewed.value=Y[f].reviewText.length>0?"true":"false"}else{L(0);K.form.reviewText.value="";K.form.rating.value="";K.form.origRating.value=0;K.form.isReviewed.value="false"}a.removeClass("ratingCont","error");a.removeClass("reviewText","error");K.form.listingId.value=f;R.checkLength()}function b(){var Y=K.form.rating.value||0;L(Y)}function D(h){var g=Z.getTarget(h),f=g.id.charAt(10),Y;if(f){if(h.type==="click"){Y=false;K.form.rating.value=f}else{Y=true}L(f,Y)}}function C(Y,f){if(Y&&Y.success){N.fire(Y.valueObject,Y.displayMessages,f);G.fire();K.hide()}else{A.fire(Y.valueObject,Y.displayMessages,f)}}function Q(Y){if(K){B(Y);K.show()}else{H.show()}}function V(Y){var f=this.id.match(/rateit_(.*)\b/);if(!f){f=this.id.match(/rateitSYO_(.*)\b/)}if(f){f=f[1]}if(!f){Z.stopEvent(Y);return }if(K){K.cfg.setProperty("context",[this.id,"tl","tl"])}else{H.cfg.setProperty("context",[this.id,"tl","tl"])}Q(f);if("HighlightListing" in LMI){LMI.HighlightListing.disableHighlight()}Z.preventDefault(Y)}function e(Y){return function(f){C(f,Y)}}function F(){return K}function O(){return H}function I(){K.cancel();G.fire()}LMI.LinkBehavior.add("showRatingWidget",V);function U(f){var Y;if(this.disabled){return }Y=K.getData();X.fire(Y);Z.stopEvent(f)}function J(Y){I();Z.stopEvent(Y)}function T(){M("#ratingSubmit").disabled=true}function W(){M("#ratingSubmit").disabled=false}LMI.LinkBehavior.add("ratingCancel",J);LMI.Init.addFunction(function(){if(("ratingConfig" in LMI.Data)&&("widgetOptions" in LMI.Data.ratingConfig)){P=LMI.Lang.mergeObjects(P,LMI.Data.ratingConfig.widgetOptions)}var Y=M("#ratingIcons");if(!Y){H=new YAHOO.widget.Dialog("ratingsWidget",P);H.hideEvent.subscribe(function(){if("HighlightListing" in LMI){LMI.HighlightListing.resetHighlight(Z.getPageX(LMI.Event),Z.getPageY(LMI.Event));LMI.HighlightListing.enableHighlight()}});H.render()}else{K=new YAHOO.widget.Dialog("ratingsWidget",P);K.hideEvent.subscribe(function(){if("HighlightListing" in LMI){LMI.HighlightListing.resetHighlight(Z.getPageX(LMI.Event),Z.getPageY(LMI.Event));LMI.HighlightListing.enableHighlight()}});K.render();if(K){Z.on(Y,"mouseout",b);Z.on(Y,"mouseover",D);Z.on(Y,"click",D)}R=new LMI.FormUtils.CharCount("#reviewText","#charCount",LMI.Strings.getString("js.field.max.chars"));R.onOverLimit.subscribe(T);R.onUnderLimit.subscribe(W)}Z.on("ratingSubmit","click",U);d=S("#ratingIcons span")});return{showRatingWidget:Q,ratingLinkHandler:V,getSaveCallback:e,getWidget:F,getErrorWidget:O,cancel:I,onSuccess:N,onFail:A,onSubmit:X,onClose:G}})();(function(){var A=YAHOO.util,H=A.Dom,G=A.Event,K=LMI.Element,F=K.getOne,I=LMI.Strings.getString;function J(L){LMI.Widget.Rating.showRatingWidget(L)}function D(V,b){var c=F("#review_"+V.listingId),L=F("#syo_rateit_"+V.listingId),X=F("#rating_"+V.listingId),U=F("#rateit_"+V.listingId),Q,S,Y,T,W,Z=LMI.Listings.getListingsByProperty("reviewListingId",b.listingId)[0]||LMI.Data.searchResultListing,O=LMI.Data.guideType,R,P=0,N,M,a;if(!Z.reviewSummary){Z.reviewSummary={averageRating:b.rating,ratingCount:0,reviewCount:0,roundedAverageRating:b.rating}}Q=parseInt(b.origRating,10);S=parseInt(b.rating,10);P=Z.reviewSummary.reviewCount;if(b.reviewText){if(b.isReviewed==="false"){Z.reviewSummary.reviewCount++}}else{if(b.isReviewed!=="false"){Z.reviewSummary.reviewCount--}}N=Z.reviewSummary.reviewCount;if(Q!==S||P!==N){if(U&&(!L&&!c&&!X)){c=U.parentNode}Y=Z.reviewSummary.averageRating*Z.reviewSummary.ratingCount;if(Q===0){Z.reviewSummary.ratingCount++}T=((Y-Q)+S)/Z.reviewSummary.ratingCount;Z.reviewSummary.averageRating=T;W=Math.round(T*2)/2;R=LMI.Urls.getImg("rating/rating_"+String(W).replace(/\./,"_")+".gif");if((P===0||Q===0||N===0||S===0)&&c){K.truncate(c);X=null;L=null}if(!X&&S>0){X=K.create("img",c,{id:"rating_"+V.listingId})}else{if(S===0&&X){K.destroy(X);X=null}}if(!L&&Z.reviewSummary.reviewCount>0){M=Z.listingSource.name==="MODEL"?I("js.url.model.reviews",encodeURIComponent(Z.name),Z.id,"-"):O?I("js.url.guide."+O+".details.ratingsandreviews",encodeURIComponent(Z.name),Z.id):I("js.url.details.review",Z.prettyDetailsUrl);L=K.create("a",c,{href:LMI.Urls.get(M),id:"syo_rateit_"+V.listingId,className:"ratingNumLink"})}if(X){X.src=R}if(L){if(Z.reviewSummary.reviewCount>1){a=Z.listingSource.name==="MODEL"?"js.product.user.reviews":"js.reviews.reviews.count"}else{a=Z.listingSource.name==="MODEL"?"js.product.user.review":"js.reviews.review.count"}L.innerHTML="("+I(a,Z.reviewSummary.reviewCount)+")"}}}function C(O,N){var P,R,M=F("#ratingSubmitted"),L=N[0],Q=N[2];D(L,Q);if(M){K.destroy(M)}if(L.reviewText){P="js.rating.submitted.with.review";R="js.rating.submitted.edit.review"}else{P="js.rating.submitted.no.review";R="js.rating.submitted.edit.rating"}M=K.create("p",null,{id:"ratingSubmitted",text:I(P)+" ",children:[{tag:"a",href:"#",text:I(R),id:H.generateId(),events:{click:function(T){var S=LMI.Widget.Rating.getWidget();S.cfg.setProperty("context",[this.id,"tl","tl"]);J(L.listingId);G.preventDefault(T)}}}]});LMI.Messages.addMessage(M)}function E(N,M){var P=M[0],L=LMI.Data.ratingConfig,O=true,Q;if(!P.rating&&(LMI.Data.ratingConfig.rating||(!LMI.Data.ratingConfig.review&&!P.reviewText))){H.addClass("ratingCont","error");O=false}if(!P.reviewText&&LMI.Data.ratingConfig.review){H.addClass("reviewText","error");O=false}if(O){LMI.Data.userReviews[P.listingId]=P;Q={listingId:P.listingId,rating:P.rating,reviewText:P.reviewText,properties:{}};if(LMI.Data.guideType){if(LMI.Data.guideType==="restaurants"){Q.properties.isrestaurant=true}if(LMI.Data.guideType==="accommodations"){Q.properties.isaccommodation=true}}LMI.AjaxController.submitReview(LMI.Widget.Rating.getSaveCallback(P),Q)}}function B(){LMI.HighlightListing.resetHighlight(G.getPageX(LMI.Event),G.getPageY(LMI.Event));LMI.HighlightListing.enableHighlight()}LMI.Init.addFunction(function(){var L,M;LMI.Widget.Rating.onSuccess.subscribe(C);LMI.Widget.Rating.onSubmit.subscribe(E);if("HighlightListing" in LMI){L=LMI.Widget.Rating.getWidget();if(L){L.showEvent.subscribe(function(){LMI.HighlightListing.disableHighlight()});L.hideEvent.subscribe(B)}M=LMI.Widget.Rating.getErrorWidget();if(M){M.hideEvent.subscribe(B)}}})})();