function isClosed() {
    alert('Sorry... the farm is closed for the season. Please try again in July.');
    return false;
}

function saveChoice() {
  var form = $('choiceForm');
  var pform = $('paypal_form');
  pform.on0.value = 'Apple: ' + handleCheck(form.apples);
  pform.on1.value = 'Cheese: ' + handleCheck(form.cheese);
  pform.os0.value = 'Jam/Jelly: ' + handleCheck(form.condiment);
  closeChoice();
}

function handleCheck(el) {
  var a = new Array();
  for(var i = 0; i<el.length; i++) {
    if(el[i].checked) {
      a.push(el[i].value);
    }
  }
  return a.join();
}

var currentButton;
var buttonLastState;
function setCurrentSelection() {
  var pform = $('paypal_form');
  var p = '';
  if(!isEmpty(pform.on0) && pform.on0.value!='Apple: ') {
    p += pform.on0.value + ' | ';
  } 
  if(!isEmpty(pform.on1) && pform.on1.value!='Cheese: ') {
    p += pform.on1.value + ' | ';
  } 
  if(!isEmpty(pform.os0) && pform.os0.value!='Jam/Jelly: ') {
    p += pform.os0.value;
  } 
  if(p!='') {
    currentButton.value=p;
  }
}

function cancelChoice() {
  var pform = $('paypal_form');
  pform.on0.value = '';
  pform.on1.value = '';
  pform.os0.value = '';
  currentButton.value = buttonLastState;
  closeChoice();
}
function closeChoice() {
  $('paypal_form').enable();
  $('choices').hide();
  $('choiceForm').reset();
  setCurrentSelection();
}

function showChoices(evt) {
  var i = evt.findElement('input');
  if(i && (i.type=='button')) {
    buttonLastState=i.value;
    currentButton=i;
    $('paypal_form').disable();
    configureChoice(evt,i.value);
  }
}
function configureChoice(evt,l) {
  var el = $('choices');
  el.show();
  el.setStyle({position:'absolute', left:evt.pointerX(), top:evt.pointerY()});
  var ch = el.getElementsByTagName('div');
  for(var i=0; i<ch.length; i++) {
    ch[i].show();
  }
  if(l.indexOf('Cheese')<0) {
    $('cheese_choice').hide();
  }
 if(l.indexOf('Apple')<0) {
    $('apple_choice').hide();
  }
 if(l.indexOf('Jam')<0) {
    $('jam_choice').hide();
  }
}

function showShipperInfo() {
  //var info = document.getElementById('shipper_info');
  //info.display='';
  $('shipper_info').show();
}
function isEmpty(element) {
  return (element.value=='') ? true : false;
}
function verifyAddress(form) {
 return (isEmpty(form.first_name) ||
   isEmpty(form.last_name) ||
   isEmpty(form.address1) ||
   isEmpty(form.city) ||
   isEmpty(form.state) ||
   isEmpty(form.zip) ||
   isEmpty(form.phone) ) ? false : true;
}
function collectAddress(form) {
  
  if(verifyAddress(form)) {
    return 'Shipper: ' + form.first_name.value
		  + ' ' + form.last_name.value
		  + ' | ' + form.address1.value
		  + ' | ' + form.city.value
		  + ', ' + form.state.value
		  + ' ' + form.zip.value
		  + ' | ' + form.phone.value;
  } else { 
    alert('Sorry, one of the pieces of shipper contact information is missing... We may need this to contact you about the order.');
    return '';
  }
  
}
disable('paypal_form');
function addToCart(code) {
  return isClosed(true);
  //  alert(code);
     var item = lookupItem(code);
     if(item.desc=='')
       return;
     var form = document.paypal_form;
     var address = collectAddress(form);
     if(address=='') return;
     form.custom.value = form.custom.value + address;
     form.item_name.value = item.desc;
     form.item_number.value = item.code;
     form.amount.value = item.ship_price;
     form.submit();
}

function Item(parent, desc, code, price, ship_price) {
    this.parent = parent;
    this.desc = desc;
    this.code = code;
    this.price = price;
    this.ship_price = ship_price;
}

function lookupItem(code) {
    var items = itemStore();
    for(var i = 0; i < items.length; i++) {
	if (code==items[i].code) {
	    return items[i];
	}
    }
    return new Item('','','',0,0);
}

function lookupItemsByParent(parent) {
    var items = itemStore();
    var parentItems = new Array();
    for(var i = 0; i < items.length; i++) {
	if(parent == items[i].parent) {
	    parentItems.push(items[i]);
	}
    }
    return parentItems;
}
function ThreeDayEast() {
    this.five = 13.00;
    this.eight = 14.00;
    this.fifteen = 17.00;
    this.twentyone = 20.00;
}

function ThreeDayWest() {
    this.five = 24.00;
    this.eight = 29.00;
    this.fifteen = 41.00;
    this.twentyone = 50.00;
}

