var changingNum = 0;
var plotMode = 'func';

function changeColor(colorNum) {
	changingNum = colorNum;
	colorbox = $('eqn'+colorNum+'_colorbox');
	colorboxPos = colorbox.cumulativeOffset();
	colorboxSize = colorbox.getDimensions();
	choosebox = $('colorSelection');
	chooseboxSize = choosebox.getDimensions();
	
	choosebox.style.left = (colorboxPos.left+colorboxSize.width/2-chooseboxSize.width/2)+'px';
	choosebox.style.top = (colorboxPos.top+colorboxSize.height/2-chooseboxSize.height/2)+'px';
	Effect.Appear(choosebox, { duration: 0.2 });
}

function doChangeColor(toColor) {
	$('eqn'+changingNum+'_colorbox').className = 'colorBox color'+toColor;
	$('eqn'+changingNum+'_color').value = toColor;
	Effect.Fade('colorSelection', { duration: 0.2 });
	$('eqn'+changingNum+'_eqn').focus();
}

function someEqns() {
	if (plotMode == 'func') {
		for(var i=1;i<=6;i++) {
			if ($('eqn'+i+'_eqn').value != '')
				return true;
		}
	} else if (plotMode == 'para') {
		for(var i=1;i<=3;i++) {
			if (($('eqn'+i+'_x').value != '') && ($('eqn'+i+'_y').value != ''))
				return true;
		}
	}
	if (($('x_min').value != '-17') || ($('x_max').value != '17') || ($('y_min').value != '-10.5') || ($('y_max').value != '10.5')) {
		return true;
	}
	if (($('x_tick').value != '1') || ($('y_tick').value != '1') || ($('x_label_freq').value != '5') || ($('y_label_freq').value != '5')) {
		return true;
	}
	if ((!$('do_grid').checked) || (!$('bold_labeled_lines').checked)) {
		return true;
	}
	if (($('image_w').value != '850') || ($('image_h').value != '525')) {
		return true;
	}
	
	return false;
}

function doPlot() {
	formDat = $('plotForm').serialize();
	$('permalink').href = '/'+(plotMode == 'para' ? 'parametric' : '')+'?'+formDat;
	
	if (!someEqns()) {
		$('saveLink').href = '/images/blank.png';
		$('plotImage').src = '/images/blank.png';
		return false;
	}
	
	image = $('plotImage');
	imagePos = image.cumulativeOffset();
	imageSize = image.getDimensions();
	loading = $('loadingBox');
	loadingSize = loading.getDimensions();
	
	loading.style.left = (imagePos.left+imageSize.width/2-loadingSize.width/2)+'px';
	loading.style.top = (imagePos.top+imageSize.height/2-loadingSize.height/2)+'px';
	
	Effect.Appear('loadingBox', { duration: 0.2 });
	image.src = '/render.php?'+formDat;
	$('saveLink').href = '/render.php?'+formDat+'&download';
	
	if (plotMode == 'para') {
		piwikTracker.trackGoal(2);
	} else {
		piwikTracker.trackGoal(1);
	}
	
	return false;
}

function doneLoading() {
	$('plotImage').width = $('image_w').value;
	$('plotImage').height = $('image_h').value;
	Effect.Fade('loadingBox', { duration: 0.2 });
}

function reloadEqns() {
	if (plotMode == 'func') {
		for(var i=1;i<=6;i++) {
			$('eqn'+i+'_colorbox').className = 'colorBox color'+$('eqn'+i+'_color').value;
		}
	} else if (plotMode == 'para') {
		for(var i=1;i<=3;i++) {
			$('eqn'+i+'_colorbox').className = 'colorBox color'+$('eqn'+i+'_color').value;
		}
	}
	doPlot();
}

function resetEqns() {
	if (plotMode == 'func') {
		for(var i=1;i<=6;i++) {
			$('eqn'+i+'_eqn').value = '';
			$('eqn'+i+'_colorbox').className = 'colorBox color'+i;
			$('eqn'+i+'_color').value = i;
		}
	} else if (plotMode == 'para') {
		for(var i=1;i<=3;i++) {
			$('eqn'+i+'_x').value = '';
			$('eqn'+i+'_y').value = '';
			$('eqn'+i+'_colorbox').className = 'colorBox color'+i;
			$('eqn'+i+'_color').value = i;
		}
	}
	doPlot();
}

function resetEverything() {
	$('plotForm').reset();
	reloadEqns();
}

function toggleFunctionsTable() {
	Effect.toggle('functionsTable', 'appear', { duration: 0.2 });
}

Event.observe(window, 'load', function() {
	if ($('plotMode')) { plotMode = $('plotMode').value; }
	Event.observe('plotImage', 'load', doneLoading);
	reloadEqns();
});

