	function rateItemInit(rateUrl, rateNodeId, rateItemId, rateBlockId, num, tpl, addn) {
		
		var d = document;
		
		var blockMain = d.getElementById(rateBlockId + num+addn);
		
		if (!blockMain) {
			return false;
		}
		
		var rateInit = new HTMLHttpRequest('rateInit', rateInitCallback);
		
		rateUrl = ( rateUrl == '/' ) ? '' : ( ( rateUrl.length > 3 && rateUrl.substr(rateUrl.length-1, 1) == '/' ) ? rateUrl.substr(0, rateUrl.length-1) : rateUrl );
		
		var URL = '';
		URL += rateUrl;
		URL += '/~nodeid=' + rateNodeId + '~itemid=' + rateItemId + '~num=' + num;
		URL += '~rand=' + sh_rand_str(32)+'~btpl='+tpl+'.ajax';
		rateInit.load(URL);
		
		function rateInitCallback(DOM) {
			var xmldata = this.getXML();
			
			var data = xmldata.getElementsByTagName('data')[0] ? (xmldata.getElementsByTagName('data')[0].childNodes[0] ? xmldata.getElementsByTagName('data')[0].childNodes[0].nodeValue : '') : '';
			
			blockMain.innerHTML = data;
			
		}
	}
	
	function rateItem(rateUrl, rateNodeId, rateItemId, rateItemPoint, rateBlockId, num) {
	
		var d = document;
		
		rateBlockId = (rateBlockId==undefined) ? 'rate_cell_' + num : rateBlockId;
		
		var blockMain = d.getElementById(rateBlockId);
		var blockView = d.getElementById(rateBlockId + '_view');
		var blockRate = d.getElementById(rateBlockId + '_rate');
		var blockInfo = d.getElementById(rateBlockId + '_info');
		var blockRating = d.getElementById(rateBlockId + '_rating');
		var blockRates = d.getElementById(rateBlockId + '_rates');
		
		if (!blockMain || !blockView || !blockRate) {
			return false;
		}
		
		var rateItem = new HTMLHttpRequest('rateItem', rateItemCallback);
		
		rateUrl = ( rateUrl == '/' ) ? '' : ( ( rateUrl.length > 3 && rateUrl.substr(rateUrl.length-1, 1) == '/' ) ? rateUrl.substr(0, rateUrl.length-1) : rateUrl );
		
		var URL = '';
		URL += rateUrl;
		URL += '/~nodeid=' + rateNodeId + '~itemid=' + rateItemId + '~point=' + rateItemPoint + '~mode=rate';
		URL += '~rand=' + sh_rand_str(32) + '.ajax';

		if (blockView.style.display == 'none') blockView.style.display = 'block';
		blockView.id = rateBlockId + '_na';
		blockRate.innerHTML = '<' + '!-- --' + '>';
		blockRate.style.display = 'none';
		
		rateItem.load(URL);
		
		function rateItemCallback(DOM) {
			var xmldata = this.getXML();

			var statusCode = xmldata.getElementsByTagName('code')[0] ? (xmldata.getElementsByTagName('code')[0].childNodes[0] ? xmldata.getElementsByTagName('code')[0].childNodes[0].nodeValue : '') : '';
			var statusMsg = xmldata.getElementsByTagName('msg')[0] ? (xmldata.getElementsByTagName('msg')[0].childNodes[0] ? xmldata.getElementsByTagName('msg')[0].childNodes[0].nodeValue : '') : '';
			var data = xmldata.getElementsByTagName('data')[0] ? (xmldata.getElementsByTagName('data')[0].childNodes[0] ? xmldata.getElementsByTagName('data')[0].childNodes[0].nodeValue : '') : '';
			var rating = xmldata.getElementsByTagName('rating')[0] ? (xmldata.getElementsByTagName('rating')[0].childNodes[0] ? xmldata.getElementsByTagName('rating')[0].childNodes[0].nodeValue : '') : '';
			var rates = xmldata.getElementsByTagName('rates')[0] ? (xmldata.getElementsByTagName('rates')[0].childNodes[0] ? xmldata.getElementsByTagName('rates')[0].childNodes[0].nodeValue : '') : '';
			
			if (blockInfo) {
				blockInfo.style.display = 'block';
				blockInfo.innerHTML = statusMsg;
			}
			
			if (statusCode == 1) {
				if (blockRating) {
					blockRating.innerHTML = rating;
				}
				if (blockRates) {
					blockRates.innerHTML = rates;
				}
				blockMain.innerHTML = data;
				rateCheck(data, rating, num);
			}
			
		}
		
	}
	
	function rateCheck(data, rating, num) {
		var d = document;
		for (i=0;  d.getElementById('rate_cell_' + i); i++) {
			if (i != num) {
				d.getElementById('rate_cell_' + i).innerHTML = data;
				if (d.getElementById('rate_cell_' + i + '_rating')) d.getElementById('rate_cell_' + i + '_rating').innerHTML = rating;
			}
		}
	}
	
	function rateCell(id, num, bnum) {
		var d = document;
		if (!num) {
			if (d.getElementById(id + bnum + '_view')) {
				d.getElementById(id + bnum + '_view').style.display = (d.getElementById(id + bnum + '_view').style.display != 'none') ? 'none' : 'block';
			}
		} else {
			for (i=1; d.getElementById(id + bnum + '_' + i); i++) {
				d.getElementById(id + bnum + '_' + i).style.background = (i <= num) ? 'url(/images/star_e.gif) left top no-repeat' : 'none';
			}
		}
	}