/* 
 * 論文一覧表示のときに使用する JavaScript
 *
 */

var isFirstTimeFocus = true;

/* ページがロードされたときに、初期化する */
Event.observe(window, 'load', init, false);

/**
 * edit.view ページ 読み込みのとき呼び出される関数
 */
function init() {
  if ($('tagField') != undefined) {
    Event.observe('tagField', 'submit', tagFieldSubmitted, false);
    Event.observe('tagField', 'focus', tagFieldFocused, false);
  }
}

function displayAutoTagging() {
    var papersUl = document.getElementById('papers');
    var children = papersUl.childNodes;
    for (var i = 0; i < children.length; i++) {
	var elem = children[i];
	if (elem.nodeName != 'LI') continue;
	var id = false;
	try {
	  var liDiv = elem.childNodes[0];
	  if (liDiv.nodeName != 'DIV') {
	      liDiv = elem.childNodes[1];
	  }
	  var liDivA = liDiv.childNodes[0];
	  if (liDivA.nodeName != 'A') {
	      liDivA = liDiv.childNodes[1];
	  }
	  id = liDivA.getAttribute("name");
	} catch (e) { 0; /* do nothing */ }
	if (! id) continue;

	var div = document.createElement('div');
	div.id = "pid" + id;
	div.className = "autoTaggingInfo";
	div.innerHTML = "<img src='/div-media/defect/imgs/ajax-loader.gif'>";
	elem.appendChild(div);

	var tmpfunc = function(originalRequest) {
	    eval('var keywordList = ' + originalRequest.responseText);
	    var div = document.getElementById('pid' + keywordList['id']);
	    var innerHTML = '<div> <b>Keyword Candidate:</b> ' + keywordList['keyword_list'].join(' || ') + '</div>';
	    var categoryList = ["materials", "methods", "defects"];
	    for (var k = 0; k < categoryList.length; k++) {
		var category = categoryList[k];
		var tmpHtml = '<div><b>' + category + ':</b> ';
		for (var j = 0; j < keywordList[category].length; j++) {
		    var pair = keywordList[category][j];
		    tmpHtml += pair['tag'] + ' (' + pair['keyword'] + '), ';
		}
		tmpHtml += '</div>';
		innerHTML += tmpHtml;
	    }
	    div.innerHTML = innerHTML;
	};

	var pars = 'id=' + id;
	var myAjax = new Ajax.Request('/div-media/defect/autoTagApi.php',
	    { method: 'get',
	      parameters: pars,
	      asynchronous: true,
	      onComplete: tmpfunc
	    });
	//tmpfunc(myAjax.transport);
    }
}

function tagFieldFocused () {
  if (isFirstTimeFocus) {
    $('tagField').style.color = '#000';
    $('tagField').style.fontStyle = 'normal';
    isFirstTimeFocus = false;
  }
}

function searchFieldSubmitted() {
  $('hidden_tagField').value = $F('tagField');
  $('hidden_year').value = $F('yearSelector');
  $('hidden_journal').value = $F('journalSelector');

  var argMap = makeArgMap($F('tagField'));
  argMap.each( function(item) {
    $('hidden_' + item.key).value = item.value.join('+');
    });
  $('searchForm').action = 'index.php';
  $('searchForm').method = 'GET';
  $('searchForm').submit();
}

function makeArgMap(tagFieldValue) {
  var inputTagList = tagFieldValue.trim().split(' ');
  if (inputTagList[0].trim() == '') {
    inputTagList.splice(0, 1);
  }
  var argMap = {'material' : [], 'method' : [], 'defect' : []};
  argMap = $H(argMap);
  for (var i = 0; i < inputTagList.length; i++) {
    var tagSort = tagModel.getSortByTagName(inputTagList[i]);
    if (tagSort == undefined) {
      continue;
    }
    argMap[tagSort].push(escape(inputTagList[i]));
  }
  return argMap;
}

function tagFieldSubmitted() {
  $('hidden_q').value = $F('q');
  $('hidden_year').value = $F('yearSelector');
  $('hidden_journal').value = $F('journalSelector');

  var argMap = makeArgMap($F('tagField'));
  var url = 'index.php?';
  var args = [];
  argMap.each( function(item) {
    args.push(item.key + '=' + item.value.join('+'));
  });
  url = url + args.join('&');
  url = url + '&q=' + escape($('hidden_q').value);
  url = url + '&y=' + escape($('hidden_year').value);
  url = url + '&journal=' + escape($('hidden_journal').value);

  /*
  var logDiv = $('log');
  if (logDiv == undefined) {
    logDiv = document.createElement('div');
    logDiv.id = 'log';
    Element.addClassName(logDiv, 'reloading');
    $('mainContents').appendChild(logDiv);
  }
  Element.show(logDiv);

  logDiv.style.top = '10em';
  logDiv.style.left = '10em';

  logWrite("  loading ... ");
  */
  location.href = url;
}
