
function oc(a) {
  var o = {};
  for (var i=0; i < a.length; i++) {
    o[a[i]]='';
  }
  return o;
}

//do the same thing as the Perl "keys" subroutine
function keys (o) {
  var accumulator = [];
  for (var propertyName in o) {
    accumulator.push(propertyName);
  }
  return accumulator;
}

jQuery.Jookie.Initialise("shopping-cart", 60 * 24 * 365);

function get_cookie(c_name) {
  if (document.cookie.length>0) {
    c_start=document.cookie.indexOf(c_name + '=');
    if (c_start!=-1) {
      c_start=c_start + c_name.length+1;
      c_end=document.cookie.indexOf(';', c_start);
      if (c_end==-1) c_end=document.cookie.length;
      return unescape(document.cookie.substring(c_start,c_end));
    }
  }
  return null;
}

function set_cookie(c_name, value, expiredays) {
  var exdate = new Date();
  exdate.setTime(exdate.getTime() + 1000 * 60 * 60 * 24 * expiredays);
  document.cookie = c_name + '=' + escape(value) + ((expiredays==null) ? '' : ';expires=' + exdate.toGMTString());
}

function set_language(lang) {
  set_cookie('language', lang, 720);
}

function delete_item_prompt(name) {
  Boxy.ask('Are you sure you want to delete this item from your shopping cart?', ['Yes', 'No'], 
    function(val) {
      if (val == 'Yes') {
	delete_item(name);
      }
    }, 
    {title: 'Really Delete This Item?'}
  );
}

function delete_item(name) {
  set_cookie('item-'+name, 0, -100);
}

function decrement_item(name) {
  var count = parseInt($('#count-'+name).text());
  if (isNaN(count)) {
    alert('Error');
  } else {
    if (count > 1) {
      count--;
      jQuery.post(
        '/add-to-cart.php',
        {
	  name: name,
          num: -1,
          credits: get_credits_to_be_spent()
        },
        function(data) {
          $('#count-'+name).text(String(count));
          cost = parseInt($('#cost-'+name).text());
          previous_cost = parseInt($('#total-cost-'+name).text());
          $('#total-cost-'+name).text(String(previous_cost-cost));
	  jQuery('#total-cell').text(String(data));
        }
      );
    }
  }
};

function increment_item(name) {
  var count = parseInt($('#count-'+name).text());
  if (isNaN(count)) {
    alert('Error');
  } else {
    count++;
    jQuery.post(
      '/add-to-cart.php',
      {
        name: name,
        num: 1,
        credits: get_credits_to_be_spent()
      },
      function(data) {
        $('#count-'+name).text(String(count));
        cost = parseInt($('#cost-'+name).text());
        previous_cost = parseInt($('#total-cost-'+name).text());
        $('#total-cost-'+name).text(String(cost+previous_cost));
	jQuery('#total-cell').text(String(data));
      }
    );
  }
}

function check_row(i) {
  var count = parseInt($('#count-'+String(i)).val());
  if (isNaN(count) || count < 0) {
    Boxy.alert('You entered an invalid amount, please enter a valid number', 
      function () { highlight_row(i); },
      {title: 'Error'}
    );
  }
}

function highlight_row(i) {
  $('#count-'+String(i)).focus();
  $('#count-'+String(i)).select();
} 

