var QUOTE = String.fromCharCode(34);


function Checkout(){
UpdateTotals();
strTextDescription = strDescription;

if(strDescription.length>255){
alert("Sorry " + CR + "Due to data restrictions imposed by WorldPay you have too many items in your basket" + CR + "Please remove an item and try again");
return;
}
strHTMLDescription += "</table>";
strSubmitForm += "<input type=hidden name=HTMLDescription id=HTMLDescription value=" + QUOTE + strHTMLDescription + QUOTE + ">";
strSubmitForm += "<input type=hidden name=TextDescription id=TextDescription value=" + QUOTE + strTextDescription + QUOTE + ">";
strSubmitForm += "</form></body></html>";


if(InstID!=""){
parent.rdo.document.open();
parent.rdo.document.write(strSubmitForm);
parent.rdo.document.forms[0].submit();
}
else{
alert("You need to input your WorldPay Installation ID to use the checkout function");
}
}


function AddToCart(ITEMDATA,ITEM_NUMBER){

var arrItem = ITEMDATA.split(fld);
for(var i=0;i<arrShopping.length-1;i++){
var arrRecord = arrShopping[i].split(fld);
if(arrRecord[2]==arrItem[1]){
var strMessage = "This item has already been added to your order";
strMessage += CR + "To order more - update the quantity box in your current order"
alert(strMessage);
return;
}

}

strShopping += (arrItem[0] + fld + arrItem[1] + fld + arrItem[1] + fld + arrItem[2] + fld  + arrItem[3] + fld  + arrItem[4] + fld + arrItem[5] + fld  + arrItem[6] + fld)


var ControlType = parent.main.document.forms["ProductForm"].Sizes[ITEM_NUMBER].type.toString();

if(ControlType != "hidden"){
strShopping += parent.main.document.forms["ProductForm"].Sizes[ITEM_NUMBER].options[parent.main.document.forms["ProductForm"].Sizes[ITEM_NUMBER].selectedIndex].text;
} 
strShopping += fld;

ControlType = parent.main.document.forms["ProductForm"].Colors[ITEM_NUMBER].type.toString();

if(ControlType != "hidden"){
strShopping += parent.main.document.forms["ProductForm"].Colors[ITEM_NUMBER].options[parent.main.document.forms["ProductForm"].Colors[ITEM_NUMBER].selectedIndex].text;
} 

strShopping += fld;
strShopping += rcd;


WriteCart();
}




