/*
 * All the various functions for handling the order form
 *
 */


// pricing globals
//var price_rockets = new Array();
//    price_rockets["uk" ] = new Array( 18.95, 20.95, 23.95, 29.95 );
//    price_rockets["eu" ] = new Array( 30.00, 40.00, 50.00, 60.00 );

var honeys_prices = new Array
    honeys_prices[1] = 10.00;
    honeys_prices[2] = 10.00;
	honeys_prices[3] = 10.00;
	
var delivery_prices = new Array
	delivery_prices[0] = 0.00;
    delivery_prices[500] = 2.88;
    delivery_prices[1000] = 6.00;
	delivery_prices[1500] = 7.70;
    delivery_prices[2000] = 9.00;
	delivery_prices[2500] = 10.20;
    delivery_prices[3000] = 11.75;
	delivery_prices[3500] = 13.20;
    delivery_prices[4000] = 15.50;
    delivery_prices[5000] = 22.00;
    delivery_prices[6000] = 22.00;
    delivery_prices[7000] = 22.00;
    delivery_prices[8000] = 22.00;
    delivery_prices[9000] = 22.00;
	delivery_prices[10000] = 36.00;
    delivery_prices[11000] = 42.00;
	delivery_prices[12000] = 48.00;
    delivery_prices[13000] = 48.00;
	delivery_prices[14000] = 48.00;
	delivery_prices[15000] = 48.00;
	delivery_prices[16000] = 48.00;
	delivery_prices[17000] = 48.00;
	delivery_prices[18000] = 48.00;
	delivery_prices[19000] = 48.00;
	delivery_prices[20000] = 48.00;
	delivery_prices[21000] = 48.00;
	delivery_prices[22000] = 48.00;
	delivery_prices[23000] = 48.00;
	delivery_prices[24000] = 48.00;
	delivery_prices[25000] = 48.00;
	delivery_prices[26000] = 48.00;
	delivery_prices[27000] = 48.00;
	delivery_prices[28000] = 48.00;
	delivery_prices[29000] = 48.00;
	delivery_prices[30000] = 48.00;

var delivery_prices_brighton = new Array
	delivery_prices_brighton[0] = 'FREE';
	delivery_prices_brighton[1000] = 'FREE';
	delivery_prices_brighton[2000] = 'FREE';
	delivery_prices_brighton[3000] = 'FREE';
	delivery_prices_brighton[4000] = 'FREE';
    delivery_prices_brighton[5000] = 'FREE';
    delivery_prices_brighton[6000] = 'FREE';
    delivery_prices_brighton[7000] = 'FREE';
    delivery_prices_brighton[8000] = 'FREE';
    delivery_prices_brighton[9000] = 'FREE';
	delivery_prices_brighton[10000] = 'FREE';
	delivery_prices_brighton[11000] = 'FREE';
    delivery_prices_brighton[12000] = 'FREE';
	delivery_prices_brighton[13000] = 'FREE';
	delivery_prices_brighton[14000] = 'FREE';
	delivery_prices_brighton[15000] = 'FREE';
	delivery_prices_brighton[16000] = 'FREE';
	delivery_prices_brighton[17000] = 'FREE';
	delivery_prices_brighton[18000] = 'FREE';
	delivery_prices_brighton[19000] = 'FREE';
	delivery_prices_brighton[20000] = 'FREE';
	delivery_prices_brighton[21000] = 'FREE';
	delivery_prices_brighton[22000] = 'FREE';
	delivery_prices_brighton[23000] = 'FREE';
	delivery_prices_brighton[24000] = 'FREE';
	delivery_prices_brighton[25000] = 'FREE';
	delivery_prices_brighton[26000] = 'FREE';
	delivery_prices_brighton[27000] = 'FREE';
	delivery_prices_brighton[28000] = 'FREE';
	delivery_prices_brighton[29000] = 'FREE';
	delivery_prices_brighton[30000] = 'FREE';
	
