function echeck(str) {

		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1){
		   alert("Your email address is invalid. Please check and correct.")
		   return false
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   alert("Your email address is invalid. Please check and correct.")
		   return false
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    alert("Your email address is invalid. Please check and correct.")
		    return false
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    alert("Your email address is invalid. Please check and correct.")
		    return false
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    alert("Your email address is invalid. Please check and correct.")
		    return false
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    alert("Your email address is invalid. Please check and correct.")
		    return false
		 }
		
		 if (str.indexOf(" ")!=-1){
		    alert("Your email address is invalid. Please check and correct.")
		    return false
		 }

 		 return true					
	}

function ValidateCustomerDetails() {
        var alerttext = ''
	var emailID=document.shopbasket.email_1
	if ((emailID.value==null)||(emailID.value=="")){
		alert("Please enter your Email Address")
		emailID.focus()
		return false
	}
	if (echeck(emailID.value)==false){
		emailID.value=""
		emailID.focus()
		return false
	}
	var emailID=document.shopbasket.email_2
	if ((emailID.value==null)||(emailID.value=="")){
		alert("Please enter Confirm Email Address")
		emailID.focus()
		return false
	}
	if (echeck(emailID.value)==false){
		emailID.value=""
		emailID.focus()
		return false
	}
        if (document.shopbasket.email_1.value != document.shopbasket.email_2.value) {
                alerttext = alerttext + "Email addresses to not match.\n"
        }
        if (document.shopbasket.customer_name.value==null||document.shopbasket.customer_name.value=="") {
                alerttext = alerttext + "Please enter a customer name.\n"
        }
        if (document.shopbasket.address_line_1.value==null||document.shopbasket.address_line_1.value=="") {
                alerttext = alerttext + "Please enter first line of your address.\n"
        }
        if (document.shopbasket.city_town.value==null||document.shopbasket.city_town.value=="") {
                alerttext = alerttext + "Please enter a town or city.\n"
        }
        if (document.shopbasket.postcode.value==null||document.shopbasket.postcode.value=="") {
                alerttext = alerttext + "Please enter a postcode.\n"
        }
        if (document.shopbasket.county.value==null||document.shopbasket.county.value=="") {
                alerttext = alerttext + "Please enter a county.\n"
        }
	if (alerttext != "") {
                alert(alerttext)
                return false
        }
        return true
}

function stopRKey(evt) {
  var evt = (evt) ? evt : ((event) ? event : null);
  var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
  if ((evt.keyCode == 13) && (node.type=="text"))  {return false;}
}

document.onkeypress = stopRKey;

function isNum(value)
{
    return 123;
}

function numbersonly(myfield, e, dec)
{
var key;
var keychar;

if (window.event)
   key = window.event.keyCode;
else if (e)
   key = e.which;
else
   return true;
keychar = String.fromCharCode(key);

// control keys
if ((key==null) || (key==0) || (key==8) || 
    (key==9) || (key==13) || (key==27) )
   return true;

// numbers
else if ((("0123456789").indexOf(keychar) > -1))
   return true;

// decimal point jump
else if (dec && (keychar == "."))
   {
   myfield.form.elements[dec].focus();
   return false;
   }
else
   return false;
}

function decimalonly(myfield, e, dec)
{
var key;
var keychar;

if (window.event)
   key = window.event.keyCode;
else if (e)
   key = e.which;
else
   return true;
keychar = String.fromCharCode(key);

// control keys
if ((key==null) || (key==0) || (key==8) || 
    (key==9) || (key==13) || (key==27) )
   return true;

// numbers
else if ((("0123456789.").indexOf(keychar) > -1))
   return true;

// decimal point jump
else if (dec && (keychar == "."))
   {
   myfield.form.elements[dec].focus();
   return false;
   }
else
   return false;
}

function PostagePopUp(extended_postage)
{
   var urlcall = '';
   urlcall = extended_postage + '?orderweight=' + document.getElementById('weight_total').value;
   mywindow = window.open(urlcall,"postagewindow","width=600,height=460");
}

function GetValueFromChild(ServiceName,PostageValue,ServiceValueStr)
{
   document.cookie = "gaos_postage_service=" + escape ( ServiceName );
   document.cookie = "gaos_postage_price=" + escape ( PostageValue );
   document.cookie = "gaos_postage_values=" + escape ( ServiceValueStr );
}

function prodTotals()
{
    var grandTotal = 0;
    var row = 0;
    while (document.forms['shopbasket'].elements['price[]'][row])
    {
        priceObj = document.forms['shopbasket'].elements['price[]'][row];
        qtyObj   = document.forms['shopbasket'].elements['quantity[]'][row];
        stockqtyObj   = document.forms['shopbasket'].elements['stockqty[]'][row];
        totalObj = document.forms['shopbasket'].elements['total[]'][row];
        factorObj = document.forms['shopbasket'].elements['factor[]'][row];
        factoringObj = document.forms['shopbasket'].elements['factoring[]'][row];

        if (parseInt(qtyObj.value) > parseInt(stockqtyObj.value))
        {
            alert('Your required quantity of ' + parseInt(qtyObj.value) + ' exceeds our stock level.  The quantity has been altered to ' + parseInt(stockqtyObj.value) + '.');
            qtyObj.value = stockqtyObj.value;
        }
        if (isNaN(priceObj.value))
        {
            priceObj = '';
        }
        if (isNaN(qtyObj.value))
        {
            qtyObj = '';
        }

        if (priceObj.value && qtyObj.value)
        {
            totalObj.value = ((parseFloat(priceObj.value) * parseFloat(qtyObj.value)).toFixed(2));
            factoringObj.value = ((parseFloat(qtyObj.value) / parseFloat(factorObj.value)).toFixed(2));
            grandTotal = grandTotal + parseFloat(totalObj.value);
        }
        else
        {
            totalObj.value = '';
        }
        row++;
    }
    document.getElementById('grand_total').value = (grandTotal.toFixed(2));
    return;
}

