
﻿var Rating={ratings:[],init:function(options){var rating=null;for(var x=0;x<this.ratings.length;x++){if(this.ratings[x].container.id==options.container){rating=this.ratings[x];this.ratings[x]=new RatingControl(options);}}
if(rating==null)
this.ratings.push(new RatingControl(options));else
delete rating;}}
window.Rating=Rating;var RatingControl=Class.create();RatingControl.prototype={initialize:function(options){this.container=null;this.list=null;this.hiddenValue=null;this.ratingText=null;this.onClickCallBack=null;this.ratingTextVisible=false;this.options=options;this.setOptions();this.stars=new Array();this.createList();this.createStars();this.setStarValue(this.currentValue);this.setRatingTextVisiblity(this.ratingTextVisible);this.setRatingText(this.currentValue-1);},setOptions:function(){this.container=$(this.options.container);this.hiddenValue=this.options.hiddenValue==null?new object():$(this.options.hiddenValue);this.ratingText=this.options.ratingText==null?new object():$(this.options.ratingText);this.starsCount=this.options.starsCount==null?0:this.options.starsCount;this.hints=this.options.hints;this.value=this.options.value==null?0:this.options.value;this.currentValue=this.value;this.ratedClass=this.options.ratedClass;this.partActiveStarClass=this.options.partActiveStarClass;this.fullActiveStarClass=this.options.fullActiveStarClass;this.readOnly=this.options.readOnly==null?true:this.options.readOnly;this.ratingTextVisible=this.options.ratingTextVisible==null?false:this.options.ratingTextVisible;this.onClickCallBack=this.options.onClickCallBack;},setRatingTextVisiblity:function(val){this.ratingTextVisible=val;if(this.ratingTextVisible){this.ratingText.style.display="inline";}
else{this.ratingText.style.display="none";}},setRatingText:function(index){if(index>=0&&index<this.hints.length)
this.ratingText.innerHTML=this.hints[index];},createStars:function(){for(var i=0;i<this.starsCount;i++){this.stars.push(new Star(this,i));}},createList:function(){this.list=document.createElement('div');this.setClass(this.ratedClass);this.container.appendChild(this.list);},setClass:function(classname){if(!this.readOnly)
classname+=" enabled";this.list.className=classname;this.list.setAttribute("class",classname);},setStarValue:function(value){for(var x=0;x<this.stars.length;x++){if(x<value&&value<x+1){this.stars[x].setClass(this.partActiveStarClass);}
else if(x<value){this.stars[x].setClass(this.fullActiveStarClass);}
else{this.stars[x].setClass("");}}},notifyClick:function(star){if(!this.readOnly){this.currentValue=star.index+1;this.setRatingText(star.index);this.value=this.currentValue;this.setStarValue(this.currentValue);if(this.hiddenValue!=null)
this.hiddenValue.value=this.value;if(this.onClickCallBack!=null)
this.onClickCallBack(this);}},notifyMouseOver:function(star){if(!this.readOnly){this.setStarValue(star.index+1);}},notifyMouseOut:function(star){if(!this.readOnly){this.setStarValue(this.value);}}};var Star=Class.create();Star.prototype={initialize:function(parent,index){this.container=parent.container;this.parent=parent;this.listItem=null;this.anchor=null;this.index=index;this.CreateDOM();},CreateDOM:function(){this.listItem=document.createElement('span');this.parent.list.appendChild(this.listItem);if(this.parent.hints&&this.parent.hints[this.index]!=null)
this.listItem.title=this.parent.hints[this.index];this.listItem.onclick=this.onclick.bindAsEventListener(this);this.listItem.onmouseover=this.onmouseover.bindAsEventListener(this);this.listItem.onmouseout=this.onmouseout.bindAsEventListener(this);},setClass:function(starClass){this.listItem.className=starClass;this.listItem.setAttribute("class",starClass);},onclick:function(e){this.parent.notifyClick(this);},onmouseover:function(e){this.parent.notifyMouseOver(this);},onmouseout:function(e){this.parent.notifyMouseOut(this);}};