function WriteCart(){
strDescription = "";
var QUO = String.fromCharCode(34);
var strItems="";
strCart = "";
var arrItems
var BASKET_TOTAL = 0;
var TAX_TOTAL = 0;
GetCartHeader();
arrShopping = strShopping.split(rcd);
strHTMLDescription = "<table>";
if(arrShopping.length==1){
WriteEmpty();
return;
}
var strHeaderRow = "<tr><td align=center>Qty</td><td align=center>Item</td><td align=right>Price</td><td align=right>Total</td></tr>" + CR;
strHTMLDescription += strHeaderRow;
strSubmitForm = "<html><head><title>Submitting Order</title><head><body>";
strSubmitForm += "<form target='_top' action='https://select.worldpay.com/wcc/purchase' method='post'>";
strSubmitForm += "<input type=hidden name=cartId id=cartId value='" + CartID + "'>";
strSubmitForm += "<input type=hidden name=instId id=instId value='" + InstID + "'>";
strSubmitForm += "<input type=hidden name=testMode value='" + TestMode + "'>";
strSubmitForm += "<input type=hidden name=currency id=currency value='" + CurrencyCode + "'>";
strSubmitForm += "<input type=hidden name=desc id=desc value='" + CR;
for(var i=0;i < arrShopping.length-1;i++){
var strTotal;
arrItems = arrShopping[i].split(fld);

arrItems[QUANTITY] = Round(arrItems[QUANTITY]);

if(parseInt(Round(arrItems[DISCOUNT_THRESHOLD]))>0 && parseInt(arrItems[QUANTITY]) >= parseInt(arrItems[DISCOUNT_THRESHOLD])){
arrItems[ITEM_PRICE] = Round(arrItems[DISCOUNTED_PRICE]);
}
else{
arrItems[ITEM_PRICE] = Round(arrItems[ITEM_PRICE]);
}

if(TAX_RULE == 2 && arrItems[TAX_APPLIES]==1 || TAX_RULE ==3 && arrItems[TAX_APPLIES]==1){
var NET;
var DIVIDER = TAX_RATE + 100
var AMOUNT;
var ROW_TAX=0;
var TAX=0;

if(TAX_RULE == 2){

AMOUNT = arrItems[ITEM_PRICE];

TAX = ((AMOUNT / DIVIDER) * TAX_RATE);
TAX = Round(TAX);
NET = AMOUNT - TAX;
arrItems[ITEM_PRICE] = NET;
arrItems[ROW_TOTAL] = Round(arrItems[QUANTITY] * arrItems[ITEM_PRICE]);
ROW_TAX = Round(arrItems[QUANTITY] * TAX);
TAX_TOTAL += ROW_TAX;
BASKET_TOTAL += arrItems[ROW_TOTAL] + ROW_TAX;
}
else{

AMOUNT = arrItems[ITEM_PRICE];
TAX = AMOUNT * TAX_RATE;
TAX = TAX / 100;
TAX = Round(TAX);

AMOUNT = AMOUNT;
arrItems[ITEM_PRICE] = AMOUNT;
arrItems[ROW_TOTAL] = Round(arrItems[QUANTITY] * arrItems[ITEM_PRICE]);
ROW_TAX = Round(arrItems[QUANTITY] * TAX)
TAX_TOTAL += ROW_TAX;
BASKET_TOTAL += arrItems[ROW_TOTAL] + ROW_TAX;
}
}
else{
arrItems[ROW_TOTAL] = Round(arrItems[QUANTITY] * arrItems[ITEM_PRICE]);
BASKET_TOTAL += arrItems[ROW_TOTAL];
}




arrItems[1] = FormatCurrency(arrItems[ROW_TOTAL]);
arrItems[3] = FormatCurrency(arrItems[ITEM_PRICE]);

strItems += "<tr>";

strItems += CR;

strItems += "<td align=center><input name=quantity id=quantity value='" + arrItems[QUANTITY] + "' size=1 ";

if(!document.layers){
strItems += "style='border-top:white solid 1px;border-left:white solid 1px;border-right:white solid 1px;border-bottom:white solid 1px;width:20;height:20;font-family:arial;font-size:8pt;'";
}

strItems += "></td>" + CR;

strItems += "<td>" + arrItems[ITEM_NAME]

if(arrItems[SIZE]!="" || arrItems[COLOR] != ""){
strItems += "<br>"; 
}


if(Trim(arrItems[SIZE])!=""){
strItems += "Size: " + arrItems[SIZE] + "&nbsp;&nbsp;"; 
}

if(Trim(arrItems[COLOR])!=""){
strItems += "Color: " + arrItems[COLOR]; 
}

strItems + "</td>" + CR;
strItems += "<td align=right nowrap>" + arrItems[ITEM_PRICE] + "</td>" + CR;
strItems += "<td align=right nowrap>" + arrItems[ROW_TOTAL] + "</td>" + CR;
strItems += "</tr>";
strDescription += arrItems[QUANTITY] + TAB + arrItems[ITEM_NAME]

if(Trim(arrItems[SIZE])!=""){
strDescription += " Size: " + arrItems[SIZE]; 
}
if(Trim(arrItems[COLOR])!=""){
strDescription += " Color: " + arrItems[COLOR]; 
}


strDescription += TAB + arrItems[ROW_TOTAL] + CR;

} //End For

if(Round(DELIVERY_CHARGE)!="0"){

DELIVERY_CHARGE_HTML += "<tr><td></td><td colspan=2 align=left>Delivery</td><td align=right>";

if(Round(BASKET_TOTAL) < Round(DELIVERY_CHARGE_THRESHOLD)){

BASKET_TOTAL += Round(DELIVERY_CHARGE)

DELIVERY_CHARGE_HTML += FormatCurrency(DELIVERY_CHARGE);
strDescription += TAB + TAB + "Carriage" + TAB + FormatCurrency(DELIVERY_CHARGE) + CR;

	if(TAX_RULE==3 || TAX_RULE==2){
	AMOUNT = DELIVERY_CHARGE;
	TAX = AMOUNT * TAX_RATE;
	TAX = TAX / 100;
	TAX = Round(TAX);
	TAX_TOTAL += TAX;
	BASKET_TOTAL += TAX;
	}
}
else{

	if(DELIVERY_CHARGE_RULE==0){
	DELIVERY_CHARGE_HTML += "free"
	strDescription += TAB + TAB + "Carriage" + TAB + "Free" + CR;
	}
	else{

		if(TAX_RULE==3 || TAX_RULE==2){
		AMOUNT = DELIVERY_CHARGE_PRICE;
		TAX = AMOUNT * TAX_RATE;
		TAX = TAX / 100;
		TAX = Round(TAX);
		BASKET_TOTAL += Round(DELIVERY_CHARGE_PRICE)
		TAX_TOTAL += TAX;
		}
		else{
		BASKET_TOTAL += Round(DELIVERY_CHARGE_PRICE)
		DELIVERY_CHARGE_HTML += FormatCurrency(DELIVERY_CHARGE_PRICE);
		}
	strDescription += TAB + TAB + "Carriage" + TAB + FormatCurrency(DELIVERY_CHARGE) + CR;
	}

}
DELIVERY_CHARGE_HTML += "</td></tr>";
}

BASKET_TOTAL = FormatCurrency(BASKET_TOTAL);
strItems += DELIVERY_CHARGE_HTML;
strItems += "<tr height=10><td colspan=4></td></tr>" + CR;
if(TAX_RULE==2||TAX_RULE==3){
strItems += "<tr><td colspan=3 align=right nowrap>" + TAX_LABEL + "</td><td align=right nowrap>"  + Currency + FormatCurrency(TAX_TOTAL) + "</td></tr>" + CR;
strDescription += TAB + TAB + TAX_LABEL + TAB + FormatCurrency(TAX_TOTAL) + CR;
}

strItems += "<tr height=1 bgcolor='white'><td colspan=4></td></tr>" + CR;
strItems += "<tr><td colspan=2><b>Total Amount</b></td><td colspan=2 align=right nowrap><b>"  + Currency + BASKET_TOTAL + "</b></td></tr>" + CR;
strItems += "<tr height=1 bgcolor='white'><td colspan=4></td></tr>" + CR;
strHTMLDescription += strItems;
strItems += "<tr height=10><td colspan=4>to remove an item delete quantity</td></tr>"+ CR;
strItems += "<tr height=10><td colspan=4></td></tr>" + CR;

strItems += "<tr><td colspan=2>";
if(!document.layers){
strItems += "<input type=button value=" + QUO + "Update Totals" + QUO + " onclick=" + QUO + "parent.AdminTop.UpdateTotals();" + QUO + " style='" + BlueButtonStyle + "'";
}
else{
strItems += "<a href='javascript:parent.AdminTop.UpdateTotals();'>Update Totals</a>";
}
strItems += "</td>";
strItems += "<td colspan=2 align=right>";

if(!document.layers){
strItems += "<input type=button value=" + QUO + "Checkout" + QUO + " onclick=" + QUO + "parent.AdminTop.Checkout();" + QUO + "style='" + BlueButtonStyle + "'";
}
else{
strItems += "<a href='javascript:parent.AdminTop.Checkout();'>Checkout</a>";
}

strItems += "</td>";
strItems += "</table>" + CR;
strCart = strCartHeader + strHeaderRow + strItems;
GetFooter();
parent.cart.document.open();
parent.cart.document.write(strCart);
parent.cart.document.close();
DELIVERY_CHARGE_HTML = "";

strSubmitForm += strDescription + "'>";
strSubmitForm += "<input type=hidden name=amount id=amount value='" + BASKET_TOTAL + "'>";

}