function calcTotals(shipping_flat_rate,shipping_title,free_carriage_value)
{
    var grandTotal = 0;
    var row = 0;

    while (document.forms['shopbasket'].elements['price[]'][row])
    {
        priceObj = document.forms['shopbasket'].elements['price[]'][row];
        qtyObj   = document.forms['shopbasket'].elements['quantity[]'][row];
        totalObj = document.forms['shopbasket'].elements['total[]'][row];
        stockqtyObj = document.forms['shopbasket'].elements['stockqty[]'][row];

        if (parseInt(qtyObj.value) > parseInt(stockqtyObj.value))
        {
            alert('Your required quantity of ' + parseInt(qtyObj.value) + ' exceeds our stock level.  The quantity has been altered to ' + parseInt(stockqtyObj.value) + '.');
            qtyObj.value = stockqtyObj.value;
        }

        if (isNaN(priceObj.value))
        {
            priceObj = '';
        }
        if (isNaN(qtyObj.value))
        {
            qtyObj = '';
        }

        if (priceObj.value && qtyObj.value)
        {
            totalObj.value = ((parseFloat(priceObj.value) * parseFloat(qtyObj.value)).toFixed(2));
            grandTotal = grandTotal + parseFloat(totalObj.value);
        }
        else
        {
            totalObj.value = '';
        }
        row++;
    }
    CheckOutUpdateBasket();
    document.location.reload();
    return;
}

function AddToBasket()
{
    var cookiestring = '';
    var row = 0;
    var kounter= 0;
    var cookietest = '';
    var element = '';
    var factor_title = '';

    factor_title = document.getElementById('factor_title').value;

    cookiestring = 'gaos_basket_' + kounter;
    cookietest = unescape ( readCookie( cookiestring ) ); 
    while (cookietest != "")
    {
            kounter++;
            cookiestring = 'gaos_basket_' + kounter;
            cookietest = unescape ( readCookie( cookiestring ) ); 
    }
    row = 0;
    while (document.forms['shopbasket'].elements['price[]'][row])
    {
        priceObj = document.forms['shopbasket'].elements['price[]'][row];
        qtyObj   = document.forms['shopbasket'].elements['quantity[]'][row];
        totalObj = document.forms['shopbasket'].elements['total[]'][row];
        prodObj  = document.forms['shopbasket'].elements['product[]'][row];
        packObj  = document.forms['shopbasket'].elements['pack[]'][row];
        weightObj  = document.forms['shopbasket'].elements['weight[]'][row];
        productcodeObj  = document.forms['shopbasket'].elements['productcode[]'][row];
        stockqtyObj  = document.forms['shopbasket'].elements['stockqty[]'][row];
        factoringObj  = document.forms['shopbasket'].elements['factoring[]'][row];

        if (isNaN(priceObj.value))
        {
            priceObj = '';
        }
        if (isNaN(qtyObj.value))
        {
            qtyObj = '';
        }

        if (qtyObj.value > 0)
        {
            if (kounter < 15)
            {
                element = priceObj.value;
                cookietest = element.replace('|','') + '|';
                element = qtyObj.value;
                cookietest += element.replace('|','') + '|';
                element = prodObj.value;
                if (factoringObj.value == "notused")
                {
                    element += '(' + factor_title + ': ' + factoringObj.value + ')';
                }
                cookietest += element.replace('|','') + '|';
                element = totalObj.value;
                cookietest += element.replace('|','') + '|';
                element = packObj.value;
                cookietest += element.replace('|','') + '|';
                element = weightObj.value;
                cookietest += element.replace('|','') + '|';
                element = productcodeObj.value;
                cookietest += element.replace('|','') + '|';
                element = stockqtyObj.value;
                cookietest += element.replace('|','') + '|';
                document.cookie = "gaos_basket_" + kounter + "=" + escape ( cookietest );
            }
            kounter++;
        }
        row++;
    }
    if (kounter > 15)
    {
        alert('Maximum number of products allowed in the shopping basket is 15.');
    }
    return;
}

function ClearShoppingBasket()
{
    var cookiestring = '';
    var kounter = 0;
    var cookietest = '';

    cookiestring = 'gaos_postage_service';
    deleteCookie (cookiestring);
    cookiestring = 'gaos_postage_price';
    deleteCookie (cookiestring);
    cookiestring = 'gaos_postage_values';
    deleteCookie (cookiestring);
    cookiestring = 'gaos_basket_' + kounter;
    cookietest = unescape ( readCookie( cookiestring ) ); 
    while (kounter < 15)
    {
            deleteCookie (cookiestring);
            kounter++;
            cookiestring = 'gaos_basket_' + kounter;
            cookietest = unescape ( readCookie( cookiestring ) ); 
    }
    window.location = "index.html";
}

