var stars = new Array( new Image(), new Image(), new Image() );
for ( var i=1; i<=3; i++ ) stars[ i-1 ].src = '/images/star'+i+'.png';

var req;
var reqTimeout;
var rating_cat_id;

function rating_fill( cat, id, rating ) {
	for ( var i = 1; i <= 5; i++ ) {
		var obj = $( 'rating_'+cat+'_'+id+'_'+i );
		if ( !obj ) return;
		obj.src = ( i <= rating ) ? stars[0].src : ( ( i-0.5 <= rating ) ? stars[2].src : stars[1].src );
	}
}

function rating_mouse( cat, obj, is_over, def_val ) {
	var name = obj.id.toString().split( '_', 4 );
	if ( name.length < 4 ) return;
	var i = ( is_over ) ? name[3] : def_val;
	rating_fill( cat, name[2], i );
}

function rating_ajax_statechange() {
	var div = $( 'rating_save_state_'+rating_cat_id );
	div.innerHTML = rating_ajax_state( req.readyState );
	
    if (req.readyState == 4) {
        clearTimeout( reqTimeout );
		
        if (req.status == 200) {
			if ( req.responseText == 'OK' ) {
				div.parentNode.innerHTML = 'ваш голос учтен';
			}
			else {
				div.innerHTML = 'возникла ошибка на сервере'; // возникла ошибка
			}
        }
		else {
			div.innerHTML = req.statusText; // возникла ошибка
        }
    }
	
}

function rating_select( obj, cat ) {
	var name = obj.id.toString().split( '_', 4 );
	if ( name.length < 4 ) return;
	
	var id = name[2];
	var i = name[3];
	
	rating_cat_id = id;
	
	{ // отправка данных на сервер
		req = null;
		if (window.XMLHttpRequest) {
			try { req = new XMLHttpRequest(); } catch (e) {}
		}
		else if (window.ActiveXObject) {
			try { req = new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) {
				try { req = new ActiveXObject('Microsoft.XMLHTTP'); } catch (e) {}
			}
		}
		
		if ( req ) {
			req.onreadystatechange = rating_ajax_statechange;
			req.open( 'POST', '/utils/ratings.php', true );
			req.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded' );
			req.send( 'cat_name='+cat+'&cat_id='+id+'&rating='+i );
			reqTimeout = setTimeout( 'req.abort();', 5000 );
		}
		else {
			alert( 'Браузер не поддерживает AJAX' );
		}
		
		
		
	}
}

function rating_ajax_state( n ) {
	switch ( n ) {
		case 0:	return 'не создан';
		case 1: return 'загрузка...';
		case 2: return 'загружено';
		case 3: return 'в процессе...';
		case 4: return 'готово';
		default: return 'неизвестное состояние';
	}
}
