﻿function showDescription(el, goodName)
{
	hideAllDescriptions(el.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode);
	//var o = el.parentNode.previousSibling.firstChild.firstChild;
	
	//table row
	tr = el.parentNode.parentNode;
	//first cell in row
	td = tr.getElementsByTagName("td")[0];
	//first child div
	div1 = td.getElementsByTagName("div")[0];
	//tooltip div
	o = div1.getElementsByTagName("div")[0];

	if(o.innerHTML == "")
	{
	
		//make url for request
		var url = "/GoodTooltip.ashx?good=" + goodName;

		//make request object
		if(window.XMLHttpRequest) {
			try {
				req = new XMLHttpRequest();
			} catch(e) {
				req = false;
			}
		// trying to create activeX object in IE
		} else if(window.ActiveXObject) {
   			try {
    			req = new ActiveXObject("Msxml2.XMLHTTP");
  			} catch(e) {
    			try {
      				req = new ActiveXObject("Microsoft.XMLHTTP");
    			} catch(e) {
      				req = false;
    			}
			}
		}
		//if request object was created
		if(req) {
			//req.onreadystatechange = processRequest;
			req.onreadystatechange = function() {
				if (req.readyState == 4) {
					if (req.status == 200) {
						if(req.responseText != "")
						{
							//o.filters[0].duration = 0;
							//o.filters[0].apply();
							o.innerHTML = req.responseText;
							//o.filters[0].play();
						}
					} else {
					}
				}
			};
			req.open("GET", url, true);
			req.send(null);
		}
	}
	
	if(o.filters)
	{
		o.filters[0].duration = 0.3;
		o.filters[0].apply();
		o.style.visibility = "visible";
		o.filters[0].play();
	}
	else
	{
		o.style.visibility = "visible";
	}
}

function hideDescriptions(group, e)
{
	//make sure event was not fired from child element
	var toElement = e.relatedTarget || e.toElement;
	while(toElement && toElement != group && toElement.nodeName != 'BODY')
		toElement = toElement.parentNode;
	if(toElement == group)
		return;
	hideAllDescriptions(group);
}

function hideAllDescriptions(group)
{
	var els = group.getElementsByTagName('a');
	for(i = 0; i < els.length; ++i)
	{
		//var o = els[i].parentNode.previousSibling.firstChild.firstChild;

		//table row
		tr = els[i].parentNode.parentNode;
		//first cell in row
		td = tr.getElementsByTagName("td")[0];
		//first child div
		div1 = td.getElementsByTagName("div")[0];
		//tooltip div
		o = div1.getElementsByTagName("div")[0];
		
		//o.filters[0].stop();
		//o.filters[0].duration = 0;
		//o.filters[0].apply();
		o.innerHTML = "";
		o.style.visibility = "hidden";
		//o.filters[0].play();
	}
}

function showGalleryImage(imageId)
{
	windowWidth = 720;
	windowHeight = 560;

	leftPos = 0;
	if(screen.width)
		leftPos = (screen.width - windowWidth) / 2;
	topPos = 0;
	if(screen.height)
		topPos = (screen.height - windowHeight) / 2;
	
	openUrl = "/GalleryImage/" + imageId + ".htm";
	namePrefix = "galleryImage";
	windowSettings = "height=" + windowHeight + ",width=" + windowWidth + ",top=" + topPos + ",left=" + leftPos + ",scrollbars=no,resizable";
	
	window.open(openUrl, namePrefix + imageId, windowSettings)
}

function blendimage(lnkId, imageId, imageUrl, millisec) { 
    var speed = Math.round(millisec / 100); 
    var timer = 0; 
     
    //set the current image as background 
    document.getElementById(lnkId).style.backgroundImage = "url(" + document.getElementById(imageId).src + ")"; 
     
    //make image transparent 
    changeOpac(0, imageId); 

     
    //make new image 
    document.getElementById(imageId).src = imageUrl; 

    //fade in image 
    for(i = 1; i <= 100; i++) { 
        setTimeout("changeOpac(" + i + ",'" + imageId + "')",(timer * speed)); 
        timer++; 
    }
}

function changeOpac(opacity, id) { 
    var object = document.getElementById(id).style; 
    object.opacity = (opacity / 100); 
    object.MozOpacity = (opacity / 100); 
    object.KhtmlOpacity = (opacity / 100); 
    object.filter = "alpha(opacity=" + opacity + ")"; 
}


//comparing sripts
function changeComparingList(goodId, src, act)
{
	//make url for request
	var url = "/ComparingHandler.ashx?a=true&" + act + "=" + goodId;

	//make request object
	if(window.XMLHttpRequest) {
		try {
			req = new XMLHttpRequest();
		} catch(e) {
			req = false;
		}
	// trying to create activeX object in IE
	} else if(window.ActiveXObject) {
		try {
			req = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			try {
  				req = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e) {
  				req = false;
			}
		}
	}
	//if request object was created
	if(req) {
		//req.onreadystatechange = processRequest;
		req.onreadystatechange = function() {
			if (req.readyState == 4) {
				if (req.status == 200) {
					if(req.responseText != "")
					{
						setupComparingElements(req.responseText);
					}
				} else {
				}
			}
		};
		req.open("GET", url, true);
		req.send(null);
	}
	
	if(act == "add")
		moveToTarget(src, "comparingListContent", 30);
}

