function cb_copy(cb)
{
  var ae = document.getElementsByTagName('input');
  for (i=0;i < ae.length;i++)
  {
    e = ae[i];
    if (e.type=='checkbox') e.checked = cb.checked;
  }
}

function pop_eula()
{
  var u = '/signup/eula.php?a=print';
  pop_window(u,600,800);
}

function pop_manual()
{
  wh = window.innerHeight;
  ww = window.innerWidth;
  var u = '/manual/popup.php?r=' + window.location;
  var n = '_gsetx_pop_manual';
  var attr = 'directories=no,location=no,menubar=yes,resizable=yes,scrollbars=yes,status=no,toolbar=no,';
  attr+= 'width=400,height=300,left=' + ((ww/2)-200)  + ',top=' + ((wh/2)-150);
  var w = window.open(u,n,attr); // ,name,attr);
  if (w) w.focus();
}

function pop_preview()
{
  var u = '/listing/preview.php';
  var w = window.open(u, 'gsetx_preview', 'fullscreen=no,toolbar=no,status=no,menubar=yes,scrollbars=no,resizable=no,directories=no,location=no,width=800,height=600,left=20,top=20');
  if (w) w.focus();
  return true;
}

function pop_window(u,h,w)
{
  var x = (window.screenX||window.screenLeft)+20;
  var y = (window.screenY||window.screenTop)+20;
  
  h += 50;
  w += 50;
  
  var a = 'fullscreen=no,toolbar=no,status=no,menubar=yes,scrollbars=yes,resizable=yes,directories=no,location=no,';
  a += 'width=' + w + ',height=' + h + ',left=' + x + ',top=' + y;
  var n = '_gsetx_pop';

  var x = window.open(u,n,a);
  x.resizeTo(w,h);
  x.focus();
}

function first_field_focus(skip)
{
  var look = 0;

  if (document.forms.length == 0) return false;

  var fs = document.forms;
  var fc = fs.length;
  var fi = 0;
  for (fi;fi<fc;fi++)
  {
    var es = fs[fi].elements;
    var ec = es.length;
    var ei = 0;
    for (ei;ei<ec;ei++)
    {
      var e = es[ei];
      //alert(e.type + ', ' + look + ', ' + skip);
      if (e.type == 'text')
      {
        look++;
        //e.focus();
        e.select();
        if (look>skip) return true;
      }
    }
  }
  return false;
}

function set_element_text(id,text)
{
  var e = document.getElementById(id);
  if (e)
  {
    if ((e.type == 'textarea') || (e.type == 'button') || (e.type == 'text')) { if (!text) text = ''; e.value = text; }
    else { if (!text) text = '&nbsp;'; e.innerHTML = text; }
  }
  else
    alert('Help!');
}

function form_order_confirm(cb)
{
  var form = cb.form;
  var c = form.elements.length;
  var i = 0;
  var v = null;
  
  // Disable all elements with the same name
  for (i=0;i<c;i++)
  {
    var e = form.elements[i];
    if (e.name==cb.name) e.name = 'cc';
  }

  var e = document.createElement('input');
  e.name = 'c';
  e.type = 'hidden';
  e.value = cb.value;
  form.appendChild(e);
  
  return true;
}

function form_disable(f)
{
  for (i=0;i<f.elements.length;i++)
  {
    var e = f.elements[i];
    if (e.type=='submit')
    {
      e.className = 'cb_dont';
      e.disabled=true;
    }
  }
}

function form_payment_validate(form)
{
  // Prepare
  var cc_num,cc_vid,cc_exm,cc_exy;
  c = form.elements.length;
  dt = new Date();
  m = dt.getMonth()+1;
  y = dt.getYear();
  if (y < 1000) y+=1900; // IE6 says 2007, FF1 says 107 (like perl)
  
  // Collect
  cc_num = document.getElementById('cc_num');
  cc_vid = document.getElementById('cc_vid');
  cc_exm = document.getElementById('cc_exm');
  cc_exy = document.getElementById('cc_exy');
  
  // Check
  if (cc_num.value.length<13)
  {
    to_type_error(cc_num);
    //alert('Invalid Credit Card Number');
    return false;
  }
  if (cc_vid.value.length<3)
  {
    to_type_error(cc_vid);
    //alert('Invalid Credit Card Verification');
    return false;
  }
  if ( (cc_exy.value < y) || ((cc_exy.value==y) && (cc_exm.value<=m)) )
  {
    to_type_error(cc_exm);
    to_type_error(cc_exy);
    //alert('Invalid Credit Card Expiration');
    return false;
  }
  
  var c = form.elements.length;
  for (i=0;i<c;i++) 
  {
    var e = form.elements[i];
    if (e.name=='c') e.readonly = true;
  }
  
  return true;
}

