Event.observe(window,"load",init_rate_js);

var now_rate = new Array();

// 来る可能性のあるIDを全部列挙しておく。あとは自動的にあるかどうか調べてやってくれる。
var id_s = new Array(
		"episode[episode_rate_0]",
		"episode[episode_rate_1]",
		"episode[episode_rate_2]",
		"episode[episode_rate_3]",
		"episode_res[episode_res_rate_1]",
		"episode_res[episode_res_rate_2]",
		"episode_res[episode_res_rate_3]",
		"review[review_rate]"
);

function init_rate_js(){

	var i,j;

	for(i = 0;i < id_s.length;++i){

		if($(id_s[i]+"_id_1")){

			var rate = 0;

			for(j = 1;j <= 5;++j){
				if($(id_s[i]+"_id_"+j)){

					// 確認画面の場合はこのJSが読み込まれる前にis_confirm=trueにしておく。
					if(!is_confirm){
						Event.observe($(id_s[i]+"_id_"+j+"_star"),"click",rate_onClick);
						Event.observe($(id_s[i]+"_id_"+j+"_star"),"mouseover",rate_onMouseOver);
						Event.observe($(id_s[i]+"_id_"+j+"_star"),"mouseout",rate_onMouseOut);

						if($(id_s[i]+"_id_"+j).checked){
							rate = rate < j ? j : rate;
						}
					} else {
						//$(id_s[i]+"_id_"+j+"_star").style.backgroundImage = "url(/img/icon/icon_heart_on.gif)";
						update_star(id_s[i]+"_id_"+j,true);
					}
				}
			}

			// 確認画面の場合はここで終了。
			if(is_confirm){
				continue;
			}

			for(j = 1;j <= rate;++j){
				if($(id_s[i]+"_id_"+j)){
					update_star(id_s[i]+"_id_"+j,true);
				}
			}
			for(;j<=5;++j){
				if($(id_s[i]+"_id_"+j)){
					update_star(id_s[i]+"_id_"+j,false);
				}
			}
			
			now_rate[id_s[i]] = rate;
		}
	}
	
	if(!is_confirm){
		setTimeout(autocheck_rate,100);
	}
}

function autocheck_rate(){

	var i,j;

	for(i = 0;i < id_s.length;++i){

		if($(id_s[i]+"_id_1")){

			var rate = 0;

			for(j = 1;j <= 5;++j){
				if($(id_s[i]+"_id_"+j)){

					if($(id_s[i]+"_id_"+j).checked){
						rate = rate < j ? j : rate;
					}
				}
			}
			for(j = 1;j <= rate;++j){
				if($(id_s[i]+"_id_"+j)){
					update_star(id_s[i]+"_id_"+j,true);
				}
			}
			for(;j<=5;++j){
				if($(id_s[i]+"_id_"+j)){
					update_star(id_s[i]+"_id_"+j,false);
				}
			}
			now_rate[id_s[i]] = rate;
		}
	}
}

function rate_onClick(e){
	
	match = Event.element(e).id.match(/^([^\[]*\[[^\[]*\])_id_(\d)/);

	var i;
	for(i = 1;i <= 5;++i){
		if($(match[1]+"_id_"+i)){
			
			if(i <= match[2]){
				update_star(match[1]+"_id_"+i,true);
			} else{
				update_star(match[1]+"_id_"+i,false);
			}
			
			now_rate[match[1]] = match[2];
		}
	}
}

function rate_onMouseOver(e){
	
	match = Event.element(e).id.match(/^([^\[]*\[[^\[]*\])_id_(\d)_star/);
	
	var i;
	for(i = 1;i <= 5;++i){
		if($(match[1]+"_id_"+i)){
			
			if(i <= match[2]){
				update_star(match[1]+"_id_"+i,true);
			} else{
				update_star(match[1]+"_id_"+i,false);
			}
		}
	}
}

function rate_onMouseOut(e){
	match = Event.element(e).id.match(/^([^\[]*\[[^\[]*\])_id_(\d)/);

	var i;
	for(i = 1;i <= 5;++i){
		if($(match[1]+"_id_"+i)){
			
			if(i <= now_rate[match[1]]){
				update_star(match[1]+"_id_"+i,true);
			} else{
				update_star(match[1]+"_id_"+i,false);
			}
		}
	}
}

function update_star(id,checked){
	
	var on_img = "";
	var off_img = "";
	
	if(id.match(/^episode\[episode_rate_0\]/)){
		on_img = "/img/icon/icon_star_on.gif";
		off_img = "/img/icon/icon_star_off.gif";
	}
	if(id.match(/^episode\[episode_rate_1\]/)){
		on_img = "/img/icon/icon_smile_on.gif";
		off_img = "/img/icon/icon_smile_off.gif";
	}
	if(id.match(/^episode\[episode_rate_2\]/)){
		on_img = "/img/icon/icon_surprise_on.gif";
		off_img = "/img/icon/icon_surprise_off.gif";
	}
	if(id.match(/^episode\[episode_rate_3\]/)){
		on_img = "/img/icon/icon_heart_on.gif";
		off_img = "/img/icon/icon_heart_off.gif";
	}
	if(id.match(/^episode_res\[episode_res_rate_1\]/)){
		on_img = "/img/icon/icon_smile_on.gif";
		off_img = "/img/icon/icon_smile_off.gif";
	}
	if(id.match(/^episode_res\[episode_res_rate_2\]/)){
		on_img = "/img/icon/icon_surprise_on.gif";
		off_img = "/img/icon/icon_surprise_off.gif";
	}
	if(id.match(/^episode_res\[episode_res_rate_3\]/)){
		on_img = "/img/icon/icon_heart_on.gif";
		off_img = "/img/icon/icon_heart_off.gif";
	}
	if(id.match(/^review\[review_rate\]/)){
		on_img = "/img/icon/icon_star_on.gif";
		off_img = "/img/icon/icon_star_off.gif";
	}
	
	if($(id)){
		$(id).checked = checked;
		
		if($(id+"_star")){
			if(checked){
//				$(id+"_star").innerHTML = "<img src=\""+on_img+"\"/>";
				$(id+"_star").style.backgroundImage = "url("+ on_img + ")";
			} else {
//				$(id+"_star").innerHTML = "<img src=\""+off_img+"\"/>";
				$(id+"_star").style.backgroundImage = "url("+ off_img + ")";
			}
		}
	}
}

