var ids = '';
createXmlHttp = function ()
{
    if (typeof XMLHttpRequest != "undefined")
    {
		return new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {
        var aVersions = ["MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP", "Microsoft.XMLHTTP"];
        for(var i = 0; i < aVersions.length; i++)
        {
            try
            {
				var oXmlHttp = new ActiveXObject(aVersions[i]);
                return oXmlHttp;
            }
            catch (oError)
            {
                // Не удалось подключить
            }
        }
    }
    throw new Error("Невозможно создать объект XMLHttp.");
}

superTimeout = function (func, timeout)
{
	if (!window.superTimer) window.superTimer = Array();
	var t = Array();
	t['f'] = func;
	t['t'] = timeout;
	window.superTimer.push(t);
}

superTime = function ()
{
	for (i in window.superTimer)
	{
		if (window.superTimer[i])
		{
			window.superTimer[i]['t']--;
			if (!window.superTimer[i]['t'])
			{
				window.superTimer[i]['f']();
				window.superTimer[i] = false;
			}
		}
	}
}

get = function (id)
{
	return document.getElementById(id) || false;
}

blockEvent = function (event)
{
	event = event ? event : window.event;
	if(event.stopPropagation) event.stopPropagation();
	else event.cancelBubble = true;
	if(event.preventDefault) event.preventDefault();
	else event.returnValue = false;
}

ItemToBuy = function (id, good, bad)
{
	this.id = id;
	this.elem = get(this.id);
	this.pre = get('pre-' + this.id);
	this.ost = get('ost-' + this.id);
	this.oXmlHttp = false;
	this.t = false;
	this.ost.good = good ? good : 'Товар добавлен в корзину';
	this.ost.bad = bad ? bad : 'Произошла ошибка. Проверьте свое соединение с интернетом и повторите попытку...';
	
	this.buy = function ()
	{
		this.elem.style.display = 'none';
		this.ost.style.display = 'none';
		this.pre.style.display = '';
		this.url = get(this.id).href + '&ajaxquery=31337';
		this.oXmlHttp = createXmlHttp();
		this.oXmlHttp.open("get", this.url, true);
		var thiss = this;
		this.oXmlHttp.onreadystatechange = function () {thiss.getInfo();};
		this.oXmlHttp.send(null);
	}
	
	this.getInfo = function ()
	{
		switch(this.oXmlHttp.readyState)
		{
			case 4 :
				if (this.oXmlHttp.status == 200)
				{
					var div = document.createElement('DIV');
					div.style.display = 'none';
					div.id = 'tmp';
					document.body.appendChild(div);
					div.innerHTML = this.oXmlHttp.responseText;
					var thiss = this;
					superTimeout(function() {thiss.updateBasket();}, 5);
				}
				else
				{
					// произошла ошибка
					this.ost.innerHTML = this.ost.bad;
					this.ost.style.display = '';
					this.pre.style.display = 'none';
					
					var thiss = this;
					superTimeout(function() {thiss.errorDie();}, 5);
				}                
			break;
		}
	}
	
	this.updateBasket = function ()
	{
		if (get('basket_upd'))
		{
			get('basket').innerHTML = get('basket_upd').innerHTML;
			document.body.removeChild(get('tmp'));
			this.pre.style.display = 'none';
			this.ost.style.display = '';
			var thiss = this;
			//superTimeout(function() {thiss.die();}, 60);
		}
	}
	
	this.errorDie = function () 
	{
		this.ost.style.display = 'none';
		this.ost.innerHTML = this.ost.good;
		this.elem.style.display = '';
	};
	
	this.die = function () 
	{
		//this.ost.style.display = 'none';
		this.elem.id='';
		this.elem.href='/basket/';
		this.elem.innerHTML='Оформить заказ';
		this.elem.style.display = '';
	};

}


load = function (e)
{
	showPreloader();
	var target = e ? e.target : window.event.srcElement;
	blockEvent(e);
	target = target.href ? target : target.parentNode;
	if (target.href)
	{
		if (window.passiveBird)
		{
			window.passiveBird();
		}
		get('overlay').style.height = (document.documentElement.scrollHeight) + 'px';
		get('overlay').style.display = '';
		var top = (document.body.scrollTop ? document.body.scrollTop : document.documentElement.scrollTop) + 150;
		get('item').style.top = (top > 0 ? top : 0) + 'px';
		get('item').style.display = '';
		get('closebut').onclick = closePopup;
		var href = target.href.split('?');
		hrefInfo = location.href.split('/');
		hrefInfo.pop();
		var url = href[0] + '?ajaxquery=31337' + '&t='+hrefInfo.pop() + (href[1] ? '&'+href[1] : ''); 
		var oXmlHttp = createXmlHttp();
		oXmlHttp.open("get", url, true);
		oXmlHttp.onreadystatechange = function ()
		{
			switch(oXmlHttp.readyState)
			{
				case 4 :                     
					if (oXmlHttp.status == 200)
					{
						var div = document.createElement('DIV');
						div.style.display = 'none';
						div.id = 'tmp';
						document.body.appendChild(div);
						div.innerHTML = oXmlHttp.responseText;
						window.t = setTimeout('showResult()', 50);
					}
					else
					{
						get('itembox').innerHTML = 'Не удалось соединиться с сервером. Проверьте свое подключение к интернету.';
					}                
				break;
			}
		}
		oXmlHttp.send(null);
	}
}

showPreloader = function ()
{
	if (!get('item-info'))
	{
		var div = document.createElement('DIV');
		div.id = 'item-info';
		get('itembox').insertBefore(div, get('before-item'));
	}
	get('item-info').style.height = (get('itembox').offsetHeight > 100 ? get('itembox').offsetHeight : 100) + 'px';
	get('item-info').innerHTML = '<img src="/images/ajaxloading.gif" class="ajaxloading" alt="Загрузка..."/>';
	get('item-info').id = 'item-info-old';
	
	if (!get('similar-info'))
	{
		var div = document.createElement('DIV');
		div.id = 'similar-info';
		get('similarbox').insertBefore(div, get('before-similar'));
	}
	get('similar-info').style.height = (get('similarbox').offsetHeight > 100 ? get('similarbox').offsetHeight : 100) + 'px';
	get('similar-info').innerHTML = '<img src="/images/ajaxloading.gif" class="ajaxloading" alt="Загрузка..."/>';
	get('similar-info').id = 'similar-info-old';
}

hidePreloader = function ()
{
	if (get('item-info-old')) get('itembox').removeChild(get('item-info-old'));
	if (get('similar-info')) get('similarbox').removeChild(get('similar-info-old'));
}

findNowIdKey = function ()
{
	var id = get('item-info').className.replace('item', '');
	for (var i = 0; i < ids.length; i++)
	{
		if (ids[i] == id)
		{
			return i;
		}
	}
}

findNextItem = function ()
{
	if (ids.length)
	{
		return ids[findNowIdKey() + 1] || false;
	}
	else
	{
		return '#href';
	}
}

findPrevItem = function ()
{
	if (ids.length)
	{
		return ids[findNowIdKey() - 1] || false;
	}
	else
	{
		return '#href';
	}
}

showResult = function ()
{
	hidePreloader();
	clearTimeout(window.t);
	get('itembox').insertBefore(get('item-info'), get('before-item'));
	if (get('similar-info'))
	{
		get('similarbox').insertBefore(get('similar-info'), get('before-similar'));
		get('similarbox').style.display = '';
	}
	else
	{
		get('similarbox').style.display = 'none';
	}
	var a = get('item').getElementsByTagName('A');
	var prevSpan = false;
	var nextSpan = false;
	for (var i = 0; i < a.length; i++)
	{
		if (a[i].id.search('buy') > -1)
		{
			a[i].onclick = buy;
		}
		if (a[i].id == 'next_item_link')
		{
			var nextItem = findNextItem();
			var nextLink = get('next_item_link');
			if (nextItem == '#href')
			{
				// do nothing
			}
			else if (nextItem)
			{
				// set new url
				nextLink.href = 'http://' + document.domain + '/catalogue/item-' + nextItem + '/';
			}
			else
			{
				// disable link
				var nextSpan = document.createElement('SPAN');
			}
			a[i].onclick = load;
		}
		if (a[i].id == 'prev_item_link')
		{
			var prevItem = findPrevItem();
			var prevLink = get('prev_item_link');
			if (prevItem == '#href')
			{
				// do nothing
			}
			else if (prevItem)
			{
				// set new url
				prevLink.href = 'http://' + document.domain + '/catalogue/item-' + prevItem + '/';
			}
			else
			{
				// disable link
				var prevSpan = document.createElement('SPAN');
			}
			a[i].onclick = load;
		}
	}
	if (prevSpan) prevLink.parentNode.replaceChild(prevSpan, prevLink);
	if (nextSpan) nextLink.parentNode.replaceChild(nextSpan, nextLink);
	document.body.removeChild(get('tmp'));
}

closePopup = function ()
{
	get('itembox').removeChild(get('item-info'));
	get('itembox').style.height = 'auto';
	if (get('similarbox').style.display == '')
	{
		get('similarbox').style.height = 'auto';
		get('similarbox').removeChild(get('similar-info'));
	}	
	get('overlay').style.display = 'none';
	if (window.activeBird)
	{
		window.activeBird();
	}	
	get('item').style.display = 'none';
	get('similarbox').style.display = 'none';
	get('closebut').onclick = function () {};
}

buy = function (e)
{
	var target = e ? e.target : window.event.srcElement;
	blockEvent(e);
	target = target.href ? target : target.parentNode;
	if (target.href)
	{
		var item = new ItemToBuy(target.id);
		item.buy();
	}
}


loadItemOnLoadFunc = function ()
{
	setInterval("superTime()", 50);
	if (get('itemslist'))
	{
		var a = get('itemslist').getElementsByTagName('A');
		for (var i = 0; i < a.length; i++)
		{
			if (a[i].id.search('link') > -1)
			{
				//a[i].onclick = load;
			}
			if (a[i].id.search('buy') > -1)
			{
				a[i].onclick = buy;
			}
		}
	}
	if (get('item'))
	{
		var a = get('item').getElementsByTagName('A');
		for (var i = 0; i < a.length; i++)
		{
			if (a[i].id.search('buy') > -1)
			{
				a[i].onclick = buy;
			}
		}
	}
	if (get('similarlist'))
	{
		var a = get('similarlist').getElementsByTagName('A');
		for (var i = 0; i < a.length; i++)
		{
			if (a[i].id.search('buy') > -1)
			{
				a[i].onclick = buy;
			}
		}
	}
}


if (window.loadFuncs)
{
	window.loadFuncs[window.loadFuncs.length] = loadItemOnLoadFunc;
}
else
{
	window.loadFuncs = new Array(loadItemOnLoadFunc);
}

