/* main javascript */
function popupPhoto(cat, id)
{
	var w = window.open('/popup/photo-' + cat + '-' + id,'','menubar=no,resizable=no,scrollbars=no,location=no,width=500,height=300,toolbar=no,top=100,left=100');
	w.focus();
}

function popupVideo(cat, id)
{
	var w = window.open('/popup/video-' + cat + '-' + id,'','menubar=no,resizable=yes,scrollbars=no,location=no,width=500,height=300,toolbar=no,top=100,left=100');
	w.focus();
}
function popupPrint(src, ids)
{
	var w = window.open('/popup/print/' + src + '-' + ids,'','menubar=yes,resizable=no,scrollbars=yes,location=no,width=620,height=550,toolbar=no,top=20,left=20');
	w.focus();
}

/* show hidden container (and hide control) */
function showHiddenCont(cont, control)
{
	var cont = typeof(cont) == 'string' ? document.getElementById(cont) : cont;
	var control = typeof(control) != 'undefined' ? (typeof(control) == 'string' ? document.getElementById(control) : control) : null;
	
	// hiding control
	if (control != null) control.style.display = 'none';
	// showing container
	cont.style.display = 'block';
}


/* sys message functions */
function showFSysMsg()
{
	var msg = document.createElement('div');
	msg.className = 'fsys_message';
	msg.id = 'fsys_message';
	
	var wrapper = msg.appendChild(document.createElement('div'));
	wrapper.className = 'wrapper';
	
	var header = wrapper.appendChild(document.createElement('h3'));
	header.className = 'head2';
	header.appendChild(document.createTextNode(fsysmsg_caption));
	
	var content = wrapper.appendChild(document.createElement('div'));
	content.innerHTML = fsysmsg_msg;
	
	var cl = msg.appendChild(document.createElement('a'));
	cl.className = 'std close';
	cl.href = 'javascript:closeFSysMsg();';
	cl.appendChild(document.createTextNode('закрыть'));
	
	document.body.appendChild(msg);
	
	// show msg
	center(msg);
	
	// for centering when scrolling
	window.onscroll = function(){ center(document.getElementById('fsys_message')); }
}

// hide sysmessage
function closeFSysMsg()
{
	var msg = document.getElementById('fsys_message');
	
	// show msg
	msg.style.display = 'none';
	
	// remove scroll
	window.onscroll = function() {};
}


// center on screen
function center(element)
{
	var my_width  = 0;
	var my_height = 0;
	
	if (typeof(window.innerWidth) == 'number' )
	{
		my_width = window.innerWidth;
		my_height = window.innerHeight;
	}
	else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight))
	{
		my_width = document.documentElement.clientWidth;
		my_height = document.documentElement.clientHeight;
	}
	else if (document.body && (document.body.clientWidth || document.body.clientHeight))
	{
		my_width  = document.body.clientWidth;
		my_height = document.body.clientHeight;
	}
	
	var scrollY = 0;
	
	if (document.documentElement && document.documentElement.scrollTop)
	{
		scrollY = document.documentElement.scrollTop;
	}
	else if (document.body && document.body.scrollTop)
	{
		scrollY = document.body.scrollTop;
	}
	else if (window.pageYOffset)
	{
		scrollY = window.pageYOffset;
	}
	else if (window.scrollY)
	{
		scrollY = window.scrollY;
	}
	
	element.style.display = 'block';
	
	var element_width = element.offsetWidth;
	var element_height = element.offsetHeight;
	
	var setX = (my_width  - element_width) / 2;
	var setY = (my_height - element_height) / 2 + scrollY;
	
	setX = (setX < 0) ? 0 : setX;
	setY = (setY < 0) ? 0 : setY;
	
	element.style.left = setX + "px";
	element.style.top  = setY + "px";
}

// confirm action
function act_confirm(phrase)
{
	return window.confirm(phrase);
}

