function execForm(form)
{
  var ajax = new sack();
  //form = document.getElementById(form);
  for (var i = 0; i < form.elements.length; i++)
  {
    if (form.elements[i].name)
    {
      ajax.setVar(form.elements[i].name, form.elements[i].value);
    }
  }
  ajax.requestFile = form.action;
  ajax.method = form.method.toString().toUpperCase();
  ajax.element = form.target;
  ajax.runAJAX();
  return false;
}

function loadURL(url, layer)
{
  showDataLoadingMessage();

  var re = /^(.*?)([^\/]*)$/;
  var path_arr = re.exec(location.pathname);
  var path = path_arr[1];

  var re2 = /^(.*?)\?(.*)$/;
  var file_arr = re2.exec(url);
  var file = file_arr[1];
  var args = file_arr[2];

  var url = "http://" + location.host + '/' + path + url + '&rnd='+Math.random();

  var ajax = new sack();
  
  //ajax.requestFile = url;
  ajax.requestFile = "http://" + location.host + '/' + path + file;
  ajax.processURLString(args, true);
  ajax.method = 'GET';
  ajax.element = layer;
  ajax.onCompletion = function() { hideDataLoadingMessage(); };
  ajax.runAJAX();

  return false;
}

function loadChart(url, layer)
{
  var ajax = new sack();
  ajax.requestFile = url;
  ajax.method = 'GET';
  ajax.element = layer;
  ajax.onCompletion = function() { set_chart(); };
  ajax.runAJAX();
  return false;
}

function touchURL(url)
{
  var ajax = new sack();
  ajax.requestFile = url;
  ajax.method = 'GET';
  ajax.runAJAX();
  return false;
}

/////////////////

function loadURLContent(data, layer)
{
  document.getElementById(layer).innerHTML = data;
}

function loadContentFromUrl(url, layer)
{
  var ajaxObject;
  ajaxObject = new sack();
  ajaxObject.requestFile = url;
  ajaxObject.method = 'GET';
  ajaxObject.onCompletion = function(){ loadURLContent(ajaxObject.response, layer); };
  ajaxObject.runAJAX();
}

function confirmDeleteGroup2(group_id, group_name, date)
{
  //document.getElementById('delete_group_confirm').style.visibility = 'visible';
  url = 'select.php?group_id='+group_id+'&group_name='+group_name+'&page=confirm_delete_group&date='+date;
  loadURL(url, 'delete_group_confirm');
  var l = document.getElementById('delete_group_confirm');
  var top = window.pageYOffset ? window.pageYOffset : document.body.scrollTop;
  top = top + document.body.clientHeight * 0.4;
  l.style.top = top + 'px';

  var left = window.pageXOffset ? window.pageXOffset : document.body.scrollLeft;
  left = left + document.body.clientWidth * 0.5;
  l.style.left = left + 'px';

  l.style.visibility = 'visible';
  addShowLayer('delete_group_confirm');
}


var selectedRow = 0;
//var mylog = '';
function showMeasureRecipe(event, group_id)
{
  //alert(event);
  //mylog = mylog+' event';
  
  selectedRow = 0;
  if (document.food_log)
  {
    var food_id = document.food_log.food_id.value;
  }
  else
  {
    var food_id = document.getElementById('food_id_'+group_id).value;
  }
  
  
  if (document.getElementById('search_measure_'+group_id).style.visibility != 'show')
  {
    //showSelect(event, is_key, 'select.php?group_id='+group_id+'&name_id=measure_id&name_name=form_measure_id_'+group_id+'&page=measure&word='+document.getElementById('form_measure_id_'+group_id).value+'&layer=search_measure_'+group_id+'&food_id='+food_id, 'search_measure_'+group_id);
    showSelect(event, 0, 'select.php?group_id='+group_id+'&name_id=measure_id&name_name=form_measure_id_'+group_id+'&page=measure&word='+document.getElementById('form_measure_id_'+group_id).value+'&layer=search_measure_'+group_id+'&food_id='+food_id, 'search_measure_'+group_id);
  }
  //document.write('aaa');
  
}
function showMeasure(event, is_key, group_id)
{
  //alert(event);
  selectedRow = 0;
  if (document.food_log)
  {
    var food_id = document.food_log.food_id.value;
  }
  else
  {
    var food_id = document.getElementById('food_id_'+group_id).value;
  }
  
  if (document.getElementById('search_measure_'+group_id).style.visibility != 'show')
  {
    showSelect(event, is_key, 'select.php?group_id='+group_id+'&name_id=measure_id&name_name=form_measure_id_'+group_id+'&page=measure&word='+document.getElementById('form_measure_id_'+group_id).value+'&layer=search_measure_'+group_id+'&food_id='+food_id, 'search_measure_'+group_id);
  }
}



function setSelected(num)
{
  if (num != null && document.getElementById('list_row_'+selectedRow) != null)
  //if (num)
  //if (1==1)
  {
    //alert(selectedRow);
    document.getElementById('list_row_'+selectedRow).className='list_row';
    selectedRow = num;
    document.getElementById('list_row_'+selectedRow).className='list_row_selected';
  }
}

var req = null;
var lock_select = 0;
var lock_select_timeout = 20;

