item_num = 1;
index = 0;
items_ordered = 0;
total_item_price =0;
var maxarray = 70;
var checkoutarray = new createArray(maxarray);

initialize_arrays(checkoutarray); 

function createArray(n)
	//n		size of array
	//init	what you want all values initialized to
{               
	this.length = n
	var i = 0
	for (i = 1 ; i < n ; i++){ 
		this[i] = null;	
	}
	return this;
}

function initialize_arrays(arraysa)           
{
	for (i = 1;i < maxarray;i++) {
		arraysa[i] = new product('',0,'',0,'')
	}
}

function product(code,price,desc,quan)
{ 
	this.price = 0
  	this.code = code
  	this.price = price
  	this.desc = desc
  	this.quan = quan
 	return this;
}

function get_product_string(code)
{
	var productString = '';
  	for (var i = 0; i < maxarray; i++) {
		if(checkoutarray[i] != null){
			if (checkoutarray[i].code == code){
         		productString = checkoutarray[i].code + ':' + checkoutarray[i].price + ':' + checkoutarray[i].desc + ':' + checkoutarray[i].quan;
      		}
   		}
  	}
	return productString;
}

function parse_product_info(productString, num)
{
	var productarray = productString.split(":");
	if(productarray != ''){
		checkoutarray[num].code = productarray[0];
		checkoutarray[num].price = productarray[1];
		checkoutarray[num].desc = productarray[2];
		checkoutarray[num].quan = productarray[3];
  		item_num = item_num + 1;
  		write_to_field(checkoutarray[num].code);
	} else {
  		//alert('empty');
	}
}

function item_tot_price(i)
{
	total_item_price = eval((checkoutarray[i].price * checkoutarray[i].quan));
 	return total_item_price;
}

function code_tot_price(code)
{
	var loc = check_if_in(code)
	var subtotal;
	if (loc > 0) {
 		var subtotal = eval((checkoutarray[loc].price * checkoutarray[loc].quan));
 	} else {
 		var subtotal = 0;
 	}
	return subtotal
}

function all_order_totals()
{
  	order_total = 0;
        for (i =1;i <maxarray;i++) {
	   order_total = order_total + item_tot_price(i)
        }
 	return order_total;
}

function remove_nil_items(inputlist)
{
	var i = 0; 
	var j = 1; 
  var temp_array = new createArray(maxarray); 
	initialize_arrays(temp_array);
  	for (i=1;i<item_num;i++) {
  		if (checkoutarray[i].quan != 0) {
  			temp_array[j]=checkoutarray[i]
     		items_ordered =j 
     		j=j+1
     	} 
   	} 
  	checkoutarray = temp_array
  	item_num = items_ordered + 1
}

function item_quan(code)
{
	var loc = check_if_in(code)
	if (loc > 0) {
 		var quantities = checkoutarray[loc].quan
 	} else {
 		var quantities = 0;
 	}
	return quantities
}

function item_price(code)
{
	var loc = check_if_in(code)
	if (loc > 0) {
 		var price = checkoutarray[loc].price
 	} else {
 		var price = '';
 	}
	return price;
}

function item_desc(code)
{
	var loc = check_if_in(code)
	if (loc > 0) {
 		var quantities = checkoutarray[loc].desc
 	} else {
 		var quantities = '';
 	}
	return quantities
}

function num_items_ordered()
{
	var i = 0; 
	var j = 1;
	var temp_array = new createArray(maxarray);
	initialize_arrays(temp_array);
	items_ordered = 0;
  	for (i=1;i<maxarray;i++) {
  		if (checkoutarray[i].quan != 0) {
  			temp_array[j]=checkoutarray[i]
     		items_ordered =j 
     		j=j+1
     	} 
   	} 
  	checkoutarray = temp_array
  	item_num = items_ordered + 1
    return items_ordered;
}

function check_if_in(code_check) // this works
{
	var i = 1
	loc = 0;
	while ((i < item_num) && (checkoutarray[i].code != code_check)){
  		i = i + 1;
  	}
   	if (checkoutarray[i].code == code_check) {
    	loc = i
    } else {
    	loc = -1;
    }
	return loc;
}

function additem(codes,prices,descrip,qty)
{
	// adds another item to a variable length array
	// remember to do it via new product()
	loc = check_if_in(codes)
	if (loc != -1){
  		// update existing item
 		checkoutarray[loc] = new product(codes,prices,descrip,qty)
 	} else {
    	checkoutarray[item_num] = new product(codes,prices,descrip,qty);
    	items_ordered = item_num
    	item_num = item_num + 1
	}
    remove_nil_items(checkoutarray)
}

function formatpre(val, pre)
{
    var valstr;

    valstr = "" + val;
    if (valstr.length < pre) {
    	while (valstr.length < pre) {
          valstr = "0" + valstr;
    	}
    }
    return (valstr);
}

function format(val, post)
{
	var decpoint;
    var begin;
    var end;
    var valstr;
	var temp_char;

    valstr = "" + val;
	//alert('valstr = ' + valstr);
    decpoint = valstr.indexOf(".")
    if (decpoint != -1) {
		//alert('decpoint = ' + decpoint);
        begin = valstr.substring(0,decpoint);
        end = valstr.substring(decpoint+1,valstr.length);
		//alert('begin = ' + begin + '\nend= ' + end);
	} else {
		begin = valstr;
        end = ""; 
    }
    if (end.length < post) {
    	while (end.length < post) { 
    		end += "0"; 
    	}
    } 	     
    end = end.substring(0,post); 	     
    //alert('begin = ' + begin + '\nend= ' + end); 
    return (begin+"."+end);
}
