
function BigLounge(image)
{
  var left, top1, is_open;
  
  width = 0.9*screen.width;
  height = 0.9*screen.height;
  left = (screen.width - width)/2;
  top1 = (screen.height - height)/4;

  window.open(image, 'bigphoto', 'width=' + width + ',height=' + height + ',alwaysLowered=1,alwaysRaised=0,channelmode=0,dependent=0,directories=0,fullscreen=0,hotkeys=1,location=0,menubar=0,resizable=1,scrollbars=1,status=0,titlebar=0,toolbar=0,left=' + left + ',top=' + top1 + ',z-lock=0');
}


function isAmericanExpress(cc)
{
  firstdig = cc.substring(0,1);
  seconddig = cc.substring(1,2);
  if ((cc.length == 15) && (firstdig == 3) &&
      ((seconddig == 4) || (seconddig == 7)))
    return isCreditCard(cc);
  return false;
}

function isCreditCard(st) 
{
  // Encoding only works on cards with less than 19 digits
  if (st.length > 19)
    return (false);

  sum = 0; mul = 1; l = st.length;
  for (i = 0; i < l; i++) {
    digit = st.substring(l-i-1,l-i);
    tproduct = parseInt(digit ,10)*mul;
    if (tproduct >= 10)
      sum += (tproduct % 10) + 1;
    else
      sum += tproduct;
    if (mul == 1)
      mul++;
    else
      mul--;
  }

  if ((sum % 10) == 0)
    return (true);
  else
    return (false);
}


function isMasterCard(cc)
{
  firstdig = cc.substring(0,1);
  seconddig = cc.substring(1,2);
  if ((cc.length == 16) && (firstdig == 5) &&
      ((seconddig >= 1) && (seconddig <= 5)))
    return isCreditCard(cc);
  return false;
}


function isVisa(cc)
{
  if (((cc.length == 16) || (cc.length == 13)) &&
      (cc.substring(0,1) == 4))
    return isCreditCard(cc);
  return false;
}


function OnAddToBasket(form, IDDataContent_product, quantity, is_cigar, brand)
{

  if(!isInteger(quantity.value))
  {
    alert('You must enter a number!');
    quantity.focus();
  }
  else if(parseInt(quantity.value) <= 0)
  {
    alert('You must enter a number!');
    quantity.focus();
  }
  else
  {
    form.parameters.value = "add=1&IDDataContent_product=" + IDDataContent_product + "&quantity=" + quantity.value + "&is_cigar=" + is_cigar + '&brand=' + brand;
    form.form_action.value = 'add';
    
    //alert(form.parameters.value);
    
    form.submit();
  }
}


function OnBrand(form, brand)
{
  var select;
  
  select = form.brand;
  
  for(var i = 0; i < select.options.length; i++)
  {
    if(select.options[i].text == brand)
    {
      select.selectedIndex = i;
      break;
    }
  }
  
  form.action= 'products.asp';
  form.form_action.value = 'products';
  form.submit();
}


function OnAsAbove(form, asabove)
{
  if(asabove.checked)
  {
    form.billing_street1.value = form.shipping_street1.value;
    form.billing_street2.value = form.shipping_street2.value ;
    form.billing_city.value =  form.shipping_city.value;
    form.billing_state.value = form.shipping_state.value;
    form.billing_zip.value = form.shipping_zip.value;
    form.billing_country.selectedIndex = form.shipping_country.selectedIndex;
  }
  else
  {
    form.billing_street1.value = '';
    form.billing_street2.value = '';
    form.billing_city.value = '';
    form.billing_state.value = '';
    form.billing_zip.value = '';
    form.billing_country.selectedIndex = 0;
  }
}


function OnChangeAccessory(acccessories)
{
  if(acccessories.selectedIndex != 0)
  {
    acccessories.form.form_action.value = "accessories"
    acccessories.form.action = 'products_accessories.asp';
    acccessories.form.submit();
  }
}

function OnChangeAccessoryHome(form, accessory)
{
  var accessories, i, pattern;
  
  pattern = new RegExp(accessory, "gi");
    
  for(i = 0; i < form.accessories.options.length; i++)
  {
    if(pattern.test(form.accessories.options[i].text))
    {
      //alert(form.accessories.options[i].text)
      form.accessories.selectedIndex = i;
      break;
    }
  }
  
  if(i < form.accessories.options.length)
  {
    form.action = 'products_accessories.asp';
    form.submit();
  }  
  
}



function OnChangeBrand(brand)
{
  var action;
  
  if(brand.selectedIndex != 0)
  {
    action = brand.options[brand.selectedIndex].text;
    
    action = action.replace(/\./g, '__')
    action = action.replace(/\s{2,}/g, ' ')
    action = action.replace(/\s/g, '-')
    //action = action.replace(/'/g, '')
    
    action += '.asp';
    
    //alert(action)
    
    brand.form.form_action.value = "products";
    brand.form.action = action;
    brand.form.submit();
  }
}