function start_pie_slide() {
  var mygallery=new fadeSlideShow({
    wrapperid: 'fadeshow1', //ID of blank DIV on page to house Slideshow
    dimensions: [700, 335], //width/height of gallery in pixels. Should reflect dimensions of largest image
    imagearray: [
      //['http://www.piehouse.com.cn/french_silk_promo.jpg'],
      //['http://www.piehouse.com.cn/valentines.jpg'],
      //['http://www.piehouse.com.cn/strawberry_pie_promo.jpg'],
      ['http://www.piehouse.com.cn/wide_strawberry_cheese.jpg'],
      //['http://www.piehouse.com.cn/wide_chocolate_cherry_pie.jpg'],
/*
      ['http://www.piehouse.com.cn/wide_red_velvet_cake.jpg'],
      ['http://www.piehouse.com.cn/wide_cupcake_set.jpg'],
      ['http://www.piehouse.com.cn/wide_velvet_gift.jpg'],
      ['http://www.piehouse.com.cn/chocolate_slide.jpg'],
      ['http://www.piehouse.com.cn/peach_slide.jpg'],
      //['http://www.piehouse.com.cn/wide_apricot_brandy_custard_pie.jpg'],
      ['http://www.piehouse.com.cn/wide_coconut_cream_pie.jpg'],
*/
      //['http://www.piehouse.com.cn/mooncake_slide_show.jpg'],
      ['http://www.piehouse.com.cn/red_velvet_cake_700_350.jpg'],
      //['http://www.piehouse.com.cn/carrotcoupon.jpg'],
      ['http://www.piehouse.com.cn/carrot_cake_700_335.jpg'],
      ['http://www.piehouse.com.cn/raspberry_mousse_cake_700_335.jpg'],
      //['http://www.piehouse.com.cn/mint_chocolate_700_335.jpg'],
      ['http://www.piehouse.com.cn/razzleberry_cheesecake_pie_700_335.jpg']
      //['http://www.piehouse.com.cn/angry_birds_slide.jpg'],
      //['http://www.piehouse.com.cn/share.png']
    ],
    displaymode: {type:'auto', pause:3000, cycles:0, wraparound:false},
    persist: false, //remember last viewed slide and recall within same session?
    fadeduration: 2000, //transition duration (milliseconds)
    descreveal: 'ondemand',
    togglerid: ''
  });
}

function front_page_redirect() {
  var language = get_cookie('language');
  if (language) {
    if (language == 'english') {
      window.location = '/products';
    } else if (location == 'chinese') {
      window.location = '/chanpin';
    }
  }
}

function add_item(name, num, extra) {
  jQuery.post(
    '/add-to-cart.php',
    {
      name: name,
      num: num,
      extra: extra
    },
    function(data) {
      window.location.href='/shop.php';
    }
  )  
};

function delete_item(name) {
  jQuery.post(
    '/delete-from-cart.php',
    {
      name: name
    },
    function(data) {
      jQuery('#'+name).fadeOut('slow');
      jQuery('#total-cell').text(String(data));
    }
  ) 
};

function clear_session() {
  jQuery.get(
    '/clear-session.php',
    function(data) {
      //window.page.reload();
      window.location.href=window.location.href;
    }
  );
};

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) return c.substring(nameEQ.length,c.length);
    }
    return null;
};

function login(box, success_fn, success_arg) {
    jQuery.post('/login.php', {'username': jQuery('#username').val(), 'password': jQuery('#password').val()},
		function(data) {
		    if (data === 'success') {
                      if (success_arg) {
                        success_fn(success_arg);
                      } else {
                        success_fn();
                      }
		    } else {
			jQuery('#login_error').text('Invalid username or password');
			jQuery('#login_error').css({display: 'block'});
		    }
		}
	);
};

var register_form_inputs = ['username', 'password', 'confirm_password', 'real_name', 'phone_number', 'email', 'birthday'];

function register(box, success_fn, success_arg) {
    jQuery.post('/register.php', 
		{
		  'username': jQuery('#username').val(), 
		  'password': jQuery('#password').val(),
		  'confirm_password': jQuery('#confirm_password').val(),
		  'real_name': jQuery('#real_name').val(),
		  'phone_number': jQuery('#phone_number').val(),
		  'email': jQuery('#email').val(),
		  'birthday': jQuery('#birthday').val()
		},
		function(data) {
		    if (data === 'success') {
                      if (success_arg) {
                        success_fn(success_arg);
                      } else {
                        success_fn();
                      }
		    } else {
			var form_error = eval(data);
			var error_keys = keys(form_error);
			for (var i = 0; i < register_form_inputs.length; i++) {
			    var register_form_input = register_form_inputs[i];
			    if (register_form_input in oc(error_keys)) {
				jQuery('#verify_'+register_form_input).text(form_error[register_form_input]);
				jQuery('#verify_'+register_form_input).css({color: 'red'});
				//			    } else {
				//jQuery('#verify_'+register_form_input).css({color: 'green'});
			    }
			}
			jQuery('#register_error').text('Sorry, it looks like there were some problems');
			jQuery('#register_error').css({display: 'block'});
		    }
		}
	);
};