function CheckOutUpdateBasket()
{
    var cookiestring = '';
    var row = 0;
    var kounter= 0;
    var cookietest = '';
    var element = '';

    cookiestring = 'gaos_basket_' + kounter;
    cookietest = unescape ( readCookie( cookiestring ) ); 
    while (cookietest != "")
    {
            deleteCookie (cookiestring);
            kounter++;
            cookiestring = 'gaos_basket_' + kounter;
            cookietest = unescape ( readCookie( cookiestring ) ); 
    }

    row = 0;
    kounter = 0;
    while (document.forms['shopbasket'].elements['price[]'][row])
    {
        ppObj = document.forms['shopbasket'].elements['pp[]'][row];
        removeObj = document.forms['shopbasket'].elements['remove[]'][row];
        priceObj = document.forms['shopbasket'].elements['price[]'][row];
        qtyObj   = document.forms['shopbasket'].elements['quantity[]'][row];
        totalObj = document.forms['shopbasket'].elements['total[]'][row];
        prodObj  = document.forms['shopbasket'].elements['product[]'][row];
        packObj  = document.forms['shopbasket'].elements['pack[]'][row];
        weightObj  = document.forms['shopbasket'].elements['weight[]'][row];
        productcodeObj  = document.forms['shopbasket'].elements['productcode[]'][row];
        stockqtyObj  = document.forms['shopbasket'].elements['stockqty[]'][row];

        if (isNaN(priceObj.value))
        {
            priceObj = '';
        }
        if (isNaN(qtyObj.value))
        {
            qtyObj = '';
        }

        if (qtyObj.value > 0 && removeObj.checked==false && ppObj.value != 'PP')
        {
            element = priceObj.value;
            cookietest = element.replace('|','') + '|';
            element = qtyObj.value;
            cookietest += element.replace('|','') + '|';
            element = prodObj.value;
            cookietest += element.replace('|','') + '|';
            element = totalObj.value;
            cookietest += element.replace('|','') + '|';
            element = packObj.value;
            cookietest += element.replace('|','') + '|';
            element = weightObj.value;
            cookietest += element.replace('|','') + '|';
            element = productcodeObj.value;
            cookietest += element.replace('|','') + '|';
            element = stockqtyObj.value;
            cookietest += element.replace('|','') + '|';
            document.cookie = "gaos_basket_" + kounter + "=" + escape ( cookietest );
            kounter++;
        }
        row++;
    }
    return;
}

function PayPalButton(shipping_flat_rate,shipping_title,free_carriage_value)
{
    var cookiestring = '';
    var cookietest = '';
    var element = '';
    var rtnstring = '';
    var row = 0;
    var pprow = 0;
    var firstnullrow = 0;
    var grandTotal = 0;
    var weightTotal = 0;

    cookiestring = 'gaos_postage_values';  
    cookietest = unescape ( readCookie( cookiestring ) );
    if (cookietest != null && cookietest != '')
    {
       postage_values = cookietest;
    }
    else
    {
       postage_values = shipping_flat_rate;
    }

    cookiestring = 'gaos_postage_price';  
    cookietest = unescape ( readCookie( cookiestring ) );
    if (cookietest != null && cookietest != '')
    {
       shipping_flat_rate = cookietest;
    }
    cookiestring = 'gaos_postage_service';  
    cookietest = unescape ( readCookie( cookiestring ) );
    if (cookietest != null && cookietest != '')
    {
       shipping_title = cookietest;
    }

    while (row < 16)
    {
        cookiestring = 'gaos_basket_' + row;
        cookietest = unescape ( readCookie( cookiestring ) ); 

        if (cookietest != null && cookietest != '')
        {
            element = cookietest.split('|');
            rtnstring = rtnstring + '<input type="hidden" name="quantity_' + (row+1) + '" value="' + element[1] + '" />';
            rtnstring = rtnstring + '<input type="hidden" name="item_name_' + (row+1) + '" value="' + element[2];
            rtnstring = rtnstring + ' (' + element[4] + ')" />';
            rtnstring = rtnstring + '<input type="hidden" name="item_number_' + (row+1) + '" value="' + element[6] + '" />';
            rtnstring = rtnstring + '<input type="hidden" name="amount_' + (row+1) + '" value="' + element[0] + '" />'; 
            grandTotal = grandTotal + parseFloat(element[3]); 
            weightTotal = weightTotal + parseFloat(element[5] * element[1]);
        } 
        else
        {
            if (firstnullrow == 0)
            {
                  firstnullrow = row;
            }
        }
        row++;
    }
    if (postage_values != '')
    {
          var postage_elements = postage_values.split(',');
          var weighted_rate = 'a';
          for (element_counter = 0; element_counter < postage_elements.length; element_counter++)
          {
                var this_element = postage_elements[element_counter];
                var split_element = this_element.split(':');
                if (split_element[0] >= weightTotal && weighted_rate == 'a')
                {
                      weighted_rate = split_element[1];
                }
          }
          if (weighted_rate != 'a')
          {
                shipping_flat_rate = weighted_rate;
          } 
          else
          {
                shipping_flat_rate = '999.99';
          }   
    }
    if (grandTotal < free_carriage_value) 
    {
        rtnstring = rtnstring + '<input type="hidden" name="quantity_' + (firstnullrow+1) + '" value="1">';
        rtnstring = rtnstring + '<input type="hidden" name="item_name_' + (firstnullrow+1) + '" value="' + shipping_title + '">';
        rtnstring = rtnstring + '<input type="hidden" name="amount_' + (firstnullrow+1) + '" value="' + shipping_flat_rate + '">'; 
    }
    return rtnstring;
}

