function Fraction(n, d)
{
	if(d != 0)
	{
		this.denom = d// || 1;
		this.num = n// || 1;
	}
	else
	{
		this.denom = 1;
		this.num = 1;
	}
}

//this JS file must be used in conjunction with gcd.js to ensure that
//no error results from calling getgcd().

function simplify(f)
{
	g = new Fraction;
	
	var gcd = getgcd(Math.abs(f.num),Math.abs(f.denom));
	
	g.num = f.num / gcd;
	g.denom = f.denom / gcd;

	return g;
}

function add(f, g)
{
	h = new Fraction;
	
	h.num = f.num * g.denom + g.num * f.denom;
	h.denom = f.denom * g.denom;
	
	return simplify(h);
}

function subtract(f, g)
{
	h = new Fraction;
	
	h.num = f.num * g.denom - g.num * f.denom;
	h.denom = f.denom * g.denom;
	
	return simplify(h);
}

function multiply(f, g)
{
	h = new Fraction;
	
	h.num = f.num * g.num
	h.denom = f.denom * g.denom;
	
	return simplify(h);
}

function divide(f, g)
{
	h = new Fraction(g.denom, g.num);

	return multiply(f,h);
}

function convert(num)
{
	f = convertFinite(num);	
	//return f as fraction taken from decimal number 'num'.
}

function convertFinite(num)
{
	//non-repeating finite decimal representations
	
	var numString = num.toString();
	var pos = numString.indexOf(".");
	var endString = numString.substr(pos+1);
	var digits = endString.length;
	
	var power10 = Math.pow(10,digits);
	var newnum = Math.round(power10 * num);
	var newdenom = power10;
	return new Fraction(newnum,newdenom);
}

function convertRepeating(nonRepeatString, repeatString)
{
//	var	nonRepeatString = document.form1.y.value;
//	var repeatString = document.form1.z.value;
	//var nonRepeatString = nonrepeat.toString();
	
	if(nonRepeatString.indexOf(".") == -1 && repeatString.indexOf(".") == -1)
	{
		nonRepeatString += ".";		
	}
	
	var numString = nonRepeatString + repeatString;
	
	var number = eval(numString);

	var pos = numString.indexOf(".");
	var pos2 = nonRepeatString.indexOf(".");
	
	if(pos2 == -1)
	{pos2 = 0;}
	
	var endString = numString.substr(pos+1);
	var endString2 = nonRepeatString.substr(pos2+1);

	var digits = endString.length;
	var digits2 = endString2.length;

	number = Math.round(number * Math.pow(10,digits));
	var number2 = Math.round(eval(nonRepeatString) * Math.pow(10,digits2));

	//num = nonRepeatString + "<span style='text-decoration: overline;'>" + repeatString + "</span>";

	//num = eval(numString);
	var newnum = eval(number - number2);
	var newdenom = Math.pow(10,digits) - Math.pow(10,digits2);
	
	return new Fraction(newnum,newdenom);
}

function toFractionString(f)
{
	if(f.denom != 1)
	{
		return f.num + "/" + f.denom;
	}
	else if(f.denom == 1)
	{
		return f.num;
	}
}