function form_shipping_label_validate(form)
{
  var c = form.elements.length;
  var err = 0;
  
  // Collect
  for (i=0;i<c;i++)
  {
    var e = form.elements[i];
    if (e.name=='weight')
    {
      v = parseInt(e.value);
      if (v < 0) { err++; alert('Invalid Weight'); }
    }
    else if (e.name=='h')
    {
      v = parseInt(e.value);
      if (v < 0) { err++; alert('Invalid Height'); }
    }
    else if (e.name=='l')
    {
      v = parseInt(e.value);
      if (v < 0) { err++; alert('Invalid Height'); }
    }
    else if (e.name=='w')
    {
      v = parseInt(e.value);
      if (v < 0) { err++; alert('Invalid Height'); }
    }
  }
  if (err > 0) return false;
}

// deprecated
function item_view(id)
{
  var u = '/item/' + id;
  window.location.href = u;
}

function to_ccnumber(e)
{
  var v = e.value.replace(/[^\d]/g,'');
  var re = /^(3|4|5|6)\d{13,16}$/;
  if (!re.test(v)) { to_type_error(e); e.value = ''; }
  else { to_type_success(e); e.value = v; }
}

// input validation functions, cast to right type or erase
function to_date(elem)
{
  //var re1 = /^(0?[1-9]|1[012])([\-\/])(0?[1-9]|[12][0-9]|3[01])\2((19|20)\d\d)$/; // mm/dd/yyyy with - or /
  //if (re1.test(elem.value)) return to_type_success(elem);

  var m = null;
  // fix 'yyyy/mm/dd with - or /' to 'mm/dd/yyyy'
  var re = /^((19|20)\d\d)([\-\/])(0?[1-9]|1[012])\3(0?[1-9]|[12][0-9]|3[01])$/; //
  if (re.test(elem.value))
  {
    m = re.exec(elem.value);
    elem.value = m[4] + '/' + m[5] + '/' + m[1];
  }

  // Fix mmddyy to mm/dd/yyyy
  var re = /^(\d\d)(\d\d)(\d\d)$/; // yyyy/mm/dd with - or /
  if (re.test(elem.value))
  {
    m = re.exec(elem.value);
    elem.value = m[1] + '/' + m[2] + '/' + (m[3] > 59 ? '19' + m[3] : '20' + m[3]);
  }

  var dt = new Date(elem.value);
  if (dt.toString() != 'Invalid Date')
  {
    elem.value = (dt.getMonth() + 1) + '/' + dt.getDate() + '/' + dt.getFullYear();
    return to_type_success(elem);
  }
  to_type_error(elem);
}

function to_email(elem,r)
{
  var re = /^[a-zA-Z0-9_\.\-]+\@[a-zA-Z0-9\-]+\.[a-zA-Z0-9]{2,4}$/;
  if ( ((r) || (elem.value)) && (!re.test(elem.value))) to_type_error(elem);
  else to_type_success(elem);
}

function to_number(elem)
{
  re = /^(\d+|\d+\.\d+|\.\d+)$/;
  if (!re.test(elem.value)) to_type_error(elem);
  else to_type_success(elem);
  //else if (type=='f') re = new RegExp('^([0-9]+\.?[0-9]*|\.[0-9]+)$');
  //else if (type == 'i') re = new RegExp('^[0-9]+$');
}

function to_phone(elem)
{
  var buf = elem.value.toString();
  var cln = buf.replace(/[^\d]/g,'');

  to_type_success(elem);
  if (cln.length==10)
  {
    elem.value = cln.substr(0,3) + '.' + cln.substr(3,3) + '.' + cln.substr(6,4);
  }
  else to_type_error(elem);
}

function to_url(elem)
{
  var re = new RegExp("^(http|https|ftp):\/\/(%[[:digit:]A-Fa-f][[:digit:]A-Fa-f]|[-_.!~*';/?:@&=+$,[:alnum:])+");
  var re = new RegExp("^(http|https|ftp)://");
  if (!re.test(elem.value)) to_type_error(elem);
  else to_type_success(elem);
}

function to_type_error(elem) { elem.style.border = '1px solid #f00'; }
function to_type_success(elem) { elem.style.border = '1px solid #999'; }

function trim(str) { return str.replace(/^\s*|\s*$/g,""); }

function sf(elem)
{
  //var v = elem.value; // .replace(/(^\s+|\s$)/g,'');
  //if (v=='') elem.value = 'Search';
  //else if (v=='Search') elem.value = '';
  //else elem.value = v;
}

function manu_check(e)
{
  if (e.value == -1) manu_tog();
}

function manu_tog()
{
  mdd = document.getElementById('mdd');
  mff = document.getElementById('mff');
  mtb = document.getElementById('mtb');
  if (mtb.style.display=='none')
  {
    mdd.style.display='none';
    mtb.style.display='inline';
    mtb.value = mdd.options[mdd.selectedIndex].text;
    if (mdd.value == -1) mtb.value = '';
    mff.value = 'mtb';
  }
  else
  {
    mdd.style.display='block';
    mtb.style.display='none';
    mff.value = 'mdd';
  }
}