function GoogleCheckOutButton(shipping_flat_rate,shipping_title,vat_factor,free_carriage_value)
{
    var cookiestring = '';
    var cookietest = '';
    var element = '';
    var rtnstring = '';
    var row = 0;
    var firstnullrow = 0;
    var grandTotal = 0;
    var weightTotal = 0;

    cookiestring = 'gaos_postage_values';  
    cookietest = unescape ( readCookie( cookiestring ) );
    if (cookietest != null && cookietest != '')
    {
       postage_values = cookietest;
    }
    else
    {
       postage_values = shipping_flat_rate;
    }
    cookiestring = 'gaos_postage_price';  
    cookietest = unescape ( readCookie( cookiestring ) );
    if (cookietest != null && cookietest != '')
    {
       shipping_flat_rate = cookietest;
    }
    cookiestring = 'gaos_postage_service';  
    cookietest = unescape ( readCookie( cookiestring ) );
    if (cookietest != null && cookietest != '')
    {
       shipping_title = cookietest;
    }

    while (row < 16)
    {
        cookiestring = 'gaos_basket_' + row;
        cookietest = unescape ( readCookie( cookiestring ) ); 

        if (cookietest != null && cookietest != '')
        {
            element = cookietest.split('|');
            rtnstring = rtnstring + '<input type="hidden" name="item_quantity_' + (row+1) + '" value="' + element[1]+ '" />';
            rtnstring = rtnstring + '<input type="hidden" name="item_name_' + (row+1) + '" value="' + element[2] + '" />';
            rtnstring = rtnstring + '<input type="hidden" name="item_description_' + (row+1) + '" value="' + element[4] + '" />';
            rtnstring = rtnstring + '<input type="hidden" name="item_merchant_id_' + (row+1) + '" value="' + element[6] + '" />';
            rtnstring = rtnstring + '<input type="hidden" name="item_price_' + (row+1) + '" value="' + (element[0] * vat_factor) + '" />'; 
            rtnstring = rtnstring + '<input type="hidden" name="item_currency_' + (row+1) + '" value="GBP" />'; 
            grandTotal = grandTotal + parseFloat(element[3]); 
            weightTotal = weightTotal + parseFloat(element[5] * element[1]);
        } 
        else
        {
            if (firstnullrow == 0)
            {
                  firstnullrow = row;
            }
        }
        row++;
    }
    if (postage_values != '')
    {
          var postage_elements = postage_values.split(',');
          var weighted_rate = 'a';
          for (element_counter = 0; element_counter < postage_elements.length; element_counter++)
          {
                var this_element = postage_elements[element_counter];
                var split_element = this_element.split(':');
                if (split_element[0] >= weightTotal && weighted_rate == 'a')
                {
                      weighted_rate = split_element[1];
                }
          }
          if (weighted_rate != 'a')
          {
                shipping_flat_rate = weighted_rate;
          } 
          else
          {
                shipping_flat_rate = '999.99';
          }   
    }
    if (grandTotal < free_carriage_value) 
    {
        rtnstring = rtnstring + '<input type="hidden" name="item_quantity_' + (firstnullrow+1) + '" value="1">';
        rtnstring = rtnstring + '<input type="hidden" name="item_name_' + (firstnullrow+1) + '" value="' + shipping_title + '">';
        rtnstring = rtnstring + '<input type="hidden" name="item_price_' + (firstnullrow+1) + '" value="' + (shipping_flat_rate * vat_factor) + '">'; 
        rtnstring = rtnstring + '<input type="hidden" name="item_description_' + (firstnullrow+1) + '" value="">';
        rtnstring = rtnstring + '<input type="hidden" name="item_currency_' + (firstnullrow+1) + '" value="GBP">';
    }
    return rtnstring;
}

