////////////////////////////////////////////////////////////////////////////
//
//                       Copyright (c) 2006
//                       The Other Solutions, Inc.
//                       USA
//
//                       All Rights Reserved
//
//   This source file is subject to the terms and conditions of the
//   The Other Solutions Software License Agreement which restricts the manner
//   in which it may be used.
//   It's strictly forbidden to copy or use without 
//	 written permission unless viewed from the following web sites:
//		www.theothersolutions.com
//		www.advantages-distributions.com
//   Mail: hve@hvks.com
//
/////////////////////////////////////////////////////////////////////////////
//
// Module name     :   common_data.js
// Module ID Nbr   :   
// Description     :   Javascript quoting
// --------------------------------------------------------------------------
// Change Record   :   
//
// Version	Author/Date		Description of changes
// -------  -------------	----------------------
// 01.01	HVE/06-Mar-27	Initial release
// 01.02	HVE/2006-May-08	Added genric stand price
// End of Change Record
//
/////////////////////////////////////////////////////////////////////////////

var IO_data=new Array;
var computer_data=new Array;
var quality_data=new Array;
var scanner_param=new ScanParameter(5,false,5,4,45);
var price_data=new Array;

///////////////////////////////////////////////////////////////////////////

// Class IO
function IO(name,bandwidth)
	{
	check(arguments);

	this.name=name;
	this.bandwidth=bandwidth;
	}

// Class Computer
function Computer(name,performance,price)
	{
	check(arguments);

	this.name=name;
	this.performance=performance;
	this.price=price;
	}

// Class Drawing Quality
function Quality(name,factor)
	{
	check(arguments);

	this.name=name;
	this.factor=factor;
	}

// Class Basis scanner parameter and assumptions
function ScanParameter(insert,remove,preview,latency,between)
	{
	check(arguments);

	this.insert=insert;
	this.remove=remove;
	this.preview=preview;
	this.between=between;
	this.latency=latency;
	}

// Class Scanner price and accessories
function Price(name,price)
	{
	check(arguments);

	this.name=name;
	this.price=price;
	}	

//////////////////////////////////////////////////////////////////////////

function init_io_data()
	{
	for(var i in IO_data) if(IO_data[i] instanceof IO) return; // Already initialized

	IO_data["usb"]=new IO("Usb",18);
	IO_data["usbxdtr"]=new IO("Usb xDTR",32);
	IO_data["firewire"]=new IO("Firewire",25);
	IO_data["lan"]=new IO("Lan",100/8*0.6);
	IO_data["scsi"]=new IO("Scsi",14);
	IO_data["best"]=new IO("Firewire",25);
	}

function init_computer_data()
	{
	for(var i in computer_data) if(computer_data[i] instanceof Computer) return; // Already initialized
	
	computer_data["standard"]=new Computer("Standard PC",10,1000);
	computer_data["premium"]=new Computer("Premium PC",15,2000);
	computer_data["high-end"]=new Computer("High-end PC",20,4000);
	computer_data["built-in"]=new Computer("Scanner Built-in PC",10,0);
	}

function init_quality_data()
	{
	for(var i in quality_data) if(quality_data[i] instanceof Quality) return; // Already initialized

	quality_data["good"]=new Quality("Good Quality",1);
	quality_data["fair"]=new Quality("Fair Quality",2);
	quality_data["poor"]=new Quality("Poor Qaulity",3);
	}


function init_price_data()
	{
	for(var i in price_data) if(price_data[i] instanceof Price) return; // Already initialized

	for(var i in scanner_data ) if(scanner_data[i] instanceof Scanner) price_data[i]=new Price(i,scanner_data[i].price);
	price_data["upgrade"]=new Price("SmartCad",2000);
	price_data["stand25"]=new Price("SP6 25\" Stand",890);
	price_data["stand36"]=new Price("SP6 36\" Stand",890);
	price_data["stand42"]=new Price("SP6 42\" Stand",890);
	price_data["stand44"]=new Price("SP7 44\" Stand",600);	
	price_data["stand54"]=new Price("SP6 54\" Stand",890);
	price_data["stand"]=new Price("Scanner Stand",890);
	price_data["wideimage"]=new Price("WIDEimage",990);
	price_data["jetimage"]=new Price("JETimage",1990);
	price_data["nextimage"]=new Price("NEXTimage",700);
	price_data["nextimagecopy"]=new Price("NEXTimage Scan&Copy",1500);
	price_data["tray36"]=new Price("SP6 36-42\" Tray",290);
	price_data["tray42"]=new Price("SP6 36-42\" Tray",290);
	price_data["tray54"]=new Price("SP6 54\" Tray",290);	
	}


/////////////////////////////////////////////////////////////////////////

function get_interface_info(io_if)
	{
	init_io_data();
	return IO_data[io_if];
	}
	
function get_computer_info(type)
	{
	init_computer_data();
	return computer_data[type];
	}	
	
function get_quality_info(type)
	{
	init_quality_data();
	return quality_data[type];
	}	
	
function get_price_info(type)
	{
	init_price_data();
	return price_data[type];
	}	