//<![CDATA[

/* cross browser events */

function addEvent(target, event, handler) {
  if (target.addEventListener) {
    target.addEventListener(event, function(e) { handler(e); }, false);
  } else if (target.attachEvent) {
    target.attachEvent("on" + event, function(e) { handler(e); } );
  }
}

function target(e) {
	return e.target?e.target:e.srcElement;
}

/* window load event list */

function Window_addLoadEvent(event) {
	if (!window.loadEventList)
		window.loadEventList = new Array();
	window.loadEventList.push(event);
}

function Window_init() {
	if (!window.loadEventList) return;
	while (window.loadEventList.length) {
		window.loadEventList.pop()();
	}
}

window.addLoadEvent = Window_addLoadEvent;

addEvent(window, "load", Window_init);

/* stars */

var starsPath = "/images/star_";

function overStars(e) {
	var score = target(e).score;
	var anchor = target(e).parentNode;
	var stars = anchor.childNodes;
	for (var i = 0; i < 10; i++) {
		var src = starsPath;
		if (i % 2)
			src += "right_";
		else
			src += "left_";
		if (i / 2 >= score)
			src += "off.png";
		else
			src += "on.png";
		stars[i].src = src;
	}
	anchor.handler(anchor, anchor.priorHref, score);
}

function defaultStarsHandler(anchor, href, score) {
	anchor.href = href + "&score=" + score;
}

function genStars(container, score, handler) {
	score = score?score:0;
	var isAnchor = container.tagName.toLowerCase() == "a";
	if (isAnchor)	{
		container.priorHref = container.href;
		container.handler = handler?handler:defaultStarsHandler;
	}
	var star;
	for (var i = 0; i < 10; i++) {
		star = document.createElement("img");
		star.score = i / 2 + 0.5;
		var src = starsPath;
		if (i % 2) {
			star.className = "starRight";
			src += "right_";
		} else {
			star.className = "starLeft";
			src += "left_";
		}
		if (i / 2 >= score)
			src += "off.png";
		else
			src += "on.png";
		star.src = src;
		container.appendChild(star);
		if (isAnchor)	{
			addEvent(star,"mouseover", overStars);
		}
	}
}

function getElementsByNameFix(name, tag) {
	var elements = document.getElementsByTagName(tag);
	var result = new Array();
	for (var i = 0, length = elements.length; i < length; i++) {
		if (elements[i].getAttribute("name") == name) {
			result.push(elements[i]);
		}
	}
	return result;
}

function genStarsByName(name, handler) {
	if (window.attachEvent) return;
	var elements;
	/*if (window.attachEvent) {
		elements = new Array();
		var tags = ["a", "div", "span"];
		for (var i = 0; i < tags.length; i++)
			elements = elements.concat(getElementsByNameFix(name, tags[i]));
	} else  */
		elements = document.getElementsByName(name);
	for (var i = 0, length = elements.length; i < length; i++) {
		var container = elements[i];
		var score = container.getAttribute("score");
		score = parseFloat(score);
		score = score == score?score:0;
		genStars(container, score, handler);
	}
}

//]]>