// add to favorites
function addToFav(cid, img)
{
	// show processing icon
	img.src = '/images/icons/ic_process.gif';
	img.onclick = function(){};
	
	// making request
	var req = new ReqWrapper('/ajax/add_fav', FavXMLHandler);
	req.debug = true;
	req.MakeRequest({ cid: cid, oid: img.id });
}

// remove from favorites
function delFromFav(cid, img)
{
	// show processing icon
	img.src = '/images/icons/ic_process.gif';
	img.onclick = function(){};
	
	// making request
	var req = new ReqWrapper('/ajax/del_fav', FavXMLHandler);
	req.debug = true;
	req.MakeRequest({ cid: cid, oid: img.id });
}

// add/del favorite XML handler
FavXMLHandler = function(ac_obj)
{
	var xml = ac_obj.getXML();
	
	if ((xml != null) && xml.documentElement)
	{
		var root = xml.documentElement;
		
		var cid = root.getAttribute('cid');
		var result = document.evaluate("//img[@alt='cock_" + cid + "']", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
		
		if (root.getAttribute('action') == '+')
		{
			var item, i = 0;
			while (item = result.snapshotItem(i++))
			{
				item.src = '/images/icons/ic_favorite_del.gif';
				item.title = "Удалить из фаворитов";
				item.onclick = function(){ delFromFav(cid, this); };
			}
		}
		else
		{
			var item, i = 0;
			while (item = result.snapshotItem(i++))
			{
				item.src = '/images/icons/ic_favorite_add.gif';
				item.title = "Добавить в фавориты";
				item.onclick = function(){ addToFav(cid, this); };
			}
		}
	}
}

/* reset form */
function resetForm(form_id)
{
	var elements = document.forms[form_id].elements;
	for (var i = 0, n = elements.length; i < n; i++)
	{
		var element = elements[i];
		switch (true)
		{
			// select
			case element.tagName == 'SELECT':
				element.selectedIndex = 0;
				break;
			
			// input text
			case (element.tagName == 'INPUT') && (element.type == 'text'):
				element.value = '';
				break;
			
			// input checkbox
			case (element.tagName == 'INPUT') && (element.type == 'checkbox'):
				element.checked = false;
				break;
		}
	}
}

/* checkboxes handling for group ops */
function checkCCB(obj)
{
	var id = obj.id;
	var id_arr = id.split('_', 2);
	var pref = id_arr[0];
	
	var cbs = document.getElementsByTagName('input');
	var val = obj.checked == true;
	
	// checking / unchecking all group members
	for (var i = 1, n = cbs.length; i < n; i++)
	{
		if (cbs[i].type != 'checkbox') continue;
		if (cbs[i].disabled) continue;
		var cbid = cbs[i].id;
		if (cbid.indexOf(pref + '_') != 0) continue;
		
		cbs[i].checked = val;
	}
	
	// showing bulk operations form if it exists
	var bulk;
	if (bulk = document.getElementById('bulk_operations'))
	{
		bulk.style.display = val ? 'block' : 'none';
	}
}

function setCCB(obj)
{
	var id = obj.id;
	var id_arr = id.split('_', 2);
	var pref = id_arr[0];
	var a_cb = document.getElementById(pref + '_all');
	
	// checking values
	var cbs = document.getElementsByTagName('input');
	var val = true;
	var ival = false;
	for (var i = 1, n = cbs.length; i < n; i++)
	{
		if (cbs[i].type != 'checkbox') continue;
		var cbid = cbs[i].id;
		if (cbid == a_cb.id) continue;
		if (cbid.indexOf(pref + '_') != 0) continue;
		val = val && (cbs[i].checked == true);
		ival = ival || (cbs[i].checked == true);
	}
	
	// setting value
	a_cb.checked = val;
	
	// showing bulk operations form if it exists
	var bulk;
	if (bulk = document.getElementById('bulk_operations'))
	{
		bulk.style.display = ival ? 'block' : 'none';
	}
}

// gathering checkbox ids
function getChecks(pref)
{
	var checks = new Array();
	
	var cbs = document.getElementsByTagName('input');
	for (var i = 1, n = cbs.length; i < n; i++)
	{
		if (cbs[i].type != 'checkbox') continue;
		
		var cbid = cbs[i].id;
		if (cbid == pref + '_all' || cbid.indexOf(pref + '_') != 0) continue;
		
		if (cbs[i].checked) checks.push(cbid.slice(pref.length + 1));
	}
	
	return checks;
}

// bulk remove from favorites
function deleteCheckedF(obj)
{
	// show processing icon
	getFirstChild(obj).src = '/images/icons/ic_process.gif';
	
	// gathering ids
	var ids = getChecks('cc');
	
	// making request
	var req = new ReqWrapper('/ajax/del_fav', FFavXMLHandler);
	req.MakeRequest({ cid: ids.join('+') });
}

// del checked favorites XML handler
FFavXMLHandler = function(ac_obj)
{
	var xml = ac_obj.getXML();
	
	if ((xml != null) && xml.documentElement)
	{
		window.location.href = window.location.href;
	}
}

// bulk print favorites
function printCheckedF(obj)
{
	// gathering ids
	var ids = getChecks('cc');
	
	// opening popup
	if (ids.length > 0)	popupPrint('cocktail', ids.join(','));
}

// reset cocktail search form with flash movie
function resetCocktailSearchForm()
{
	resetForm('search');
	if (iBrowser.isIE)
		document.ms_cocktail_color_movie.SetVariable('reset', '1');
	else
		document.getElementById('ms_cocktail_color_movie').SetVariable('reset', '1');
}

// send cocktail to friend
function rcmdCocktailToFriend(cocktail_id)
{
	var win = new PromptWindow('Введите E-mail друга:', { type : 'text' }, rcmdCocktailToFriendCallback);
	COCKTAIL_ID = cocktail_id;
}

function rcmdCocktailToFriendCallback(val)
{
	if (val != null)
	{
		var reg = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})+$/;
		if (reg.test(val)) // email valid
		{
			var req = new ReqWrapper('/ajax/recommend_cocktail', rCTFXMLHandler);
			var params = new Object;
			params['cid'] = COCKTAIL_ID;
			params['email'] = val;
			req.MakeRequest(params);
		}
		else
		{
			var win = new MessageWindow('Ошибка E-mail', 'Вы ввели невалидный адрес e-mail ' + val);
		}
	}
}

