function ZoomSlider()
{
	var self = this;
	
	//Properties
	this.Mode;
	this.Orientation;
	this.CurrentIndex;
	this.WidthUnits;
	this.ScaleArray = new Array();
	this.WidthArray = new Array();
	this.ScaleLabelArray = new Array();
	this.WidthLabelArray = new Array();
		
	//Methods
	this.setCurrent = setCurrent;
	this.zoomIn = zoomIn;
	this.zoomOut = zoomOut;
	this.zoomToIndex = zoomToIndex;
	this.createHTML = createHTML;
	
	function setCurrent()
	{
		switch (this.Mode)
		{
			case 0:
				//Get Map Scale
				arr = this.ScaleArray;
				compare = map.Scale;
				break;
				
			case 1:
				//Get Map Width
				arr = this.WidthArray;
				compare = convertDistanceUnits((map.getMaxX() - map.getMinX()), map.Units, this.WidthUnits);
				break;	
		}
		
		var lessThan = arr.length - 1;
		var greaterThan;
		
		for( var i = 0; i < arr.length; i++ )
		{
			img = document.getElementById("imgZS" + i);
			
			if( img.src.indexOf("_act") > 0 )
				img.src = img.src.replace("_act","_inact");
				
			if( (compare <= arr[i]) && (lessThan > i) )
			{
				lessThan = i;
			}
			
			if( compare >= arr[i] )
			{
				greaterThan = i;
			}	
		}
						
		if( !lessThan && lessThan != 0)
		{
			img = document.getElementById("imgZS" + (arr.length - 1));
			img.src = img.src.replace("_inact","_act");
			this.CurrentIndex = arr.length - 1;
		}	
		else if( !greaterThan )
		{
			img = document.getElementById("imgZS0");
			img.src = img.src.replace("_inact","_act");
			this.CurrentIndex = 0;
		}
		else
		{
			if( (arr[lessThan] - compare) > (compare - arr[greaterThan]) )
			{
				img = document.getElementById("imgZS" + greaterThan);
				img.src = img.src.replace("_inact","_act");
				this.CurrentIndex = greaterThan;
			}
			else
			{
				img = document.getElementById("imgZS" + lessThan);
				img.src = img.src.replace("_inact","_act");
				this.CurrentIndex = lessThan;
			}
		}
	}
	
	function zoomToIndex(index)
	{
		switch (this.Mode)
		{
			case 0:
				
				zoomToScale(this.ScaleArray[index]);
				break;
				
			case 1:
				
				dx = map.getMaxX() - map.getMinX();
				dy = map.getMaxY() - map.getMinY();
				centerX = map.getMaxX() - dx / 2;
				centerY = map.getMaxY() - dy / 2;
				
				ratio = dx / dy;
				
				dxNew = convertDistanceUnits(this.WidthArray[index],this.WidthUnits,map.Units) / 2;
				dyNew = dxNew / ratio;
				
				x1 = centerX - dxNew;
				y1 = centerY - dyNew;
				x2 = parseFloat(centerX) + parseFloat(dxNew);
				y2 = parseFloat(centerY) + parseFloat(dyNew);
				
				map.getMap("ZOOMIN", x1, y1, x2, y2, true);
				
				break;	
		}
	}
	
	function zoomIn()
	{
	
		if( this.CurrentIndex < 1 )
		{
			return;
		}
		
		switch (this.Mode)
		{
			case 0:
				
				zoomToScale(this.ScaleArray[this.CurrentIndex - 1]);
				break;
				
			case 1:
				
				dx = map.getMaxX() - map.getMinX();
				dy = map.getMaxY() - map.getMinY();
				centerX = map.getMaxX() - dx / 2;
				centerY = map.getMaxY() - dy / 2;
				
				ratio = dx / dy;
				
				dxNew = convertDistanceUnits(this.WidthArray[this.CurrentIndex - 1],this.WidthUnits,map.Units) / 2;
				dyNew = dxNew / ratio;
				
				x1 = centerX - dxNew;
				y1 = centerY - dyNew;
				x2 = parseFloat(centerX) + parseFloat(dxNew);
				y2 = parseFloat(centerY) + parseFloat(dyNew);
				
				map.getMap("ZOOMIN", x1, y1, x2, y2, true);
				break;	
		}
	}
	
	function zoomOut()
	{
		switch (this.Mode)
		{
			case 0:
			
				if( this.CurrentIndex >= (this.ScaleArray.length - 1) )
					return;
				
				zoomToScale(this.ScaleArray[parseInt(this.CurrentIndex) + parseInt(1)]);
				break;
				
			case 1:
				
				if( this.CurrentIndex >= (this.WidthArray.length - 1) )
					return;
				
				dx = map.getMaxX() - map.getMinX();
				dy = map.getMaxY() - map.getMinY();
				centerX = map.getMaxX() - dx / 2;
				centerY = map.getMaxY() - dy / 2;
				
				ratio = dx / dy;
				
				dxNew = convertDistanceUnits(this.WidthArray[this.CurrentIndex + 1],this.WidthUnits,map.Units) / 2;
				dyNew = dxNew / ratio;
				
				x1 = centerX - dxNew;
				y1 = centerY - dyNew;
				x2 = parseFloat(centerX) + parseFloat(dxNew);
				y2 = parseFloat(centerY) + parseFloat(dyNew);
				
				map.getMap("ZOOMIN", x1, y1, x2, y2, true);
				break;	
		}
	}
	
	function createHTML()
	{
	
		switch (this.Mode)
		{
			case 0:
				arrLabel = this.ScaleLabelArray;
				arr = this.ScaleArray;
				break;
				
			case 1:
				arrLabel = this.WidthLabelArray;
				arr = this.WidthArray;
				break;	
		}		
		
		var html = "<table width=\"100%\" id=\"tblZoomSlider\" cellpadding=\"4\" cellspacing=\"0\" border=\"0\">";
				
		switch(this.Orientation)
		{
			case 0://Horizontal
				html += "<tr><td class=\"scalebar\" align=\"center\" rowspan=\"2\"><img src=\"images/zb_zi.gif\" alt=\"Zoom In\" onmousedown=\"zs.zoomIn();\" /></td>";
				
				for( var i = 0; i < arrLabel.length; i++ )
				{
					html += "<td class=\"scalebar\" align=\"center\">";
					
					if( arrLabel[i] )
					{
						html += arrLabel[i];
					}
					
					html += "</td>";
				}
				
				html += "<td class=\"scalebar\" align=\"center\" rowspan=\"2\"><img src=\"images/zb_zo.gif\" alt=\"Zoom Out\" onmousedown=\"zs.zoomOut();\" /></td>";
				
				html += "</tr>";
				html += "<tr>";
				
				for( var i = 0; i < arr.length; i++ )
				{
					html += "<td class=\"scalebar\" align=\"center\">";
					
					if( arrLabel[i] )
					{
						html += "<img id=\"imgZS" + i + "\" src=\"images/zb_tick_inact.gif\" alt=\"" + arrLabel[i] + "\" onmousedown=\"zs.zoomToIndex(" + i + ");\" />";
					}
					
					html += "</td>";
				}
				
				html += "</tr>"				
				break;
				
			case 1://Vertical
				break;
		}
		
		html += "</table>";
		
		document.getElementById('divZoomSlider').innerHTML = html;
	}
}
