/*
 * FusionCharts Free v2
 * http://www.fusioncharts.com/free
 *
 * Copyright (c) 2009 InfoSoft Global (P) Ltd.
 * Dual licensed under the MIT (X11) and GNU GPL licenses.
 * http://www.fusioncharts.com/free/license
 *
 * MIT License: http://www.opensource.org/licenses/mit-license.php
 * GPL License: http://www.gnu.org/copyleft/gpl.html
 *
 * Date: 2009-08-21
 */
//--------------------------------------------------------------------------------
/*-------------------------------------------------------------
	mc.dashTo is a metod for drawing dashed (and dotted) lines. 
-------------------------------------------------------------*/
MovieClip.prototype.dashTo = function(startx, starty, endx, endy, len, gap) {
	// ==============
	// mc.dashTo() - by Ric Ewing (ric@formequalsfunction.com) - version 1.2 - 5.3.2002
	// 
	// startx, starty = beginning of dashed line
	// endx, endy = end of dashed line
	// len = length of dash
	// gap = length of gap between dashes
	// ==============
	//
	// if too few arguments, bail
	if (arguments.length < 6) {
		return false;
	}
	// init vars
	var seglength, deltax, deltay, segs, cx, cy;
	// calculate the legnth of a segment
	seglength = len + gap;
	// calculate the length of the dashed line
	deltax = endx - startx;
	deltay = endy - starty;
	delta = Math.sqrt((deltax * deltax) + (deltay * deltay));
	// calculate the number of segments needed
	segs = Math.floor(Math.abs(delta / seglength));
	// get the angle of the line in radians
	radians = Math.atan2(deltay,deltax);
	// start the line here
	cx = startx;
	cy = starty;
	// add these to cx, cy to get next seg start
	deltax = Math.cos(radians)*seglength;
	deltay = Math.sin(radians)*seglength;
	// loop through each seg
	for (var n = 0; n < segs; n++) {
		this.moveTo(cx,cy);
		this.lineTo(cx+Math.cos(radians)*len,cy+Math.sin(radians)*len);
		cx += deltax;
		cy += deltay;
	}
	// handle last segment as it is likely to be partial
	this.moveTo(cx,cy);
	delta = Math.sqrt((endx-cx)*(endx-cx)+(endy-cy)*(endy-cy));
	if(delta>len){
		// segment ends in the gap, so draw a full dash
		this.lineTo(cx+Math.cos(radians)*len,cy+Math.sin(radians)*len);
	} else if(delta>0) {
		// segment is shorter than dash so only draw what is needed
		this.lineTo(cx+Math.cos(radians)*delta,cy+Math.sin(radians)*delta);
	}
	// move the pen to the end position
	this.moveTo(endx,endy);
};