Site = function() { }

Site.images = [];
Site.eFilters = [];
Site.eActive = 0;
Site.eBlink = 0;
Site.cashe = [];


Site.preload = function(src) {
	Site.images[Site.images.length] = new Image();
	Site.images[Site.images.length-1].src = src;
}


Site.eFilterRegister = function(count) {
	if (count < 2) return;
	var o;
	for (var i = 0; i < count; i++) {
		o = document.getElementById('itemEF' + i);
		if (o) Site.eFilters[i] = o;
		else {
			Site.eFilters = [];
			return;
		}
	}
	window.setTimeout('Site.eFilterBlink();', 2000);
}

Site.eFilterBlink = function() {
	Site.eFilters[Site.eActive].style.display = (Site.eFilters[Site.eActive].style.display == 'none') ? '' : 'none';
	if (Site.eBlink > 5) {
		Site.eActive++;
		if (!Site.eFilters[Site.eActive]) Site.eActive = 0;
		Site.eFilters[Site.eActive].style.display = '';
		Site.eBlink = 0;
		window.setTimeout('Site.eFilterBlink();', 2000);
		return;
	}
	window.setTimeout('Site.eFilterBlink();', 300);
	Site.eBlink++;
}

Site.itemBg = function(button) {
	var name;
	if (button == 'preview') name = 'itemPreview'; else name = 'itemNext';
	return document.getElementById(name);
}

Site.itemOver = function(button) {
	var bg = Site.itemBg(button);
	if (bg) bg.className = 'bgColorDgreen';
}

Site.itemOut = function(button) {
	var bg = Site.itemBg(button);
	if (bg) bg.className = 'bgColorGrayAF';
}

Site.buy = function(id, control, type) {
	var buy = new Ajax('/kernel/shop/buy.php');
	buy.parameters = '?id=' + id + '&ctrl=' + control + '&nocashe=' + Ajax.nocash();
	
	buy.include = { parent : null, button : '', control : control, id : id, type : type };
	
	switch (type) {
		case 0 :
			var button = document.getElementById('buyThisLink' + id);
			if (button) {
				buy.include.button = button.parentNode.innerHTML;
				buy.include.parent = button.parentNode;
				button.parentNode.innerHTML = '<span class="colorDred">Ждите</span>';
			}
		break;
		case 1 :
			var button = document.getElementById('buyThisButton' + id);
			if (button) {
				buy.include.button = button.parentNode.innerHTML;
				buy.include.parent = button.parentNode;
				button.parentNode.innerHTML = '<img src="/kernel/images/pics/but.wait.gif" width="89" height="33" />';
			}
		break;
	}
	
	buy.finish = function() {
		var html = this.object.responseText;
		Site.getBasket(0, this.include.control);
		var price = document.getElementById('buyThisPrice' + this.include.type + this.include.id);
		if (price && !price.innerHTML.match(/<strike>(.+?)<\/strike>/ig)) {
			price.innerHTML = '<strike>' + price.innerHTML + '</strike>';
		}
		
		if (!this.include.button.match(/<span[^>]+>(.+?)<\/span>/ig)) {
			this.include.button += '<span id="inBasket' + this.include.type + this.include.id + '" style="margin-left: 20px;" class="colorDred"><strong>В тележке</strong></span>';		
		}
		this.onerror();
	}
	
	buy.onerror = function() { 
		if (this.include.parent) this.include.parent.innerHTML = this.include.button;
		window.setTimeout('Site.deleteInBasket(\'' + this.include.type + this.include.id + '\');', 4000);
	}
	
	buy.start();
}

Site.deleteInBasket = function(uid) {
	var ib = document.getElementById('inBasket' + uid);
	if (ib) ib.parentNode.removeChild(ib);
}

Site.tryDeleteItem = function(id, link, control) {
	Site.cashe[id] = { id : id, parent : link.parentNode, control : control, html : link.parentNode.innerHTML };
	link.parentNode.innerHTML = '<div><img src="/kernel/images/pics/basket.delete.gif" width="9" height="10" align="absmiddle" style="margin-right: 5px;">Удалить? <a href="#" onclick="Site.yesToDeleteItem(' + id + '); return false;" class="colorDred">Да</a> &nbsp; <a href="#" onclick="Site.notToDeleteItem(' + id + '); return false;" class="colorDgreen">Нет</a></div>';
}

Site.yesToDeleteItem = function(id) {
	if (Site.cashe[id]) {
		Site.cashe[id].parent.innerHTML = Site.cashe[id].html;
		Site.deleteItem(Site.cashe[id].id, document.getElementById('basketDeleteButton' + id), Site.cashe[id].control);
	}
	delete Site.cashe[id];
}