function showSelect(event, is_key, url, layer)
{
  //alert(event['keyCode']);
  
  

  if (lock_select == 0)
  {
    document.getElementById(layer).style.position = 'absolute';
    if (is_key == 1)
    {
      var badKeys = new Array(0,9,16,17,19,27,33,34,35,36,37,38,39,40,45,46,47,112,113,114,115,116,117,118,119,120,121,122,123,145);
      for (i = 0; i < badKeys.length; i++)
      {
        if (event.keyCode == badKeys[i])
        {
          return false;
        }
      }
    }
    

    if (document.getElementById(layer).style.visibility == 'visible' && is_key == 0)
    {
      
      //if (is_key == 0) document.getElementById(layer).style.visibility = 'hidden';
      document.getElementById(layer).style.visibility = 'hidden';
    }
    else
    {
      
      showDataLoadingMessage();
      
      
      
      

      var re = /^(.*?)([^\/]*)$/;
      //alert(re);
      var path_arr = re.exec(location.pathname);
      var path = path_arr[1];
      //alert(path);
      //var file = path_arr[2];
      //var args = path_arr[3];

      //alert(path+" "+file+" "+args);
      //alert("http://" + location.host + '/' + path + file);
      //alert(file);
      //var url1 = url;

      var re2 = /^(.*?)\?(.*)$/;
      var file_arr = re2.exec(url);
      var file = file_arr[1];
      var args = file_arr[2];

      //alert(args);
      //alert("http://" + location.host + '/' + path + file);

      

      var url = "http://" + location.host + '/' + path + url + '&rnd='+Math.random();

      
      
      document.getElementById(layer).style.visibility = 'hidden';

      //var date1 = new Date();

      document.getElementById(layer).innerHTML = '';

      //var date2 = new Date();
      //var time = date2-date1;
      //alert(time);

      

      var ajax = new sack();
      ajax.requestFile = "http://" + location.host + '/' + path + file;
      //ajax.URLString = args;
      //ajax.createURLString(args);

      

      ajax.processURLString(args, true);
      ajax.method = 'GET';
      ajax.element = layer;
      ajax.onCompletion = function() { 
          var l = document.getElementById(layer);
          l.style.visibility = 'visible';
          addShowLayer(l.id);
          hideDataLoadingMessage(); };
      ajax.runAJAX();

      

      /*
      if (req)
        req.abort();
      //req = (!window.XMLHttpRequest) ? (ActiveXObject ? (new ActiveXObject("Microsoft.XMLHTTP")) : '') : (new XMLHttpRequest());
      //req = (!window.XMLHttpRequest) ? (ActiveXObject ? (new ActiveXObject("Msxml2.XMLHTTP")) : '') : (new XMLHttpRequest());
      if (!window.XMLHttpRequest)
      {
        req = ActiveXObject ? new ActiveXObject("Msxml2.XMLHTTP.3.0") : '';
        //req.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
      }
      else
      {
        req = new XMLHttpRequest();
      }
      //req.setRequestHeader("Content-Type", "text/xml; charset=utf-8"
      //req = new XMLHttpRequest();
      //alert(req);
      req.open("GET", url, true);
      req.onreadystatechange = new Function("loadContent('"+layer+"')");
      req.send(null);
      */
    }
    lock_select = 1;
    setTimeout("lock_select=0", lock_select_timeout);
    
  }
  else
  {
    //alert('lock open');
  }
}

function loadContent(layer)
{
  var l = document.getElementById(layer);
  if (req.readyState == 4)
  {
    try
    {
      if (req.status == 200)
      {
        if (req.responseText == "")
        {
          l.style.visibility = 'hidden';
        }
        else
        {
          l.innerHTML = req.responseText;
          l.style.visibility = 'visible';
          addShowLayer(l.id);
          hideDataLoadingMessage();
        }
      }
    }
    catch(e){}
  }
}

function hideSelect(layer)
{
  if (lock_select == 0)
  {
    document.getElementById(layer).style.visibility = 'hidden';
    document.getElementById(layer).innerHTML = '';
    lock_select = 1;
    setTimeout("lock_select=0", lock_select_timeout);
  }
  else
  {
    //alert('lock close');
  }
}

function showTypeInFocus(group, text)
{
  var f = document.getElementById('s_'+group);
  if (f.value == text)
  {
    f.value = '';
  }
  //f.className = 'food_log_input';
  f.className = 'text';
}

function showTypeInBlur(group, text)
{
  var f = document.getElementById('s_'+group);
  
  if (f.value == text || f.value == '')
  {
    f.value = text;
    //f.className = 'food_log_input_empty';
    f.className = 'text_empty';
  }
  else
  {
    //f.className = 'food_log_input';
    f.className = 'text';
  }
}

function showDataLoadingMessage()
{
  //return;
  var win_x = window.pageXOffset ? window.pageXOffset : document.body.scrollLeft;
  var win_y = window.pageYOffset ? window.pageYOffset : document.body.scrollTop;

  var l = document.getElementById('data_loading');

  l.style.left = (document.body.clientWidth-l.style.width)/2 - 100 + win_x;
  l.style.top = (document.body.clientHeight-l.style.height)/2 + win_y;
  l.style.visibility = 'visible';
}

function hideDataLoadingMessage()
{
  //return;
  var l = document.getElementById('data_loading');
  l.style.visibility = 'hidden';
}