//  "Delivery Address<br /><textarea name=\"address\" id=\"address\" cols=\"39\" rows=\"5\"></textarea></p><br /><input type=\"submit\" name=\"submit\" value=\"Proceed to Checkout >>\" />";
var login_content;
var register_content;
var delivery_content;
var datepicker_set_up = false;

function prompt_for_account_information() {

  register_content = "<div style=\"width: 450px; height: 450px;\"><div style=\"display: none; color: red; padding: 5px 5px 15px 5px;\" id=register_error></div><form id=register><table><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Username</span></td><td style=\"text-align: left;\"><input style=\"margin: 0px;\" type=\"text\" name=\"username\" id=username size=20 onblur=\"check_username()\"></input></td></tr><tr><td><span style=\"width: 150px;\">&nbsp;</span></td><td style=\"text-align: left;\"><span style=\"font-size: 11px;\" id=verify_username>Please enter between 4 and 15 characters</span></td></tr><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Password</span></td><td style=\"text-align: left;\"><input style=\"margin: 0px;\" type=\"password\" name=\"password\" id=password size=20 onblur=\"check_password()\"></input></td></tr><tr><td><span style=\"width: 150px;\">&nbsp;</span></td><td style=\"text-align: left;\"><span style=\"font-size: 11px;\" id=verify_password>Please enter between 6 and 15 characters</span></td></tr><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Confirm password</span></td><td style=\"text-align: left;\"><input style=\"margin: 0px;\" type=\"password\" name=\"confirm_password\" id=confirm_password size=20 onblur=\"check_confirm_password()\"></input></td></tr><tr><td><span style=\"width: 150px;\">&nbsp;</span></td><td style=\"text-align: left;\"><span style=\"font-size: 11px;\" id=verify_confirm_password>Please re-enter your password</span></td></tr><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Real name</span></td><td style=\"text-align: left;\"><input style=\"margin: 0px;\" type=\"text\" name=\"real_name\" id=real_name size=20 onblur=\"check_real_name()\"></input></td></tr><tr><td><span style=\"width: 150px;\">&nbsp;</span></td><td style=\"text-align: left;\"><span style=\"font-size: 11px;\" id=verify_real_name>Please enter your full name</span></td></tr><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Phone number</span></td><td style=\"text-align: left;\"><input style=\"margin: 0px;\" type=\"text\" name=\"phone_number\" id=phone_number size=20 onblur=\"check_phone_number()\"></input></td></tr><tr><td><span style=\"width: 150px;\">&nbsp;</span></td><td style=\"text-align: left;\"><span style=\"font-size: 11px;\" id=verify_phone_number>Please enter your phone number</span></td></tr><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Email</span></td><td style=\"text-align: left;\"><input style=\"margin: 0px;\" type=\"text\" name=\"email\" id=email size=20 onblur=\"check_email()\"></input></td></tr><tr><td><span style=\"width: 150px;\">&nbsp;</span></td><td style=\"text-align: left;\"><span style=\"font-size: 11px;\" id=verify_email>Please enter your email address</span></td></tr><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Birthday</span></td><td style=\"text-align: left;\"><input style=\"margin: 0px;\" type=\"text\" name=\"birthday\" id=birthday size=20 onblur=\"check_birthday()\"></input></td></tr><tr><td><span style=\"width: 150px;\">&nbsp;</span></td><td style=\"text-align: left;\"><span style=\"font-size: 11px;\" id=verify_birthday>Please select your birthday</span></td></tr></table><div style=\"text-align: left; padding-top: 20px;\"><input style=\"float: left;\" type=\"button\" onclick=\"register(contactBoxy, function (box) { box.setContent(delivery_content).center().setTitle('Please fill out delivery information'); }, contactBoxy); return false;\" value=\"Register &#62;&#62;\"></input><a href=\"#\" style=\"float: right;\" onclick=\"contactBoxy.setContent(login_content).center().setTitle('Please log in'); return false;\">Already have an account? Log in</a></div></form></div>";
  register_content += "<script>jQuery('#birthday').datepicker({maxDate: 0, changeMonth: true, changeYear: true, yearsRange: '-90:0', defaultDate: new Date(80,0,1), onClose: function(dateText) { check_birthday(); }}); </script>";

  delivery_content = "<div style=\"width:400px; height: 260px;\"><div class=\"popup-error\"></div><form id=delivery action=\"http://en.piehouse.com.cn/orders\" method=post><table><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Delivery Recipient</span></td><td style=\"text-align: left;\"><input type=hidden name=\"username\" value=\"" + readCookie('user') + "\"/><input type=hidden name=\"credits\" value=\"" + get_credits_to_be_spent() + "\"><input style=\"margin: 0px;\" type=\"text\" name=\"recipient\" id=recipient size=20></input></td></tr><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Delivery Address</span></td><td style=\"text-align: left;\"><input style=\"margin: 0px;\" type=\"text\" name=\"recipient_address\" id=recipient_address size=20></input></td></tr><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Recipient's Phone</span></td><td style=\"text-align: left;\"><input style=\"margin: 0px;\" type=\"text\" name=\"recipient_phone\" id=recipient_phone size=20></input></td></tr><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Delivery Date</span></td><td style=\"text-align: left;\"><input style=\"margin: 0px;\" type=\"text\" name=\"delivery_date\" id=delivery_date size=20></input></td></tr><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Delivery Time</span></td><td style=\"text-align: left;\"><select id=delivery_hour name=\"delivery_hour\"><option>9</option><option>10</option><option>11</option><option>12</option><option>13</option><option>14</option><option>15</option><option>16</option><option>17</option><option>18</option><option>19</option><option>20</option><option>21</option></select><select id=delivery_minute name=\"delivery_minute\"><option>00</option><option>05</option><option>10</option><option>15</option><option>20</option><option>25</option><option>30</option><option>35</option><option>40</option><option>45</option><option>50</option><option>55</option></select></td></tr><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Payment Method</span></td><td style=\"text-align: left;\"><select name=\"payment_method\" id=payment_method><option value=\"0\">Pay upon delivery</option><option value=\"1\">Alipay</option></select></td></tr><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Where Is the Delivery Address Located?</span></td><td style=\"text-align: left;\"><select id=delivery_fee name=\"delivery_fee\"><option>Within the 4th Ring</option><option>Between the 4th and 5th Rings</option><option>Outside the 5th Ring</option></select></td></tr><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">How Many Forks and Plates Would You Like?</span></td><td style=\"text-align: left;\"><input style=\"margin: 0px;\" type=\"text\" name=\"forks_and_plates\" id=forks_and_plates size=20 value=\"8\"></input></td></tr><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Do You Want Birthday Candles?</span></td><td style=\"text-align: left;\"><select id=candles name=\"candles\"><option>No</option><option>Yes</option></select></td></tr></table><div style=\"height:20px;\"></div><input type=\"hidden\" id=cart_contents name=\"cart_contents\"></input><input type=\"button\" style=\"float: left;\" onclick=\"handle_delivery_request();\" value=\"Submit\"></input></form></div>";
  delivery_content += "<script>jQuery('#delivery_date').datepicker({minDate: 0});</script>";
 
  login_content = "<div style=\"width: 300px; height: 130px;\"><div class=\"popup-error\" id=\"login_error\"></div><form id=login><table><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Username</span></td><td style=\"text-align: left;\"><input style=\"margin: 0px;\" type=\"text\" name=\"username\" id=username size=20></input></td></tr><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Password</span></td><td style=\"text-align: left;\"><input style=\"margin: 0px;\" type=\"password\" name=\"password\" id=password size=20></input></td></tr></table><div style=\"height:20px;\"></div><input style=\"float: left;\" type=\"submit\" name=\"submit\" onclick=\"login(contactBoxy, function(box) { box.setContent(delivery_content).center().setTitle('Please fill out delivery information'); }, contactBoxy); return false;\" value=\"Log in &#62;&#62;\"></input><a href=\"#\" style=\"float: right;\" onclick=\"contactBoxy.setContent(register_content).center().setTitle('Please register'); return false;\">No account? Register</a></form></div>";

  contactBoxy = new Boxy(readCookie('user') ? delivery_content : login_content, {
          title: readCookie('user') ? 'Please fill out the delivery information' : 'Please log in',
          draggable: false,
          modal: true,
	  unloadOnHide: true,
	  afterShow: function() {
	      if (readCookie('user')) {
		  jQuery('#delivery_date').datepicker({minDate: 0});
	      }
	  },
          closeText: '[close]'
  });
  return false;
};

