var favoritesMaxSize = 50;
var favoritesMaxDays = 1;
var favoritesTxtMax = 'Блокнот переполнен!';
var favoritesTxtAdd = 'Добавить в блокнот';
var favoritesTxtDel = 'Удалить из блокнота';

function setCookie(name, value, days) 
{
	function getExp(d) 
	{
		var exp = new Date();
		exp.setTime (exp.getTime() + d);
		return '; expires=' + exp.toGMTString();
	}
	if (value.length == 0)
		document.cookie = name + "=" + getExp(-1000) + ";path=/";
	else
		document.cookie = name + "=" + value + getExp(days*24*60*60*1000) + ";path=/";
}
function getCookie(name) 
{
    var dc = document.cookie;
    var prefix = name + '=';
    var begin = dc.indexOf('; ' + prefix);
    if (begin == -1) 
    {
        begin = dc.indexOf(prefix);
        if (begin != 0) 
        	return null;
    }
    else 
    {
        begin += 2;
    }
    var end = dc.indexOf(';', begin);
    if (end == -1) 
        end = dc.length;
    return unescape(dc.substring(begin + prefix.length, end));
}

function favorites(act)
{
	var itemsCount=0;
	var favoritesList = getCookie('favorites');
	if(favoritesList) 
	{
		favoritesList = favoritesList.replace(/^\*/, '');
		for (i=0; i<favoritesList.length;i++)
			if(favoritesList.charAt(i) == ',')
				itemsCount++;
		favoritesList = ',' + favoritesList;
	}
	else 
	{
		favoritesList = '';
	}
	
	if(document.getElementById('favoritesCount')) 
    	document.getElementById('favoritesCount').innerHTML = itemsCount;
	
	var images = document.getElementsByTagName('img');
	for(i = 0; i<images.length; i++) 
	{

		if(images.item(i).className=='favoritesIn' && act=='deleteall') 
		{
           	var list = '';
	    	var checkbox = images.item(i);
	    	checkbox.value = checkbox.id.replace(/favorites/,'');

       		checkbox.className = 'favorites';
			checkbox.title = checkbox.alt = favoritesTxtAdd;
		}
		else if(images.item(i).className=='favorites') 
        {
	    	var checkbox = images.item(i);
	    	checkbox.value = checkbox.id.replace(/favorites/,'');
	    	
        	if(favoritesList.indexOf(',' + checkbox.value + ',')>-1) 
        	{
        		checkbox.className = 'favoritesIn';
				checkbox.src = checkbox.src.replace(/_off/g, '_on');
				checkbox.title = checkbox.alt = favoritesTxtDel;
			}
			else 
			{
				checkbox.title = checkbox.alt = favoritesTxtAdd;
			}
			checkbox.onclick = function() 
			{
            	var list = getCookie('favorites');
            	if(list==null)
            	{
            		list = '';
            	}
            	else
            	{
            		list = list.replace(/^\*/,''); 
            	}
				if(this.className=='favorites') 
				{
            		if(favoritesMaxSize && itemsCount==favoritesMaxSize) 
            		{
            			alert(favoritesTxtMax);
            			var removeElement = list.substr(0, list.indexOf(','));
            			var removeSelectionCheckbox = document.getElementById('favorites'+removeElement);
            			if(removeSelectionCheckbox) 
            			{
            				removeSelectionCheckbox.className = 'favorites';
            				removeSelectionCheckbox.src = checkbox.src.replace(/_on/g, '_off');
            				removeSelectionCheckbox.title = removeSelectionCheckbox.alt = favoritesTxtAdd;
            			}
            			list = list.replace(/^[0-9]+[^0-9]/, '');
            			itemsCount--;
            		}
            		list += this.value + ',';
            		itemsCount++;
            		this.className = 'favoritesIn';
            		this.src = checkbox.src.replace(/_off/g, '_on');
					this.title = this.alt = favoritesTxtDel;
            	}
            	else if(list.length>0) 
            	{
            		list = ',' + list;
            		var patern = new RegExp('[^0-9]+'+this.value+'[^0-9]+', 'g');
            		list = list.replace(patern, ',');
            		list = list.replace(/^[^0-9]+/g,'');
	            	itemsCount--;
	            	this.className = 'favorites';
	            	this.src = checkbox.src.replace(/_on/g, '_off');
            		this.title = this.alt = favoritesTxtAdd;
            	}
            	list = '*' + list;
            	setCookie('favorites', list, favoritesMaxDays);
				if(document.getElementById('favoritesCount')) 
			    	document.getElementById('favoritesCount').innerHTML = itemsCount;
				if(div = document.getElementById('favoritesForm'))
					div.style.visibility = (list.length > 1) ? 'visible' : 'hidden';

            }
		}
		if(act=='deleteall') 
		{
        	setCookie('favorites', '', favoritesMaxDays);
			if(document.getElementById('favoritesCount')) 
		    	document.getElementById('favoritesCount').innerHTML = itemsCount;
		}
		if(div = document.getElementById('favoritesForm'))
			div.style.visibility = (favoritesList) ? 'visible' : 'hidden';
	}
}

if(w3cDOM)
{
	listenEvent (window, "load", favorites);
}
