/*
 * 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 rugs_prices = new Array
  rugs_prices[1] = 75.00;
  rugs_prices[2] = 120.00;
	rugs_prices[3] = 60.00;
  rugs_prices[4] = 75.00;
	rugs_prices[5] = 40.00;
	rugs_prices[6] = 8.00;
	
// Daily Mail
var rugs_prices_dm = new Array
  rugs_prices_dm[1] = 149.00;
  rugs_prices_dm[2] = 199.00;
	rugs_prices_dm[3] = 125.00;
  rugs_prices_dm[4] = 149.00;
	rugs_prices_dm[5] = 69.00;
	rugs_prices_dm[6] = 25.00;
	rugs_prices_dm[7] = 196.00;
	
// 10% off option
var rugs_prices_lh = new Array
  rugs_prices_lh[1] = 135.00;
  rugs_prices_lh[2] = 180.00;
	rugs_prices_lh[3] = 108.00;
  rugs_prices_lh[4] = 135.00;
	rugs_prices_lh[5] = 62.00;
	rugs_prices_lh[6] = 22.50;
	
// 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);
}

// make sure they selected at least one rug and a delivery option
function ValidateSelections3()
{
  var i;
  var field;
  var currency;
  var delivery;
  var num_rugs = 0;

  // firstly stop those annoying enter key accidental submits
  if( ! ValidSubmit() ) return false;

  // check some rugs ordered
  field = document.orderform.rug_1;
  num_rugs += parseInt(field.value, 10);

  field = document.orderform.rug_2;
  num_rugs += parseInt(field.value, 10);
  
  field = document.orderform.rug_3;
  num_rugs += parseInt(field.value, 10);

  field = document.orderform.rug_4;
  num_rugs += parseInt(field.value, 10);
  
  field = document.orderform.rug_5;
  num_rugs += parseInt(field.value, 10);

  field = document.orderform.rug_6;
  num_rugs += parseInt(field.value, 10);
  
  field = document.orderform.rug_7;
  num_rugs += parseInt(field.value, 10);
  
  if ( num_rugs == 0 )
  {
    alert( "Please select a rug to purchase" );
    return false;
  }

}


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 rug and a delivery option
function ValidateSelections()
{
  var i;
  var field;
  var currency;
  var delivery;
  var num_rugs = 0;
  var totalcost = 0;

  // firstly stop those annoying enter key accidental submits
  if( ! ValidSubmit() ) return false;

  // check some rugs ordered
  field = document.orderform.rug_1;
  num_rugs += parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices[2]);
  
  field = document.orderform.rug_2;
  num_rugs += parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices[1]);
  
  field = document.orderform.rug_3;
  num_rugs += parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices[3]);

  field = document.orderform.rug_4;
  num_rugs += parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices[4]);
  
  field = document.orderform.rug_5;
  num_rugs += parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices[5]);

  field = document.orderform.rug_6;
  num_rugs += parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices[6]);
  
  if ( num_rugs == 0 )
  {
    alert( "Please select a rug to purchase" );
    return false;
  }

  if (document.orderform.voucherid.value!="") {
	  var foundAt = document.orderform.voucherid.value.indexOf("-",0)
	  var foundAt2 = document.orderform.voucherid.value.indexOf(" ",0)
	  var foundAt3 = document.orderform.voucherid.value.indexOf("_",0)
	  var foundAt4 = document.orderform.voucherid.value.indexOf("o",0)
	  var foundAt5 = document.orderform.voucherid.value.indexOf("f",0)
	  var foundAt6 = document.orderform.voucherid.value.indexOf("S",0)
	  
	  if (foundAt < 1)
	  {
		  alert ("Please enter a valid voucher code.")
		  document.orderform.voucherid.focus()
		  return false;
	  }
	  if (foundAt2 > 0)
	  {
		  alert ("Please enter a valid voucher code. There are some spaces")
		  document.orderform.voucherid.focus()
		  return false;
	  }
	  if (foundAt3 > 0)
	  {
		  alert ("Please enter a valid voucher code.")
		  document.orderform.voucherid.focus()
		  return false;
	  }  
	  if (foundAt4 < 1)
	  {
		  alert ("Please enter a valid voucher code.")
		  document.orderform.voucherid.focus()
		  return false;
	  }
	  if (foundAt5 < 1)
	  {
		  alert ("Please enter a valid voucher code.")
		  document.orderform.voucherid.focus()
		  return false;
	  }
	  if (foundAt6 < 1)
	  {
		  alert ("Please enter a valid voucher code.")
		  document.orderform.voucherid.focus()
		  return false;
	  }
	  if (totalcost < 60)
	  {
		  alert ("Vouchers can only be used on purchases over 60 pounds.")
		  document.orderform.voucherid.focus()
		  return false;
	  }
	  if (document.orderform.voucherid.value.length != 21)
	  {
		  alert ("Please enter a valid voucher code.")
		  document.orderform.voucherid.focus()
		  return false;
	  }
   }  
}

// make sure they selected at least one rug and a delivery option
function ValidateSelections3()
{
  var i;
  var field;
  var currency;
  var delivery;
  var num_rugs = 0;

  // firstly stop those annoying enter key accidental submits
  if( ! ValidSubmit() ) return false;

  // check some rugs ordered
  field = document.orderform.rug_1;
  num_rugs += parseInt(field.value, 10);

  field = document.orderform.rug_2;
  num_rugs += parseInt(field.value, 10);
  
  field = document.orderform.rug_3;
  num_rugs += parseInt(field.value, 10);

  field = document.orderform.rug_4;
  num_rugs += parseInt(field.value, 10);
  
  field = document.orderform.rug_5;
  num_rugs += parseInt(field.value, 10);

  field = document.orderform.rug_6;
  num_rugs += parseInt(field.value, 10);

	if ( num_rugs == 0 )
	{
	alert( "Please select a rug to purchase" );
	return false;
	}
}

// make sure they selected at least one rug and a delivery option
function ValidateSelections2()
{
  var i;
  var field;
  var currency;
  var delivery;
  var num_rugs = 0;

  // firstly stop those annoying enter key accidental submits
  if( ! ValidSubmit() ) return false;

  // check some rugs ordered
  field = document.orderform.rug_1;
  num_rugs += parseInt(field.value, 10);

  field = document.orderform.rug_2;
  num_rugs += parseInt(field.value, 10);

  if ( num_rugs == 0 )
  {
    alert( "Please select a rug to purchase" );
    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 totalcost = 0;
  var num_rugs = 0;

  currency = "uk";
  // only rugs so far
  field = document.orderform.rug_2;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices[2]);

  field = document.orderform.rug_1;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices[1]);

  // finally display the price calculated
  totalcost = cleanfloat(totalcost);

  document.orderform.totalpay.value = totalcost;
}

function recalc2( )
{
  var i;
  var field;
  var currency;
  var delivery;
  var totalcost = 0;
  var num_rugs = 0;

  currency = "uk";
  // only rugs so far
  field = document.orderform.rug_2;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices_lh[2]);

  field = document.orderform.rug_1;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices_lh[1]);
  
  field = document.orderform.rug_3;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices_lh[3]);

  field = document.orderform.rug_4;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices_lh[4]);
  
  field = document.orderform.rug_5;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices_lh[5]);
  
  // finally display the price calculated
  totalcost = cleanfloat(totalcost);

  document.orderform.totalpay.value = totalcost;
}

function recalc3( )
{
  var i;
  var field;
  var currency;
  var delivery;
  var totalcost = 0;
  var num_rugs = 0;

  currency = "uk";
  // only rugs so far
  field = document.orderform.rug_2;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices[2]);

  field = document.orderform.rug_1;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices[1]);

  // finally display the price calculated
  totalcost = cleanfloat(totalcost);

  document.orderform.totalpay.value = totalcost;
}

function recalc4( )
{
  var i;
  var field;
  var currency;
  var delivery;
  var totalcost = 0;
  var num_rugs = 0;

  currency = "uk";
  // only rugs so far
  field = document.orderform.rug_2;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices[2]);

  field = document.orderform.rug_1;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices[1]);
  
  field = document.orderform.rug_3;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices[3]);

  field = document.orderform.rug_4;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices[4]);
  
  field = document.orderform.rug_5;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices[5]);
  
  field = document.orderform.rug_6;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices[6]);

  // finally display the price calculated
  totalcost = cleanfloat(totalcost);

  document.orderform.totalpay.value = totalcost;
}

function recalc6( )
{
  var i;
  var field;
  var currency;
  var delivery;
  var totalcost = 0;
  var num_rugs = 0;

  currency = "uk";
  // only rugs so far
  field = document.orderform.rug_2;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices[2]);

  field = document.orderform.rug_1;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices[1]);
  
  field = document.orderform.rug_3;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices[3]);

  field = document.orderform.rug_4;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices[4]);
  
  field = document.orderform.rug_5;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices[5]);
  
  field = document.orderform.rug_6;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices[6]);

  // finally display the price calculated
  totalcost = cleanfloat(totalcost);
  if ( document.orderform.voucherid.value == "" ) { document.orderform.totaldiscountpay.value = ""; } else {
	  if ( totalcost < 60 ) { alert('Vouchers only valid for purchases over 60.00'); }
	  else if ( totalcost >= 60 )
	  {
		//if(document.orderform.totaldiscountpay.value.charAt(5)==;) {}
		var vouchertype = document.orderform.voucherid.value;
		/*if(vouchertype.charAt(5)=="2") {
			document.orderform.totaldiscountpay.value = totalcost - 20 + '.00';
		}
		elseif(vouchertype.charAt(5)=="1") {
			document.orderform.totaldiscountpay.value = totalcost - 10 + '.00';
		}
		*/													
		if (vouchertype.indexOf('-20-')!=-1) {
			document.orderform.totaldiscountpay.value = totalcost - 20 + '.00';
		} 
		else if (vouchertype.indexOf('-10-')!=-1) {
			document.orderform.totaldiscountpay.value = totalcost - 10 + '.00';
		} 
		else {
			alert('Error: Your voucher code is incorrect');
		}
	  }
	  else {
		document.orderform.totaldiscountpay.value = totalcost;  
	  }
  }
  // document.orderform.totaldiscountpay.value = totalcost - 20;
  document.orderform.totalpay.value = totalcost;
}