function check_username() {
  var username = jQuery('#username').val();
  jQuery.ajax({
    type: 'POST',
    url: '/check_username.php',
    data: { username: username },
    success: function(data) { 
	      if (data == 'success') {
		jQuery('#verify_username').html('Username ' + username + ' is available');
		jQuery('#verify_username').css({color: 'green'});
	      } else {
	        jQuery('#verify_username').html(data);
		jQuery('#verify_username').css({color: 'red'});
	      }
	  }
  });
};

function check_password() {
  var password = jQuery('#password').val();
  if (password.length >= 6 && password.length <= 15) {
      jQuery('#verify_password').html('Password looks valid');
      jQuery('#verify_password').css({color: 'green'});
  } else {
      jQuery('#verify_password').html('Password must be between 6 and 15 characters long');
      jQuery('#verify_password').css({color: 'red'});
  }
}

function check_confirm_password() {
  var password = jQuery('#password').val();
  var confirm_password = jQuery('#confirm_password').val();
  if (password == confirm_password) {
      jQuery('#verify_confirm_password').html('Passwords match');
      jQuery('#verify_confirm_password').css({color: 'green'});
  } else {
      jQuery('#verify_confirm_password').html('Passwords must match');
      jQuery('#verify_confirm_password').css({color: 'red'});
  }
}

