﻿var Dom = YAHOO.util.Dom,
    Event = YAHOO.util.Event,
    JSON=YAHOO.lang.JSON;
Rate=function(config){
    this.stop=false;
    this.config=config;
    this.init(config);
}    
Rate.prototype={

	init:function(config){
	    var me=this;
	    cE=Dom.get(config.container);if(!cE)return;
	    cE.innerHTML="";
	    var rating = parseInt(config.rating);
	    
	    cE.onmouseout=function(){me.out(this);}
	    for(var i=1; i<=config.max;i++){
	        var img=document.createElement('img');img.id=me.config.container+"_rate_"+i;img.style.cursor=(me.stop?"normal":"pointer");
	        img.onclick=function(){me.update(this);}
	        img.onmouseover=function(){me.over(this);}
	        img.title=i;
	        img.src=(i<=rating?'/js/rating/images/1'+i+'.gif':'/js/rating/images/0'+i+'.gif');
	        cE.appendChild(img);    
	    }
	},
	update:function (o){
	    var me=this;if(me.stop) return;me.stop=true;
	    
	    var container= Dom.get(me.config.container);
	    var rating=o.title;
	    var id=me.config.para;
	    var callback={
            success:function(o){
	            me.config.rating=rating;
                me.init(me.config);
            },
            failure:function(o){
                container.innerHTML='<img src="/js/rating/images/stoprate.gif" align="absmiddle"/>';/*update failure*/
            }
        }
        var jd={"id":id,"p":rating};
        var pd=JSON.stringify(jd);
        Connect.setDefaultPostHeader(false);
        Connect.initHeader('Content-Length', pd.lenght); Connect.initHeader("content-type", "application/json",true);
        var request = Connect.asyncRequest('POST', '/Services/Game.asmx/RateGame',callback,pd);
	    container.innerHTML='<img src="/js/rating/images/doingrate.gif" align="absmiddle"/>';/*loading.. text*/
	},	
	over:function(o){
	    var me=this;if(me.stop) return;
	    
	    var r=o.title;
	    for(var i=1; i<=me.config.max;i++){
	        var img=Dom.get(me.config.container+"_rate_"+i);
	        if(img)img.src=(i<=r?'/js/rating/images/1'+i+'.gif':'/js/rating/images/0'+i+'.gif');
	    }
	},
	out:function (o){
	    var me=this;if(me.stop) return;
	    
	    me.init(me.config);
	}
}