Site.notToDeleteItem = function(id) {
	if (Site.cashe[id]) Site.cashe[id].parent.innerHTML = Site.cashe[id].html;
	delete Site.cashe[id];
}

Site.deleteItem = function(id, link, control) {
	var del = new Ajax('/kernel/shop/delete.php');
	del.parameters = '?id=' + id + '&ctrl=' + control + '&nocashe=' + Ajax.nocash();
	
	del.include = { parent : link.parentNode, button : link.parentNode.innerHTML, control : control, id : id };
	
	link.parentNode.innerHTML = '<span class="colorDred">Удаление...</span>';
	
	del.finish = function() {
		var html = this.object.responseText;
		if (html) {
			if (html != 'false') {
				var line = document.getElementById('basketLine' + this.include.id);
				if (line) line.parentNode.removeChild(line);
				var basket = [];
				basket['count']		= Ajax.explodeXML(html, 'count');
				basket['all']		= Ajax.explodeXML(html, 'all');
				basket['total']		= Ajax.explodeXML(html, 'total');
				basket['tagCount']	= document.getElementById('basketCount');
				basket['tagAll']	= document.getElementById('basketAll');
				basket['tagTotal']	= document.getElementById('basketTotal');
				if (basket['tagCount'] && basket['tagAll'] && basket['tagTotal']) {
					basket['tagCount'].innerHTML	= basket['count'];
					basket['tagAll'].innerHTML		= basket['all'];
					basket['tagTotal'].innerHTML	= basket['total'];
				}
			} else {
				var lines = document.getElementById('basketLines');
				if (lines) lines.parentNode.innerHTML = '<h2 class="colorDred">Ваша тележка пуста!</h2>';
			}
			Site.getBasket(1, this.include.control);
		} else this.onerror();
	}
	
	del.onerror = function() { if (this.include.parent) this.include.parent.innerHTML = this.include.button; }
	del.start();
}

Site.setItemCount = function(id, count, control) {
	var cnt = new Ajax('/kernel/shop/count.php');
	cnt.parameters = '?id=' + id + '&cnt=' + count + '&ctrl=' + control + '&nocashe=' + Ajax.nocash();
	
	cnt.include = { count : count, control : control, id : id };
	
	cnt.finish = function() {
		var html = this.object.responseText;
		if (html) {
			var basket = [];
			basket['sum']	= Ajax.explodeXML(html, 'sum');
			basket['count']	= Ajax.explodeXML(html, 'count');
			basket['all']	= Ajax.explodeXML(html, 'all');
			basket['total']	= Ajax.explodeXML(html, 'total');
			
			basket['cntUp']		= document.getElementById('basketCntUp' + this.include.id);
			basket['cntDown']	= document.getElementById('basketCntDown' + this.include.id);
			basket['tagCnt']	= document.getElementById('basketCnt' + this.include.id);
			basket['tagSum']	= document.getElementById('basketSum' + this.include.id);
			basket['tagCount']	= document.getElementById('basketCount');
			basket['tagAll']	= document.getElementById('basketAll');
			basket['tagTotal']	= document.getElementById('basketTotal');
			
			if (basket['tagCnt'] && basket['tagSum'] && basket['tagCount'] && basket['tagAll'] && basket['tagTotal']) {
				basket['tagCnt'].innerHTML		= this.include.count;
				basket['tagSum'].innerHTML		= basket['sum'];
				basket['tagCount'].innerHTML	= basket['count'];
				basket['tagAll'].innerHTML		= basket['all'];
				basket['tagTotal'].innerHTML	= basket['total'];
				if (basket['cntUp']) basket['cntUp'].onclick = new Function('Site.setItemCount(' + this.include.id + ', ' + (this.include.count + 1) + ', \'' + this.include.control + '\'); return false;');
				if (basket['cntDown']) {
					if (this.include.count > 1) {
						basket['cntDown'].onclick = new Function('Site.setItemCount(' + this.include.id + ', ' + (this.include.count - 1) + ', \'' + this.include.control + '\'); return false;');
						var img = basket['cntDown'].firstChild;
						if (img && (img.tagName == 'IMG')) img.src = '/kernel/images/pics/item.down.green.gif';
					} else {
						basket['cntDown'].onclick = new Function('return false;');
						var img = basket['cntDown'].firstChild;
						if (img && (img.tagName == 'IMG')) img.src = '/kernel/images/pics/item.down.gray.gif';
					}
				}
			}
			
			Site.getBasket(1, this.include.control);
		}
	}
	
	cnt.start();
}