function CreateShoppingBasket(shipping_flat_rate,shipping_title,free_carriage_value)
{
    var cookiestring = '';
    var cookietest = '';
    var rtnstring = '';
    var divobject = '';
    var element = '';
    var postage_values = '';
    var row = 0;
    var firstnullrow = 'a';
    var grandTotal = 0;  
    var weightTotal = 0;

    cookiestring = 'gaos_postage_values';  
    cookietest = unescape ( readCookie( cookiestring ) );
    if (cookietest != null && cookietest != '')
    {
       postage_values = cookietest;
    }
    else
    {
       postage_values = shipping_flat_rate;
    }
    cookiestring = 'gaos_postage_price';  
    cookietest = unescape ( readCookie( cookiestring ) );
    if (cookietest != null && cookietest != '')
    {
       shipping_flat_rate = cookietest;
    }
    cookiestring = 'gaos_postage_service';  
    cookietest = unescape ( readCookie( cookiestring ) );
    if (cookietest != null && cookietest != '')
    {
       shipping_title = cookietest;
    }

    while (row < 16)
    {
        cookiestring = 'gaos_basket_' + row;
        cookietest = unescape ( readCookie( cookiestring ) ); 

        if (cookietest != null && cookietest != '')
        {
            element = cookietest.split('|');
            priceObj = document.forms['shopbasket'].elements['price[]'][row];
            qtyObj   = document.forms['shopbasket'].elements['quantity[]'][row];
            totalObj = document.forms['shopbasket'].elements['total[]'][row];
            prodObj  = document.forms['shopbasket'].elements['product[]'][row];
            packObj  = document.forms['shopbasket'].elements['pack[]'][row];
            weightObj  = document.forms['shopbasket'].elements['weight[]'][row];
            productcodeObj  = document.forms['shopbasket'].elements['productcode[]'][row];
            stockqtyObj  = document.forms['shopbasket'].elements['stockqty[]'][row];
            qtyObj.value = element[1];
            prodObj.value = element[2]; 
            priceObj.value = element[0]; 
            totalObj.value  = element[3];
            packObj.value  = element[4];
            weightObj.value  = element[5];
            productcodeObj.value  = element[6];
            stockqtyObj.value  = element[7];
            divobject = 'checkout_box_' + row;
            document.getElementById(divobject).style.visibility = 'visible';
            document.getElementById(divobject).style.display = 'inline';
            document.getElementById(divobject).style.height = '22px';
            divobject = 'checkout_abox_' + row;
            document.getElementById(divobject).style.visibility = 'visible';
            document.getElementById(divobject).style.height = '22px';
            divobject = 'checkout_wbox_' + row;
            document.getElementById(divobject).style.visibility = 'visible';
            document.getElementById(divobject).style.height = '22px';
            divobject = 'checkout_bbox_' + row;
            document.getElementById(divobject).style.visibility = 'visible';
            document.getElementById(divobject).style.height = '22px';
            divobject = 'checkout_cbox_' + row;
            document.getElementById(divobject).style.visibility = 'visible';
            document.getElementById(divobject).style.height = '22px';
            divobject = 'checkout_dbox_' + row;
            document.getElementById(divobject).style.visibility = 'visible';
            document.getElementById(divobject).style.height = '22px';
            divobject = 'checkout_ebox_' + row;
            document.getElementById(divobject).style.visibility = 'visible';
            document.getElementById(divobject).style.height = '22px';
            divobject = 'checkout_fbox_' + row;
            document.getElementById(divobject).style.visibility = 'visible';
            document.getElementById(divobject).style.height = '22px';
            divobject = 'checkout_gbox_' + row;
            document.getElementById(divobject).style.visibility = 'visible';
            document.getElementById(divobject).style.height = '22px';
            grandTotal = grandTotal + parseFloat(totalObj.value);
            weightTotal = weightTotal + parseFloat(weightObj.value * qtyObj.value);
        } 
        else
        {
            if (firstnullrow == 'a')
            {
                firstnullrow = row;
            }
        }
        row++;
    }

    if (postage_values != '')
    {
          var postage_elements = postage_values.split(',');
          var weighted_rate = 'a';
          for (element_counter = 0; element_counter < postage_elements.length; element_counter++)
          {
                var this_element = postage_elements[element_counter];
                var split_element = this_element.split(':');
                if (split_element[0] >= weightTotal && weighted_rate == 'a')
                {
                      weighted_rate = split_element[1];
                }
          }
          if (weighted_rate != 'a')
          {
                shipping_flat_rate = weighted_rate;
          } 
          else
          {
                shipping_flat_rate = '999.99';
          }   
          document.cookie = "gaos_postage_price=" + escape ( shipping_flat_rate );
    }

    if (grandTotal >= free_carriage_value) 
    {
          shipping_flat_rate = '0.00';
          shipping_title = 'Free carriage over GBP ' + free_carriage_value;
    }
    if (firstnullrow > 0)
    {
          ppObj = document.forms['shopbasket'].elements['pp[]'][firstnullrow];
          removeObj = document.forms['shopbasket'].elements['remove[]'][firstnullrow];
          priceObj = document.forms['shopbasket'].elements['price[]'][firstnullrow];
          qtyObj   = document.forms['shopbasket'].elements['quantity[]'][firstnullrow];
          totalObj = document.forms['shopbasket'].elements['total[]'][firstnullrow];
          prodObj  = document.forms['shopbasket'].elements['product[]'][firstnullrow];
          packObj  = document.forms['shopbasket'].elements['pack[]'][firstnullrow];
          weightObj  = document.forms['shopbasket'].elements['weight[]'][firstnullrow];
          productcodeObj  = document.forms['shopbasket'].elements['productcode[]'][firstnullrow];
          stockqtyObj  = document.forms['shopbasket'].elements['stockqty[]'][firstnullrow];
          ppObj.value = 'PP';
          qtyObj.value = '1';
          prodObj.value = shipping_title; 
          priceObj.value = shipping_flat_rate; 
          totalObj.value = shipping_flat_rate;
          packObj.value = '';
          weightObj.value = '';
          productcodeObj.value = '';
          stockqtyObj.value = '';
          divobject = 'checkout_box_' + firstnullrow;
          document.getElementById(divobject).style.visibility = 'visible';
          document.getElementById(divobject).style.display = 'inline';
          document.getElementById(divobject).style.height = '22px';
          divobject = 'checkout_abox_' + firstnullrow;
          document.getElementById(divobject).style.visibility = 'visible';
          document.getElementById(divobject).style.height = '22px';
          divobject = 'checkout_wbox_' + firstnullrow;
          document.getElementById(divobject).style.visibility = 'visible';
          document.getElementById(divobject).style.height = '22px';
          divobject = 'checkout_bbox_' + firstnullrow;
          document.getElementById(divobject).style.visibility = 'visible';
          document.getElementById(divobject).style.height = '22px';
          divobject = 'checkout_cbox_' + firstnullrow;
          document.getElementById(divobject).style.visibility = 'visible';
          document.getElementById(divobject).style.height = '22px';
          divobject = 'checkout_dbox_' + firstnullrow;
          document.getElementById(divobject).style.visibility = 'visible';
          document.getElementById(divobject).style.height = '22px';
          divobject = 'checkout_ebox_' + firstnullrow;
          document.getElementById(divobject).style.visibility = 'visible';
          document.getElementById(divobject).style.height = '22px';
          divobject = 'checkout_fbox_' + firstnullrow;
          document.getElementById(divobject).style.visibility = 'visible';
          document.getElementById(divobject).style.height = '22px';
          divobject = 'checkout_gbox_' + firstnullrow;
          document.getElementById(divobject).style.visibility = 'visible';
          document.getElementById(divobject).style.height = '22px';
          grandTotal = grandTotal + parseFloat(totalObj.value);
          document.getElementById('grand_total').value = (grandTotal.toFixed(2));
          document.getElementById('weight_total').value = (weightTotal.toFixed(2));
          qtyObj.style.visibility = 'hidden';
          removeObj.style.visibility = 'hidden';
    }
}

