function CheckAll(mainCheckBox) { 
	elements=Form.getInputs('bform', 'checkbox');	
	for(i = 1; i < elements.length; i++) {
    	elements[i].checked = mainCheckBox.checked;
	}
}

function DelSelected() {
	$('action').value="delete";
	document.bform.submit();
}

function UpdateBasket() {
	$('action').value="update";
	document.bform.submit();
}

var mediaTypes = {
	dvd:"Video DVD", mp4cd:"DivX/Mpeg4 CD", mp4dvd:"DivX/Mpeg4 DVD", vcd:"Video CD", vhs:"Видеокассета VHS",
	audiodvd:"Audio DVD", cd:"Audio CD", mp3cd:"Mpeg3 CD", mp3dvd:"Mpeg3 DVD", tape:"Audio кассета"	
};
	
var productTypes = {
	movies:"фильм",
	albums:"альбом"
};			

function buyDialog(ptype,id,title,arrinfo){
	var html="<div id='buyDialogHeader'><b>Внимание!</b> Оплата только наложным платежем или наличными сумами. ";
	html+="Для оплаты кредитными карточками мы подготовили коллекцию лучших наших фильмов";
	html+="</div><div class='buyDialogBody'>";
	html+="<h2>Заказать " + productTypes[ptype] + " '" + title + "'</h2>";
	if (arrinfo) {
		html+="Тип носителя: ";
		html+="<form id='buyForm' name='buyForm' onsubmit='return buySubmit()'><table>";
		for (type in arrinfo){
			for (set in arrinfo[type]){
	    		if (arrinfo[type][set].ins){    			
	    			html+="<tr><td><input type='radio' id='media_"+type+"_"+set+"' value='"+type+"_"+set+"' name='media'></td><td><b>"+mediaTypes[type]+"</b></td><td>";
					if (arrinfo[type][set].txt) {
						html+="<b>"+arrinfo[type][set].txt+"</b>&nbsp;";
					}
	    			if (arrinfo[type][set].itm != 1) {
	    				html+="(дисков/кассет в комплекте: <b>"+arrinfo[type][set].itm+"</b> шт.)";
	    			}
	    			html+="</td></tr>";				
	    		}
	    	}
	    }		
		html+="</table><br><br>";		
		html+="Количество: ";	
		html+="<input type='text' value='1' size='4' id='qty' name='qty'>";	
		html+="<input type='hidden' id='buyDialogID' value='"+ id +"' name='id'>";
		html+="<input type='hidden' id='buyDialogProdType' value='"+ ptype +"' name='ptype'>";
		html+="<input type='hidden' id='buyDialogTitle' value='"+ title +"' name='title'>";
		html+="</form><br><br>";
		html+="</div><div class='greenhr'></div><div class='buyDialogBody' style='font-size:120%; font-weight:bold'>"
		html+="<a href='#' onClick='return buySubmit();'>Заказать</a>";	
		html+="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
	} else {
		html+="<p>Нет в наличии</p><br><br><div class='greenhr'></div><div class='buyDialogBody' style='font-size:120%; font-weight:bold'>";	
	}		
	html+="<a href='#' onClick='return buyClose();'>Отмена</a>";
	html+="<br><div id='buyProgress'>&nbsp;</div>";
	html+="</div>";
	$('buyDialog').innerHTML=html;
	Effect.Appear($('buyDialog'));
	// pre-fetch progress image
	(new Image()).src = '/images/icons/loading.gif';
}

function buySubmit() {
	var media_choice = false;
	elements=Form.getElements('buyForm');
	for (var i=0; i<elements.length; i++){
		if (elements[i].name == 'media' && elements[i].checked)
			media_choice = elements[i].value;	
	}
	if (!media_choice){
		$('buyProgress').innerHTML="<br><font color=red>Ошибка. Вы не выбрали тип носителя...</font>";
		return (false);
	}	
	$('buyProgress').innerHTML="<br><font color=red><img alt='' src='/images/icons/loading.gif'> Идет обработка заказа...</font>";
	var pars = 	'id=' + $F('buyDialogID') + 
				'&type=' + media_choice + 
				'&ptype=' +$F('buyDialogProdType') +
				'&qty=' + $F('qty') + 
				'&title=' + $F('buyDialogTitle');
	var url = '/ru/basket/add/';
	var myAjax = new Ajax.Updater(
		'buyDialog', 
		url,
		{
			method: 'get', 
			parameters: pars,
			asynchronous: true,
			evalScripts: true
		});
	return false;
}		

function buyClose(){
	Effect.Fade($('buyDialog'));
	return false;
}

function basketLoad() {
	if (basketItems) { //	basketItems меняется скриптом
		var url = '/ru/basket/get/';
		var myAjax = new Ajax.Updater(
			'basketList', 
			url,
			{
				method: 'get', 
				asynchronous: true,
				evalScripts: true
			});
	}			
}

var timer = null;

