function inPoly(x, y, poly)
{	
	var dbl = "non";
	var point = poly;
	var ptInt = new Array();
	var nbPoint = ( point.length ) / 2;

	for(var i = 0; i < point.length; i = i + 2)
	{		
		var X1 = Math.round(point[i]);
		var Y1 = Math.round(point[i + 1]);
		
		if(point[i + 2] == undefined)
		{
			var X2 = Math.round(point[0]);
			var Y2 = Math.round(point[1]);
		}
		else
		{
			var X2 = Math.round(point[i + 2]);
			var Y2 = Math.round(point[i + 3]);
		}
	
		var pointInt = intersection(0, 0, x, y, X1, Y1, X2, Y2);
		pointInt = pointInt.split(',');
		var xInt = Math.round(pointInt[0]);
		var yInt = Math.round(pointInt[1]);

		var grXY = plusGrandXY(point);
		b = grXY;
		grXY = grXY.split(',');

		if(xInt <= pluGrand(X1, X2) && xInt >= pluPetit(X1, X2) && yInt <= pluGrand(Y1, Y2) && yInt >= pluPetit(Y1, Y2) && x <= grXY[0] && y <= grXY[1])
		{		
			if(yInt <= y)
			{
				pX1 = array_search(xInt - 1, ptInt);
				pX2 = array_search(xInt, ptInt);
				pX3 = array_search(xInt + 1, ptInt);
				
				pY1 = array_search(yInt - 1, ptInt);
				pY2 = array_search(yInt, ptInt);
				pY3 = array_search(yInt + 1, ptInt);

				if((pX1 != -1 && (pX1+1 == pY1 || pX1+1 == pY2 || pX1+1 == pY3)) || (pX2 != -1 && (pX2+1 == pY1 || pX2+1 == pY2 || pX2+1 == pY3)) || (pX3 != -1 && (pX3+1 == pY1 || pX3+1 == pY2 || pX3+1 == pY3)))
				{
					if(i == 0)
						var iPrec = point.length - 2;
					else
						var iPrec = i - 2;
						
					if(point[i + 2] == undefined)
					{
						xInt1 = Math.round(point[iPrec]);
						yInt1 = Math.round(point[iPrec + 1]);
						xInt2 = point[0];
						yInt2 = point[1];
					}
					else if(i == 0)
					{
						xInt1 = Math.round(point[point.length - 2]);
						yInt1 = Math.round(point[point.length - 1]);
						xInt2 = X2;
						yInt2 = Y2;						
					}
					else
					{
						xInt1 = Math.round(point[iPrec]);
						yInt1 = Math.round(point[iPrec + 1]);
						xInt2 = X2;
						yInt2 = Y2;
					}
					
					var pointIntDbl = intersection(0, 0, x, y, xInt1, yInt1, xInt2, yInt2);
					pointIntDbl = pointIntDbl.split(',');
					var xIntDbl = Math.round(pointIntDbl[0]);
					var yIntDbl = Math.round(pointIntDbl[1]);
				
					//var a = "X1:"+xInt1+", X2:"+xInt2+" +Gr:"+pluGrand(xInt1, xInt2)+" +Pt:"+pluPetit(xInt1, xInt2)+" || Y1:"+yInt1+", Y2:"+yInt2+" +Gr:"+pluGrand(yInt1, yInt2)+" +Pt:"+pluPetit(yInt1, yInt2);
					var a = xInt1+","+yInt1+" > "+xInt2+","+yInt2+" >>>>> "+xIntDbl+","+yIntDbl;
					
					if(xIntDbl <= pluGrand(xInt1, xInt2) && xIntDbl >= pluPetit(xInt1, xInt2) && yIntDbl <= pluGrand(yInt1, yInt2) && yIntDbl >= pluPetit(yInt1, yInt2))
						var a = xInt1+","+yInt1+" > "+xInt2+","+yInt2+" >>>>> "+xIntDbl+","+yIntDbl;
					else
						ptInt.push(xInt,yInt);
				}
				else
					ptInt.push(xInt,yInt);
			}
		}
	}
	
	var nbPtTot = Math.round(ptInt.length);
	var nbPoint = nbPtTot / 2;
	var modulo = nbPoint % 2;

	/*if(x == 400 && y == 200)
		document.getElementById('textTest').value += ptInt+" >>> "+b+" <<>> "+modulo;
	else
		document.getElementById('textTest').value = 'X => '+x+' Y => '+y;*/
	
	if(modulo == 1)
		pos = true;
	else
		pos = false;
		
	return pos;
}

function plusGrandXY(tableau)
{
	grX = 0;
	grY = 0;
	
	for(var i = 0; i < tableau.length; i++)
	{
		if(i % 2 == 0)
		{
			if(Math.round(tableau[i]) > grX)
				grX = Math.round(tableau[i]);
		}
		else
		{
			if(Math.round(tableau[i]) > grY)
				grY = Math.round(tableau[i]);
		}
	}
	
	return grX+","+grY;
}

function array_search(valeur, tableau) 
{
	var cle = -1;
	
	for (var i = 0; i < tableau.length; i++)
	{
		if(tableau[i] == valeur)
			cle = i;
	}
	
	return cle;
}

function pluPetit(num1, num2)
{
	if(num1 < num2)
		return num1;
	else
		return num2;
}
function pluGrand(num1, num2)
{
	if(num1 > num2)
		return num1;
	else
		return num2;
}

function intersection(X1,Y1,X2,Y2,X3,Y3,X4,Y4)
{
var MX12 = X1 - X2;
var MY12 = Y1 - Y2;
var MX34 = X3 - X4;
var MY34 = Y3 - Y4;
var PX21 = X2 * Y1;
var PX12 = X1 * Y2;
var PX43 = X4 * Y3;
var PX34 = X3 * Y4;

if (MX12 == 0 ) 
MX12 = 0.00000001;
		
var X = ((PX34 - PX43) * MX12 - (PX12 - PX21) * MX34) / (MY12 * MX34 - MY34 * MX12);
var Y = X * (MY12 / MX12) + ((PX12 - PX21) / MX12);

return X+","+Y;
}