function ShowShoppingBasket(shipping_flat_rate,shipping_title,free_carriage_value)
{
    var cookiestring = '';
    var cookietest = '';
    var rtnstring = '';
    var divobject = '';
    var element = '';
    var postage_values = '';
    var row = 0;
    var firstnullrow = 'a';
    var grandTotal = 0;  
    var weightTotal = 0;

    cookiestring = 'gaos_postage_values';  
    cookietest = unescape ( readCookie( cookiestring ) );
    if (cookietest != null && cookietest != '')
    {
       postage_values = cookietest;
    }
    else
    {
       postage_values = shipping_flat_rate;
    }
    cookiestring = 'gaos_postage_price';  
    cookietest = unescape ( readCookie( cookiestring ) );
    if (cookietest != null && cookietest != '')
    {
       shipping_flat_rate = cookietest;
    }
    cookiestring = 'gaos_postage_service';  
    cookietest = unescape ( readCookie( cookiestring ) );
    if (cookietest != null && cookietest != '')
    {
       shipping_title = cookietest;
    }

    while (row < 16)
    {
        cookiestring = 'gaos_basket_' + row;
        cookietest = unescape ( readCookie( cookiestring ) ); 

        if (cookietest != null && cookietest != '')
        {
            element = cookietest.split('|');
            priceObj = document.forms['shopbasket'].elements['price[]'][row];
            qtyObj   = document.forms['shopbasket'].elements['quantity[]'][row];
            totalObj = document.forms['shopbasket'].elements['total[]'][row];
            prodObj  = document.forms['shopbasket'].elements['product[]'][row];
            packObj  = document.forms['shopbasket'].elements['pack[]'][row];
            weightObj  = document.forms['shopbasket'].elements['weight[]'][row];
            productcodeObj  = document.forms['shopbasket'].elements['productcode[]'][row];
            stockqtyObj  = document.forms['shopbasket'].elements['stockqty[]'][row];
            qtyObj.value = element[1];
            prodObj.value = element[2]; 
            priceObj.value = element[0]; 
            totalObj.value  = element[3];
            packObj.value  = element[4];
            weightObj.value  = element[5];
            productcodeObj.value  = element[6];
            stockqtyObj.value  = element[7];
            divobject = 'checkout_box_' + row;
            document.getElementById(divobject).style.visibility = 'visible';
            document.getElementById(divobject).style.display = 'inline';
            document.getElementById(divobject).style.height = '22px';
            divobject = 'checkout_wbox_' + row;
            document.getElementById(divobject).style.visibility = 'visible';
            document.getElementById(divobject).style.height = '22px';
            divobject = 'checkout_bbox_' + row;
            document.getElementById(divobject).style.visibility = 'visible';
            document.getElementById(divobject).style.height = '22px';
            divobject = 'checkout_cbox_' + row;
            document.getElementById(divobject).style.visibility = 'visible';
            document.getElementById(divobject).style.height = '22px';
            divobject = 'checkout_dbox_' + row;
            document.getElementById(divobject).style.visibility = 'visible';
            document.getElementById(divobject).style.height = '22px';
            divobject = 'checkout_ebox_' + row;
            document.getElementById(divobject).style.visibility = 'visible';
            document.getElementById(divobject).style.height = '22px';
            divobject = 'checkout_fbox_' + row;
            document.getElementById(divobject).style.visibility = 'visible';
            document.getElementById(divobject).style.height = '22px';
            divobject = 'checkout_gbox_' + row;
            document.getElementById(divobject).style.visibility = 'visible';
            document.getElementById(divobject).style.height = '22px';
            grandTotal = grandTotal + parseFloat(totalObj.value);
            weightTotal = weightTotal + parseFloat(weightObj.value * qtyObj.value);
        } 
        else
        {
            if (firstnullrow == 'a')
            {
                firstnullrow = row;
            }
        }
        row++;
    }

    if (postage_values != '')
    {
          var postage_elements = postage_values.split(',');
          var weighted_rate = 'a';
          for (element_counter = 0; element_counter < postage_elements.length; element_counter++)
          {
                var this_element = postage_elements[element_counter];
                var split_element = this_element.split(':');
                if (split_element[0] >= weightTotal && weighted_rate == 'a')
                {
                      weighted_rate = split_element[1];
                }
          }
          if (weighted_rate != 'a')
          {
                shipping_flat_rate = weighted_rate;
          } 
          else
          {
                shipping_flat_rate = '999.99';
          }   
          document.cookie = "gaos_postage_price=" + escape ( shipping_flat_rate );
    }

    if (grandTotal >= free_carriage_value) 
    {
          shipping_flat_rate = '0.00';
          shipping_title = 'Free carriage over GBP ' + free_carriage_value;
    }
    if (firstnullrow > 0)
    {
          ppObj = document.forms['shopbasket'].elements['pp[]'][firstnullrow];
          priceObj = document.forms['shopbasket'].elements['price[]'][firstnullrow];
          qtyObj   = document.forms['shopbasket'].elements['quantity[]'][firstnullrow];
          totalObj = document.forms['shopbasket'].elements['total[]'][firstnullrow];
          prodObj  = document.forms['shopbasket'].elements['product[]'][firstnullrow];
          packObj  = document.forms['shopbasket'].elements['pack[]'][firstnullrow];
          weightObj  = document.forms['shopbasket'].elements['weight[]'][firstnullrow];
          productcodeObj  = document.forms['shopbasket'].elements['productcode[]'][firstnullrow];
          stockqtyObj  = document.forms['shopbasket'].elements['stockqty[]'][firstnullrow];
          ppObj.value = 'PP';
          qtyObj.value = '1';
          prodObj.value = shipping_title; 
          priceObj.value = shipping_flat_rate; 
          totalObj.value = shipping_flat_rate;
          packObj.value = '';
          weightObj.value = '';
          productcodeObj.value = '';
          stockqtyObj.value = '';
          divobject = 'checkout_box_' + firstnullrow;
          document.getElementById(divobject).style.visibility = 'visible';
          document.getElementById(divobject).style.display = 'inline';
          document.getElementById(divobject).style.height = '22px';
          divobject = 'checkout_wbox_' + firstnullrow;
          document.getElementById(divobject).style.visibility = 'visible';
          document.getElementById(divobject).style.height = '22px';
          divobject = 'checkout_bbox_' + firstnullrow;
          document.getElementById(divobject).style.visibility = 'visible';
          document.getElementById(divobject).style.height = '22px';
          divobject = 'checkout_cbox_' + firstnullrow;
          document.getElementById(divobject).style.visibility = 'visible';
          document.getElementById(divobject).style.height = '22px';
          divobject = 'checkout_dbox_' + firstnullrow;
          document.getElementById(divobject).style.visibility = 'visible';
          document.getElementById(divobject).style.height = '22px';
          divobject = 'checkout_ebox_' + firstnullrow;
          document.getElementById(divobject).style.visibility = 'visible';
          document.getElementById(divobject).style.height = '22px';
          divobject = 'checkout_fbox_' + firstnullrow;
          document.getElementById(divobject).style.visibility = 'visible';
          document.getElementById(divobject).style.height = '22px';
          divobject = 'checkout_gbox_' + firstnullrow;
          document.getElementById(divobject).style.visibility = 'visible';
          document.getElementById(divobject).style.height = '22px';
          grandTotal = grandTotal + parseFloat(totalObj.value);
          document.getElementById('grand_total').value = (grandTotal.toFixed(2));
          document.getElementById('weight_total').value = (weightTotal.toFixed(2));
          qtyObj.style.visibility = 'hidden';
    }
}