function OnChangeShippingSelect(form)
{
  form.submit();
}


function OnChangeCountry(form)
{
  form.submit();
}


function OnEnterSite(form)
{
  var ok;
  
  ok = true;
  
  if(!form.rdo_your_country[0].checked && !form.rdo_your_country[1].checked)
  {
    ok = false;
    alert('You must enter a value for your location!');
  }
  
  else if(ok && !form.o18[0].checked && !form.o18[1].checked)
  {
    ok = false;
    alert('You must complete the Age Declaration!');
  }
  
  else if(ok && form.o18[1].checked)
  {
    ok = false;
    alert('You cannot use this site unless you are over 18 years of age!');
  }
  
  if(ok)
    form.submit();
}


function OnDelete(form, ID)
{
  if(confirm('Are you sure you want to delete this item from your basket?'))
  {
    form.parameters.value="action=delete&ID=" + parseInt(ID);
    form.submit();
  }
}


function OnLargePic(name)
{
  var left, top1, is_open;
  
  width = 500;
  height = 500;
  left = (screen.width - width)/2;
  top1 = (screen.height - height)/4;

  is_open = window.open('photo_big.asp?name=' + escape(name), 'bigphoto', 'width=' + width + ',height=' + height + ',alwaysLowered=1,alwaysRaised=0,channelmode=0,dependent=0,directories=0,fullscreen=0,hotkeys=1,location=0,menubar=0,resizable=1,scrollbars=1,status=0,titlebar=0,toolbar=0,left=' + left + ',top=' + top1 + ',z-lock=0');
  
  if(is_open == null)
    alert('Please allow pop-ups on your browser to view pictures of your favourite cigars!')
}


function OnLogin(form)
{
  var ok;
  
  ok = true;
  
  if(ok && !isEmail(form.email_address.value))
  {
    alert('You must enter a valid email address!');
    form.email_address.focus();
    ok = false;
  }
  
  else if(ok && form.password.value.length == 0)
  {
    alert('You must enter a password!');
    form.password.focus();
    ok = false;
  }
  
  if(ok)
  {
    form.form_action.value = "login"
    form.submit();
  }
}

var OnLogin_pointer = OnLogin;


function OnForgotten(form)
{
  var ok;
  
  ok = true;
  
  if(ok && !isEmail(form.email_address.value))
  {
    alert('You must enter a valid email address!');
    form.email_address.focus();
    ok = false;
  }
    
  if(ok)
  {
    form.form_action.value = "forgotten"
    form.submit();
  }
}


var OnForgotten_pointer = OnForgotten;



function OnEnterHit(form, event, function_to_call)
{
  var keycode;
  
  if (window.event) 
    keycode = window.event.keyCode;
  else if (e)
    keycode = e.which;
  else 
    return true;

  if(keycode == 13)
  {
    function_to_call(form);
    return false;
  }
  else
    return true;
}


function OnPage(form, page)
{
  form.action = page;
  form.submit();
}


function OnPlaceOrder(form, secure)
{
  var ok;
    
  ok = true
  
  if(ok && form.name.value.length == 0)
  {
    form.name.focus();
    alert('You must enter a name!');
    ok = false;
  }
  
  else if(ok && form.phone_home.value.length == 0)
  {
    form.phone_home.focus();
    alert('You must enter a home phone number!');
    ok = false;
  }
  
  else if(ok && form.phone_work.value.length == 0)
  {
    form.phone_work.focus();
    alert('You must enter a work phone number!');
    ok = false;
  }

  else if(ok && !isEmail(form.email_address.value))
  {
    form.email_address.focus();
    alert('You must enter a valid email address!');
    ok = false;
  }

  else if (ok && form.dob_day.selectedIndex == 0) {
  form.dob_day.focus();
     alert('You must enter your birthday!');
     ok = false;
  }

  else if (ok && form.dob_moth.selectedIndex == 0) {
  form.dob_moth.focus();
     alert('You must enter your birthday!');
     ok = false;
  }

  else if(ok && form.shipping_street1.value.length == 0)
  {
    form.shipping_street1.focus();
    alert('You must enter a shipping street address!');
    ok = false;
  }
  
  else if(ok && form.shipping_city.value.length == 0)
  {
    form.shipping_city.focus();
    alert('You must enter a shipping city!');
    ok = false;
  }

  else if(ok && form.shipping_state.value.length == 0)
  {
    form.shipping_state.focus();
    alert('You must enter a shipping state!');
    ok = false;
  }

  else if(ok && form.shipping_zip.value.length == 0)
  {
    form.shipping_zip.focus();
    alert('You must enter a shipping zip!');
    ok = false;
  }
  
  else if(ok && form.shipping_country.selectedIndex == 0)
  {
    form.shipping_country.focus();
    alert('You must enter a shipping country!');
    ok = false;
  }
  
  else if(ok && form.billing_street1.value.length == 0 && !form.asabove.checked)
  {
    form.billing_street1.focus();
    alert('You must enter a billing street address!');
    ok = false;
  }
  
  else if(ok && form.billing_city.value.length == 0 && !form.asabove.checked)
  {
    form.billing_city.focus();
    alert('You must enter a billing city!');
    ok = false;
  }

  else if(ok && form.billing_state.value.length == 0 && !form.asabove.checked)
  {
    form.billing_state.focus();
    alert('You must enter a billing state!');
    ok = false;
  }

  else if(ok && form.billing_zip.value.length == 0 && !form.asabove.checked)
  {
    form.billing_zip.focus();
    alert('You must enter a billing zip!');
    ok = false;
  }
  
  else if(ok && form.billing_country.selectedIndex == 0 && !form.asabove.checked)
  {
    form.billing_country.focus();
    alert('You must enter a billing country!');
    ok = false;
  }

  else if(ok && !ValidCreditCard(form.credit_card_type.options[form.credit_card_type.selectedIndex].text, form.credit_card_no.value))
  {
    form.credit_card_no.focus();
    alert('You must enter a valid credit card number!');
    ok = false;
  }
  
  else if(ok && form.credit_card_security_number.value.length == 0)
  {
    form.credit_card_security_number.focus();
    alert('You must enter a credit card security number!');
    ok = false;
  }

  else if(ok && form.name_on_card.value.length == 0)
  {
    form.name_on_card.focus();
    alert('You must enter a name on your credit card!');
    ok = false;
  }
  
  if(ok)
  {
    form.form_action.value = "place_order"
    OnPage(form, secure + 'thank_you.asp');
  }
}


