
﻿
var Rating=Class.create();Rating.prototype={initialize:function(container,valuestore,readonly,imagepath){this.container=$(container);this.valuestore=$(valuestore);this.readonly=readonly;this.imagepath=imagepath;this.setOptions();this.stars=new Array();this.createStars();},setOptions:function(){this.starsCount=5;this.hints=['Rossz','Elmegy','Jó','Remek','Szuper!'];this.value=this.valuestore.value-1;this.emptyImageUrl=this.imagepath+"/star_empty.gif";this.hoverImageUrl=this.imagepath+"/star_hover.gif";this.votedImageUrl=this.imagepath+"/star_voted.gif";this.afterYouVotedImageUrl=this.imagepath+"/star_f.gif";this.votedHalfImageUrl=this.imagepath+"/star_voted_half.gif";this.votedHalfImageUrl=this.imagepath+"/star_voted_half.gif";this.afterYouVotedHalfImageUrl=this.imagepath+"/star_h.gif";this.isEnabled=!this.readonly;},createStars:function(){for(var i=0;i<this.starsCount;i++)
{this.stars.push(new Star(this,i));}
this.setVoted(this.value);},notifyMouseOver:function(star){this.currentValue=star.index;this.setHover(true,star.index);},notifyMouseOut:function(star){this.currentValue=star.index;setTimeout(this.setUnHover.bind(this),300);if(this.currentValue!=star.index)
this.setHover(true,this.currentValue);},setUnHover:function(){this.setHover(false,this.starsCount-1);this.setVoted(this.value);},notifyClick:function(star){this.setAfterYouVoted(star.index);},setHover:function(isSetHover,index){for(var i=0;i<index+1;i++)
{this.stars[i].setHover(isSetHover);}},setVoted:function(index){for(var i=0;i<index+1;i++)
{if(i-(index+1)>-1)
this.stars[i].setVoted(this.votedHalfImageUrl);else
this.stars[i].setVoted(this.votedImageUrl);}},setAfterYouVoted:function(index){this.setHover(false,this.starsCount-1);for(var i=0;i<index+1;i++)
{if(i-(index+1)>-1)
this.stars[i].setVoted(this.afterYouVotedHalfImageUrl);else
this.stars[i].setVoted(this.afterYouVotedImageUrl);}
this.value=index;this.valuestore.value=index+1;}};var Star=Class.create();Star.prototype={initialize:function(parent,index){this.container=parent.container;this.parent=parent;this.img=null;this.index=index;this.CreateDOM();},CreateDOM:function(){this.img=document.createElement('IMG');this.img.src=this.parent.emptyImageUrl;this.parent.container.appendChild(this.img);if(this.parent.hints)
this.img.title=this.parent.hints[this.index];this.img.onclick=this.onclick.bindAsEventListener(this);this.img.onmouseover=this.onmouseover.bindAsEventListener(this);this.img.onmouseout=this.onmouseout.bindAsEventListener(this);},setHover:function(isSetHover){this.img.src=!isSetHover?this.parent.emptyImageUrl:this.parent.hoverImageUrl;},setVoted:function(url){this.setImage(url);this.isVoted=true;},setAfterYouVoted:function(){this.img.src=this.parent.afterYouVotedImageUrl;this.isVoted=true;},setImage:function(url){this.img.src=url;},onmouseover:function(e){if(this.parent.isEnabled)
{this.img.style.cursor='pointer';this.parent.notifyMouseOver(this);}},onmouseout:function(e){if(this.parent.isEnabled)
{this.img.style.cursor='default';if(this.isNextElemStar(e))
this.parent.notifyMouseOut(this)
else
{if(this.isVoted)
this.setVoted(this.getVotedImageUrl());else
this.img.src=this.parent.emptyImageUrl;}}},getVotedImageUrl:function(){return(this.parent.value-(this.index)>-1&&this.parent.value-(this.index)<0)?this.parent.votedHalfImageUrl:this.parent.votedImageUrl;},isNextElemStar:function(e){isIE=navigator.userAgent.toLowerCase().indexOf("ie")!=-1;if(isIE)
return e.toElement.tagName!='IMG';else
return e.relatedTarget.tagName!='IMG';},onclick:function(e){if(this.parent.isEnabled)
{this.img.style.cursor='default';this.parent.notifyClick(this);}}};
