function NewWindow (mypage, myname, w, h, scroll, pos) {
  var left;
  var top;

  if (pos == "random") {
    left = (screen.width)?Math.floor(Math.random()*(screen.width-w)) : 100;
    top = (screen.height)?Math.floor(Math.random()*((screen.height-h)-75)):100;
  } else if (pos == "center") {
    left = (screen.width)  ? (screen.width-w)/2  : 100;
    top  = (screen.height) ? (screen.height-h)/2 : 100;
  } else if (pos == "centertop") {
    left = (screen.width)  ? (screen.width-w)/2  : 100;
    top  = 0;
  } else {
    left = 0;
    top  = 20;
  }
  var settings='width='+w+',height='+h+',top='+top+',left='+left+',scrollbars='+scroll+',location=no,directories=no,status=no,menubar=no,toolbar=no,resizable=yes';
  var newwin = window.open(mypage,myname,settings);
  newwin.opener = self;
  newwin.focus();
}

function popup(url) {
  NewWindow(url, 'image', 700, 700, 'no', 'centertop');
}

function popup_dialog (url) {
  if (!url) { url = 'about:blank' }
  NewWindow(url, 'dialog', 400, 500, 'yes', 'center');
}



// this is for links on a popup that need to close the popup and go to
// a URL in the main browser window

function popup_action (url) {
  var mainwin;
  if (self.opener) {
    self.close();
    mainwin = self.opener;
  } else {
    mainwin = self;
  }
  mainwin.location = url;
}


//----------------------------------------------------------------------
// validate user input

function escape_ix (txt) {
  return txt.replace(/"*\b(and|or|not|index|in|rec|mref|where|with|from|to|is|within|sort|all|levelwith|andpath|ix_[a-z_]*)\b"*/ig, '"$1"');
}


function valid_date (txt) {
  txt = txt.replace(/ /g, '');
  if (!txt) {
    return true;
  }
  if (txt.match(/^\d{1,4}$/)) {
    return true;
  }
  if (txt.match(/^\d{1,2}\/\d{1,2}\/\d{1,4}$/)) {
    var ar = txt.split('/');
    var day   = parseInt(ar[0]);
    var month = parseInt(ar[1]);
    var year  = parseInt(ar[2]);
    //alert(''+day+','+month+','+year);
    if (month < 1 || month > 12 || day < 1 || day > 31) {
      return false;
    }
    switch (month) {
      case 9: case 4: case 6: case 11:
        if (day > 30)
	  return false;
        break;
      case 2:
        if (day > 29 ||
	  (day == 29 && (year % 4) != 0 && (year % 500) == 0)){
	  return false;
	}
	break;
    }
    return true;
  }
  return false;
}


//----------------------------------------------------------------------
// deal with list page selections


// select/deselect all checkboxes in the form

function select_all (form)
{
  var i;
  var deselect = true;

  // select all the checkboxes in the form
  for (i=0; i<form.elements.length; i++) {
    if (form.elements[i].type == 'checkbox') {
      if (!form.elements[i].checked) {
        deselect = false;
        form.elements[i].checked = true;
      }
    }
  }

  // if all were selected to start with, deselect them all
  if (deselect) {
    for (i=0; i<form.elements.length; i++) {
      if (form.elements[i].type == 'checkbox') {
        form.elements[i].checked = false;
      }
    }
  }
}


// check that some items have been selected

function items_selected (form)
{
  var i;

  for (i=0; i<form.elements.length; i++) {
    if (form.elements[i].type == 'checkbox' && form.elements[i].checked) {
      return true;
    }
  }
  return false;
}


// check whether all items have been selected

function all_items_selected (form)
{
  var i;

  for (i=0; i<form.elements.length; i++) {
    if (form.elements[i].type == 'checkbox' && !form.elements[i].checked) {
      return false;
    }
  }
  return true;
}



// check that some items have been selected; if not, go to URL

function check_selection_goto (form, url)
{
  if (!items_selected(form)) {
    window.location = url;
  }
}


// check whether any of the selected items are not for sale

function items_not_for_sale (form)
{
  var i;
  var info = new Object();
  info.ok = '';
  info.nok = '';

  for (i=0; i<form.elements.length; i++) {
    if (form.elements[i].type == 'checkbox' && form.elements[i].checked) {
      var n = form.elements[i].name.replace(/[^0-9]/g, '');
      var fs_name = 'forsale'+n;
      var hdn = eval('form.'+fs_name);
      if (hdn.value == 'N') {
        if (info.nok)
          info.nok = info.nok + '&';
        info.nok = info.nok + 'item' + n + '=' + form.elements[i].value;
      } else {
        if (info.ok)
          info.ok = info.ok + '&';
        info.ok = info.ok + 'okitem' + n + '=' + form.elements[i].value;
      }
    }
  }
  return info;
}


// check whether a particular item has been selected

function item_selected (form, id)
{
  var i;

  for (i=0; i<form.elements.length; i++) {
    if (form.elements[i].type == 'checkbox' &&
        form.elements[i].value == id &&
        form.elements[i].checked) {
      return true;
    }
  }
  return false;
}



//----------------------------------------------------------------------
// PRINTBUTTON STUFF


// zero-pad a number [00-10]
function zero_it(num)
{
  if(num < 10) {
    return "0" + num;
  } else {
    return num;
  }
}


function pb_rearrange_hiddens()
{
  var a = "";
  var j = 0;
  var form = document.item_form;
  if(!form) return;

  for (i=0; i<form.elements.length; i++) {
    if (form.elements[i].type == 'checkbox') {
      var buy_input = eval('document.pb_buy_form.buy'+j);
      if (form.elements[i].checked) {
        buy_input.value = "y";
      } else {
        buy_input.value = "";
      }
      j++;
    }
  }
//   for(var i = 0; i < document.pb_list_form.bonb.length; i++) {
//     a = a + i + " " + document.pb_list_form.bonb[i].name + "\n";
//   }
//   alert(a);
}