function OnSearch(form)
{
  if(form.cigar_search.value.length == 0)
  {
    alert('You must enter text to search for!');
    form.cigar_search.focus();
  }
  else
  {
    form.form_action.value='search';
    form.action='products.asp';
    form.submit();
  }
}

var OnSearch_pointer = OnSearch;


function OnSpecials(form)
{
  form.form_action.value='specials';
  form.action='products.asp';
  form.submit();
}


function OnSubmitPassword(form)
{
  var ok;
  
  ok = true;
  
  if(ok && form.password.value.length == 0)
  {
    alert('You must enter a valid password!');
    form.password.focus();
    ok = false;
  }
  
  else if(ok && form.password.value != form.confirm_password.value)
  {
    alert('The passwords don\'t match!\nPlease try again.');
    form.password.value = '';
    form.confirm_password.value = '';
    form.password.focus();
    ok = false;
  }
  
  else if(ok && (form.password.value.length < 6 || form.password.value.length > 10))
  {
    alert('The password must be from 6 to 10 characters long and contain at least 1 digit!\nPlease try again.');
    form.password.value = '';
    form.confirm_password.value = '';
    form.password.focus();
    ok = false;
  }
  
  else if(ok && (form.password.value.search(/\d/) == -1))
  {
    alert('The password must be from 6 to 10 characters long and contain at least 1 digit!\nPlease try again.');
    form.password.value = '';
    form.confirm_password.value = '';
    form.password.focus();
    ok = false;
  }

  
  if(ok)
  {
    form.form_action.value = 'add_user';
    form.submit();
  }
}


function OnReadMore(form, brand, code, page)
{
  var select;
  
  select = form.brand;
  
  for(var i = 0; i < select.options.length; i++)
  {
    if(select.options[i].text == brand)
    {
      select.selectedIndex = i;
      break;
    }
  }
  
  
  form.form_action.value = 'products';
  form.action = page + '#' + code;
  form.submit();
}


function OnSubscribe(form)
{
  if(!isEmail(form.email_address.value))
  {
    alert('You must enter a valid email address!');
    form.email_address.focus();
  }
  else
  {
    form.form_action.value = 'subscribe';
    form.submit();
  }
}


var OnSubscribe_pointer = OnSubscribe;


function OnUpdate(form)
{
  var ok;
  
  ok = true;
  
  for(i = 0; i < form.elements.length && ok; i++)
  {
    if(form.elements[i].name.search(/quantity/) != -1)
    {
      if(!isInteger(form.elements[i].value))
      {
        form.elements[i].focus();
        alert('You can only enter numbers greater than 0!');
        ok = false;
      }
    }
  }
  
  if(ok)
  {
    form.parameters.value="action=update";
    form.submit();
  }
}


function ReDirectToHistory(form, name)
{
  form.action = "history.asp?login_name=" + name;
  form.submit();
}


function ValidCreditCard(credit_card_type, credit_card_no)
{
  credit_card_no = credit_card_no.replace(/\s/g, '');

  switch(credit_card_type)
  {
    case 'Visa':
      ok = isVisa(credit_card_no) 
    break;
    
    case 'MasterCard':
      ok = isMasterCard(credit_card_no);
    break;

    case 'American Express':
      ok = isAmericanExpress(credit_card_no);
    break;

    case 'Diners Club':
      ok = isCreditCard(credit_card_no) 
    break;
  }
  
  return ok;
}