
var voteCount = 5;
var canFavorite = false;
var canCalendar = false;

function addVotingBlock ( key, value, voted, id, type ) {
	value = parseFloat(value);
	voted = parseInt(voted);
	var data = '';
	
	if ( voted )
		data = '<div>';
	else
		data = '<div onmouseout="restoreStars(\''+key+'\', \''+value+'\')">';
	data += '<table border="0" cellspacing="0" cellpadding="0" style="float: left;"><tr>';
	if ( voted ) {
		var onclick = "";
		//if ( !$userId ) $onclick = 'onclick="window.location=\'/auth.php?backurl='.(htmlspecialchars($_SERVER['HTTP_REFERRER'])).'\'"';
		for ( i = 0; i < voteCount; i++ ) {
			if(Math.floor(value) > i) {
				data += '<td><div id="vote_'+key+'_'+i+'" class="star-voted" title="'+(i+1)+'" style="position: relative; zoom:1; cursor:default" '+onclick+'></div></td>';
			} else if ( i >= Math.floor(value) && i < Math.ceil(value) ) {
				data += '<td><div id="vote_'+key+'_'+i+'" class="star-half-voted" title="'+(value)+'" style="position: relative; zoom:1; cursor:default" '+onclick+'></div></td>';
			} else {
				data += '<td><div id="vote_'+key+'_'+i+'" class="star-empty" title="'+(i+1)+'" style="position: relative; zoom:1; cursor:default" '+onclick+'></div></td>';
			}
		}
	} else {
		for ( i = 0; i < voteCount; i++ ) {
			if(Math.floor(value) > i) {
				data += '<td><div id="vote_'+key+'_'+i+'" class="star-active star-voted" style="position: relative; zoom:1;" title="'+(i+1)+'" onmouseover="showStars(\''+key+'\', '+i+');" onclick="voteScript.add(\''+key+'\', \''+id+'\', \''+type+'\', '+i+')"></div></td>';
			} else if ( i >= Math.floor(value) && i < Math.ceil(value) ) {
				data += '<td><div id="vote_'+key+'_'+i+'" class="star-active star-half-voted" title="'+(value)+'" style="position: relative; zoom:1;" title="'+(i+1)+'" onmouseover="showStars(\''+key+'\', '+i+');" onclick="voteScript.add(\''+key+'\', \''+id+'\', \''+type+'\', '+i+')"></div></td>';
			} else {
				data += '<td><div id="vote_'+key+'_'+i+'" class="star-active star-empty" style="position: relative; zoom:1;" title="'+(i+1)+'" onmouseover="showStars(\''+key+'\', '+i+');" onclick="voteScript.add(\''+key+'\', \''+id+'\', \''+type+'\', '+i+')"></div></td>';
			}
		}
	}
	data += '</tr></table>';
	data += '<div class="digit_rate">'+value+'</div>';
	data += '<div class="clear"></div></div>';
	
	$('#vote_'+key).html(data);
}

function addFavoriteBlock ( key, favorite, id, type, bind ) {
	favorite = parseInt(favorite);
	if ( favorite )
		$('#favorite_'+key).addClass('on');
	else
		$('#favorite_'+key).removeClass('on');
	if ( bind == true && canFavorite ) {
		$('#favorite_'+key).bind( 'click', function(data) {
			var url = '/favorite/post/id/'+id+'/type/'+type;
			$.postJSON ( url, {}, function ( data ) {
				addFavoriteBlock(key, data.result, id, type);
			});
		});
		
	} else if ( bind == true && !canFavorite ) {
		$('#favorite_'+key).bind( 'click', function(data) {
			window.location = '/auth/?backurl='+escape(window.location.pathname);
		});
	}
}

function addCalendarBlock ( key, added, id, type, bind ) {
	added = parseInt(added);
	if ( added > 0 )
		$('#calendar_'+key).addClass('on');
	else
		$('#calendar_'+key).removeClass('on');
	if ( bind == true && canCalendar ) {
		$('#calendar_'+key).bind( 'click', function(data) {
			var url = '/calendar/post/id/'+id+'/type/'+type;
			$.postJSON ( url, {}, function ( data ) {
				addCalendarBlock(key, data.result, id, type);
			});
		});
		
	} else if ( bind == true && !canCalendar ) {
		$('#calendar_'+key).bind( 'click', function(data) {
			window.location = '/auth/?backurl='+escape(window.location.pathname);
		});
	}
}

function addVisibleBlock ( id, value, bind ) {
	id = parseInt(id);
	value = parseInt(value);
	if ( value > 0 )
		$('#visible_'+id).addClass('on');
	else
		$('#visible_'+id).removeClass('on');
	
	if ( bind == true ) {
		$('#visible_'+id).bind( 'click', function(data) {
			var url = '/favorite/visible/id/'+id;
			$.postJSON ( url, {}, function ( data ) {
				addVisibleBlock(id, data.result);
			});
		});
	}
	
}


function preloadImages() {
	var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function showStars(id, pos) {
	pos = Math.round(pos);
	for(i=0; i<voteCount; i++) {
		if(i<=pos) {
			document.getElementById('vote_'+id+'_'+i).className = 'star-active star-voted';
		} else {
			document.getElementById('vote_'+id+'_'+i).className = 'star-active star-empty';
		}
	}
}

function restoreStars(id, rate, need) {
	if ( voteScript.locked[id] ) return false;
	
	for(i=0; i<voteCount; i++) {
		if( i < Math.floor(rate) ) {
			document.getElementById('vote_'+id+'_'+i).className = 'star-active star-voted';
		} else if(i >= Math.floor(rate) && i < Math.ceil(rate) ) {
			document.getElementById('vote_'+id+'_'+i).className = 'star-active star-half-voted';
		} else {
			document.getElementById('vote_'+id+'_'+i).className = 'star-active star-empty';
		}
	}
}



var favoriteList = {'length':0};
var votingList = {'length':0};

window.favoriteScript = {
	add: function ( id ) {
		var parent_id = 'favorite_'+id;
		
		$.post ( '/bitrix/components/DentalWorld/iblock.favorite/post.php', {action:'add',id:id}, function ( data ) {
			if ( data == 'ok' ) {
				var oneList = {'length':1};
				eval( 'oneList.q'+id+' = '+1+';');
				loadFavorite(oneList);
			}
		});
	},
	remove: function ( id ) {
		var parent_id = 'favorite_'+id;
		
		$.post ( '/bitrix/components/DentalWorld/iblock.favorite/post.php', {action:'remove',id:id}, function ( data ) {
			if ( data == 'ok' ) {
				var oneList = {'length':1};
				eval( 'oneList.q'+id+' = '+1+';');
				loadFavorite(oneList);
			}
		});
	}
}


window.voteScript = {
	locked: new Array,
	add: function ( key, id, type, value ) {
		var parent_id = 'vote_'+id;
		voteScript.locked[id] = true;
		var url = '/rating/post/id/'+id+'/type/'+type;
		
		$.postJSON ( url, {value:value}, function ( data ) {
			addVotingBlock(key, data.result, 1, id, type);
			
			document.getElementById('vote_result_'+key).style.display = 'block';
			setTimeout ( function ( ) {
				document.getElementById('vote_result_'+key).style.display = 'none';
			}, 1000 );
		});
	}
}