function fTotals()
{
    var grandTotal = 0;
    var fixed_two = 0;
    var fixed_none = 0;
    var row = 0;

    while (document.forms['shopbasket'].elements['price[]'][row])
    {
        priceObj = document.forms['shopbasket'].elements['price[]'][row];
        qtyObj   = document.forms['shopbasket'].elements['quantity[]'][row];
        stockqtyObj   = document.forms['shopbasket'].elements['stockqty[]'][row];
        totalObj = document.forms['shopbasket'].elements['total[]'][row];
        factorObj = document.forms['shopbasket'].elements['factor[]'][row];
        factoringObj = document.forms['shopbasket'].elements['factoring[]'][row];

        if (priceObj.value && factoringObj.value)
        {
            fixed_two = ((parseFloat(factoringObj.value) * parseFloat(factorObj.value)).toFixed(2));
            fixed_none = fixed_two.split('.');
            if (fixed_none[1] != '00')
            {
                qtyObj.value = (parseInt(fixed_none[0]) + 1);
            }
            else
            {
                qtyObj.value = parseInt(fixed_none[0]);
            }
        }

        if (parseInt(qtyObj.value) > parseInt(stockqtyObj.value))
        {
            alert('Your required quantity of ' + parseInt(qtyObj.value) + ' exceeds our stock level.  The quantity has been altered to ' + parseInt(stockqtyObj.value) + '.');
            qtyObj.value = stockqtyObj.value;
        }
        if (isNaN(priceObj.value))
        {
            priceObj = '';
        }
        if (isNaN(qtyObj.value))
        {
            qtyObj = '';
        }

        if (priceObj.value && qtyObj.value)
        {
            totalObj.value = ((parseFloat(priceObj.value) * parseFloat(qtyObj.value)).toFixed(2));
            factoringObj.value = ((parseFloat(factoringObj.value)).toFixed(2));
            grandTotal = grandTotal + parseFloat(totalObj.value);
        }
        else
        {
            totalObj.value = '';
        }
        row++;
    }
    document.getElementById('grand_total').value = (grandTotal.toFixed(2));
    return;
}

function CoverageCalculator()
{
    var row = 0;
    var tilearea = 0;
    var tempvalue1 = 0;  
    var tempvalue2 = 0;  
    tileareaObj = document.forms['coverage_calculator'].elements['coverage_area'];
    tilearea = tileareaObj.value;
    while (document.forms['coverage_calculator'].elements['high[]'][row])
    {
        highObj     = document.forms['coverage_calculator'].elements['high[]'][row];
        mediumObj   = document.forms['coverage_calculator'].elements['medium[]'][row];
        lowObj      = document.forms['coverage_calculator'].elements['low[]'][row];
        f_highObj   = document.forms['coverage_calculator'].elements['fhigh[]'][row];
        f_mediumObj = document.forms['coverage_calculator'].elements['fmedium[]'][row];
        f_lowObj    = document.forms['coverage_calculator'].elements['flow[]'][row];
        coats1_highObj   = document.forms['coverage_calculator'].elements['coats1high[]'][row];
        coats1_mediumObj = document.forms['coverage_calculator'].elements['coats1medium[]'][row];
        coats1_lowObj    = document.forms['coverage_calculator'].elements['coats1low[]'][row];
        coats2_highObj   = document.forms['coverage_calculator'].elements['coats2high[]'][row];
        coats2_mediumObj = document.forms['coverage_calculator'].elements['coats2medium[]'][row];
        coats2_lowObj    = document.forms['coverage_calculator'].elements['coats2low[]'][row];

        tempvalue1   = parseFloat((tilearea / f_highObj.value) * coats1_highObj.value);
        if (tempvalue1 > 0 && tempvalue1 != 'Infinity')
        {
              tempvalue1 = (tempvalue1.toFixed(1)) + ' litres'; 
        }
        else
        {
             tempvalue1 = 'N/A'; 
        }
        tempvalue2   = parseFloat((tilearea / f_highObj.value) * coats2_highObj.value);
        if (tempvalue2 > 0 && tempvalue2 != 'Infinity')
        {
              tempvalue2 = (tempvalue2.toFixed(1)) + ' litres'; 
        }
        else
        {
             tempvalue2 = 'N/A'; 
        }
        if (tempvalue1 == tempvalue2)
        {
             highObj.value = tempvalue1;
        }
        else
        {
             highObj.value = tempvalue1 + ' to ' + tempvalue2;
        }

        tempvalue1   = parseFloat((tilearea / f_mediumObj.value) * coats1_mediumObj.value);
        if (tempvalue1 > 0 && tempvalue1 != 'Infinity')
        {
              tempvalue1 = (tempvalue1.toFixed(1)) + ' litres'; 
        }
        else
        {
             tempvalue1 = 'N/A'; 
        }
        tempvalue2   = parseFloat((tilearea / f_mediumObj.value) * coats2_mediumObj.value);
        if (tempvalue2 > 0 && tempvalue2 != 'Infinity')
        {
              tempvalue2 = (tempvalue2.toFixed(1)) + ' litres'; 
        }
        else
        {
             tempvalue2 = 'N/A'; 
        }
        if (tempvalue1 == tempvalue2)
        {
             mediumObj.value = tempvalue1;
        }
        else
        {
             mediumObj.value = tempvalue1 + ' to ' + tempvalue2;
        }

        tempvalue1   = parseFloat((tilearea / f_lowObj.value) * coats1_lowObj.value);
        if (tempvalue1 > 0 && tempvalue1 != 'Infinity')
        {
              tempvalue1 = (tempvalue1.toFixed(1)) + ' litres'; 
        }
        else
        {
             tempvalue1 = 'N/A'; 
        }
        tempvalue2   = parseFloat((tilearea / f_lowObj.value) * coats2_lowObj.value);
        if (tempvalue2 > 0 && tempvalue2 != 'Infinity')
        {
              tempvalue2 = (tempvalue2.toFixed(1)) + ' litres'; 
        }
        else
        {
             tempvalue2 = 'N/A'; 
        }
        if (tempvalue1 == tempvalue2)
        {
             lowObj.value = tempvalue1;
        }
        else
        {
             lowObj.value = tempvalue1 + ' to ' + tempvalue2;
        }

        row++;
    }
}