var delivery_prices_parcel = new Array
	delivery_prices_parcel[0] = 0.00;
	delivery_prices_parcel[3000] = 9.00;
	delivery_prices_parcel[4000] = 10.35;
    delivery_prices_parcel[5000] = 13.00;
    delivery_prices_parcel[6000] = 13.00;
    delivery_prices_parcel[7000] = 13.00;
    delivery_prices_parcel[8000] = 13.00;
    delivery_prices_parcel[9000] = 13.00;
	delivery_prices_parcel[10000] = 15.00;
	delivery_prices_parcel[11000] = 16.00;
    delivery_prices_parcel[12000] = 'FREE';
	delivery_prices_parcel[13000] = 'FREE';
	delivery_prices_parcel[14000] = 'FREE';
	delivery_prices_parcel[15000] = 'FREE';
	delivery_prices_parcel[16000] = 'FREE';
	delivery_prices_parcel[17000] = 'FREE';
	delivery_prices_parcel[18000] = 'FREE';
	delivery_prices_parcel[19000] = 'FREE';
	delivery_prices_parcel[20000] = 'FREE';
	delivery_prices_parcel[21000] = 'FREE';
	delivery_prices_parcel[22000] = 'FREE';
	delivery_prices_parcel[23000] = 'FREE';
	delivery_prices_parcel[24000] = 'FREE';
	delivery_prices_parcel[25000] = 'FREE';
	delivery_prices_parcel[26000] = 'FREE';
	delivery_prices_parcel[27000] = 'FREE';
	delivery_prices_parcel[28000] = 'FREE';
	delivery_prices_parcel[29000] = 'FREE';
	delivery_prices_parcel[30000] = 'FREE';
	
// stop the enter key forcing a form submit
// until the submit button has focus
var submit_has_focus = false;

function SubmitFound()
{ submit_has_focus = true; }

function SubmitLost()
{ submit_has_focus = false; }

function ValidSubmit()
{
  return (submit_has_focus);
}


function stripCharsInBag(s, bag)
{   var i;
	var returnString = "";
	// Search through string's characters one by one.
	// If character is not in bag, append to returnString.
	for (i = 0; i < s.length; i++)
	{   
		// Check that current character isn't whitespace.
		var c = s.charAt(i);
		if (bag.indexOf(c) == -1) returnString += c;
	}
	return returnString;
}

// make sure they selected at least one honey and a delivery option
function ValidateSelections()
{
  var i;
  var field;
  var currency;
  var delivery;
  var num_honeys = 0;

  // firstly stop those annoying enter key accidental submits
  if( ! ValidSubmit() ) return false;

  // check some honeys ordered
  field = document.orderform.honey_1;
  num_honeys += parseInt(field.value, 10);

  field = document.orderform.honey_2;
  num_honeys += parseInt(field.value, 10);

  if ( num_honeys == 0 )
  {
    alert( "Please select a honey to purchase" );
    return false;
  }

}

// make sure they selected at least one honey and a delivery option
function ValidateSelections2()
{
  var i;
  var field;
  var currency;
  var delivery;
  var num_honeys = 0;

  // firstly stop those annoying enter key accidental submits
  if( ! ValidSubmit() ) return false;

  // check some honeys ordered
  field = document.orderform.h_honey;
  num_honeys += parseInt(field.value, 10);

  field = document.orderform.ob_honey;
  num_honeys += parseInt(field.value, 10);

  field = document.orderform.r_honey;
  num_honeys += parseInt(field.value, 10);

  if ( num_honeys == 0 )
  {
    alert( "Please select a honey to purchase" );
    return false;
  }
  if ( num_honeys < 3 &&  document.orderform.postal_option.value == '2' )
  {
    alert( "Please select more than 3kg or more of honey for Parcel Post Delivery" );
    return false;
  }

}

// make sure they selected at least one honey and a delivery option
function ValidateSelections22()
{
  var i;
  var field;
  var currency;
  var delivery;
  var num_honeys = 0;

  // firstly stop those annoying enter key accidental submits
  if( ! ValidSubmit() ) return false;

  // check some honeys ordered
  field = document.orderform.h_honey;
  num_honeys += parseInt(field.value, 10);

  field = document.orderform.ob_honey;
  num_honeys += parseInt(field.value, 10);

 field = document.orderform.r_honey;
 num_honeys += parseInt(field.value, 10);

  if ( num_honeys == 0 )
  {
    alert( "Please select a honey to purchase" );
    return false;
  }
  if ( num_honeys < 3 &&  document.orderform.postal_option.value == '2' )
  {
    alert( "Please select more than 3kg or more of honey for Parcel Post Delivery" );
    return false;
  }

}

// the list of pricing fields that appear
// if javascript is enabled
pricingfields=new Array()
pricingfields[0]="dynamictotal"


function RevealPrices()
{
  // do this as a function so that if javascript is not enabled
  // the fields stay hidden

  // first make sure the total is up to date
  recalc();
  
  if (document.getElementById)
  {
    for (var i=0; i < pricingfields.length; i++)
    {
      target = document.getElementById( pricingfields[i] );
      target.style.display = "";
      target.style.visibility = "visible";
    }
  }
}