function check_real_name() {
  var real_name = jQuery.trim(jQuery('#real_name').val());
  if (real_name.length >= 2) {
      jQuery('#verify_real_name').html('Real name looks valid');
      jQuery('#verify_real_name').css({color: 'green'});
  } else {
      jQuery('#verify_real_name').html('Real name must be at least 2 characters long');
      jQuery('#verify_real_name').css({color: 'red'});
  }
}

function check_phone_number() {
  var phone_number = jQuery('#phone_number').val();
  phone_number = phone_number.replace(/(\s+|-)/g, '');
  if (phone_number.length == 8 || phone_number.length == 11) {
    jQuery('#verify_phone_number').html('Phone number appears valid');
    jQuery('#verify_phone_number').css({color: 'green'});
  } else {
    jQuery('#verify_phone_number').html('Phone number appears invalid');
    jQuery('#verify_phone_number').css({color: 'red'});
  }
}

function check_email() {
  var email = jQuery('#email').val().toLowerCase();
  var re = new RegExp(/[a-z_0-9]+@[a-z_0-9]+\.[a-z]/);
  if (re.exec(email)) {
    jQuery('#verify_email').html('Email address appears valid');
    jQuery('#verify_email').css({color: 'green'});
  } else {
    jQuery('#verify_email').html('Email address appears invalid');
    jQuery('#verify_email').css({color: 'red'});
  }
}

function check_birthday() {
  var birthday = jQuery('#birthday').val();
  if (birthday.length > 0) {
    jQuery('#verify_birthday').html('Birthday appears valid');
    jQuery('#verify_birthday').css({color: 'green'});
  }
}

