//Include perceptron.js
document.write('<script src="perceptron.js"></script>');

function MLP (input_size,output_size,hidden_size) {
	if (isNaN(hidden_size)) hidden_size = 2*input_size/3+output_size;
	this.layer1 = new Perceptron(input_size,hidden_size);
	this.layer2 = new Perceptron(hidden_size,output_size);
	this.layer1.errors = this.layer2.backErrors;
	this.duration = 0;
	this.input = function (input,target,noise) {
		var start = (new Date()).valueOf();
		this.layer1.input(input,null,noise);
		this.layer2.input(this.layer1.outputs,target);
		this.layer2.chart.setTitle('Input Neurons: '+input_size+', Output Neurons: '+output_size+', Hidden Neurons: '+hidden_size);
		if (target) this.layer1.update();
		var finish = (new Date()).valueOf();
		this.duration = 0.9*this.duration + 0.1*(finish - start);
		return this.layer2.outputs;
	};
	this.reset = function() {
		this.layer1.reset();
		this.layer2.reset();
	};
	this.resetTraces = function() {
		this.layer1.resetTraces();
		this.layer2.resetTraces();
	};
	this.getHiddenSize = function() {
		return hidden_size;
	};
}