function RevealPrices2()
{
  // do this as a function so that if javascript is not enabled
  // the fields stay hidden

  // first make sure the total is up to date
  recalc2();
  
  if (document.getElementById)
  {
    for (var i=0; i < pricingfields.length; i++)
    {
      target = document.getElementById( pricingfields[i] );
      target.style.display = "";
      target.style.visibility = "visible";
    }
  }
}

function cleanfloat( number )
{
  var pointloc = 0;
  var num_as_str;

  number += 0.005;      // sometimes we get 10.00999999 for 10.01
  num_as_str = "" + number;
  pointloc = num_as_str.indexOf(".");

  // no decimal places (integer), add '.00'
  if ( pointloc == -1 )
  {
    return ( num_as_str + ".00");
  }

  if ( (num_as_str.length - pointloc) == 2 )
  {
    // one decimal place, add a trailing '0'
    return ( num_as_str + "0");
  }

  if ( (num_as_str.length - pointloc) > 3 )
  {
    // more than 2 decimal places, dump them
    return ( num_as_str.substr( 0, pointloc+3 ) );
  }

  return num_as_str;
}

function recalc( )
{
  var i;
  var field;
  var currency;
  var delivery;
  var deliverycost = 0;
  var deliverycost2 = 0;
  var added_delivery_cost = 0;
  var added_delivery_weight = 0;
  var full_delivery_cost = 0;
  var totalcost = 0;
  var num_honeys = 0;
  var grammage_one = 0;
  var grammage_two = 0;
  var grammage_full = 0;

  currency = "uk";
  // only honeys so far
  field = document.orderform.honey_1;
  num_honeys = parseInt(field.value, 10);
  grammage_one = (num_honeys * 1000);
  deliverycost = delivery_prices[grammage_one];
  totalcost += (num_honeys * honeys_prices[1]);

  field = document.orderform.honey_2;
  num_honeys = parseInt(field.value, 10);
  grammage_two = (num_honeys * 500);
  deliverycost2 = delivery_prices[grammage_two];
  totalcost += (num_honeys * honeys_prices[2]);
  
  added_delivery_weight = (grammage_one + grammage_two);
  added_delivery_cost = delivery_prices[added_delivery_weight];
  // finally display the prices calculated
  //deliverycost = cleanfloat(deliverycost);
  //deliverycost2 = cleanfloat(deliverycost2);
  full_delivery_cost = added_delivery_cost;
  
  totalcost = (totalcost + full_delivery_cost);
  totalcost = cleanfloat(totalcost);
  full_delivery_cost = cleanfloat(full_delivery_cost);
  
  //document.orderform.deliverycost.value = delivery_cost;
  //document.orderform.deliverycost2.value = delivery_cost2;
  document.orderform.totaldeliverypay.value = full_delivery_cost;
  document.orderform.totalpay.value = totalcost;
}

