// JavaScript Document
function Car(number, manufacture, model, variant, year, mileage, engine, picture, price, department) {
	if (number == undefined)
		number = '';
	if (manufacture == undefined)
		manufacture = '';
	if (model == undefined)
		model = '';
	if (variant == undefined)
		variant = '';
	if (year == undefined)
		year = '';
	if (mileage == undefined)
		mileage = '';
	if (engine == undefined)
		engine = '';
	if (picture == undefined)
		picture = '';
	if (price == undefined)
		price = '';
	if (department == undefined)
		department = '';
	
	function getNumber() {
		return number;
	}
	
	function getManufacture() {
		return manufacture;
	}
	
	function getModel() {
		return model;
	}
	
	function getVariant() {
		return variant;
	}
	
	function getYear() {
		return year;
	}
	
	function getMileage() {
		if (mileage != '')
			return mileage + ".000";
		return mileage;
	}
	
	function getEngine() {
		return engine;
	}
	
	function getPicture() {
		if (picture == '') return "rotator.jpg";
		return picture;
	}
	
	function getPrice() {
		if (price != '' && price > 100) 
			return FormatNumber(price, 0, true, false, true) + " kr";
		return "ring for pris";
	}
	
	function getDepartment() {
		return department;
	}
	
	function toString() {
		return "[" + number + ", " + manufacture + ", " + model + ", " + variant + ", " + year + ", " + mileage + ", " + engine + ", " + picture + ", " + price + ", " + department + "]";
	}
	
	function FormatNumber(num,decimalNum,bolLeadingZero,bolParens,bolCommas)
		/**********************************************************************
			IN:
				NUM - the number to format
				decimalNum - the number of decimal places to format the number to
				bolLeadingZero - true / false - display a leading zero for
												numbers between -1 and 1
				bolParens - true / false - use parenthesis around negative numbers
				bolCommas - put commas as number separators.
		 
			RETVAL:
				The formatted number!
		 **********************************************************************/
	{ 
        if (isNaN(parseInt(num))) return "NaN";

		var tmpNum = num;
		var iSign = num < 0 ? -1 : 1;		// Get sign of number
	
		// Adjust number so only the specified number of numbers after
		// the decimal point are shown.
		tmpNum *= Math.pow(10, decimalNum);
		tmpNum = Math.round(Math.abs(tmpNum))
		tmpNum /= Math.pow(10, decimalNum);
		tmpNum *= iSign;					// Readjust for sign
		
		// Create a string object to do our formatting on
		var tmpNumStr = new String(tmpNum);
	
		// See if we need to strip out the leading zero or not.
		if (!bolLeadingZero && num < 1 && num > -1 && num != 0)
			if (num > 0)
				tmpNumStr = tmpNumStr.substring(1, tmpNumStr.length);
			else
				tmpNumStr = "-" + tmpNumStr.substring(2, tmpNumStr.length);
			
		// See if we need to put in the commas
		if (bolCommas && (num >= 1000 || num <= -1000)) {
			var iStart = tmpNumStr.indexOf(".");
			if (iStart < 0)
				iStart = tmpNumStr.length;
	
			iStart -= 3;
			while (iStart >= 1) {
				tmpNumStr = tmpNumStr.substring(0, iStart) + "," + tmpNumStr.substring(iStart, tmpNumStr.length)
				iStart -= 3;
			}		
		}
	
		// See if we need to use parenthesis
		if (bolParens && num < 0)
			tmpNumStr = "(" + tmpNumStr.substring(1, tmpNumStr.length) + ")";
	
		return tmpNumStr;		// Return our formatted string!
	}
	
	function gotoLink(linkstring, page) {
		if (linkstring != undefined) {
			
			linkstring += page;
			linkstring = linkstring.toLowerCase();
			
			if (linkstring.search(/http:\/\//) == -1) {
				linkstring = "http://" + linkstring
			}
			
			window.parent.location = linkstring;
		}
	}
	
	this.getNumber = getNumber;
	this.getManufacture = getManufacture;
	this.getModel = getModel;
	this.getVariant = getVariant;
	this.getYear = getYear;
	this.getMileage = getMileage;
	this.getEngine = getEngine;
	this.getPicture = getPicture;
	this.getPrice = getPrice;
	this.getDepartment = getDepartment;
	this.toString = toString;
	this.gotoLink = gotoLink;
}

function CarCollection() {
	var array = new Array();
	
	function addItem(number, manufacture, model, variant, year, mileage, engine, picture, price, department) {
		array.push(new Car(number, manufacture, model, variant, year, mileage, engine, picture, price, department));
	}
	
	function removeAt(index) {
		array.splice(index, 1);
	}
	
	function removeItem(itemNr) {
		for (i = 0; i < array.length; i++)
			if (array[i].getNumber() == itemNr) 
				removeAt(i);
	}
		
	function get(index) {
		return array[index];
	}
	
	function getItem(itemNr) {
		for (i = 0; i < array.length; i++)
			if (array[i].getNumber() == itemNr)
				return array[i];
	}
	
	function getAll() {
		return array;
	}
	
	function length() {
		return array.length;
	}
	
	function toString() {
		return "CarCollection";
	}
	
	this.addItem = addItem;
	this.get = get;
	this.getItem = getItem;
	this.getAll = getAll;
	this.removeAt = removeAt;
	this.removeItem = removeItem;
	this.length = length;
	this.toString = toString;
}
	