function login_register_prompt() {
  register_content = "<div style=\"width: 450px; height: 450px;\"><div style=\"display: none; color: red; padding: 5px 5px 15px 5px;\" id=register_error></div><form id=register><table><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Username</span></td><td style=\"text-align: left;\"><input style=\"margin: 0px;\" type=\"text\" name=\"username\" id=username size=20 onblur=\"check_username()\"></input></td></tr><tr><td><span style=\"width: 150px;\">&nbsp;</span></td><td style=\"text-align: left;\"><span style=\"font-size: 11px;\" id=verify_username>Please enter between 4 and 15 characters</span></td></tr><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Password</span></td><td style=\"text-align: left;\"><input style=\"margin: 0px;\" type=\"password\" name=\"password\" id=password size=20 onblur=\"check_password()\"></input></td></tr><tr><td><span style=\"width: 150px;\">&nbsp;</span></td><td style=\"text-align: left;\"><span style=\"font-size: 11px;\" id=verify_password>Please enter between 6 and 15 characters</span></td></tr><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Confirm password</span></td><td style=\"text-align: left;\"><input style=\"margin: 0px;\" type=\"password\" name=\"confirm_password\" id=confirm_password size=20 onblur=\"check_confirm_password()\"></input></td></tr><tr><td><span style=\"width: 150px;\">&nbsp;</span></td><td style=\"text-align: left;\"><span style=\"font-size: 11px;\" id=verify_confirm_password>Please re-enter your password</span></td></tr><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Real name</span></td><td style=\"text-align: left;\"><input style=\"margin: 0px;\" type=\"text\" name=\"real_name\" id=real_name size=20 onblur=\"check_real_name()\"></input></td></tr><tr><td><span style=\"width: 150px;\">&nbsp;</span></td><td style=\"text-align: left;\"><span style=\"font-size: 11px;\" id=verify_real_name>Please enter your full name</span></td></tr><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Phone number</span></td><td style=\"text-align: left;\"><input style=\"margin: 0px;\" type=\"text\" name=\"phone_number\" id=phone_number size=20 onblur=\"check_phone_number()\"></input></td></tr><tr><td><span style=\"width: 150px;\">&nbsp;</span></td><td style=\"text-align: left;\"><span style=\"font-size: 11px;\" id=verify_phone_number>Please enter your phone number</span></td></tr><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Email</span></td><td style=\"text-align: left;\"><input style=\"margin: 0px;\" type=\"text\" name=\"email\" id=email size=20 onblur=\"check_email()\"></input></td></tr><tr><td><span style=\"width: 150px;\">&nbsp;</span></td><td style=\"text-align: left;\"><span style=\"font-size: 11px;\" id=verify_email>Please enter your email address</span></td></tr><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Birthday</span></td><td style=\"text-align: left;\"><input style=\"margin: 0px;\" type=\"text\" name=\"birthday\" id=birthday size=20 onblur=\"check_birthday()\"></input></td></tr><tr><td><span style=\"width: 150px;\">&nbsp;</span></td><td style=\"text-align: left;\"><span style=\"font-size: 11px;\" id=verify_birthday>Please select your birthday</span></td></tr></table><div style=\"text-align: left; padding-top: 20px;\"><input style=\"float: left;\" type=\"button\" onclick=\"register(contactBoxy, function () { window.location='/all-products';}); return false;\" value=\"Register &#62;&#62;\"></input><a href=\"#\" style=\"float: right;\" onclick=\"contactBoxy.setContent(login_content).center().setTitle('Please log in'); return false;\">Already have an account? Log in</a></div></form></div>";
  register_content += "<script>jQuery('#birthday').datepicker({maxDate: 0, changeMonth: true, changeYear: true, yearsRange: '-90:0', defaultDate: new Date(80,0,1), onClose: function(dateText) { check_birthday(); }}); </script>";

  login_content = "<div style=\"width: 300px; height: 130px;\"><div id=\"login_error\" class=\"popup-error\"></div><form id=login><table><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Username</span></td><td style=\"text-align: left;\"><input style=\"margin: 0px;\" type=\"text\" name=\"username\" id=username size=20></input></td></tr><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Password</span></td><td style=\"text-align: left;\"><input style=\"margin: 0px;\" type=\"password\" name=\"password\" id=password size=20></input></td></tr></table><div style=\"height:20px;\"></div><input style=\"float: left;\" type=\"submit\" name=\"submit\" onclick=\"login(contactBoxy, function () { window.location='/all-products';}); return false;\" value=\"Log in &#62;&#62;\"></input><a href=\"#\" style=\"float: right;\" onclick=\"contactBoxy.setContent(register_content).center().setTitle('Please register'); return false;\">No account? Register</a></form></div>";

  contactBoxy = new Boxy(login_content, {
          title: 'Please log in',
          draggable: false,
          modal: true,
	  unloadOnHide: true,
          closeText: '[close]'
  });
}

