// Funkce, ktera zjistuji offset od zacatku prohlizece k obsahu stranky
var leftOffset; topOffset = -17;
function getLeftOffset() {
	return document.getElementById('obsah').offsetParent.offsetLeft - 136;
}

// Funkce, ktera vraci, zda je bod uvnitr nebo vne usecky
function countPosition(Bx, By, Ax, Ay) {
	if ((Bx - Ax)*(posy - Ay) - (By - Ay)*(posx - Ax) < 0)
		return false;
	else 
		return true;
}

// Funkce, ktera pocita vice pozic najednou
function countMorePosition(coords, count) {
	var into = new Array();
	var force = true;
	for (i = 0; i < count; i++) {
		if (i == 0)
			into[i] = countPosition(coords["x"][i], coords["y"][i], coords["x"][count-1], coords["y"][count-1])
		else
			into[i] = countPosition(coords["x"][i], coords["y"][i], coords["x"][i-1], coords["y"][i-1])
	}	
	for (var i = 0; i < into.length; i++) {
		if (into[i] == false)
			force = false;
	}
	return force;
}

// Funkce, ktera vyrezava do konvexnich polygonu diry pro opilost 0, stul s salky
function setRevertRectangleForBar0A() {
	var force = new Array();
	
	var coords = new Array(2);
	coords["x"] = new Array();
	coords["y"] = new Array();
	var i = 0;
	coords["x"][i] = 136+leftOffset, coords["y"][i] = 302+topOffset;
	coords["x"][++i] = 136+leftOffset, coords["y"][i] = 280+topOffset;
	coords["x"][++i] = 330+leftOffset, coords["y"][i] = 217+topOffset;
	coords["x"][++i] = 330+leftOffset, coords["y"][i] = 254+topOffset;
	coords["x"][++i] = 294+leftOffset, coords["y"][i] = 271+topOffset;
	force.push(countMorePosition(coords, 5));
	
	var coords = new Array(2);
	coords["x"] = new Array();
	coords["y"] = new Array();
	var i = 0;
	coords["x"][i] = 462+leftOffset, coords["y"][i] = 206+topOffset;
	coords["x"][++i] = 462+leftOffset, coords["y"][i] = 180+topOffset;
	coords["x"][++i] = 574+leftOffset, coords["y"][i] = 213+topOffset;
	coords["x"][++i] = 542+leftOffset, coords["y"][i] = 225+topOffset;
	force.push(countMorePosition(coords, 4));
	
	var coords = new Array(2);
	coords["x"] = new Array();
	coords["y"] = new Array();
	var i = 0;
	coords["x"][i] = 462+leftOffset, coords["y"][i] = 206+topOffset;
	coords["x"][++i] = 542+leftOffset, coords["y"][i] = 225+topOffset;
	coords["x"][++i] = 542+leftOffset, coords["y"][i] = 247+topOffset;
	coords["x"][++i] = 526+leftOffset, coords["y"][i] = 266+topOffset;
	coords["x"][++i] = 515+leftOffset, coords["y"][i] = 265+topOffset;
	coords["x"][++i] = 475+leftOffset, coords["y"][i] = 250+topOffset;
	force.push(countMorePosition(coords, 6));

	var coords = new Array(2);
	coords["x"] = new Array();
	coords["y"] = new Array();
	var i = 0;
	coords["x"][i] = 692+leftOffset, coords["y"][i] = 227+topOffset;
	coords["x"][++i] = 959+leftOffset, coords["y"][i] = 281+topOffset;
	coords["x"][++i] = 693+leftOffset, coords["y"][i] = 265+topOffset;
	force.push(countMorePosition(coords, 3));
	
	for (var i = 0; i < force.length; i++)
		if (force[i] == true)
			return true;
	return false;
}

// Funkce, ktera vyrezava do konvexnich polygonu diry pro opilost 0, barovy pult
function setRevertRectangleForBar0B() {
	var force = new Array();

	var coords = new Array(2);
	coords["x"] = new Array();
	coords["y"] = new Array();
	var i = 0;
	coords["x"][i] = 879+leftOffset, coords["y"][i] = 130+topOffset;
	coords["x"][++i] = 879+leftOffset, coords["y"][i] = 155+topOffset;
	coords["x"][++i] = 847+leftOffset, coords["y"][i] = 155+topOffset;
	coords["x"][++i] = 847+leftOffset, coords["y"][i] = 130+topOffset;
	force.push(countMorePosition(coords, 4));
	
	for (var i = 0; i < force.length; i++)
		if (force[i] == true)
			return true;
	return false;
}

