//getContainerWith and hasClassName functions from 'Revenge of the Menu Bar Demo' (Copyright 2000-2004
//by Mike Hall) - Please see http://www.brainjar.com for terms of use.


function findPosX(obj){


	var curleft = 0;

	if (obj.offsetParent) {

		while (obj.offsetParent){

			curleft += obj.offsetLeft
			obj = obj.offsetParent;

		}

	}else if (obj.x) {

		curleft += obj.x;

	}

	curleft = curleft;
	return curleft;


}


function findPosY(obj) {


	var curtop = 0;

	if (obj.offsetParent) {

		while (obj.offsetParent) {

			curtop += obj.offsetTop
			obj = obj.offsetParent;

		}

	} else if (obj.y) {

		curtop += obj.y;

	}

	curtop = curtop;
	return curtop;


}


function starsMouseMove(e){


	MouseX = (navigator.userAgent.indexOf("MSIE") == "-1") ? e.pageX : event.x + document.documentElement.scrollLeft - 2;
	MouseY = (navigator.userAgent.indexOf("MSIE") == "-1") ? e.pageY : event.y + document.documentElement.scrollTop - 2;

	var objX = findPosX(document.getElementById('div_vote_greystars'));
	var objY = findPosY(document.getElementById('div_vote_greystars'));

	var starswidth = (MouseX - objX) ;
	var note = starswidth / 4;
	var note = Math.round(note);

	document.getElementById('div_vote_yellowstars').style.width = starswidth + "px";
	document.getElementById('font_vote_details').innerHTML = "(" + note + "/20)";


}


function starsMouseOut(e){

	var el;

	if (navigator.userAgent.indexOf("MSIE") != "-1") {

		el = window.event.toElement;

	} else if (e.relatedTarget != null) {

		el = (e.relatedTarget.tagName ? e.relatedTarget : e.relatedTarget.parentNode);

	}

	if (getContainerWith(el, "DIV", "greystars") == null) {

		document.getElementById('div_vote_yellowstars').style.width = "40px";
		document.getElementById('font_vote_details').innerHTML = "&nbsp;";

	}

}


function vote(){


	//Get note

	var obj = document.getElementById('div_vote_greystars');
	var objX = findPosX(obj);
	var objY = findPosY(obj);
	var note = (MouseX - objX) / 4;
	var note = Math.round(note);


	//Post vote

	var callBackFunct = function (obj) {document.getElementById('div_vote_greystars').innerHTML = obj.responseText;showVoteNb();}
	var XHR = new XHRConnection();
	XHR.appendData("lang", '<?php echo $langID; ?>');
	XHR.appendData("note", note);
	XHR.appendData("displayType", "graphical");
	XHR.sendAndLoad("vote.php", "POST", callBackFunct);


	//Disable mouse events on vote div

        document.getElementById('font_vote_details').innerHTML = "(…)";
	document.getElementById('font_vote_title').innerHTML = lang_globalnote + " :";
	document.getElementById('div_vote_greystars').onclick = "nothing";
	document.getElementById('div_vote_greystars').onmousemove = "nothing";
	document.getElementById('div_vote_greystars').onmouseout = "nothing";


}


function showVoteNb(){


	var callBackFunct = function (obj) {document.getElementById('font_vote_details').innerHTML = obj.responseText;}
	var XHR = new XHRConnection();
	XHR.appendData("lang", '<?php echo $langID; ?>');
	XHR.appendData("displayType", "text");
	XHR.sendAndLoad("vote.php", "POST", callBackFunct);


}


function getContainerWith(node, tagName, className) {

	// Starting with the given node, find the nearest containing element
	// with the specified tag name and style class.

	while (node != null) {

		if (node.tagName != null && node.tagName == tagName && hasClassName(node, className)) {

			return node;

		}

		node = node.parentNode;

	}

	return node;

}


function hasClassName(el, name) {

	var i, list;

	// Return true if the given element currently has the given class
	// name.

	list = el.className.split(" ");

	for (i = 0; i < list.length; i++) {

		if (list[i] == name) {

			return true;

		}

	}

	return false;

}