function redeem_login_register_prompt_success(contactBoxy) {
  load_welcome_script();
  contactBoxy.hide(); 
  $('#redeem_login_prompt').hide(); 
  $('#result2_contents').fadeIn(); 
  $('#card_pass').focus();
}

function redeem_login_register_prompt() {
  register_content = "<div style=\"width: 450px; height: 450px;\"><div style=\"display: none; color: red; padding: 5px 5px 15px 5px;\" id=register_error></div><form id=register><table><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Username</span></td><td style=\"text-align: left;\"><input style=\"margin: 0px;\" type=\"text\" name=\"username\" id=username size=20 onblur=\"check_username()\"></input></td></tr><tr><td><span style=\"width: 150px;\">&nbsp;</span></td><td style=\"text-align: left;\"><span style=\"font-size: 11px;\" id=verify_username>Please enter between 4 and 15 characters</span></td></tr><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Password</span></td><td style=\"text-align: left;\"><input style=\"margin: 0px;\" type=\"password\" name=\"password\" id=password size=20 onblur=\"check_password()\"></input></td></tr><tr><td><span style=\"width: 150px;\">&nbsp;</span></td><td style=\"text-align: left;\"><span style=\"font-size: 11px;\" id=verify_password>Please enter between 6 and 15 characters</span></td></tr><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Confirm password</span></td><td style=\"text-align: left;\"><input style=\"margin: 0px;\" type=\"password\" name=\"confirm_password\" id=confirm_password size=20 onblur=\"check_confirm_password()\"></input></td></tr><tr><td><span style=\"width: 150px;\">&nbsp;</span></td><td style=\"text-align: left;\"><span style=\"font-size: 11px;\" id=verify_confirm_password>Please re-enter your password</span></td></tr><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Real name</span></td><td style=\"text-align: left;\"><input style=\"margin: 0px;\" type=\"text\" name=\"real_name\" id=real_name size=20 onblur=\"check_real_name()\"></input></td></tr><tr><td><span style=\"width: 150px;\">&nbsp;</span></td><td style=\"text-align: left;\"><span style=\"font-size: 11px;\" id=verify_real_name>Please enter your full name</span></td></tr><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Phone number</span></td><td style=\"text-align: left;\"><input style=\"margin: 0px;\" type=\"text\" name=\"phone_number\" id=phone_number size=20 onblur=\"check_phone_number()\"></input></td></tr><tr><td><span style=\"width: 150px;\">&nbsp;</span></td><td style=\"text-align: left;\"><span style=\"font-size: 11px;\" id=verify_phone_number>Please enter your phone number</span></td></tr><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Email</span></td><td style=\"text-align: left;\"><input style=\"margin: 0px;\" type=\"text\" name=\"email\" id=email size=20 onblur=\"check_email()\"></input></td></tr><tr><td><span style=\"width: 150px;\">&nbsp;</span></td><td style=\"text-align: left;\"><span style=\"font-size: 11px;\" id=verify_email>Please enter your email address</span></td></tr><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Birthday</span></td><td style=\"text-align: left;\"><input style=\"margin: 0px;\" type=\"text\" name=\"birthday\" id=birthday size=20 onblur=\"check_birthday()\"></input></td></tr><tr><td><span style=\"width: 150px;\">&nbsp;</span></td><td style=\"text-align: left;\"><span style=\"font-size: 11px;\" id=verify_birthday>Please select your birthday</span></td></tr></table><div style=\"text-align: left; padding-top: 20px;\"><input style=\"float: left;\" type=\"button\" onclick=\"register(contactBoxy, function () { redeem_login_register_prompt_success(contactBoxy); }); return false;\" value=\"Register &#62;&#62;\"></input><a href=\"#\" style=\"float: right;\" onclick=\"contactBoxy.setContent(login_content).center().setTitle('Please log in'); return false;\">Already have an account? Log in</a></div></form></div>";
  register_content += "<script>jQuery('#birthday').datepicker({maxDate: 0, changeMonth: true, changeYear: true, yearsRange: '-90:0', defaultDate: new Date(80,0,1), onClose: function(dateText) { check_birthday(); }}); </script>";

  login_content = "<div style=\"width: 300px; height: 130px;\"><div class=\"popup-error\" id=login_error></div><form id=login><table><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Username</span></td><td style=\"text-align: left;\"><input style=\"margin: 0px;\" type=\"text\" name=\"username\" id=username size=20></input></td></tr><tr><td style=\"padding-bottom: 5px; padding-top: 5px; text-align: left;\"><span style=\"padding-right: 15px;\">Password</span></td><td style=\"text-align: left;\"><input style=\"margin: 0px;\" type=\"password\" name=\"password\" id=password size=20></input></td></tr></table><div style=\"height:20px;\"></div><input style=\"float: left;\" type=\"submit\" name=\"submit\" onclick=\"login(contactBoxy, function () { redeem_login_register_prompt_success(contactBoxy); }); return false;\" value=\"Log in &#62;&#62;\"></input><a href=\"#\" style=\"float: right;\" onclick=\"contactBoxy.setContent(register_content).center().setTitle('Please register'); return false;\">No account? Register</a></form></div>";

  contactBoxy = new Boxy(login_content, {
          title: 'Please log in',
          draggable: false,
          modal: true,
          unloadOnHide: true,
          closeText: '[close]'
  });
}

