/**********************************************************************
* Copyright (C) 2007 Kyoto University
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
* 
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
* Lesser General Public License for more details.
* 
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-
* 1301  USA
***********************************************************************/
/*
 * This file is the JavaScript file for the main Dependency Parser page.
 */
//* $Id: dependency-parser-main.js 2525 2009-03-20 08:55:37Z morimoto $
//* $Date:: 2009-03-20 17:55:37 +0900#$

var DependencyParsing = Class.create();

var dependencyParserSelection = null;
var dependencyParse = null;
var serviceInformation = null;

Event.observe(window,'load',function(){
	
	Toggler.setToggleEvent('parse');
	Toggler.setToggleEvent('parser-selection');
	Toggler.setToggleEvent('service-information');
	
	new HelpPanel("parse",
		'<span style="font-weight:bold;">How to Parse Sentence(s)</span><br /><br />'+
		'First, choose your parser from the Parser Selection below.<br />' +
		'Once the parsers are selected,<br /><br />'+
		'<ul>'+
		'<li style="list-style:decimal inside;">Type in a sentence or sentences you wish to parse.</li>'+
		'<li style="list-style:decimal inside;">Select the language of the typed sentence(s).</li>'+
		'<li style="list-style:decimal inside;">Click on the "Parse" button.</li>'+
		'</ul>');
	new HelpPanel("parser-selection",
		'<span style="font-weight:bold;">How to Select Parsers</span><br /><br />'+
		'Select parsers you wish to use.'+
		'<br><span style="color:red;font-weight:bold;">Red</span> indicates that the parser is SELECTED.'+
		'<br><span style="color:green;font-weight:bold;">Green</span> indicates that the parser is NOT SELECTED.');
	dependencyParserSelection = new DependencyParserSelection('parsers');
	dependencyParse = new DependencyParse('input-text','lang','result');
	serviceInformation = new ServiceInformation('service-information-form-area');
	
	$('use-all').checked = false;
	
	DependencyParserSelection.Event.load(dependencyParserSelection);
	dependencyParserSelection.getElement().down('table').observe('click',function(event){
		DependencyParserSelection.Event.clickButton(event,dependencyParserSelection);
		DependencyParsing.Event.clickResourceButton(event);
	});
	dependencyParserSelection.getElement().down('table').observe('mouseover',function(event){
		DependencyParserSelection.Event.mouseoverButton(event,dependencyParserSelection);
	});
	dependencyParserSelection.getElement().down('table').observe('mouseout',function(event){
		DependencyParserSelection.Event.mouseoutButton(event,dependencyParserSelection);
	});
	$('use-all').observe('click',function(event){
		DependencyParserSelection.Event.clickAllButton(event,dependencyParserSelection);
		DependencyParsing.Event.clickResourceAllButton(event);
	});
	
	dependencyParse.getWordArea().observe('keypress',function(event){
		DependencyParsing.Event.keypressOnWordArea(event);
	});
	$('parse').observe('click',function(event){
		DependencyParsing.Event.clickParseButton(event);
	});
	dependencyParse.getLanguageMenu().getElement().observe('change',function(event){
		DependencyParse.Event.changeLanguage(event,dependencyParse);
	});
});

DependencyParsing.Event = {
	clickParseButton: function(event){
		if(dependencyParse.isEmptyWordArea()) {
			//* cancel
		} else {
			DependencyParsing.Ajax.parse();
		}
	},
	
	keypressOnWordArea: function(event){
	},
	
	clickResourceButton: function(event){
		var languages = dependencyParserSelection.getLanguages()
		if(languages.size() != 0){
			dependencyParse.changeLanguages(languages);
		} else {
			dependencyParse.resetLanguages();
		}
	},
	
	clickResourceAllButton: function(event){
		DependencyParsing.Event.clickResourceButton(event);
	}
};

DependencyParsing.Ajax = {
	parse: function(){
		$('parsing').innerHTML = '<img src="img/anime/translation.gif" />';
		var callobj = {
			inputtext: dependencyParse.getWordArea().value.replace(/\r/g,"").replace(/\n/ig,""),
			language: dependencyParse.getLanguageMenu().getSelectedLanguage()
		};
		var selectedResourceIdArray = dependencyParserSelection.getIdOfSelectedResources();
		for(var i=0; i < selectedResourceIdArray.size(); i++){
			callobj['id['+i+']'] = selectedResourceIdArray[i];
		}
		var hash = $H(callobj);
		var formText=hash.toQueryString();
		new Ajax.Request(
			'./php/ajax/dependency-parse/parse.php',
			{
				method		:'post',
				parameters	:formText,
				onSuccess	:function(httpObj){
					dependencyParse.getResultArea().draw(httpObj.responseText,dependencyParserSelection);
					//* 複数解析
					for (var i=0; i< httpObj.responseJSON.contents.contents.size();i++) {
						serviceInformation.update(httpObj.responseJSON.contents.contents[i]);
					}
				},
				onFailure	:function(){
					alert('Server Error.');
				},
				onComplete	:function(){
					$('parsing').innerHTML = '';
				}
			});
	}
};