function setupComparingElements(comparingStatus)
{
	//create object from JSON
	var compResult = eval(comparingStatus);
	
	//update content of comparing goods list if successfull
	if(compResult.status == 0)
	{
		//buils a list of goods
		var compList = document.getElementById("comparingListContent");
		var cont = "";
		cont += "<div>";
		for(i = 0; i < compResult.goods.length; ++i)
		{
			cont += "<div>";
			cont += "<a href='" + compResult.goods[i].url + "' class=\"comp_good_name\" >" + compResult.goods[i].name + "</a>&nbsp;";
			cont += "<a href='/ComparingHandler.ashx?remove=" + compResult.goods[i].id + "' onclick='changeComparingList(" + compResult.goods[i].id + ", null, \"remove\"); return false;'>удалить</a> ";
			cont += "</div>";
		}
		cont += "</div>";
		
		//of quantity of goods is more than 1 - display comparing botton
		if(compResult.goods.length > 1)
		{
			cont += "<div style=\"text-align: right\"><a href=\"/Comparing.aspx\" class=\"compare_small\">[Сравнить]</a></div>";
		}
		//else - display warning message
		else
		{
			cont += "<div>Для сравнения Вам нужно добавить минимум 2 товара в список</div>";
		}
		
		compList.innerHTML = cont;
	}
	else
	{
		if(compResult.status == 1)
			alert("Нельзя сравнивать больше трех товаров одновременно.");
		if(compResult.status == 2)
			alert("Нельзя сравнивать между собой товары из разных категорий.");
		if(compResult.status == 3)
			alert("Товар, который вы пытаетесь удалить из сравнительной таблицы не найден.");
		if(compResult.status == 4)
			alert("Произошла неизвестная ошибка.");
	}
	
	displayMessage(compResult);
}

function displayMessage(compResult)
{
	
}

function moveToTarget(src, tgt, speed)
{
	//initialize dif for moving effect
	el = document.createElement("div");
	el.appendChild(src.cloneNode(5));
	el.id = "movingDiv";
	document.body.appendChild(el);
	el.style.position = "absolute";
	el.style.left = getDistance(src, "left") + document.body.offsetLeft + "px";
	el.style.top = getDistance(src, "top") + document.body.offsetTop + "px";
	el.style.width = src.offsetWidth + "px";
	el.style.height = src.offsetHeight + "px";
	el.style.border = "solid 1px gray";
	el.style.overflow = 'hidden';
	
	//computing distances and steps count
	var commonStep = 20;
	var distHor = 0;
	var distVert = 0;
	distHor = getDistance(document.getElementById(tgt), "left") - getDistance(src, "left");
	distVert = getDistance(document.getElementById(tgt), "top") - getDistance(src, "top");
	
	var steps = 0;
	var horStep = 0;
	var verStep = 0;
	var widthStep = 0;
	var heightStep = 0;
	if(Math.abs(distHor) > Math.abs(distVert))
		steps = Math.abs(distHor) / commonStep;
	else
		steps = Math.abs(distVert) / commonStep;
	horStep = distHor / steps;
	verStep = distVert / steps;
	widthStep = (document.getElementById(tgt).offsetWidth - src.offsetWidth) / steps;
	heightStep = (document.getElementById(tgt).offsetHeight - src.offsetHeight) / steps;
	
	
	//initialize timers to move div
	var timer = 1;
	for(i = 0; i < steps - 1; i++)
	{
		setTimeout("document.getElementById('movingDiv').style.width = parseInt(document.getElementById('movingDiv').style.width, 10) + " + widthStep + " + 'px'",(timer * speed));
		setTimeout("document.getElementById('movingDiv').style.height = parseInt(document.getElementById('movingDiv').style.height, 10) + " + heightStep + " + 'px'",(timer * speed));
		setTimeout("document.getElementById('movingDiv').style.left = parseInt(document.getElementById('movingDiv').offsetLeft, 10) + " + horStep + " + 'px'",(timer * speed));
		setTimeout("document.getElementById('movingDiv').style.top = parseInt(document.getElementById('movingDiv').offsetTop, 10) + " + verStep + " + 'px'",(timer * speed));
		timer++;
	}
	setTimeout("document.body.removeChild(document.getElementById('movingDiv'))",(timer * speed));
}

function getDistance(oObj, sDistanceTo)
{
	var i, bFindBottom, bFindRight, bFindLeft, bFindTop;
	bFindBottom = (sDistanceTo == "bottom");
	bFindRight = (sDistanceTo == "right");
	bFindLeft = (sDistanceTo == "left" || bFindRight);
	bFindTop = (sDistanceTo == "top" || bFindBottom);
	if(bFindRight)
	{
		i = oObj.offsetWidth;
	}
	else if(bFindBottom)
	{
		i = oObj.offsetHeight;
	}
	else
	{
		i = 0;
	}
	while("object" == typeof(oObj) && oObj.tagName.toLowerCase() != "body" && oObj.tagName.toLowerCase() != "html")
	{
		i += bFindTop ? oObj.offsetTop : oObj.offsetLeft;
		oObj = oObj.offsetParent;
	}
	return i;
}
