function Rater(wrapperID,onImg,offImg,autoSubmit){
 if(document.getElementById && document.createTextNode && window.print){
 this.wrapperID = wrapperID;
 this.wrapper = document.getElementById(this.wrapperID);
 this.label = new RaterLabel(this.wrapperID);
 this.disabled = false;
 
 
 var tempInputs = this.wrapper.getElementsByTagName('input');
 
 for(var i=0;i<tempInputs.length;i++){
 if(tempInputs[i].disabled == true){
 this.disabled = tempInputs[i].disabled;
 }
 }
 
 for(var i=0;i<tempInputs.length;i++){
 if(tempInputs[i].getAttribute("type") == 'radio'){
 new RaterControl(tempInputs[i],autoSubmit,this.wrapperID,this.label,onImg,offImg,this.disabled);
 }else if(tempInputs[i].getAttribute("type") == 'submit' && autoSubmit){
 tempInputs[i].style.display = 'none';
 } 
 }
 }
}
function RaterLabel(wrapperID){
 this.wrapperID = wrapperID;
 this.label = document.getElementById(wrapperID).getElementsByTagName('span')[0];
 this.defaultValue = this.label.innerHTML;
 var tempInputs = document.getElementById(this.wrapperID).getElementsByTagName('input');
 tmpvals = new Array('no rating');
 for(var i=0;i<tempInputs.length;i++){
 var tmplabel = tempInputs[i].previousSibling;
 tmpvals.push(tmplabel.innerHTML);
 }
 this.values = tmpvals;
 this.setText = function(rating){
 this.label.innerHTML = rating ? this.values[rating] : this.defaultValue;
 }
}
function RaterControl(input,autoSubmit,wrapperID,labelObj,onImg,offImg,disabled){
 this.wrapperID = wrapperID;
 this.mainLabel = labelObj;
 this.autoSubmit = autoSubmit;
 this.input = input;
 this.label = this.input.previousSibling;
 this.value = this.input.value;
 this.onImg = onImg;
 this.offImg = offImg;
 
 this.getCurrentRating = function(){
 var tempInputs = document.getElementById(wrapperID).getElementsByTagName('input');
 for(i=0;i<tempInputs.length;i++){
 if(tempInputs[i].checked == true){
 var currentRating = tempInputs[i].value;
 }
 }
 
 return currentRating ? currentRating : 0;
 }
 
 this.RaterControlImgSwap = function(){
 for(var i=this.o.value;i>0;i--){
 document.getElementById(this.o.wrapperID + '_img_' + i).src = this.o.onImg;
 }
 this.o.mainLabel.setText(this.o.value);
 }
 
 this.RaterControlImgSwapOut = function(){
 var obj = this.o ? this.o : this;
 
 var tempImages = document.getElementById(obj.wrapperID).getElementsByTagName('img');
 for(var i=0;i<tempImages.length;i++){
 if(tempImages[i].id){
 var temp = tempImages[i].id.split('_');
 var imgNum = temp[2];
 if(imgNum > obj.getCurrentRating()){
 tempImages[i].src = obj.offImg;
 }else{
 tempImages[i].src = obj.onImg;
 }
 }
 }
 obj.mainLabel.setText(obj.getCurrentRating());
 }
 
 this.RaterSetRating = function(){
 var obj = this.o ? this.o : this;
 
 obj.input.checked = true;
 obj.RaterControlImgSwapOut();
 if(obj.autoSubmit){
 obj.input.form.submit();
 return false;
 }
 }
 
 this.RaterKeySetRating = function(evt){
 keyEvt = evt ? evt : (event ? event : null);
 keyCode = keyEvt.charCode ? keyEvt.charCode : keyEvt.keyCode;
 if(keyCode == 32 || keyCode == 13){
 this.o.RaterSetRating();
 }
 }
 
 if(!disabled){
 this.anchor = document.createElement('a');
 this.anchor.setAttribute('href','#');
 this.anchor.setAttribute('title',this.label.firstChild.nodeValue);
 this.anchor.o = this;
 
 this.anchor.onmouseover = this.RaterControlImgSwap;
 this.anchor.onmouseout = this.RaterControlImgSwapOut;
 this.anchor.onmousedown = this.RaterSetRating;
 this.anchor.onkeypress = this.RaterKeySetRating;
 }
 
 
 this.image = document.createElement('img');
 this.image.setAttribute('id',this.wrapperID + '_img_' + this.value);
 this.image.setAttribute('src',this.offImg);
 this.image.setAttribute('alt',this.label.firstChild.nodeValue);
 this.image.setAttribute('border','0');
 this.image.o = this;
 
 this.label.removeChild(this.label.firstChild);
 
 if(!disabled){
 this.anchor.appendChild(this.image);
 this.label.appendChild(this.anchor);
 }else{
 this.label.appendChild(this.image);
 }
 
 this.input.style.display = 'none';
 
 if(this.input.checked){
 this.RaterControlImgSwapOut();
 }
}
