/**
 * returns an AJAXable instance
 * source from http://www.codepost.org/view/59
 */
function createXMLHttpRequest()
{
  var types = [
    'Microsoft.XMLHTTP',
    'MSXML2.XMLHTTP.5.0',
    'MSXML2.XMLHTTP.4.0',
    'MSXML2.XMLHTTP.3.0',
    'MSXML2.XMLHTTP'
  ];
  
  var i;
  for(i=0;i<types.length;i++) {
    try {
      return new ActiveXObject(types[i]);
    } catch(e) {}
  }
  
  try {
    return new XMLHttpRequest();
  } catch(e) {}
  
  alert('XMLHttpRequest not supported');
  
  return false;
}

/**
 * 文字列置換
 */
function str_replace(search, replace, subject)
{
  var f = search, r = replace, s = subject;
  var ra = r instanceof Array,
  sa = s instanceof Array,
  f = [].concat(f),
  r = [].concat(r),
  i = (s = [].concat(s)).length;

  while (j = 0, i--) {
    if (s[i]) {
      while (s[i] = (s[i]+'').split(f[j]).join(ra ? r[j]
            || "" : r[0]), ++j in f){};
    }
  };
  
  return sa ? s : s[0];
}
  
/**
 * テーブルを追加
 */
function addTableHeader(id, th_arr)
{
  var displayPnl = document.getElementById('displayPnl');
  var tableDiv = displayPnl.appendChild(document.createElement('div'));
  tableDiv.className = 'tableDiv';
  tableDiv.id = id + 'Div';
  var eleTable = tableDiv.appendChild(document.createElement('table'));
  eleTable.id = id;
  eleTable.className = 'dispList';
  var eleTr = eleTable.appendChild(document.createElement('tr'));
  for(var i=0;i<th_arr.length;i++)
  {
    var eleTh = eleTr.appendChild(document.createElement('th'));
    eleTh.style.textAlign = "center";
    eleTh.innerHTML = th_arr[i];
  }
}
  
/**
 * テーブルに td 要素を追加
 */
function addTd(eleTr, ele, is_num)
{
  var eleTd = eleTr.appendChild(document.createElement('td'));
  if(is_num) {
    eleTd.style.textAlign = 'right';
    ele = numberFormat(ele);
  }
  eleTd.innerHTML = ele;
}

function numberFormat(num){
  return num.toString().replace(/([\d]+?)(?=(?:\d{3})+$)/g, function(t){ return t + ','; });
}
