/******************************************************************/
/** Dynamic Keyboard Driver.  version 3.0                        **/
/** Copyright (C) 2002-2004. GeREs Group. All Right Reserver.    **/
/** Created by David A. Mchedlishvili                            **/
/**                                                              **/
/******************************************************************/

// Variables    
var kbd_lang = getCookie('kbd_lang');
if (!kbd_lang) kbd_lang = 'en';
var kbd_field;
var kbd_ignore	= (navigator.userAgent.toLowerCase().indexOf('opera')+1);

// Keyboard Events
function kbd_event(e)
{
  if (kbd_ignore) return true;
  if (!e) var e = window.event
  var t = e.srcElement ? e.srcElement : e.target; if (!t) return true;
  var k = e.keyCode ? e.keyCode : e.which; if (!k) return true;
  if (k == 96) { kbd_switch(t); return false; }
  if (kbd_lang != 'ge') return true;
  if (e.keyCode) e.keyCode = kbd_ge(k);
  else {
	var p=t.selectionStart;
	t.value=t.value.substring(0, p)+String.fromCharCode(kbd_ge(k))+t.value.substring(p);
	p++; t.setSelectionRange(p,p);
	return false;
  }
  return true;
}
 
// Keyboard Switcher
function kbd_switch(t)
{
  if (kbd_ignore) return;
  var i = 0; 
  if (t) {
    if (typeof(t)!='object') t = document.getElementById('kbm'+t);
	kbd_lang = kbd_lang=='en'?'ge':'en';
	setCookie('kbd_lang', kbd_lang, 360, '/');
	if (kbd_field && typeof(kbd_field) == 'string') t.form.elements[kbd_field].focus();
  } else {
	while (true) { i++; var o = document.getElementById('kbd_switch'+i); if (!o) break; o.style.display = 'inline'; }
  }
  i = 0; while (true) { i++; var o = document.getElementById('kbm'+i); if (!o) break; o.checked = (kbd_lang=='ge'); }
}
    
// Georgian Alphabets on English Keyboards
function kbd_ge(k)
{
  switch (k){
	case 97  : return 4304;		// a
	case 98  : return 4305;		// b
	case 99  : return 4330;		// c
	case 100 : return 4307;		// d
	case 101 : return 4308;		// e
	case 102 : return 4324;		// f
	case 103 : return 4306;		// g
	case 104 : return 4336;		// h
	case 105 : return 4312;		// i
	case 106 : return 4335;		// j
	case 107 : return 4313;		// k
	case 108 : return 4314;		// l
	case 109 : return 4315;		// m
	case 110 : return 4316;		// n
	case 111 : return 4317;		// o
	case 112 : return 4318;		// p
	case 113 : return 4325;		// q
	case 114 : return 4320;		// r
	case 115 : return 4321;		// s
	case 116 : return 4322;		// t
	case 117 : return 4323;		// u
	case 118 : return 4309;		// v
	case 119 : return 4332;		// w
	case 120 : return 4334;		// x
	case 121 : return 4327;		// y
	case 122 : return 4310;		// z
	case 67  : return 4329;		// C
	case 74  : return 4319;		// J
	case 82  : return 4326;		// R
	case 83  : return 4328;		// S
	case 84  : return 4311;		// T
	case 87  : return 4333;		// W
	case 90  : return 4331;		// Z
    default : return k;
  }
}

// Get Cookie
function getCookie(n) 
{
  var c = document.cookie; var i = c.indexOf(n+'=');
  if (i == -1) return null; i = c.indexOf('=', i) + 1;
  var s = c.indexOf(';', i); if (s == -1) s = c.length;
  return unescape(c.substring(i,s));
}

// Set Cookie
function setCookie(n, v, e, p) {
  var d = new Date(); var y = d.getYear(); if (y < 1000) y += 1900; var e = new Date(y, d.getMonth(), d.getDate()+e);
  if (v != null && v != '') document.cookie=n+'='+escape(v)+'; expires='+e.toGMTString()+(p?'; path='+p:'');
}