function recalc2()
{
  var i;
  var field;
  var currency;
  var delivery;
  var deliverycost = 0;
  var deliverycost2 = 0;
  var deliverycost3 = 0;
  var added_delivery_cost = 0;
  var added_pdelivery_cost = 0;
  var added_bdelivery_cost = 0;
  var added_delivery_weight = 0;
  var added_pdelivery_weight = 0;
  var full_delivery_cost = 0;
  var totalcost = 0;
  var num_honeys = 0;
  var grammage_one = 0;
  var grammage_one_h = 0;
  var grammage_one_ob = 0;
  var grammage_one_r = 0;
  var grammage_two = 0;
  var grammage_full = 0;
  var totalcost_with_discount = 0;
  
  currency = "uk";
  // only honeys so far
  field = document.orderform.h_honey;
  num_honeys = parseInt(field.value, 10);
  grammage_one_h = (num_honeys * 1000);
  deliverycost = delivery_prices[grammage_one_h];
  pdeliverycost = delivery_prices_parcel[grammage_one_h];
  bdeliverycost = delivery_prices_brighton[grammage_one_h];
  totalcost += (num_honeys * honeys_prices[1]);

  field = document.orderform.ob_honey;
  num_honeys = parseInt(field.value, 10);
  grammage_one_ob = (num_honeys * 1000);
  deliverycost2 = delivery_prices[grammage_one_ob];
  pdeliverycost2 = delivery_prices_parcel[grammage_one_ob];
  bdeliverycost2 = delivery_prices_brighton[grammage_one_ob];
  totalcost += (num_honeys * honeys_prices[2]);
  
  field = document.orderform.r_honey;
  num_honeys = parseInt(field.value, 10);
  grammage_one_r = (num_honeys * 1000);
  deliverycost3 = delivery_prices[grammage_one_r];
  pdeliverycost3 = delivery_prices_parcel[grammage_one_r];
  bdeliverycost3 = delivery_prices_brighton[grammage_one_r];
  totalcost += (num_honeys * honeys_prices[3]); 
  
  added_delivery_weight = (grammage_one_h + grammage_one_ob + grammage_one_r);
  added_delivery_cost = delivery_prices[added_delivery_weight];
  added_pdelivery_cost = delivery_prices_parcel[added_delivery_weight];
  added_bdelivery_cost = delivery_prices_brighton[added_delivery_weight];
  // finally display the prices calculated
  //deliverycost = cleanfloat(deliverycost);
  //deliverycost2 = cleanfloat(deliverycost2);
  if ( added_delivery_weight < 3000 && document.orderform.postal_option.value == '2' )
  {
    alert( "Please select more than 3kg or more of honey for Parcel Post Delivery" );
	document.orderform.postal_option.value == '1'
    return false;
  }
  if ( added_delivery_weight > 11999 && document.orderform.postal_option.value == '1' )
  {
    alert( "1st Class Delivery is unavilable over 12kg" );
	document.orderform.postal_option.value == '2'
    return false;
  }
  if  ( added_delivery_weight > 11999 && document.orderform.postal_option.value == '2' )
  {
    full_delivery_cost = 'FREE';
	totalcost = (totalcost);
	totalcost = cleanfloat(totalcost);
  	//full_delivery_cost = cleanfloat(full_delivery_cost);
  }
  if  ( added_delivery_weight > 11999 && document.orderform.postal_option.value == '1' )
  {
    full_delivery_cost = added_delivery_cost;
	totalcost = (totalcost);
	totalcost = cleanfloat(totalcost);
  	full_delivery_cost = cleanfloat(full_delivery_cost);
  }
  if ( added_delivery_weight < 2999 )
  {
		totalcost_with_discount = (totalcost - (totalcost/100) * 0);
  }
  if ( added_delivery_weight > 2999 && added_delivery_weight < 6000 )
  {
		totalcost_with_discount = (totalcost - (totalcost/100) * 10);
  }
  if  ( added_delivery_weight > 5999 && added_delivery_weight < 12000 )
  {
		totalcost_with_discount = (totalcost - (totalcost/100) * 15);
  }
  if  ( added_delivery_weight > 11999 && added_delivery_weight < 15000 )
  {
		totalcost_with_discount = (totalcost - (totalcost/100) * 20);
  }
  if  ( added_delivery_weight > 14999 && added_delivery_weight < 34000 )
  {
		totalcost_with_discount = (totalcost - ((totalcost / 100) * 30));
  }
  
  if  ( added_delivery_weight > 11999  && document.orderform.postal_option.value == '2' )
  {
	totalcost = (totalcost_with_discount);
  }
  //if  ( added_delivery_weight > 11999  && document.orderform.postal_option.value == '3' )
  //{
	//totalcost = (totalcost_with_discount);
	//full_delivery_cost = added_bdelivery_cost;
  //}
  if  ( added_delivery_weight < '12000' )
  {
    if ( document.orderform.postal_option.value == '1' )
  	{
    	full_delivery_cost = added_delivery_cost;
  	}
  	if  ( document.orderform.postal_option.value == '2' )
  	{
   		full_delivery_cost = added_pdelivery_cost;
  	}
	totalcost = (totalcost_with_discount + full_delivery_cost);
	totalcost = cleanfloat(totalcost);
  	full_delivery_cost = cleanfloat(full_delivery_cost);
  }
  	if  ( document.orderform.postal_option.value == '3' )
  	{
   		full_delivery_cost = 'FREE';
		totalcost = (totalcost_with_discount);
		totalcost = cleanfloat(totalcost);
  		//full_delivery_cost = cleanfloat(full_delivery_cost);
  	}
	totalcost = cleanfloat(totalcost);
	//full_delivery_cost = cleanfloat(full_delivery_cost);
  
  
  //document.orderform.deliverycost.value = delivery_cost;
  //document.orderform.deliverycost2.value = delivery_cost2;
  document.orderform.totaldeliverypay.value = full_delivery_cost;
  document.orderform.totalpay.value = totalcost;
}

