  var numberOfSet = 0;
  var numberOfBook = 0;
  var numberOfSpine = 0;
	var numberOfA5 = 0;
	
	function addOrderItem()
{
	var colourCombo = document.getElementById('colour');
	var styleCombo = document.getElementById('style');
	var logoCombo = document.getElementById('logo');
	
	var theColour = colourCombo.options[colourCombo.selectedIndex].text;
	var theStyle = styleCombo.options[styleCombo.selectedIndex].text;
	var theLogo = logoCombo.options[logoCombo.selectedIndex].text;
	var theGenre = document.getElementById('genre').value;
	var theVolumeNumber = document.getElementById('volumeNumber').value;
		
	var thePack = getSelectedProdRadioButton();
		
	if ( !validCombo(colourCombo) || !validCombo(styleCombo) || !validCombo(logoCombo) || theGenre == "" || theVolumeNumber == "" || thePack == "" )
	{
		alert("Please ensure that you have provided a Colour, Style, Logo, Genre and Volume Number for this CD-BookBox");
	} 
	else 
	{
		
		addItem(theColour,theStyle,theLogo,theGenre,theVolumeNumber,thePack);
	}
}

function addItem(color,style,logo,genre,volumeNumber,pack)
{
	var key = orders.length;
	var orderString = key + "," + color + "," + style + "," + logo + "," + genre + "," + volumeNumber + "," + pack + "," ;
	orders[key] = orderString;
	addRowToTable(key,color,style,logo,genre,volumeNumber,pack);
	updateOrderField();
}	

function updateOrderField()
{
	var result = "";
	for (i=0;i<orders.length;i++)
	{
		result += orders[i] + ";";
	}
	
	document.getElementById('orderContent').value = result;
}

function rebuildTableFromOrders()
{
	numberOfSet = 0;
 	numberOfBBook = 0;
  	numberOfSpine = 0;
  numberOfA5 = 0;
	var theTable = document.getElementById('resultTable');
	var numRows = theTable.rows.length;
    var rows = theTable.rows; 
    while(rows.length > 1) theTable.deleteRow(rows.length-1); 
	
	
	for (j=0;j<orders.length;j++)
	{
		rowdata = orders[j].split(",");
		theColor = rowdata[1];
		theStyle = rowdata[2];
		theLogo = rowdata[3];
		theGenre = rowdata[4];
		theVolNum = rowdata[5];
		thePack = rowdata[6]; 
		addRowToTable(j,theColor,theStyle,theLogo,theGenre,theVolNum,thePack);
	}
		
}

function addColourItem(theColour)
{
	if ( theColour == "Black" ) 	
	{
		numberOfBlack ++;
	}
	if ( theColour == "Blue" ) 	
	{
		numberOfBlue ++;
	}
	if ( theColour == "Red" ) 	
	{
		numberOfRed ++;
	}
	calcTotal();
}


function rebuildOrdersFromField()
{
 	numberOfSet = 0;
 	numberOfBook = 0;
  numberOfSpine = 0;
	numberOfA5 = 0;
	var orderFieldValue = document.getElementById('orderContent').value;
	var myOrders = orderFieldValue.split(";");
	
	for (j=0;j<myOrders.length-1;j++)
	{
		orders[j] = myOrders[j];
		rowdata = myOrders[j].split(",");
		theColor = rowdata[1];
		theStyle = rowdata[2];
		theLogo = rowdata[3];
		theGenre = rowdata[4];
		theVolNum = rowdata[5];
		thePack = rowdata[6]; 
		addRowToTable(j,theColor,theStyle,theLogo,theGenre,theVolNum,thePack);
	}
	
}

function remove(index)
{
	removedArray = new Array();
	var count = 0;
	//alert(orders.length);
	for (i=0;i<orders.length;i++)
	{
		if (i != index)
		{
			removedArray[count] = orders[i];
			count++;
		}
		else
		{
			//get colour
			rowdata = orders[i].split(",");
			var colour = (rowdata[6]);
			removePackItem(colour);
		}
	}
	
	orders = removedArray;
	updateOrderField();
	rebuildTableFromOrders();
	calcTotal();
}


function removePackItem(thePack)
{
	if ( thePack == "spine" ) 	
	{
		numberOfSpine --;
	}
	if ( thePack == "book" ) 	
	{
		numberOfBook --;
	}
	if ( thePack == "set" ) 	
	{
		numberOfSet --;
	}
	if ( thePack == "A5" ) 	
	{
		numberOfA5 --;
	}
	calcTotal();
}

function addPackItem(thePack)
{
	if ( thePack == "spine" ) 	
	{
		numberOfSpine ++;
	}
	if ( thePack == "book" ) 	
	{
		numberOfBook ++;
	}
	if ( thePack == "set" ) 	
	{
		numberOfSet ++;
	}
	if ( thePack == "A5" ) 	
	{
		numberOfA5 ++;
	}
	calcTotal();
}