// TODO account information should go here
function load_welcome_script() {
  var username = readCookie('user');
  var credit = null;

  if (username) {
    $.post('/get-credits.php', {'username': username}, function(data) { credit = data; 
    jQuery('#welcome').html('<span style="padding: 5px;">Hello, '+username+'</span><a style="padding: 5px;" href="/shop.php">Shopping Cart</a>￥' + credit + '<a style="padding: 5px;" href="/logout.php">Log out</a>');
    }
    );
  } else {
    jQuery('#welcome').html('<a href="#" onclick="login_register_prompt(); return false;">Log in</a>');
  }
}

function set_user(username) {
  set_cookie('user', username, 720);
}

function slurp_cart_order() {
  var order = {};
  jQuery('#shopping-cart-summary tr').each(function () {
    var item_id = this.id;
    var item = jQuery(item_id);
    if (item_id != 'total-row' && item_id != 'shopping-header') {
      var item_num = parseInt(jQuery('#count-'+item_id).html());
      var item_cost = jQuery('#cost-'+item_id).html();
      if ($(this).attr('extra')) {
        order[item_id] = String(item_num) + ',' + $(this).attr('extra');
      } else {
        order[item_id] = String(item_num);
      }
    }
    var total = jQuery('#total-cell').html();
    order['total'] = total;
  });
  return order;
}

function handle_delivery_request() {
  var cart_order = slurp_cart_order();
  jQuery('#cart_contents').val(JSON.stringify(cart_order));
  if (jQuery('#payment_method').val() == 0) {
    jQuery('#delivery').submit();
  } else {
    jQuery.post('/cgi-bin/ding-huo.cgi', jQuery('#delivery').serialize());
    jQuery.post('/alipayto.php',
      { aliorder: 'Pie House',
        alibody: 'Thank you for ordering from Pie House!',
        alimoney: cart_order['total']
      },
      function (data) {
        location.href=data;
      }
    )
    return false;
  }
}

function attach_credits_handler() {
  var credits_node = $('#useable_credits');
  if (credits_node.size()) {
    credits_node.blur(blur_credits);
  }
}

function blur_credits() {
  var to_spend = get_credits_to_be_spent();
  var credits = get_total_user_credits();
  if (to_spend > credits) {
    $('#useable_credits').val(credits);
  }
  $.post('/calculate_cost.php', 
    { credits: get_credits_to_be_spent() }, 
    function (data) { $('#total-cell').html(data); } 
  );
}

function get_total_user_credits() {
  var credits_node = $('#credits');
  if (credits_node.size()) {
    return parseInt(credits_node.html());
  }
  return 0;
}

// XXX error handling
function get_credits_to_be_spent() {
  var credits_node = $('#useable_credits');
  if (credits_node.size()) {
    return parseInt(credits_node.val(), 10);
  }
  return 0;
}

