хорошо расскажу всю проблему
<style type="text/css" rel="stylesheet">
.contjil{
height: 17px;
width: 22px;
margin: 7px 7px 0 9px;
float: left;
overflow: hidden;
position: relative;
}
.flgjil{cursor: pointer;
background: url('http://www.myvideo.ge/v4_imgs/kbd_flags.png') no-repeat 0 0;
display: block;
height: 17px;
width: 50px;
position: absolute;
top:0;
left:0;
}
</style>
<!--SEARCH START-->
<form id="jilform">
<div class="contjil">
<a class="flgjil" id="cbdjil" title="ქართული კლავიატურის გათიშვა"></a>
</div>
<input id="kbdjil" style="display:none;" type="checkbox" checked="" name="geo">
<input id="message" name="message">
</form>
<!--SEARCH END-->
<script type="text/javascript">
function handleKeys(e) {
var t = window.event ? event : e;
if (t.altKey || t.ctrlKey) return true;
var n;
n = e.which;
if (e.which == 96) geoobj.checked = !geoobj.checked;
var r = formobj.value.length - 1;
if (e.which == 96) {
var i = e.target;
var s = i.selectionStart;
i.value = i.value.substring(0, i.selectionStart) + "" + i.value.substring(i.selectionStart);
i.setSelectionRange(s, s);
return false
}
if (geoobj.checked) {
for (r = 0; r <= geo.length; r++) {
if (eng[r] == e.which) {
var i = e.target;
var s = i.selectionStart;
i.value = i.value.substring(0, i.selectionStart) + String.fromCharCode(geo[r]) + i.value.substring(i.selectionEnd);
s++;
i.setSelectionRange(s, s);
return false
}
}
status = n
}
return true
}
function changeVal() {
formobj2 = document.REPLIER.Post;
geoobj2 = document.REPLIER.geo;
formobj = formobj2;
geoobj = geoobj2;
var e = new Is;
if (e.konqueror && formobj.value == "") {
formobj.value = " "
}
if (e.ie4up) {
if (event.keyCode == 96) geoobj.checked = geoobj.checked ? false : true;
if (event.keyCode == 96) event.keyCode = ""
} else if (e.nav6up || e.konqueror || e.safari) {
document.onkeypress = handleKeys
}
if (geoobj.checked) {
if (e.ie4up || e.opera && !e.opera7up) {
var t;
t = event.keyCode;
for (i = 0; i <= geo.length; i++) {
if (eng[i] == event.keyCode) {
event.keyCode = geo[i]
}
}
status = t
} else if (e.nav6up || e.opera) {
document.onkeypress = handleKeys
} else {
alert("We doesn't currently support your browser");
geoobj.checked = false
}
}
}
eng = new Array(97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 87, 82, 84, 83, 67, 74, 90);
geo = new Array(4304, 4305, 4330, 4307, 4308, 4324, 4306, 4336, 4312, 4335, 4313, 4314, 4315, 4316, 4317, 4318, 4325, 4320, 4321, 4322, 4323, 4309, 4332, 4334, 4327, 4310, 4333, 4326, 4311, 4328, 4329, 4319, 4331, 91, 93, 59, 39, 44, 46, 96);
(function () {
String.prototype.pasteTo = function (e) {
e.focus();
if (document.selection) {
var t = document.selection.createRange();
if (t) {
t.text = this
}
} else if (e.selectionStart != undefined) {
var n = e.scrollTop,
r = e.selectionStart,
i = e.selectionEnd;
var s = e.value.substring(0, r) + this + e.value.substring(i, e.value.length);
e.value = s;
e.scrollTop = n;
e.setSelectionRange(r + this.length, r + this.length)
} else {
e.value += this;
e.setSelectionRange(e.value.length, e.value.length)
}
}, String.prototype.translateToKA = function () {
var e, t, n = [],
r = "abgdevzTiklmnopJrstufqRySCcZwWxjh";
for (var i = 0; i < this.length; i++) {
t = this.substr(i, 1);
if ((e = r.indexOf(t)) >= 0) {
n.push(String.fromCharCode(e + 4304))
} else {
n.push(t)
}
}
return n.join("")
}, GeoKBD = {
browser: {
isOpera: navigator.userAgent.toLowerCase().indexOf("opera") > -1,
isIe: navigator.userAgent.toLowerCase().indexOf("msie") > -1,
isIe6: navigator.userAgent.toLowerCase().indexOf("msie 6") > -1,
isIe7: navigator.userAgent.toLowerCase().indexOf("msie 7") > -1
},
event: {
get: function (e) {
return e || window.event
},
getKeyCode: function (e) {
e = this.get(e);
return e.keyCode || e.which
},
targetIs: function (e, t) {
e = this.get(e);
var n = e.target || e.srcElement;
return n.tagName.toLowerCase() == t ? n : null
},
attach: function (e, t, n, r) {
if (e.addEventListener) {
e.addEventListener(t, n, r)
} else if (e.attachEvent) {
return e.attachEvent("on" + t, n)
} else {
e["on" + t] = n
}
},
detach: function (e, t, n, r) {
if (e.removeEventListener) {
e.removeEventListener(t, n, r)
} else if (e.detachEvent) {
e.detachEvent("on" + t, n)
} else {
e["on" + t] = null
}
},
cancel: function (e) {
e = this.get(e);
if (e.stopPropagation) {
e.stopPropagation();
e.preventDefault()
} else {
e.cancelBubble = true;
e.returnValue = false
}
}
},
keyHandlers: {},
addKeyHandler: function (e, t) {
if (typeof e == "string") {
e = e.charCodeAt(0)
}
if (!this.keyHandlers[e]) {
this.keyHandlers[e] = []
}
this.keyHandlers[e].push(t)
},
handleKey: function (e) {
if (GeoKBD.keyHandlers[e]) {
var t = null;
for (var n = 0; n < GeoKBD.keyHandlers[e].length; n++) {
t = GeoKBD.keyHandlers[e][n];
if (t.constructor && t.constructor == Array) {
t[0][t[1]].call(t[0], e)
} else {
t(e)
}
}
}
},
map: function (e, t, n) {
var r = this,
i = [],
s = [];
if (e) {
if (e.constructor) {
if (e.constructor == String) {
i.push(e)
} else if (e.constructor == Array) {
i = e
}
if (i.length) {
for (var o in i) {
if (document.forms[i[o]]) {
s.push(document.forms[i[o]])
}
}
}
} else {
s.push(e)
}
} else {
s = document.forms
}
for (var o = 0; o < s.length; o++) {
e = s[o];
if (!e.fields || e.fields == undefined) e.fields = {};
if (e.ka == undefined) e.ka = e[n] ? e[n].checked : true;
if (t) {
if (typeof t == "string") t = [t];
for (var u = 0; u < t.length; u++) {
if (e[t[u]] && !e.fields[t[u]]) e.fields[t[u]] = t[u]
}
} else {
var a, f;
for (var u = 0; u < e.elements.length; u++) {
if (e.elements[u].type) {
a = e.elements[u].name || e.elements[u].id;
f = e.elements[u].type.toLowerCase();
if (a && (f == "text" || f == "textarea")) {
e.fields[a] = a
}
}
}
}
n = n || "geo";
e.switcher = n;
e.onkeypress = function (e) {
e = r.event.get(e);
if (e.altKey || e.ctrlKey) return;
if (!r.browser.isIe && !r.browser.isOpera && !e.charCode) {
return
}
var t, i = n,
s = r.event.getKeyCode(e);
if (s == 96) {
if (this[i]) {
this.ka = this[i].checked = !this[i].checked
} else {
this.ka = !this.ka
}
return false
} else if (this[i]) {
this.ka = this[i].checked
}
if (!this.ka) return;
if (t = r.event.targetIs(e, "textarea") || r.event.targetIs(e, "input")) {
if (!this.fields[t.name || t.id]) return;
text = String.fromCharCode(s);
kaText = text.translateToKA();
if (kaText != text) {
if (GeoKBD.browser.isIe) {
e.keyCode = kaText.charCodeAt(0)
} else {
kaText.pasteTo(t);
return false
}
}
}
}
}
e = s = i = null
},
mapIFrame: function (e) {
var t = function (e) {
if (e.altKey || e.ctrlKey) return;
var t = (e.target || e.srcElement).ownerDocument;
if (t.ka == undefined) t.ka = true;
var n = GeoKBD.event.getKeyCode(e);
var r = String.fromCharCode(n);
var i, s;
if (parent.document.forms[t.parentForm]) {
i = parent.document.forms[t.parentForm];
if (i.switcher && i[i.switcher]) {
s = i[i.switcher]
}
}
if (n == 96) {
t.ka = !t.ka;
if (s) s.checked = t.ka;
GeoKBD.event.cancel(e)
} else if (s) {
t.ka = s.checked
}
i = s = null;
if (t.ka) {
var o = r.translateToKA();
if (o != r) {
if (!GeoKBD.browser.isIe) {
t.execCommand("InsertHTML", false, o)
} else {
var u = t.selection.createRange();
u.pasteHTML(o)
}
GeoKBD.event.cancel(e)
}
}
};
var n = function (e) {
if (!GeoKBD.browser.isIe) {
GeoKBD.event.attach(this.document, "keypress", t, true);
GeoKBD.event.detach(this, "focus", n, true)
} else {
GeoKBD.event.attach(this.contentWindow.document, "keypress", t, true);
this.onfocus = null
}
};
var r = window.setInterval(function () {
var t = typeof e == "string" ? document.getElementById(e) : e();
if (t) {
for (var i = t.parentNode; i && i != document.body; i = i.parentNode) {
if (/form/i.test(i.tagName)) {
if (t.contentWindow.document) {
t.contentWindow.document.parentForm = i.name || i.id
} else {
t.document.parentForm = i.name || i.id
}
break
}
}
if (!GeoKBD.browser.isIe) {
GeoKBD.event.attach(t.contentWindow, "focus", n, true)
} else {
t.onfocus = n
}
t = null;
window.clearInterval(r)
}
}, 100)
}
};
window.GeoKBD = GeoKBD
})();
$('#cbdjil').click(function(e)
{
e.preventDefault();
$('#kbdjil').click();
if($('#kbdjil').is(":checked")) {
$(this).attr('title','ქართული კლავიატურის გათიშვა');
$(this).animate({
left:'+0px'
},'fast');
} else {
$(this).attr('title','ქართული კლავიატურის ჩართვა');
$(this).animate({
left:'-29px'
},'fast');
}
});
$("#message").keypress(function(event)
{
if(event.which == 96) {
if($('#kbdjil').is(":checked")) {
$('#cbdjil').attr('title','ქართული კლავიატურის ჩართვა');
$('#cbdjil').animate({
left:'-29px'
},'fast');
} else {
$('#cbdjil').attr('title','ქართული კლავიატურის გათიშვა');
$('#cbdjil').animate({
left:'+0px'
},'fast');
}
}
});
GeoKBD.map('jilform','message');
</script>
это переключатель языка между грузинским и английским - в нижнем регистре всё работает хорошо а вот когда включён капслок то вместо грузинских букв пишет большие английские
как сделать чтобы и в верхнем регистре писало грузинские соответственно
ременный пример