Site.getBasket = function(flag, control) {
	var basket = new Ajax('/kernel/shop/basket.php');
	basket.parameters = '?ctrl=' + control + '&flag=' + flag + '&nocashe=' + Ajax.nocash();
	
	basket.finish = function() {
		var html = this.object.responseText;
		var cont = document.getElementById('basket');
		if (html && cont) cont.innerHTML = html;
	}
	
	basket.onerror = function() { }
	basket.start();
}

Site.showScheme = function(button, source) {
	var mainImage = document.getElementById('itemImage');
	if (mainImage) {
		if (!Site.cashe['scheme']) {
			Site.cashe['scheme'] = { src : mainImage.src, button : button.innerHTML }
			mainImage.src = source;
			button.innerHTML = 'вид';
		} else {
			mainImage.src = Site.cashe['scheme'].src;
			button.innerHTML = Site.cashe['scheme'].button;
			delete Site.cashe['scheme'];
		}
	}
}

Site.schemeBlock = function(number, id) {
	var img = document.getElementById('schemeImage');
	var line = document.getElementById('schemeLine' + number);
	if (img && line) {
		if (Site.cashe['block']) {
			img.src = Site.cashe['block'].src;
			line.style.display = 'none';
			delete Site.cashe['block'];
		} else {
			Site.cashe['block'] = { src : img.src }
			img.src = '/kernel/images/site/page/' + id + '/image' + number + '.jpg';
			line.style.display = '';
		}
	}
}

Site.addToComprasion = function(part, group, id) {
	if (Site.cashe['comprasion']) {
		var alredy = false;
		for (var i = 0; i < Site.cashe['comprasion'].ids.length; i++) {
			if (Site.cashe['comprasion'].ids[i] == id) {
				alredy = true;
				Site.cashe['comprasion'].ids.splice(i,1);
				break;
			}
		}
		if (!alredy) {
			Site.cashe['comprasion'].ids.push(id);
			Site.controlComprasion(part, group);
			Site.submitComprasion(part, group, id);
		} else if (Site.cashe['comprasion'].ids.length == 0) {
			Site.clearComprasion();
		} else {
			Site.controlComprasion(part, group);
			Site.submitComprasion(part, group, id);
		}
	} else {
		Site.cashe['comprasion'] = { part : part, group : group, ids : [id] }
		Site.controlComprasion(part, group);
		Site.submitComprasion(part, group, id);
	}
	
	if (Site.cashe['comprasion'].ids.length > 0) {
		document.getElementById('compOI').innerHTML = 'Для сравнения: <strong>' + Site.cashe['comprasion'].ids.length + '</strong><span style="margin-left: 20px;"><a href="#" onclick="Site.clearComprasion(); return false;" class="colorRed jsa jsaRed">Очистить сравнение</a></span>';
	}
}

Site.clearComprasion = function() {
	var cb = document.getElementsByName('compCB');
	for (var i = 0; i < cb.length; i++) cb[i].checked = false;
	Site.controlComprasion(0, 0);
	Site.submitComprasion(0, 0, 0);
	document.getElementById('compOI').innerHTML = '&nbsp;';
	delete Site.cashe['comprasion'];
}

Site.submitComprasion = function(part, group, id) {
	var comr = new Ajax('/kernel/shop/comprasion.php');
	comr.parameters = '?p=' + part + '&g=' + group + '&i=' + id + '&nocashe=' + Ajax.nocash();
	
	comr.finish = function() { }
	comr.onerror = function() { }
	comr.start();
}

Site.controlComprasion = function(part, group) {
	var cb = document.getElementsByName('compCB');
	var ln = document.getElementsByName('compLN');
	var lb = document.getElementsByName('compLB');

	var re = new RegExp('^comp(.){2}' + part + '_' + group + '_(\\d+)$', 'g');
	if (!part && !group) re = new RegExp('^comp(.){2}(\\d+)_(\\d+)_(\\d+)$', 'g');

	for (var i = 0; i < cb.length; i++) {
		if (cb[i].id.match(re)) {
			cb[i].disabled = false;
		} else {
			cb[i].disabled = true;
			cb[i].checked = false;
		}
		
		if (ln[i]) {
			if (ln[i].id.match(re)) {
				ln[i].style.display = !cb[i].checked ? 'none' : '';
			} else {
				ln[i].style.display = 'none';
			}
		}
		
		if (lb[i]) {
			if (lb[i].id.match(re)) {
				lb[i].style.display = (cb[i].checked) ? 'none' : '';
				lb[i].className = '';
			} else {
				lb[i].className = 'colorGrayAF';
				lb[i].style.display = '';
			}
		}
	}
}
