var useRedlining = true;

function RedLining()
{
	this.arPoints = new Array();
	this.arTexts = new Array();
	this.arLines = new Array();
	this.arPolygons = new Array();
	
	this.numpoints = 0;
	this.numlines = 0;
	this.numpolygons = 0;
	this.numtexts = 0;
	
	this.objGeoServer = null;
	
	function RedLining()
	{
	
	}
	
	this.draw = function ()
	{
		
		// get the geo-server object
		this.objGeoServer = parent.parent.ServerPage.GeoServerObj;
		
		if (typeof this.objGeoServer != 'undefined' && !this.objGeoServer.isLoading)
		{	
			this.prepareURL();
			if (typeof parent.MapPage.odigitize_line != 'undefined') parent.MapPage.odigitize_line.dtClean();
			
			// set the user's map pixels click to negativ values
			this.objGeoServer.tool = 'redlining_draw';
			this.objGeoServer.pxMinX = -1;
			this.objGeoServer.pxMinY = -1;
			this.objGeoServer.pxMaxX = -1;
			this.objGeoServer.pxMaxY = -1;
			this.objGeoServer.minx = parent.minx;
			this.objGeoServer.miny = parent.miny;
			this.objGeoServer.maxx = parent.maxx;
			this.objGeoServer.maxy = parent.maxy;
			this.objGeoServer.sessID = parent.sessID;
			
			this.objGeoServer.sendURL();
			this.clean();
		}		
		return true;
	}
	
	this.save = function ()
	{
		
		// get the geo-server object
		this.objGeoServer = parent.parent.ServerPage.GeoServerObj;
		
		if (typeof this.objGeoServer != 'undefined' && !this.objGeoServer.isLoading)
		{	
			this.prepareURL();
			
			if (typeof parent.MapPage.odigitize_line != 'undefined') parent.MapPage.odigitize_line.dtClean();
			
			// set the user's map pixels click to negativ values
			this.objGeoServer.tool = 'redlining_save';
			this.objGeoServer.pxMinX = -1;
			this.objGeoServer.pxMinY = -1;
			this.objGeoServer.pxMaxX = -1;
			this.objGeoServer.pxMaxY = -1;
			this.objGeoServer.minx = parent.minx;
			this.objGeoServer.miny = parent.miny;
			this.objGeoServer.maxx = parent.maxx;
			this.objGeoServer.maxy = parent.maxy;
			this.objGeoServer.sessID = parent.sessID;
			
			this.objGeoServer.sendURL();
			this.clean();

		}		
		return true;
	}
	
	this.load = function ()
	{
		
		// get the geo-server object
		this.objGeoServer = parent.parent.ServerPage.GeoServerObj;
		
		if (typeof this.objGeoServer != 'undefined' && !this.objGeoServer.isLoading)
		{	
			this.prepareURL();
			
			if (typeof parent.MapPage.odigitize_line != 'undefined') parent.MapPage.odigitize_line.dtClean();
			
			// set the user's map pixels click to negativ values
			this.objGeoServer.tool = 'redlining_load';
			this.objGeoServer.pxMinX = -1;
			this.objGeoServer.pxMinY = -1;
			this.objGeoServer.pxMaxX = -1;
			this.objGeoServer.pxMaxY = -1;
			this.objGeoServer.minx = parent.minx;
			this.objGeoServer.miny = parent.miny;
			this.objGeoServer.maxx = parent.maxx;
			this.objGeoServer.maxy = parent.maxy;
			this.objGeoServer.sessID = parent.sessID;
			
			this.objGeoServer.sendURL();

			this.clean();
		}		
		return true;
	}

	this.gps_export = function (draw_mode)
	{
		
		// get the geo-server object
		this.objGeoServer = parent.parent.ServerPage.GeoServerObj;
		
		if (typeof this.objGeoServer != 'undefined' && !this.objGeoServer.isLoading)
		{	
			this.prepareURL();
			
			if (typeof parent.MapPage.odigitize_line != 'undefined') parent.MapPage.odigitize_line.dtClean();

			// set the user's map pixels click to negativ values
			this.objGeoServer.tool = 'gps_export';
			this.objGeoServer.draw_mode = draw_mode;
			this.objGeoServer.pxMinX = -1;
			this.objGeoServer.pxMinY = -1;
			this.objGeoServer.pxMaxX = -1;
			this.objGeoServer.pxMaxY = -1;
			this.objGeoServer.minx = parent.minx;
			this.objGeoServer.miny = parent.miny;
			this.objGeoServer.maxx = parent.maxx;
			this.objGeoServer.maxy = parent.maxy;
			this.objGeoServer.sessID = parent.sessID;
			
			this.objGeoServer.sendURL();
			this.clean();
		}		
		return true;
	}
	
	this.kml_export = function (draw_mode)
	{
		// get the geo-server object
		this.objGeoServer = parent.parent.ServerPage.GeoServerObj;
		
		if (typeof this.objGeoServer != 'undefined' && !this.objGeoServer.isLoading)
		{	
			this.prepareURL();
			
			if (typeof parent.MapPage.odigitize_line != 'undefined') parent.MapPage.odigitize_line.dtClean();

			// set the user's map pixels click to negativ values
			this.objGeoServer.tool = 'kml_export';
			this.objGeoServer.draw_mode = draw_mode;
			this.objGeoServer.pxMinX = -1;
			this.objGeoServer.pxMinY = -1;
			this.objGeoServer.pxMaxX = -1;
			this.objGeoServer.pxMaxY = -1;
			this.objGeoServer.minx = parent.minx;
			this.objGeoServer.miny = parent.miny;
			this.objGeoServer.maxx = parent.maxx;
			this.objGeoServer.maxy = parent.maxy;
			this.objGeoServer.sessID = parent.sessID;
			
			this.objGeoServer.sendURL();
			this.clean();
		}		
		return true;
	}

	this.prepareURL = function ()
	{
		var rl_pt_x="";
		var rl_pt_y="";
		var rl_pt_symbol="";
		var rl_pt_size="";
		var rl_pt_hotspot="";
				
		var rl_line_x="";
		var rl_line_y="";
		var rl_line_symbol="";
		var rl_line_color="";
		var rl_line_width="";

		var rl_polygon_x="";
		var rl_polygon_y="";
		var rl_polygon_symbol="";
		var rl_polygon_color="";
		var rl_polygon_fillcolor="";
		var rl_polygon_width="";
		var rl_polygon_transparency="";

		var rl_txt_x = "";
		var rl_txt_y = "";
		var rl_txt_value = "";
		var rl_txt_size = "";
		var rl_txt_font = "";
		var rl_txt_color = "";		
		
		var obj="";
		var args = "";
				
		for(var numpoint=0; numpoint < parent.parent.rl.numpoints;numpoint++)
		{
			obj = parent.parent.rl.arPoints[numpoint];
			rl_pt_x += obj.location.x +"|";
			rl_pt_y += obj.location.y +"|";
			rl_pt_size += obj.size +"|";
			rl_pt_symbol += obj.symbol+"|";
			rl_pt_hotspot += obj.hotspot+"|";
		}
		args = "&rlptx="+rl_pt_x.substr(0,rl_pt_x.length-1);
		args += "&rlpty="+rl_pt_y.substr(0,rl_pt_y.length-1);
		args += "&rlpts="+rl_pt_size.substr(0,rl_pt_size.length-1);
		args += "&rlptsym="+rl_pt_symbol.substr(0,rl_pt_symbol.length-1);
		args += "&rlpthspt="+rl_pt_hotspot.substr(0,rl_pt_hotspot.length-1);
		
		this.objGeoServer.val1 = args;	
		
		for(var numline=0; numline < parent.parent.rl.numlines;numline++)
		{
			obj = parent.parent.rl.arLines[numline];
			var loc;
			for(var k=0; k < obj.location.length;k++)
			{
				loc = obj.location[k];
				rl_line_x += loc.x +"|";
				rl_line_y += loc.y +"|";
			}
			rl_line_x = rl_line_x.substr(0,rl_line_x.length-1)+";";
			rl_line_y = rl_line_y.substr(0,rl_line_y.length-1)+";";
			
			rl_line_color += obj.color +";";
			rl_line_width += obj.width +";";
			//rl_line_symbol += "continue|";
			
		}

		args = "&rllx="+rl_line_x.substr(0,rl_line_x.length-1);
		args += "&rlly="+rl_line_y.substr(0,rl_line_y.length-1);
		args += "&rllc="+rl_line_color.substr(0,rl_line_color.length-1);
		args += "&rllw="+rl_line_width.substr(0,rl_line_width.length-1);
		
		this.objGeoServer.val2 = args;
		
		for(var numpolygon=0; numpolygon < parent.parent.rl.numpolygons;numpolygon++)
		{
			obj = parent.parent.rl.arPolygons[numpolygon];
			var loc="";
			for(var k=0; k < obj.location.length;k++)
			{
				loc = obj.location[k];
				rl_polygon_x += loc.x +"|";
				rl_polygon_y += loc.y +"|";
			}
			rl_polygon_x = rl_polygon_x.substr(0,rl_polygon_x.length-1)+";";
			rl_polygon_y = rl_polygon_y.substr(0,rl_polygon_y.length-1)+";";
			
			rl_polygon_color += obj.color +";";
			rl_polygon_fillcolor += obj.fillcolor +";";
			rl_polygon_transparency += obj.transparency +";";
			rl_polygon_width += obj.width +";";
			rl_polygon_symbol += "continue;";
			
		}						
		
		args = "&rlpx="+rl_polygon_x.substr(0,rl_polygon_x.length-1);
		args += "&rlpy="+rl_polygon_y.substr(0,rl_polygon_y.length-1);
		args += "&rlpc="+rl_polygon_color.substr(0,rl_polygon_color.length-1);
		args += "&rlpfc="+rl_polygon_fillcolor.substr(0,rl_polygon_fillcolor.length-1);
		args += "&rlpw="+rl_polygon_width.substr(0,rl_polygon_width.length-1);
		args += "&rlpt="+rl_polygon_transparency.substr(0,rl_polygon_transparency.length-1);
	
		this.objGeoServer.val3 = args;

		for(var numtext=0; numtext < parent.parent.rl.numtexts;numtext++)
		{
			obj = parent.parent.rl.arTexts[numtext];
			loc = obj.location;
			rl_txt_x += loc.x +"|";
			rl_txt_y += loc.y +"|";
			rl_txt_value += obj.text +"|";
			rl_txt_size += obj.size +"|";
			rl_txt_font += obj.font+"|";
			rl_txt_color += obj.color+"|";
		}
		args = "&rltxtx="+rl_txt_x.substr(0,rl_txt_x.length-1);
		args += "&rltxty="+rl_txt_y.substr(0,rl_txt_y.length-1);
		args += "&rltxtv="+rl_txt_value.substr(0,rl_txt_value.length-1);
		args += "&rltxts="+rl_txt_size.substr(0,rl_txt_size.length-1);
		args += "&rltxtft="+rl_txt_font.substr(0,rl_txt_font.length-1);
		args += "&rltxtc="+rl_txt_color.substr(0,rl_txt_color.length-1);
		
		this.objGeoServer.val4 = args;
		
		return true;
	}

	this.clean = function ()
	{
		this.arPoints = new Array();
		this.arTexts = new Array();
		this.arLines = new Array();
		this.arPolygons = new Array();
		
		this.numpoints = 0;
		this.numlines = 0;
		this.numpolygons = 0;
		this.numtexts = 0;	

		return true;
	}

	this.clean_points = function ()
	{
		this.arPoints = new Array();
		this.numpoints = 0;
		return true;
	}
	this.clean_texts = function ()
	{
		this.arTexts = new Array();
		this.numtexts = 0;	
		return true;
	}
	this.clean_lines = function ()
	{
		this.arLines = new Array();
		this.numlines = 0;
		return true;
	}
	this.clean_polygons = function ()
	{
		this.arPolygons = new Array();
		this.numpolygons = 0;
		return true;
	}	
	this.digitizePoint = function ()
	{
		var buf = "";
		for(var i=0; i < this.arPoints.length; i++)
		{
			buf += this.arPoints[i].location.x+','+this.arPoints[i].location.y+'|';
		}
		document.write(buf);
		return true;
	}
	this.digitizeLine = function ()
	{
		return true;
	}
	this.digitizePolygon = function ()
	{
		return true;
	}
	
	this.addPoint = function (nPt)
	{
		this.arPoints[this.arPoints.length] = nPt;
		this.numpoints = this.arPoints.length;
	}
	
	this.addText = function (nTxt)
	{
		this.arTexts[this.arTexts.length] = nTxt;
		this.numtexts = this.arTexts.length;
	}
	
	this.addLine = function (nLine)
	{
		this.arLines[this.arLines.length] = nLine;
		this.numlines = this.arLines.length;
	}

	this.addPolygon = function (nPoly)
	{
		this.arPolygons[this.arPolygons.length] = nPoly;
		this.numpolygons = this.arPolygons.length;
	}		
}