function recalc7( )
{
  var i;
  var field;
  var currency;
  var delivery;
  var totalcost = 0;
  var num_rugs = 0;

  currency = "uk";
  // only rugs so far
  field = document.orderform.rug_2;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices[2]);

  field = document.orderform.rug_1;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices[1]);
  
  field = document.orderform.rug_3;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices[3]);

  field = document.orderform.rug_4;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices[4]);
  
  field = document.orderform.rug_5;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices[5]);
  
  field = document.orderform.rug_6;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices[6]);
  
  field = document.orderform.rug_7;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices[7]);
  // finally display the price calculated
  totalcost = cleanfloat(totalcost);

  document.orderform.totalpay.value = totalcost;
}

function recalc5( )
{
  var i;
  var field;
  var currency;
  var delivery;
  var totalcost = 0;
  var num_rugs = 0;

  currency = "uk";
  // only rugs so far
  field = document.orderform.rug_2;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices_lh[2]);

  field = document.orderform.rug_1;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices_lh[1]);
  
  field = document.orderform.rug_3;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices_lh[3]);

  field = document.orderform.rug_4;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices_lh[4]);
  
  field = document.orderform.rug_5;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices_lh[5]);
  
  field = document.orderform.rug_6;
  num_rugs = parseInt(field.value, 10);
  totalcost += (num_rugs * rugs_prices_lh[6]);
  
  // finally display the price calculated
  totalcost = cleanfloat(totalcost);

  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;
}