// Funkce, ktera zjistuje, zda dany bod lezi nelevo nebo napravo od zadane primky
function positionPointToRectangle(type) {
	var side = new Array();
	var force = false;
	if (type == 'stul_s_salky0') {
		// souradnice stolu s salky
		var Ax = 136+leftOffset, Ay = 305+topOffset;
		var Bx = 332+leftOffset, By = 217+topOffset;
		var Cx = 395+leftOffset, Cy = 201+topOffset;
		var Dx = 660+leftOffset, Dy = 210+topOffset;
		var Ex = 1070+leftOffset, Ey = 297+topOffset;
		var Fx = 1126+leftOffset, Fy = 307+topOffset;
		var Gx = 1126+leftOffset, Gy = 364+topOffset;
		var Hx = 136+leftOffset, Hy = 364+topOffset;
		
		side[0] = countPosition(Ax, Ay, Hx, Hy);
		side[1] = countPosition(Bx, By, Ax, Ay);
		side[2] = countPosition(Cx, Cy, Bx, By);
		side[3] = countPosition(Dx, Dy, Cx, Cy);
		side[4] = countPosition(Ex, Ey, Dx, Dy);	
		side[5] = countPosition(Fx, Fy, Ex, Ey);	
		side[6] = countPosition(Gx, Gy, Fx, Fy);
		side[7] = countPosition(Hx, Hy, Gx, Gy);	
		
		force = setRevertRectangleForBar0A();
	}
	else if (type == 'cedule_baru0' || type == 'cedule_baru6') {
		// souradnice cedule baru
		var Ax = 848+leftOffset, Ay = 137+topOffset;
		var Bx = 942+leftOffset, By = 135+topOffset;
		var Cx = 943+leftOffset, Cy = 154+topOffset;
		var Dx = 847+leftOffset, Dy = 154+topOffset;
		
		side[0] = countPosition(Ax, Ay, Dx, Dy);
		side[1] = countPosition(Bx, By, Ax, Ay);
		side[2] = countPosition(Cx, Cy, Bx, By);
		side[3] = countPosition(Dx, Dy, Cx, Cy);
	}		
	else if (type == 'barovy_pult0' || type == 'barovy_pult1' || type == 'barovy_pult6') {
		// souradnice cedule baru
		var Ax = 712+leftOffset, Ay = 130+topOffset;
		var Bx = 879+leftOffset, By = 130+topOffset;
		var Cx = 875+leftOffset, Cy = 263+topOffset;
		var Dx = 694+leftOffset, Dy = 263+topOffset;
		var Ex = 694+leftOffset, Ey = 187+topOffset;
		
		side[0] = countPosition(Ax, Ay, Ex, Ey);
		side[1] = countPosition(Bx, By, Ax, Ay);
		side[2] = countPosition(Cx, Cy, Bx, By);
		side[3] = countPosition(Dx, Dy, Cx, Cy);
		side[4] = countPosition(Ex, Ey, Dx, Dy);
		
		force = setRevertRectangleForBar0B();
	}
	else if (type == 'stul_s_salky1' || type == 'stul_s_salky3' || type == 'stul_s_salky6') {
		// souradnice stolu s salky - opilost 1
		var Ax = 136+leftOffset, Ay = 304+topOffset;
		var Bx = 246+leftOffset, By = 286+topOffset;
		var Cx = 422+leftOffset, Cy = 271+topOffset;
		var Dx = 571+leftOffset, Dy = 266+topOffset;
		var Ex = 750+leftOffset, Ey = 269+topOffset;
		var Fx = 947+leftOffset, Fy = 281+topOffset;
		var Gx = 1126+leftOffset, Gy = 307+topOffset;
		var Hx = 1126+leftOffset, Hy = 364+topOffset;
		var Ix = 136+leftOffset, Iy = 364+topOffset;
		
		side[0] = countPosition(Ax, Ay, Ix, Iy);
		side[1] = countPosition(Bx, By, Ax, Ay);
		side[2] = countPosition(Cx, Cy, Bx, By);
		side[3] = countPosition(Dx, Dy, Cx, Cy);
		side[4] = countPosition(Ex, Ey, Dx, Dy);	
		side[5] = countPosition(Fx, Fy, Ex, Ey);	
		side[6] = countPosition(Gx, Gy, Fx, Fy);
		side[7] = countPosition(Hx, Hy, Gx, Gy);	
		side[8] = countPosition(Ix, Iy, Hx, Hy);
	}
	
	if (force)
		return false;
	
	for (var i = 0; i < side.length; i++) {
		if (side[i] == false)
			return false;
	}
	return true;	
}