function calculateShipping(coast, weight) {
    var where = new ThreeDayEast();
    var price = 0.00;
    if(coast == 'west') {
	where = new ThreeDayWest();
    }
    switch(weight) {
    case 5:
	price = where.five;
	break;
    case 8:
	price = where.eight;
	break;
    case 15:
	price = where.fifteen;
	break;
    case 21:
	price = where.twentyone;
	break;
    default:
	price = price;
    }
    return price;
	
}

function calculatePrice(price, coast, weight, tax) {
    var nysTax = 0;
    var salePrice = parseFloat(price);
    if(tax) {
	nysTax = salePrice * .08;
    }
    var shipping = parseFloat(calculateShipping(coast, weight));
    var output =  salePrice + nysTax + shipping;
    return output.toFixed(2);
}

function itemBuilder(store, item, label, price, weight, tax) {
   store.push(new Item(item,label + ' (Ground East)', item + '_3east',price,calculatePrice(price,'east',weight,tax)));
   store.push(new Item(item,label + ' (3 Day West)', item + '_3west',price,calculatePrice(price,'west',weight,tax)));
   return store;
}

function itemStore()
{
    var itemstore = new Array();
    // apple basket
    itemstore = itemBuilder(itemstore, 'apple_basket', 'Apple Basket',22.00,8,true);
    // apple n cheese
    itemstore = itemBuilder(itemstore, 'apple_cheese', 'Apples N Cheese', 32.00, 8, true);
    //family brunch
    itemstore = itemBuilder(itemstore, 'brunch', 'Family Brunch', 45.00, 5, true);
    //apple sampler
    itemstore = itemBuilder(itemstore, 'sampler_basket', 'Apple Sampler', 45.00, 15, true);
    // harvest pack
    itemstore = itemBuilder(itemstore, 'harvest', 'Harvest', 59.00, 21, true);
    // hudson valley harvest pack
    itemstore = itemBuilder(itemstore, 'hudson_harvest', 'Hudson Valley Harvest', 75.00, 15, true);
    // 6 apples
    itemstore = itemBuilder(itemstore, '6_apples', '6 Apples', 14.00, 5, false);
    //16 apples
    itemstore = itemBuilder(itemstore, '16_apples', '16 Apples', 29.00, 8, false);
    // 32 apples
    itemstore = itemBuilder(itemstore, '32_apples', '32 Apples', 42.00, 15, false);
    // 48 apples
    itemstore = itemBuilder(itemstore, '48_apples', '48 Apples', 59.00, 21, false);
    //nys 10 pack
    itemstore = itemBuilder(itemstore, '10_nys_pack', 'NYS 10 Pack', 39.00, 8, false);
    //nys 26 pack
    itemstore = itemBuilder(itemstore, '26_nys_pack', 'NYS 26 Pack', 49.00, 15, false);
    //sampler 16
    itemstore = itemBuilder(itemstore, '16_sampler_pack', 'Sampler 16 Pack', 32.00, 8, false);
    //sampler 32
    itemstore = itemBuilder(itemstore, '32_sampler_pack', 'Sampler 32 Pack', 45.00, 15, false);
    //helderberg
    itemstore = itemBuilder(itemstore, 'helderberg_pack', 'Helderberg Pack', 39.00, 8, false);
    //caramel
    itemstore = itemBuilder(itemstore, 'caramel_pack', 'Caramel Pack', 19.00, 8, false);
    //jam pack
    itemstore = itemBuilder(itemstore, 'jam_pack', 'Jam Pack', 19.00, 5, false);
    //jam pack 20oz
    itemstore = itemBuilder(itemstore, 'jam_pack_20', 'Jam Pack 20oz', 25.00, 8, false);
    //salsa pack
    itemstore = itemBuilder(itemstore, 'salsa_pack', 'Salsa Pack', 19.00, 5, false);
    //honey pack
    itemstore = itemBuilder(itemstore, 'honey_pack', 'Honey Pack', 29.00, 5, false);

    return itemstore;
}
/*
function makeChoice()
{
    window.open('/gift_choices.html','choice_window','width=500, height=300');
}
*/
function outputFormSelect(which) {
    var output  = '';
    var items = lookupItemsByParent(which);
    output = '<select name = "' + which + '" onChange = "addToCart(this.value);">'
	+ '<option value = "">Add To Cart';
    for (var i = 0; i < items.length; i++) {
		  output += '<option value = "'
				+ items[i].code
				+ '">' 
				+ items[i].desc + ' - '
				+ items[i].ship_price
				+ '\n';
    }
    output += '</select><br>';
    document.write(output);
}

function outputBasePrice(which) {
    var item = lookupItem(which + '_3east');
    document.write('$' + parseFloat(item.price).toFixed(2) + '<br>');
}
