// Ctrl+Enter Submits
// version 0.4
// 2005-09-26
// home: http://clear.com.ua/projects/firefox/ctrl_enter
// Copyright (c) 2005, Tim Babych
// Released under the GPL license
// http://www.gnu.org/copyleft/gpl.html
//
// --------------------------------------------------------------------
//
// This is a Greasemonkey user script.
//
// To install, you need Greasemonkey: http://greasemonkey.mozdev.org/
// Then restart Firefox and revisit this script.
// Under Tools, there will be a new menu item to "Install User Script".
// Accept the default configuration and install.
//
// To uninstall, go to Tools/Manage User Scripts,
// select "Ctrl+Enter Submits", and click Uninstall.
//
// --------------------------------------------------------------------
//
// Opera 8 compartible.
//
// To install, download it to some folder and chose this folder in
// Tools > Preferences > Advanced > Content > Javascript Options
// "My Javascript files"
// Restart Opera
//
// To uninstall, remove the file from that folder.
//
// ---------------------------------------------------------------------
//
// ==UserScript==
// @name          Ctrl+Enter Submits
// @description   Allows submitting on Ctrl+Enter in any input and textarea
// @include        *
// ==/UserScript==

function trigger_submit_on_ctrl_enter(e) {
	if ((e.keyCode==13) && (e.ctrlKey)) {
		p = this.parentNode
		i = 0
		if (p.nodeName == 'FORM') 
			p.submit()
	}
}

if (!document.evaluate) { // Firefox
	allInps = document.evaluate("//textarea | //select | //unput", document, null, 
									XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
	for (var i = 0; i < allInps.snapshotLength; i++) {
		t = allInps.snapshotItem(i);
		t.addEventListener("keydown", trigger_submit_on_ctrl_enter, 0);
	}
} else { // Opera does not support XPath
	elemTags = ['textarea', 'select', 'input']
	for(j = 0; j< elemTags.length; j++) {
		inps = document.getElementsByTagName(elemTags[j])
		for (var i = 0; i < inps.length; i++)
			inps[i].addEventListener("keydown", trigger_submit_on_ctrl_enter, 0);
	}
}