function UpdateTotals(){

var CartForm = parent.cart.document.forms["CartForm"];
arrShopping = strShopping.split(rcd);
strShopping = "";

if(arrShopping.length == 2){
	var ThisItem = arrShopping[0].split(fld);
	if(parseInt(Round(CartForm.quantity.value))!=0){
	strShopping += CartForm.quantity.value + fld + ThisItem[1] + fld + ThisItem[2] + fld + ThisItem[3] + fld + ThisItem[4] + fld + ThisItem[5] + fld + ThisItem[6] + fld + ThisItem[7] + fld + ThisItem[8] + fld + ThisItem[9] + rcd;
	}
}
else{
for(var i = 0;i < arrShopping.length-1;i++){
var ThisItem = arrShopping[i].split(fld);
if(Round(CartForm.quantity[i].value)!="0"){
strShopping += CartForm.quantity[i].value + fld + ThisItem[1] + fld + ThisItem[2] + fld + ThisItem[3] + fld + ThisItem[4] + fld + ThisItem[5] + fld + ThisItem[6] + fld + ThisItem[7] + fld + ThisItem[8] + fld + ThisItem[9] + rcd;

}

}
}

WriteCart();
}

function GetCartHeader(){
strCartHeader = "<html><style>td{" + arrFontStyles[6] + "} a{" + arrFontStyles[6] + "font-size:10pt;}</style><body bgcolor=" + CartPageBGColor + ">" + CR;
strCartHeader += "<form name=CartForm id=CartForm><table width=100%><tr><td colspan=4 align=center><font size=3><b>Current Order</b></font></td></tr>" + CR;
}