rCTFXMLHandler = function(ac_obj)
{
	var xml = ac_obj.getXML();
	
	if ((xml != null) && xml.documentElement)
	{
		var email = xml.documentElement.getAttribute('email');
		var win = new MessageWindow('Рекомендовать коктейль другу', 'Рекомендация успешно отправлена на e-mail ' + email);
	}
}

// send cocktail to friend
function rcmdArticleToFriend(cocktail_id)
{
	var win = new PromptWindow('Введите E-mail друга:', { type : 'text' }, rcmdArticleToFriendCallback);
	COCKTAIL_ID = cocktail_id;
}

function rcmdArticleToFriendCallback(val)
{
	if (val != null)
	{
		var reg = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})+$/;
		if (reg.test(val)) // email valid
		{
			var req = new ReqWrapper('/ajax/send_article', rATFXMLHandler);
			var params = new Object;
			params['cid'] = COCKTAIL_ID;
			params['email'] = val;
			req.MakeRequest(params);
		}
		else
		{
			var win = new MessageWindow('Ошибка E-mail', 'Вы ввели невалидный адрес e-mail ' + val);
		}
	}
}

rATFXMLHandler = function(ac_obj)
{
	var xml = ac_obj.getXML();
	
	if ((xml != null) && xml.documentElement)
	{
		var email = xml.documentElement.getAttribute('email');
		var win = new MessageWindow('Отправить статью другу', 'Статья успешно отправлена на e-mail ' + email);
	}
}