function form_checker(f, req_fileds, req_fileds_names, req_fileds_max) {
    for (var i=0; i<req_fileds.length; i++) {
      if (f.elements[req_fileds[i]].options) {
        if (f.elements[req_fileds[i]].selectedIndex==0) {
           alert('Please fill in the field ['+req_fileds_names[i]+']');
           return false;
        }
      }else{
        if (f.elements[req_fileds[i]].value=='') {
           alert('Please fill in the field ['+req_fileds_names[i]+']');
           return false;
        } else if ((req_fileds_max[i]>0) && (f.elements[req_fileds[i]].value.length>req_fileds_max[i])) {
           alert('The field exceeds maximal value ['+req_fileds_names[i]+']');
           return false;
        }
      }
    } 
    return true;
}
function isNumber(val) {
  if (!val) return false;
  if (isNaN(val)) return false;
  return true;
}

function check_form() {
   var f = document.forms['order'];
   var req_fileds = new Array('billing_address1','billing_city','billing_state_id','billing_zipcode','billing_first_name','billing_last_name','captcha','first_name','last_name','address1','city','state_id','zipcode','phone_number','email');
   var req_fileds_names = new Array('Billing Address Line 1','Billing City','Billing State','Billing Zipcode','Billing First Name','Billing Last Name','Shown symbols','Shipping First Name','Shipping Last Name','Shipping Address Line 1','Shipping City','Shipping State','Shipping Zipcode','Shipping Phone Number','Shipping Email');
   var req_fileds_max = new Array(39,39,0,10,39,39,10,39,39,39,39,0,10,100,100);

   if (!form_checker(f, req_fileds, req_fileds_names, req_fileds_max)) {
     return false;
   }

   if (f.elements['payment_gc'] && f.payment_gc.checked) {
     if (f.gc_n.selectedIndex==0) {
        alert('You should select gift card');
        return false;
     }
   } else {       
     var cc_req_fileds = new Array('cc_number','cc_exp_date_1','cc_exp_date_2','cc_cvv');
     var cc_req_fileds_names = new Array('Credit Card Number','Credit Card Expiration Date','Credit Card Expiration Date','Credit Card CVV Code');
     var cc_req_fileds_max = new Array(20,0,0,5);
     if (!form_checker(f, cc_req_fileds, cc_req_fileds_names, cc_req_fileds_max)) {
       return false;
     }
   }
   if (f.cc_number.value.length>0) {
     return CheckCardNumber(f);
   }else{
    return true;
   }
}

function select_payment_type() {
   var f = document.forms['order'];
   if (f.payment_gc.checked) {
      var layer_info = (document.getElementById)? document.getElementById('pmethod') : document.all['pmethod'];
      layer_info.innerHTML = 'by GIFT CARD';
   } else {
      var layer_info = (document.getElementById)? document.getElementById('pmethod') : document.all['pmethod'];
      layer_info.innerHTML = 'by CREDIT CARD';
      f.gc_n.selectedIndex=0;
   }
}

function copy_address() {
  var from_fileds = new Array('first_name','last_name','address1','address2','city','state_id','zipcode');
  var to_fileds = new Array('billing_first_name','billing_last_name','billing_address1','billing_address2','billing_city','billing_state_id','billing_zipcode');
  var fileds_is_select = new Array(false,false,false,false,false,true,false);
  var f = document.forms['order'];
  for (var i=0; i<from_fileds.length; i++) {
    if (fileds_is_select[i]) {
       f.elements[to_fileds[i]].selectedIndex=f.elements[from_fileds[i]].selectedIndex;
    }else{
       f.elements[to_fileds[i]].value=f.elements[from_fileds[i]].value;
    }
  }
  f.ssd.checked = true;
}
function change_billing_address() {
  var f = document.forms['order'];
  f.ssd.checked = false;
}

function check_gift() {
  var f = document.forms['giftcard'];
  var req_fileds = new Array('gcnumber1','gcnumber2','gc_cvv', 'captcha');
  var req_fileds_names = new Array('Gift Card Number','Gift Card Number','CVV Code','Shown Symbols');
  var req_fileds_max = new Array(19,5,5);
  if (form_checker(f, req_fileds, req_fileds_names, req_fileds_max)) {
    f.elements['add_gc'].value='true';
    return true;
  }else{
    return false;
  }
}
function set_balance_card(id) {
  var f = document.forms['giftcard'];
  f.elements['balance_gc'].value=id;
}

function remove_card(id) {
  var f = document.forms['giftcard'];
  if (confirm('Are you sure you want to remove gift card?')) {
    f.elements['remove_gc'].value=id;
    f.submit();
  }
}
function reload_card(id) {
  var f = document.forms['giftcard'];
  f.elements['reload_gc'].value=id;
  f.submit();
}
function do_payment() {
   var f = document.forms['confirm'];
   f.btn_payment.disabled = true;
   f.payment_process.value='true';
   f.submit();
}
function check_reload() {
  var f = document.forms['giftcard'];
  var reload_from='cc';
  if (f.elements['reload_from'] && f.elements['reload_from'].length) {
     for (var i=0; i<f.elements['reload_from'].length; i++) {
       if (f.elements['reload_from'][i].checked) {
          reload_from = f.elements['reload_from'][i].value;
       }
     }
  }

  var req_fileds;
  var req_fileds_names;
  var req_fileds_max;
  var req_fileds_is_select;


  if (reload_from=='cc') {
    req_fileds = new Array('cc_name','cc_number','cc_exp_date_1','cc_exp_date_2','cc_cvv','reload_amount', 'captcha');
    req_fileds_names = new Array('Credit Card Name','Credit Card Number','Credit Card Expiration Date','Credit Card Expiration Date','CVV Code','Desired Amount','Shown symbols');
    req_fileds_max = new Array(39,20,0,0,5,7, 0);
    req_fileds_is_select = new Array(false,false,true,true,false,false,false);
  }else{
    req_fileds = new Array('gc_from','reload_amount', 'captcha');
    req_fileds_names = new Array('Gift Card','Desired Amount','Shown symbols');
    req_fileds_max = new Array(0,7,0);
  }
  if (form_checker(f, req_fileds, req_fileds_names, req_fileds_max)) {
     if (!isNumber(f.reload_amount.value) || f.reload_amount.value<=0) {
       alert('Amount value is not correct.');       
       return;
     }
     if (f.reload_amount.value>=100) {
       alert('The entered amount is too large. Please enter a value between 0 and $100.');
       return;
     }
     if (reload_from=='cc') {
       if (CheckCardNumber(f)) {
          f.elements['giftcard_transfer'].value=reload_from;
          f.elements['reload_btn'].disabled = true;
          show_div('reload_processing',1);
          f.submit();
       }
     } else {
       f.elements['giftcard_transfer'].value=reload_from;
       f.elements['reload_btn'].disabled = true;
       show_div('reload_processing',1);
       f.submit();
     }
  }
}

function saveSidCookies(val) {
  set_cookie('sid',val);
}
function getSidFromCookies() {
  get_cookie('sid');
}
function show_div(div,action) {
   var layer = (document.getElementById)? document.getElementById(div) : document.all[div];
   if(layer && layer.style) {
     if (action==1) {
       layer.style.visibility='visible';
     }else{
       layer.style.visibility='hidden';
     }
   }
}