var insertionS = 0;
var insertionE = 0;
var activeEl = "doc";// 0 - input 1 - textararea
/*
if (!support_speech_attribute()) {
if(window.location.href.indexOf("/en/") != -1)
document.write('Your browser does not allow speech input - try to install google CHROME');
else
document.write('Ваш браузер на поддерживает голосового ввода - попробуйте установить google CHROME');
}
*/
function getcaretpos(ctrl)
{
if(ctrl.id == "docel")
activeEl = "doc";
else
activeEl = "inp";
getCaretPositions(ctrl);
}
function getCaretPositions(ctrl)
{
var CaretPosS = -1, CaretPosE = 0;
// Mozilla way:
if(ctrl.selectionStart || (ctrl.selectionStart == '0'))
{
CaretPosS = ctrl.selectionStart;
CaretPosE = ctrl.selectionEnd;
insertionS = CaretPosS == -1 ? CaretPosE : CaretPosS;
insertionE = CaretPosE;
}
// IE way:
else if(document.selection && ctrl.createTextRange)
{
var start = end = 0;
try
{
start = Math.abs(document.selection.createRange().moveStart("character", -10000000)); // start
if (start > 0)
{
try
{
var endReal = Math.abs(ctrl.createTextRange().moveEnd("character", -10000000));
var r = document.body.createTextRange();
r.moveToElementText(ctrl);
var sTest = Math.abs(r.moveStart("character", -10000000));
var eTest = Math.abs(r.moveEnd("character", -10000000));
if ((ctrl.tagName.toLowerCase() != 'input') && (eTest - endReal == sTest))
start -= sTest;
}
catch(err) {}
}
}
catch (e) {}
try
{
end = Math.abs(document.selection.createRange().moveEnd("character", -10000000)); // end
if(end > 0)
{
try
{
var endReal = Math.abs(ctrl.createTextRange().moveEnd("character", -10000000));
var r = document.body.createTextRange();
r.moveToElementText(ctrl);
var sTest = Math.abs(r.moveStart("character", -10000000));
var eTest = Math.abs(r.moveEnd("character", -10000000));
if ((ctrl.tagName.toLowerCase() != 'input') && (eTest - endReal == sTest))
end -= sTest;
}
catch(err) {}
}
}
catch (e) {}
insertionS = start;
insertionE = end
}
}
function support_speech_attribute() {
var i = document.createElement('input');
return ('speech' in i || 'webkitSpeech' in i);
}
function add_speech() {
var speechel = document.getElementById("speechel");
var docel = document.getElementById("docel");
if(docel.value != "" )
{
if(docel.value.charAt(docel.value.length-1) != '\n')
docel.value = docel.value + " " + speechel.value;
else
docel.value = docel.value + speechel.value;
}
else
docel.value = speechel.value;
activeEl = "doc";
insertionS = -1;
}
function getActiveField()
{
if(activeEl == "doc")
return document.getElementById("docel");
else
return document.getElementById("speechel");
}
function add_punct(punct) {
var punctval;
switch(punct.value)
{
case "\\n":
punctval = "\n";
break;
default:
punctval = punct.value;
break;
}
var docel = getActiveField();
if(insertionS == -1)
docel.value = docel.value + punctval;
else
{
docel.value = docel.value.substring(0,insertionS) + punctval + docel.value.substring(insertionS);
insertionS = insertionS + 1;
}
}
function add_cap() {
var docel = getActiveField();
if(insertionS == -1)
{
if(activeEl == "inp")
docel.value = docel.value.charAt(0).toUpperCase() + docel.value.substr(1);
//nothing for doc
}
else
{
var pospr = docel.value.lastIndexOf(" ",insertionS);
var posent = docel.value.lastIndexOf("\n",insertionS);
var pos = pospr > posent ? pospr : posent;
if(pos == -1)
docel.value = docel.value.charAt(0).toUpperCase() + docel.value.substr(1);
else
docel.value = docel.value.substr(0,pos+1) + docel.value.charAt(pos+1).toUpperCase() + docel.value.substr(pos+2);
}
}