//***********************************************************
//*************** MEASURE FUNCTIONS ****************************
//***********************************************************

var clickCount = 0;
var clickPixelX = new Array();
var clickPixelY = new Array();
var clickPointX = new Array();
var clickPointY = new Array();
var drawContent = "";

//reset measure tool
function resetMeasureTool(){
	clickCount = 0;
	clickPixelX = new Array();
	clickPixelY = new Array();
	clickPointX = new Array();
	clickPointY = new Array(); 
	replaceLayerContent("Drawing", "");
	document.frmMain.txtMeasure.value = "";
	document.frmMain.txtSegment.value = "";
}


//add measure pixel
function addMeasurePixel(theX, theY){
	clickPixelX[clickCount] = theX;
	clickPixelY[clickCount] = theY;
}

//add measure point
function addMeasurePoint(theX, theY){
	clickPointX[clickCount] = theX;
	clickPointY[clickCount] = theY;
	clickCount = clickCount + 1;
	showMeasurePolyline();
}

// show measure polyline
function showMeasurePolyline(){
	drawContent = "";
	if(clickCount>0){
		if(clickCount == 1){
			ptX1 = clickPixelX[0];
			ptY1 = clickPixelY[0];
			drawPoint(ptX1,ptY1);
		}else{
			for(i=0; i<clickCount-1; i++){
				j = i + 1;
				ptX1 = clickPixelX[i];
				ptY1 = clickPixelY[i];
				ptX2 = clickPixelX[j];
				ptY2 = clickPixelY[j];
				drawLine(ptX1,ptY1,ptX2,ptY2);
			}
			calcDistancePolyline();
		}
	}
	replaceLayerContent("Drawing", drawContent);
}

// calc distance polyline
function calcDistancePolyline() {
	var dist = 0.00;
	for(i=0; i<clickCount-1; i++){
		j = i + 1;
		ptX1 = clickPointX[i];
		ptY1 = clickPointY[i];
		ptX2 = clickPointX[j];
		ptY2 = clickPointY[j];
		deltaX = Math.abs(ptX1 - ptX2);
		deltaY = Math.abs(ptY1 - ptY2);
		dist = dist + Math.sqrt(deltaX * deltaX + deltaY * deltaY);
	}
	// Sets to two decimals.
	numDecimals = 2;
	var u = Math.pow(10,numDecimals);
	totaldist = parseInt(dist*u+0.5)/u;
	document.frmMain.txtMeasure.value = totaldist + " ft";
}

// calc distance segment
function calcDistanceSegment(segX, segY){
	if(clickCount > 0){
		var dist = 0.00;
		ptX1 = clickPointX[clickCount - 1];
		ptY1 = clickPointY[clickCount - 1];
		ptX2 = segX;
		ptY2 = segY;
		deltaX = Math.abs(ptX1 - ptX2);
		deltaY = Math.abs(ptY1 - ptY2);
		dist = dist + Math.sqrt(deltaX * deltaX + deltaY * deltaY);
		// Sets to two decimals.
		numDecimals = 2;
		var u = Math.pow(10,numDecimals);
		totaldist = parseInt(dist*u+0.5)/u;
		document.frmMain.txtSegment.value = totaldist + " ft";
	}
}


//***********************************************************
//*************** GEOMETRY FUNCTIONS ************************
//***********************************************************


wi=2
he=2
r=255
g=0
b=0

//draw point
function drawPoint(x,y){
  drawContent = drawContent +"<img src='images/transparent.gif' style='z-index:-10; position:absolute; left:"+x+";top:"+y+";width:"+wi+";height:"+he+";background:rgb("+r+","+g+","+b+")'>"; 
}

//draw line
function drawLine(x0,y0,x1,y1){
	wi1=wi
	he1=he
	x0=Math.round(x0)
	x1=Math.round(x1)
	y0=Math.round(y0)
	y1=Math.round(y1)
	xxx=x0
	yyy=y0
	ax=Math.abs(x1-x0)+1
	ay=Math.abs(y1-y0)+1
	jx=jy=1
	if(x1<x0){jx=-1}
	if(y1<y0){jy=-1}
	
	if (ax==ay){
		while (xxx!=x1+jx){
			drawPoint(xxx,yyy)
		  	xxx=xxx+jx
		  	yyy=yyy+jy
		}
		return
	}
	if (ax<ay){
		while (xxx!=x1+jx){
			x=xxx+jx
			y=Math.floor((x-x0)/ax*ay*jx*jy+y0)
			he=(y-yyy)*jy
			if(jy==-1){
				drawPoint(xxx,y+1)
			}else{
				drawPoint(xxx,yyy)
			}
			yyy=y
			xxx=xxx+jx
		 }
	}else{
		while (yyy!=y1+jy){
			y=yyy+jy
			x=Math.floor((y-y0)/ay*ax*jx*jy+x0)
			wi=(x-xxx)*jx
			if(jx==-1){
				drawPoint(x+1,yyy)
			}else{
				drawPoint(xxx,yyy)
			}
			xxx=x
			yyy=yyy+jy
		}
	}
	wi=wi1
	he=he1
}