function GetFooter(){
if(arrShopping.length < 600){
strCart += "<table align=center width=100%>";
if(Trim(Company[CompanyName])!=""){
strCart += "<tr><td align=center><font size=2><br><b>" + Company[CompanyName] + "</b></font></td></tr>";
}
if(Trim(Company[Address1])!=""){
strCart += "<tr><td align=center>" + Company[Address1] + "</td></tr>";
}
if(Trim(Company[Address2])!=""){
strCart += "<tr><td align=center>" + Company[Address2] + "</td></tr>";
}

if(Trim(Company[Address3])!=""){
strCart += "<tr><td align=center>" + Company[Address3] + "</td></tr>";
}

if(Trim(Company[Address4])!=""){
strCart += "<tr><td align=center>" + Company[Address4] + "</td></tr>";
}

if(Trim(Company[PostCode])!=""){
strCart += "<tr><td align=center>" + Company[PostCode] + "</td></tr>";
}

if(Trim(Company[Tel])!=""){
strCart += "<tr><td align=center>Tel: " + Company[Tel] + "</td></tr>";
}

if(Trim(Company[Fax])!=""){
strCart += "<tr><td align=center>Fax: " + Company[Fax] + "</td></tr>";
}

if(Trim(Company[CompanyReg])!=""){
strCart += "<tr><td align=center>" + Company[RegLabel] + " " + Company[CompanyReg] + "</td></tr>";
}

if(Trim(Company[TaxReg])!=""){
strCart += "<tr><td align=center>" + Company[VatLabel] + " " + Company[TaxReg] + "</td></tr>";
}

strCart += "</table>";
}

strCart += "</form></body></html>"
}

function SortRecords(FieldIndex,WritePage){
FieldIndex = parseInt(FieldIndex);

if(FieldIndex==0){
return;
}

FieldIndex += - 1

var strSortData = "";

for(var i=0;i < (Products.length-1);i++){
var Product = Products[i].split(fld);
strSortData += Product[FieldIndex] + fld;
}

var arrSortData = strSortData.split(fld);

if(FieldIndex==3){
arrSortData = NumericSort(arrSortData);
}
else{
arrSortData = AlphaSort(arrSortData);
}

if(!WritePage){
return;
}

var strRecords = "";
for(var i=0;i<Products.length-1;i++){
strRecords += Products[i] + rcd;
}

WriteProducts(strRecords);

}





function AlphaSort(arrayName) {
var length = arrayName.length-1;
var thisRecord;
  var j, i, v, h=1, s=3, k;
  while(h < length)
    h=s*h+1;
  while(h > 1) {
    h=(h-1)/s;
    for (k=0; k<h; k++)
      for (i=k+h, j=i; i<length; i+=h, j=i) {
        v=arrayName[i];
	thisRecord = Products[i];
       while(true)       
          if ((j-=h) >= 0 && arrayName[j] > v){
            arrayName[j+h]=arrayName[j];
            Products[j+h]=Products[j];
	  }
          else{
            break;
	  }
	  arrayName[j+h]=v;
          Products[j+h]=thisRecord;
      }
  }
return arrayName;
}