function recalc3()
{
  var i;
  var field;
  var currency;
  var delivery;
  var deliverycost = 0;
  var deliverycost2 = 0;
  var added_delivery_cost = 0;
  var added_delivery_weight = 0;
  var full_delivery_cost = 0;
  var totalcost = 0;
  var num_honeys = 0;
  var grammage_one = 0;
  var grammage_two = 0;
  var grammage_full = 0;

  currency = "uk";
  // only honeys so far
  field = document.orderform.h_honey;
  num_honeys = parseInt(field.value, 10);
  grammage_one_h = (num_honeys * 1000);
  deliverycost = delivery_prices[grammage_one];
  pdeliverycost = delivery_prices_parcel[grammage_one];
  totalcost += (num_honeys * honeys_prices[1]);

  field = document.orderform.ob_honey;
  num_honeys = parseInt(field.value, 10);
  grammage_one_ob = (num_honeys * 1000);
  deliverycost2 = delivery_prices[grammage_one_ob];
  pdeliverycost2 = delivery_prices_parcel[grammage_one_ob];
  totalcost += (num_honeys * honeys_prices[2]);
  
  field = document.orderform.r_honey;
  num_honeys = parseInt(field.value, 10);
  grammage_one_r = (num_honeys * 1000);
  deliverycost3 = delivery_prices[grammage_one];
  pdeliverycost3 = delivery_prices_parcel[grammage_one];
  totalcost += (num_honeys * honeys_prices[3]);
  
  added_delivery_weight = (grammage_one_ob);
  added_delivery_cost = delivery_prices[added_delivery_weight];
  added_pdelivery_cost = delivery_prices_parcel[added_delivery_weight];
  // finally display the prices calculated
  //deliverycost = cleanfloat(deliverycost);
  //deliverycost2 = cleanfloat(deliverycost2);
  if ( added_delivery_weight < 5000 && document.orderform.postal_option.value == '2' )
  {
    alert( "Please select more than 5kg or more of honey for Parcel Post Delivery" );
	document.orderform.postal_option.value == '1'
    return false;
  }
  
  if  ( added_delivery_weight == '12000' && document.orderform.postal_option.value == '2' )
  {
    full_delivery_cost = 'FREE';
	totalcost = (totalcost);
	totalcost = cleanfloat(totalcost);
  	//full_delivery_cost = cleanfloat(full_delivery_cost);
  }
  if  ( added_delivery_weight == '12000' && document.orderform.postal_option.value == '1' )
  {
    full_delivery_cost = added_delivery_cost;
	totalcost = (totalcost);
	totalcost = cleanfloat(totalcost);
  	full_delivery_cost = cleanfloat(full_delivery_cost);
  }
  if  ( added_delivery_weight != '12000' )
  {
    if ( document.orderform.postal_option.value == '1' )
  	{
    	full_delivery_cost = added_delivery_cost;
  	}
  	if  ( document.orderform.postal_option.value == '2' )
  	{
   		full_delivery_cost = added_pdelivery_cost;
  	}
	totalcost = (totalcost + full_delivery_cost);
	totalcost = cleanfloat(totalcost);
  	full_delivery_cost = cleanfloat(full_delivery_cost);
  }
  
  
  
  //document.orderform.deliverycost.value = delivery_cost;
  //document.orderform.deliverycost2.value = delivery_cost2;
  document.orderform.totaldeliverypay.value = full_delivery_cost;
  document.orderform.totalpay.value = totalcost;
}


function ValidateAddress()
{
  // called on submit of the "more info request" form

  // firstly stop those annoying enter key accidental submits
  if( ! ValidSubmit() ) return false;

  // check that each of the fields is non-null
  if ( document.orderform.name.value == '' )
  {
    alert('Please enter your name');
    document.orderform.name.focus();
    return false;
  }

//  if ( document.orderform.recipientname.value == '' )
//  {
//    alert('Please enter your name');
//    document.orderform.recipientname.focus();
//    return false;
//  }

  if ( (document.orderform.address.value == '') )
  {
    alert('Please enter the address the rugs are to be delivered to');
    document.orderform.address.focus();
    return false;
  }

  if ( (document.orderform.postcode.value == '') )
  {
    alert('Please supply the complete postcode for the delivery');
    document.orderform.postcode.focus();
    return false;
  }

  if ( (document.orderform.email.value == '') &&
       (document.orderform.telephone.value == '') &&
       (document.orderform.mobile.value == '')    )
  {
    alert('Please enter AT LEAST ONE OF your email address,\n your telephone number and your mobile number.');
    document.orderform.email.focus();
    return false;
  }
/*
  if ( (document.orderform.telephone.value == '') )
  {
    alert('Please enter your telephone number');
    document.orderform.telephone.focus();
    return false;
  }


  if ( document.orderform.email.value != document.orderform.emailconfirm.value  )
  {
    alert('Your email addresses don\'t match,\nplease correct one or the other');
    document.orderform.email.focus();
    return false;
  }
*/

  // made it!
  return true;
}