// Funkce, ktera provadi akce pro aktivni obrazek
function setActive(element, action, url) {
	document.getElementById(Element).style.cursor = "pointer";
	document.getElementById(Element).src = 'images/bar/' + element + '_over.gif';
	if (action == 'click')
			window.location.href = url;
}

// Funkce, ktera provadi akce pro neaktivni obrazek
function setNonActive(element) {
	document.getElementById(Element).style.cursor = "default";
	document.getElementById(Element).src = 'images/bar/' + element + '_out.gif';
}

// Funkce, ktera elementu obrazku priradi obrazek, stara se o typ kurzoru a o odkazovani na stranky
function changeImageForBar(action, event, drunklevel) {
	var position = mouseCoord(event);
	var posx = position[0]; posy = position[1];
	leftOffset = getLeftOffset();
	
	if (drunklevel == 0) {
		Element = 'cedule_baru0';
		if (positionPointToRectangle(Element) == true && action != 'out')
			setActive(Element, action, 'index.php');
		else 
			setNonActive(Element);
		
		Element = 'stul_s_salky0';
		if (positionPointToRectangle(Element) == true && action != 'out')
			setActive(Element, action, 'bar.php#tableHistory');
		else 
			setNonActive(Element);

		Element = 'barovy_pult0';
		if (positionPointToRectangle(Element) == true && action != 'out')
			setActive(Element, action, 'bar.php?action=order_drink');
		else 
			setNonActive(Element);
	}
	else if (drunklevel == 1 || drunklevel == 2) {
		Element = 'cedule_baru0';
		if (positionPointToRectangle(Element) == true && action != 'out')
			setActive(Element, action, 'index.php');
		else 
			setNonActive(Element);
		
		Element = 'stul_s_salky1';
		if (positionPointToRectangle(Element) == true && action != 'out')
			setActive(Element, action, 'bar.php#tableHistory');
		else 
			setNonActive(Element);
		
		Element = 'barovy_pult1';
		if (positionPointToRectangle(Element) == true && action != 'out')
			setActive(Element, action, 'bar.php?action=order_drink');
		else 
			setNonActive(Element);
	}
	else if (drunklevel > 2 && drunklevel < 6) {
		Element = 'cedule_baru0';
		if (positionPointToRectangle(Element) == true && action != 'out')
			setActive(Element, action, 'index.php');
		else 
			setNonActive(Element);
		
		Element = 'stul_s_salky3';
		if (positionPointToRectangle(Element) == true && action != 'out')
			setActive(Element, action, 'bar.php#tableHistory');
		else 
			setNonActive(Element);
		
		Element = 'barovy_pult1';
		if (positionPointToRectangle(Element) == true && action != 'out')
			setActive(Element, action, 'bar.php?action=order_drink');
		else 
			setNonActive(Element);
	}
	else {
		Element = 'cedule_baru6';
		if (positionPointToRectangle(Element) == true && action != 'out')
			setActive(Element, action, 'index.php');
		else 
			setNonActive(Element);	

		Element = 'stul_s_salky6';
		if (positionPointToRectangle(Element) == true && action != 'out')
			setActive(Element, action, 'bar.php#tableHistory');
		else 
			setNonActive(Element);
		
		Element = 'barovy_pult6';
		if (positionPointToRectangle(Element) == true && action != 'out')
			setActive(Element, action, 'bar.php?action=order_drink');
		else 
			setNonActive(Element);		
	}
}