function SurfaceCalculator()
{
    var row = 0;
    var tilearea = 0;
    var tempvalue1 = 0;  
    var tempvalue2 = 0;  
    tileareaObj = document.forms['surface_calculator'].elements['coverage_area'];
    tilearea = tileareaObj.value;
    while (document.forms['surface_calculator'].elements['tile_quantity[]'][row])
    {
        factorObj   = document.forms['surface_calculator'].elements['fhigh[]'][row];
        tileqtyObj  = document.forms['surface_calculator'].elements['tile_quantity[]'][row];

        tempvalue1  = ((parseFloat(tilearea) * parseFloat(factorObj.value)).toFixed(2));
        tempvalue2  = tempvalue1.split('.');
        if (tempvalue2[1] != '00')
        {
            tempvalue1 = (parseInt(tempvalue2[0]) + 1);
        }
        else
        {
            tempvalue1 = tempvalue2[0];
        }
        tileqtyObj.value = tempvalue1;
        row++;
    }
}

function readCookie(name) 
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0)
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return '';
}

function deleteCookie (name)
{
  var cookie_date = new Date ( );  // current date & time
  cookie_date.setTime ( cookie_date.getTime() - 1 );
  document.cookie = name += "=; expires=" + cookie_date.toGMTString();
}


function RetrieveBasket()
{
    var cookiestring = '';
    var cookietest = '';
    var element = '';
    var rtnstring = '';
    var row = 0;
    var prodObjvalue = ''; 
    var qtyObjvalue = ''; 
    var priceObjvalue = ''; 
    var totalObjvalue = '';  
    var packObjvalue = '';
    var weightObjvalue = '';
    var grandTotal = 0;  
    var quantityTotal = 0;  
    var weightTotal = 0;  
  
    while (row < 15)
    {

        cookiestring = 'gaos_basket_' + row;
        cookietest = unescape ( readCookie( cookiestring ) ); 
        element = cookietest.split('|');
        priceObjvalue = element[0]; 
        qtyObjvalue = element[1]; 
        prodObjvalue = element[2]; 
        totalObjvalue  = element[3];
        packObjvalue  = element[4];
        weightObjvalue  = element[5];
        productcodeObjvalue  = element[6];
        stockqtyObjvalue  = element[7];

        if(qtyObjvalue != null && qtyObjvalue != '')
        {
              rtnstring = rtnstring + '<tr><td colspan="2"><input type="text" style="height:11px;overflow:hidden;border:0;margin:0;padding:0px;text-align:left;background-color:transparent;font-size:0.75em;" name="line_one[]" readonly="readonly" tabindex="-1" size="35" value="' + prodObjvalue + ' (' + packObjvalue + ')" /><input type="hidden" name="product[]" readonly="readonly" tabindex="-1" value="' + prodObjvalue + '" /><input type="hidden" name="pack[]" readonly="readonly" tabindex="-1" value="' + packObjvalue + '" /><input type="hidden" name="weight[]" readonly="readonly" tabindex="-1" value="' + weightObjvalue + '" /><input type="hidden" name="productcode[]" readonly="readonly" tabindex="-1" value="' + productcodeObjvalue + '" /><input type="hidden" name="stockqty[]" readonly="readonly" tabindex="-1" value="' + stockqtyObjvalue + '" /><input type="hidden" name="quantity[]" readonly="readonly" tabindex="-1" value="' + qtyObjvalue + '" /><input type="hidden" name="price[]" readonly="readonly" tabindex="-1" value="' + priceObjvalue + '" /><input type="hidden" name="total[]" readonly="readonly" tabindex="-1" value="' + totalObjvalue  + '" /></td></tr><tr><td width="50%"><input style="height:11px;overflow:hidden;border:0;padding:0px;text-align:left;background-color:transparent;font-size:0.75em;" type="text" name="line_two[]" readonly="readonly" tabindex="-1" size="16" value="' + qtyObjvalue + ' @ ' + priceObjvalue + '" /></td><td width="50%"><input type="text" style="height:11px;border:0;padding:0px;text-align:right;background-color:transparent;font-size:0.75em;" name="line_three[]" readonly="readonly" tabindex="-1" size="10" value="' + totalObjvalue + '"/></td></tr>';
              grandTotal = grandTotal + parseFloat(totalObjvalue);
              quantityTotal = quantityTotal + parseFloat(qtyObjvalue);
              weightTotal = weightTotal + parseFloat(weightObjvalue * qtyObjvalue);

        } 
        row++;
    }
    rtnstring = rtnstring + '<tr><td colspan="2">Items in basket: ' + quantityTotal.toFixed(0) + '</td></tr>';
    rtnstring = rtnstring + '<tr><td colspan="2"><b>TOTAL &#163;</b> ' + grandTotal.toFixed(2) + '</b></td></tr>';
    return rtnstring;
}