function showBasket() {
	clearTimeout(timer);
	if (basketItems) {
		var coords=findPos($('basketNum'));
		$('basketList').style.top = (coords[1] + 20) + "px";
		$('basketList').style.left = (coords[0]) + "px";
		$('basketList').style.display="block";	
	}
}

var inBasketWindow=0;

function enterBasket() {
	inBasketWindow=1;
}

function exitBasket() {
	inBasketWindow=0;
	setTimeout("hideBasket()",1000);
}
	
function hideBasket() {
	if (!inBasketWindow) $("basketList").style.display="none";
}

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}

function PopupPic(sPicURL, title,w,h) {
	var winl = (screen.width - w) / 2;
	var wint = (screen.height - h) / 2;
	winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+'location=no,menubar=no,status=no,toolbar=no,scrollbars=no,resizable=no';
	var win = window.open(sPicURL, title, winprops);
	win.focus();
	return false;
} 

function showNextWeek() {
	$("nextweek").style.display='inline';
	new Effect.Opacity('nextweek', {duration:1.0, from:0.0, to:1.0});
	$("nextweekbutton").innerHTML='<a href="javascript:hideNextWeek()">&lt;&lt;</a>';
}

function hideNextWeek() {
	$("nextweek").style.display='inline';
	Effect.toggle('nextweek');
	$("nextweekbutton").innerHTML='<a href="javascript:showNextWeek()">&gt;&gt;</a>';
}

//////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////                                      ////////////////////////////////////////
///////////////////////////////////////           RATING            ////////////////////////////////////////
///////////////////////////////////////                                      ////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////

var RATING_IMG = '/images/rating/on.gif';
var RATING_IMG_HOVER = '/images/rating/sel.gif';
var RATING_IMG_BG = '/images/rating/off.gif';
var RATING_IMG_REMOVED = '/images/rating/rem.gif';

function Rating(ratingElementId, maxStars, objectName, formName, ratingMessageId){
	this.ratingElementId = ratingElementId;
	this.maxStars = maxStars;
	this.objectName = objectName;
	this.formName = formName;
	this.ratingMessageId = ratingMessageId

	this.starTimer = null;
	this.starCount = 0;

	// pre-fetch image
	(new Image()).src = RATING_IMG;

	function selectStars(starNum, skipMessageUpdate) {
		this.clearStarTimer();
		this.greyStars();
		this.colorSelStars(starNum);
		if(!skipMessageUpdate)
			this.setMessage(starNum);
	}

	function showStars(starNum, skipMessageUpdate) {
		this.clearStarTimer();
		this.greyStars();
		this.colorStars(starNum);
		if(!skipMessageUpdate)
			this.setMessage(starNum);
	}

	function setMessage(starNum) {
		messages = new Array("Оцените", "Плохо", "Ничего особенного", "Неплохо", "Хорошо", "Супер!");
		document.getElementById(this.ratingMessageId).innerHTML = messages[starNum];
	}

	function colorStars(starNum) {
		for (var i=0; i < starNum; i++)
			document.getElementById('star_' + "_" + (i+1)).src = RATING_IMG;
	}
	
	function colorSelStars(starNum) {
		this.colorStars(this.starCount);
		for (var i=0; i < starNum; i++)
			document.getElementById('star_' + "_" + (i+1)).src = RATING_IMG_HOVER;
	}

	function greyStars() {
		for (var i=0; i < this.maxStars; i++)
			if (i <= this.starCount)
				document.getElementById('star_' + "_"  + (i+1)).src = RATING_IMG_BG; // RATING_IMG_REMOVED;
			else
				document.getElementById('star_' + "_"  + (i+1)).src = RATING_IMG_BG;
	}

	function setStars(docId, starNum, url) {
		this.starCount = starNum;
		this.drawStars(starNum);
		
		var pars = 'docId=' + String(docId) + '&' + 'rating=' + starNum;
		var myAjax = new Ajax.Updater(
			'rating_response', 
			url,
			{
				method: 'post', 
				parameters: pars,
				asynchronous: true,
				evalScripts: true
			});
		return false;
	}

	function drawStars(starNum, skipMessageUpdate) {
		this.starCount=starNum;
		this.showStars(starNum, skipMessageUpdate);
	}

	function clearStars() {
		this.starTimer = setTimeout(this.objectName + ".resetStars()", 300);
	}

	function resetStars() {
		this.clearStarTimer();
		if (this.starCount)
			this.drawStars(this.starCount);
		else
			this.greyStars();
		this.setMessage(0);
	}

	function clearStarTimer() {
		if (this.starTimer) {
			clearTimeout(this.starTimer);
			this.starTimer = null;
		}
	}

	this.clearStars = clearStars;
	this.clearStarTimer = clearStarTimer;
	this.greyStars = greyStars;
	this.colorStars = colorStars;
	this.resetStars = resetStars;
	this.setStars = setStars;
	this.drawStars = drawStars;
	this.showStars = showStars;
	this.setMessage = setMessage;
	this.selectStars = selectStars;
	this.colorSelStars = colorSelStars;
}