function addRowToTable(key,color,style,logo,genre,volumeNumber,pack,recalculate)
{
  
  var tbl = document.getElementById('resultTable');
  var lastRow = tbl.rows.length;
  var iteration = lastRow;
  var row = tbl.insertRow(lastRow);
  
  // colour cell
  var cellOne = row.insertCell(0);
  var textNode = document.createTextNode(color);
  cellOne.appendChild(textNode);
  
  // style cell
  var cellTwo = row.insertCell(1);
  var textNodeTwo = document.createTextNode(style);
  cellTwo.appendChild(textNodeTwo);
  
   // genre cell
  var cellThree = row.insertCell(2);
  var textNodeThree = document.createTextNode(genre);
  cellThree.appendChild(textNodeThree);
  
  // volume number cell
  var cellFour = row.insertCell(3);
  var textNodeFour = document.createTextNode(volumeNumber);
  cellFour.appendChild(textNodeFour);
  
  // logo number cell
  var cellFive = row.insertCell(4);
  var textNodeFive = document.createTextNode(logo);
  cellFive.appendChild(textNodeFive);
  
  // pack cell
  var cellSix = row.insertCell(5);
  var textNodeSix = document.createTextNode(pack);
  cellSix.appendChild(textNodeSix);
  
  var cellSix = row.insertCell(6);
  var deletebutton = document.createElement("div");
  deletebutton.setAttribute('id',key + "_button");
  deletebutton.className = "deleteButton";
  deletebutton.innerHTML = "<a href='#' class='removeLink' onclick='return remove(" + key + ")'>remove</a>";
  cellSix.appendChild(deletebutton);
  addPackItem(pack);
}

function debug()
{
	var out = "";
	for (i=0;i<orders.length; i++)
	{
		out += orders[i] + "\n";
	}
	alert(out);
}

function validCombo( theCombo )
{
	if ( theCombo.selectedIndex == -1 || theCombo.options[theCombo.selectedIndex].value == "--" )
	{
		return false;
	}
	return true;
}


var orders = new Array();

//add the number of defimals required.
function formatDecimalPlaces(numberValue, decimalrequired)
{
	numberValue = new String(numberValue);
	var DECIMAL_SEPARATOR = ".";
    var tmpDecimalPortion = "";
    var tmpWholeNumberPortion = "";

	if (numberValue == null || numberValue == "")
		return numberValue;

	if (decimalrequired == null || typeof(decimalrequired) == "string")
	{
		decimalrequired = 1;
	}

    if (numberValue.lastIndexOf(DECIMAL_SEPARATOR) > -1)
        {

        var numberLength = numberValue.length;
        var decimalPlacePos = numberValue.lastIndexOf(DECIMAL_SEPARATOR);

        tmpDecimalPortion = numberValue.substring(decimalPlacePos, numberLength);
        tmpWholeNumberPortion = numberValue.substring(0, decimalPlacePos);

        var decimalPortion = "";
        if ((tmpDecimalPortion.length - 1) > decimalrequired)
            {
            // decimla placess are longer then required --> trim it down
            decimalPortion = tmpDecimalPortion.substring(0, decimalrequired +1);
        }
        else if ((tmpDecimalPortion.length - 1) < decimalrequired)
            { // decimalplaces are not sufficient --> add as requried.
           var dec ="" ;
		  // alert(tmpDecimalPortion);
            for (var i = 0; i < (decimalrequired - (tmpDecimalPortion.length -1)); i++)
                {
                dec += "0";
            }
            decimalPortion = tmpDecimalPortion + dec;
			//alert(decimalPortion);
        }
        else
            { // everything is just right.
            decimalPortion = tmpDecimalPortion;
        }
        return tmpWholeNumberPortion + decimalPortion;
    }
    else
        {
         var dec = ".";
        if (decimalrequired > 0)
            {
            for (var i = 0; i < decimalrequired; i++)
                {
                dec += "0";
            }

        }
        return numberValue + dec;
	}
}

function calcTotal()
{
		
	var bTotal = document.getElementById('spineTotal');
	var blTotal = document.getElementById('bookTotal');
	var rTotal = document.getElementById('setTotal');
	var aTotal = document.getElementById('A5Total');		

	rowDisplay(bTotal,numberOfSpine);
	rowDisplay(blTotal,numberOfBook);
	rowDisplay(rTotal,numberOfSet);	
	rowDisplay(aTotal,numberOfA5);	

	bTotal.innerHTML = "<b>" + numberOfSpine + "</b> Spine at &#163;1.00 = <b>&#163;" + formatDecimalPlaces(numberOfSpine * 1.00,2) + "</b>";
	blTotal.innerHTML = "<b>" + numberOfBook + "</b> Book at &#163;4.00 = <b>&#163;" + formatDecimalPlaces(numberOfBook * 4.00,2) + "</b>";
	rTotal.innerHTML = "<b>" + numberOfSet + "</b> Set at &#163;5.00 = <b>&#163;" + formatDecimalPlaces(numberOfSet * 5.00,2) + "</b>";
	aTotal.innerHTML = "<b>" + numberOfA5 + "</b> A5 Box at &#163;5.00 = <b>&#163;" + formatDecimalPlaces(numberOfA5 * 5.00,2) + "</b>";

	result = ( ( numberOfSpine * 1.00) + (numberOfBook * 4.00) +  (numberOfSet * 5.00)+ (numberOfA5 * 5.00 ) );

	var grandTotal = "TOTAL = &#163;" + formatDecimalPlaces(result,2);

	document.getElementById('grandTotal').innerHTML = grandTotal;
	document.getElementById('notes').innerHTML = "(Before postage and packaging)";
	document.getElementById('totalContainer').style.display = "block";
	
	document.getElementById('total').style.display = "block";
		
}

function rowDisplay(container,val)
{

	if ( !val || val == '' || val == 0 )
	{
		container.style.display = "none";
	}
	else
	{
		container.style.display = "block";
	}
}

function getSelectedProdRadioButton()
{
	buttonGroup = document.forms[0].pack;
	
	for ( i=0;i<buttonGroup.length;i++)
	{
		if ( buttonGroup[i].checked )
		{
			return buttonGroup[i].value;
		}
	}
}