function funcErrorRespons(jsonObj){
	// Check error jsonObj
	if( jsonObj.errCode && jsonObj.errCode == 1 ) {
		alert("Hệ thống hiện đang quá tải, vui lòng quay lại sau!");
		return true;
	}
	return false;
}

var over_mouse_rating = [];
function rating_mouse_update(ul, nStar, index, isOver, e){
	var i = 0;
	ul = $(ul);
	if( typeof(ul.mouse_over) == 'undefined' ) {
		ul.mouse_over = [];
		for(i=0; i < nStar; i++) {
			ul.mouse_over[i] = false;
		}
		i = 0;
		ul.li = ul.childNodes[i];
		while( ul.li.nodeName != "LI" ) {
			ul.li = ul.childNodes[++i];
		}
		ul.li._width = ul.li.style.width;
	}
	ul.mouse_over[index] = isOver;
	var _is_over = false;
	for( i=0; i<ul.mouse_over.length;i++ ) {
		if(ul.mouse_over[i] == true)
			_is_over = true;
	}
	if(_is_over == false) {
		ul.li.style.width = ul.li._width;
	} else {
		ul.li.style.width = '0%';
	}
	return false;
}

var track_rating_json = [];
var is_rating_timeup = false;
function rating_json(targetId, url, isRate, e, funcError) {
	e =	(e||window.event);
	if(e) {
		e = new Event(e);
		e.stop();
	}
	if(is_rating_timeup || isRate) {
		alert('Cảm ơn bạn đã bình chọn.');
		return false;
	}
	rating_show();
	var request = (new Json.Remote(url, {
			method:"post", 
			onComplete:function(jsonObj) {
				this.isFinished = true;
				if( typeof(funcError) == 'function' && funcError(jsonObj) == true) {
					rating_remove();
					return;
				}
				if( jsonObj.html ) {
					try{
						$(targetId).innerHTML = jsonObj.html;
						if( jsonObj.js ) {
							eval(jsonObj.js);
						}
					}catch(ex){}
				}
				is_rating_timeup = true;
				rating_remove();
			},
			onRequest:function(){
			},
			onFailure:function(transport){
				alert("Error: " + transport.responseText.replace(/<\/?[^>]+>/gi, ''));
				rating_remove();
			},
			onCancel: function(){
				rating_remove();
				alert("Hệ thống đang quá tải, vui lòng quay lại sau");
			}
	}));
	track_rating_json[track_rating_json.length] = request;
	request.send();
	setTimeout('track_rating_json['+(track_rating_json.length-1)+'].cancel();', (JSON_TIME_OUT ? JSON_TIME_OUT : 4000));
	return false;
}

var rating_WIDTH = 100;
var rating_HEIGHT = 22;
var rating_TOP		= 10;
var rating_doneOnce = 0;
var rating_ZINDEX	= 900;
// called when the user clicks on a smoothbox link
function rating_show() {
	// create iframe, overlay and box if non-existent
	if ( !$("rating_window") ) {
		new Element('div').setProperty('id', 'rating_window').injectInside(document.body);
		$('rating_window').setOpacity(1);
	}
	
	window.onscroll=rating_positionEffect;
	
	// TODO empty window content instead
	// $("rating_window").innerHTML = '<div style="background-color:red;color:white;height:'+rating_HEIGHT+'px; text-align:center; vertical-align:middle;"><img src="'+IMG_URL+'/images/waitinggreen.gif" border="0" style="float:left;"/><p style="height:'+rating_HEIGHT+'px; vertical-align:middle; margin:0px; padding:0px;">&nbsp;&nbsp;Đang tải ...<p></div>';
	$("rating_window").innerHTML = '<div style="background-color:red;color:white;height:'+rating_HEIGHT+'px; text-align:center; vertical-align:middle;"><img src="'+IMG_URL+'/images/waitinggreen.gif" border="0"/>&nbsp;&nbsp;Đang tải ...</div>';
	
	rating_position();
	rating_showWindow();
	window.onresize=function() { 
		rating_position(); 
	}
		
	return false;
}

//helper functions below

function rating_showWindow(){
	//$("rating_window").setStyles({display:"block",opacity:'0'});
	$('rating_window').setStyle('opacity',1);
}

function rating_remove() {
 	document.onkeyup=null;
	document.onkeydown=null;
	
	if($('rating_window')) $('rating_window').remove();
	
	window.onscroll=null;
	window.onresize=null;	
	rating_doneOnce = 0;
	return false;
}

function rating_position() {
	$("rating_window").setStyles({
				 'width': rating_WIDTH+'px', 
				 // 'width': window.getWidth()+'px', 
				 'position': 'absolute',
				 'left': (window.getScrollLeft() + (window.getWidth() - rating_WIDTH)/2)+'px',
				 // 'left': 0+'px',
				 'height': rating_HEIGHT+'px',
				 'text-align': 'center',
				 'top': (window.getScrollTop() - rating_TOP + (window.getHeight() - rating_HEIGHT)/2)+'px',
				 'z-index': (rating_ZINDEX-0)});
}

function rating_positionEffect() {
	new Fx.Styles('rating_window', {duration: 50, transition: Fx.Transitions.sineInOut}).start({
		// 'left':(window.getScrollLeft() + (window.getWidth() - rating_WIDTH)/2)+'px',
		'top':(window.getScrollTop() - rating_TOP + (window.getHeight() - rating_HEIGHT)/2)+'px'});
}
