<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Code.ge Blog &#187; GeoKBD</title>
	<atom:link href="http://www.code.ge/posts/tag/geokbd/feed" rel="self" type="application/rss+xml" />
	<link>http://www.code.ge</link>
	<description>ბლოგი ვებ პროგრამირებისა და ტექნოლოგიების შესახებ</description>
	<lastBuildDate>Mon, 03 May 2010 14:38:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>GeoKBD &amp; WordPress</title>
		<link>http://www.code.ge/posts/geokbd-wordpress</link>
		<comments>http://www.code.ge/posts/geokbd-wordpress#comments</comments>
		<pubDate>Sat, 15 Dec 2007 14:07:37 +0000</pubDate>
		<dc:creator>იოსები</dc:creator>
				<category><![CDATA[GeoKBD]]></category>

		<guid isPermaLink="false">http://www.code.ge/geokbd/geokbd-wordpress</guid>
		<description><![CDATA[რამდენიმე ადამიანის თხოვნით ჩავატარე გარკვეული ტესტირებები GeoKBD &#8211; ს WordPress &#8211; თან ინტეგრაციაზე&#8230; მიუხედავად იმისა რომ WP იყენებს TinyMCE &#8211; ს ტექსტების ვიზუალური რედაქტირებისათვის აღმოჩნდა რომ GeoKBD &#8211; ს ინტეგრირება მაინც ვერ მოხერხდა. მიზეზი მარტივი აღმოჩნდა ძალიან, WordPress &#8211; ის დეველოპერებს გადაუტვირთიათ გლობალური TinyMCE კლასის მეთოდები რის გამოც პლაგინის ჩატვირთვა ისე აღარ ხდება როგორც ეს [...]]]></description>
			<content:encoded><![CDATA[<p>რამდენიმე ადამიანის თხოვნით ჩავატარე გარკვეული ტესტირებები GeoKBD &#8211; ს WordPress &#8211; თან ინტეგრაციაზე&#8230; მიუხედავად იმისა რომ WP იყენებს TinyMCE &#8211; ს ტექსტების ვიზუალური რედაქტირებისათვის აღმოჩნდა რომ GeoKBD &#8211; ს ინტეგრირება მაინც ვერ მოხერხდა.</p>
<p>მიზეზი მარტივი აღმოჩნდა ძალიან, WordPress &#8211; ის დეველოპერებს გადაუტვირთიათ გლობალური TinyMCE კლასის მეთოდები რის გამოც პლაგინის ჩატვირთვა ისე აღარ ხდება როგორც ეს ჩვეულებრივ TinyMCE &#8211; ს დოკუმენტაციაშია მითითებული.</p>
<p>ამისათვის გავაკეთე პლაგინის განახლება, <a href="http://geokbd.googlecode.com/files/geokbd-0-2.zip">რომელიც განთავსებულია გუგლის რეპოზიტორიში და შეგიძლიათ გადმოიწეროთ</a>.</p>
<p>რაც შეეხება ინსტალაციას. ეს პროცესი ტრადიციულად მარტივია, გახსენით geokbd-0-2.zip და მის შიგნით არსებული ფაილები გადაიტანეტ ქვემოთ ნაჩვენებ კატალოგში:</p>
<pre>
/[ROOT]/wp-includes/js/tinymce/plugins/geokbd
</pre>
<p>ცხადია <strong>geokbd</strong> კატალოგი წინასწარ უნდა შექმნათ.</p>
<p>შემდეგ გახსენით ფაილი:</p>
<pre>
/[ROOT]/wp-includes/js/tinymce/tiny_mce_config.php
</pre>
<p>და მასში მოძებნეთ შემდეგი სტრიქონი: </p>
<pre>
$plugins = array('inlinepopups', 'autosave', 'spellchecker', 'paste', 'wordpress');
</pre>
<p>ეს სტრიქონი დაახლოვებით 28-ე ხაზზეა. შემდეგ გადააკეთეთ იგი შემდეგნაირად:</p>
<pre>
$plugins = array('inlinepopups', 'autosave', 'spellchecker', 'paste', 'wordpress', 'geokbd');
</pre>
<p>ანუ პლაგინების ჩამონათვალის მასივში საჭიროა geokbd პლაგინის სახელის მითითება.</p>
<p>სულ ეს არის და ეს <img src='http://www.code.ge/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.code.ge/posts/geokbd-wordpress/feed</wfw:commentRss>
		<slash:comments>34</slash:comments>
		</item>
		<item>
		<title>GeoKBD 0.3.1 &#8211; მორიგი გაუმჯობესებები</title>
		<link>http://www.code.ge/posts/geokbd-031-various-improvements</link>
		<comments>http://www.code.ge/posts/geokbd-031-various-improvements#comments</comments>
		<pubDate>Mon, 26 Nov 2007 09:59:15 +0000</pubDate>
		<dc:creator>იოსები</dc:creator>
				<category><![CDATA[GeoKBD]]></category>

		<guid isPermaLink="false">http://www.code.ge/geokbd/geokbd-031-various-improvements</guid>
		<description><![CDATA[პირველ რიგში დიდი მადლობა სკრიპტის მომხმარებლებს აღმოჩენილი პრობლემებისა და გაუმჯობესებების შემოთავაზებისათვის! ეს მცირე განახლება მოიცავს შემდეგ გაუმჯობესებებს: დაიხვეწა GeoKBD.map() მეთოდის გამოყენების მექანიზმი და აგრეთვე გაფართოვდა მისი შესაძლებლობი. ამ მეთოდის გამოყენება შეიძლება უპარამეტროდ, კერძოდ კი თუ მას არ გადავცემთ არცერთ პარამეტრს, კლავიატურის მიბმა მოხდება დოკუმენტში არსებული ყველა ფორმის ყველა ტექსტურ ველზე. ამის მისაღწევად საკმარისია შემდეგი კონსტრუქცია: [...]]]></description>
			<content:encoded><![CDATA[<p>პირველ რიგში დიდი მადლობა სკრიპტის მომხმარებლებს აღმოჩენილი პრობლემებისა და გაუმჯობესებების შემოთავაზებისათვის!</p>
<p>ეს მცირე განახლება მოიცავს შემდეგ გაუმჯობესებებს:</p>
<p>დაიხვეწა <strong>GeoKBD.map()</strong> მეთოდის გამოყენების მექანიზმი და აგრეთვე გაფართოვდა მისი შესაძლებლობი.</p>
<ul>
<li>ამ მეთოდის გამოყენება შეიძლება უპარამეტროდ, კერძოდ კი თუ მას არ გადავცემთ არცერთ პარამეტრს, კლავიატურის მიბმა მოხდება დოკუმენტში არსებული ყველა ფორმის ყველა ტექსტურ ველზე. ამის მისაღწევად საკმარისია შემდეგი კონსტრუქცია:
<pre>
    GeoKBD.map();
</pre>
</li>
<li>მეთოდს  პირველ პარამეტრად შეგვიძლია გადავცეთ არა უბრალოდ ფორმის სახელი სტრიქონის მეშვეობით, არამედ ფორმის დასახელებების მასივი:
<pre>
    GeoKBD.map(['my_form_1', 'my_form_2']);
</pre>
<p>ეს შესაძლებლობა თავიდან აგვარიდებს დამატებითი კოდის წერის აუცილებლობას, რადგან ზემოთ ნაჩვენები შედეგის მისაღწევად აქამდე საჭირო იყო მსგავსი კონსტრუქციის გამოყენება:</p>
<pre>
    GeoKBD.map('my_form_1');
    GeoKBD.map('my_form_2');
</pre>
</li>
<li>დაიფიქსა შეცდომა როდესაც პარამეტრად გადაცემული ფორმის არ არსებობის შემთხვევაში სკრიპტი აგდებდა შეცდომებს;</li>
<li>
დაიფიქსა WYSIWYG რედაქტორებზე მიბმის დროს აღმოჩენილი შეცდომა Alt და Ctrl კლავიშებთან დაკავშირებით. ამჯერად ეს კლავიშები მუშაობს;</li>
</ul>
<p>ამ შეცდომების აღმოჩენისათვის განასკუთრებულ მადლობას ვუხდი <a href="http://www.rocko.ge">Rocko</a> &#8211; ს და <a href="http://www.despani.com">ლევანჩოს</a> <img src='http://www.code.ge/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.code.ge/posts/geokbd-031-various-improvements/feed</wfw:commentRss>
		<slash:comments>42</slash:comments>
		</item>
		<item>
		<title>GeoKBD &#8211; TinyMCE Dedicated Plugin 0.1</title>
		<link>http://www.code.ge/posts/geokbd-tinymce-dedicated-plugin-01</link>
		<comments>http://www.code.ge/posts/geokbd-tinymce-dedicated-plugin-01#comments</comments>
		<pubDate>Tue, 20 Nov 2007 09:24:58 +0000</pubDate>
		<dc:creator>იოსები</dc:creator>
				<category><![CDATA[GeoKBD]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.code.ge/geokbd/geokbd-tinymce-dedicated-plugin-01</guid>
		<description><![CDATA[მაშ ასე, ვაგრძელებ GeoKBD &#8211; სთან თამაშს ამჯერად შევქმენი ცნობილი WYSIWYG რედაქტორის TinyMCE &#8211; ს პლაგინი. მართალია GeoKBD &#8211; ს მასზე მიბმა არ წარმოადგენს არც პლაგინის გარეშე პრობლემას, მაგრამ როგორც ჩანს პლაგინის არსებობა გარკვეულწილად უფრო კომფორტულს ხდის ამ სკრიპტის მოხმარებადობას. პლაგინის დაარქივებული ვერსიის გადმოწერა შესაძლებელია SVN რეპოზიტორიდან. რაც შეეხება ინსტალაციას&#8230; გახსენით არქივი და geokbd დირექტორია [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://www.code.ge/wp-content/uploads/2007/11/tinymce.gif' alt='tinymce.gif' align="left" style="margin-right: 12px;"/> მაშ ასე, ვაგრძელებ GeoKBD &#8211; სთან თამაშს <img src='http://www.code.ge/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ამჯერად შევქმენი ცნობილი WYSIWYG რედაქტორის <a href="http://tinymce.moxiecode.com/">TinyMCE</a> &#8211; ს პლაგინი. მართალია GeoKBD &#8211; ს მასზე მიბმა არ წარმოადგენს არც პლაგინის გარეშე პრობლემას, მაგრამ როგორც ჩანს პლაგინის არსებობა გარკვეულწილად უფრო კომფორტულს ხდის ამ სკრიპტის მოხმარებადობას.</p>
<p>პლაგინის დაარქივებული ვერსიის გადმოწერა შესაძლებელია <a href="http://geokbd.googlecode.com/files/geokbd.zip">SVN რეპოზიტორიდან</a>.</p>
<p>რაც შეეხება ინსტალაციას&#8230; <span id="more-96"></span></p>
<p>გახსენით არქივი და <strong>geokbd</strong> დირექტორია გადააკოპირეთ plugins დირექტორიში, თქვენი TinyMCE &#8211; ს ინსტალაციის შესაბამის მისამართზე. მაგ:</p>
<pre>
/public_html/tinymce/jscripts/tiny_mce/plugins
</pre>
<p>შემდეგ, იმ HTML დოკუმენტში/შაბლონში სადაც ხორციელდება უშუალოდ TinyMCE რედაქტორის ინიციალიზაცია, იპოვეთ მსგავსი მონაკვეთი:</p>
<pre>
tinyMCE.init({
    theme : "advanced",
    mode : "exact",
    elements : "elm1,elm2",
    save_callback : "customSave",
    content_css : "example_advanced.css",
    extended_valid_elements : "a[href|target|name]",

    <strong>plugins : "table",</strong> //პლაგინების ჩამონათვალი

    theme_advanced_buttons3_add_before : "tablecontrols,separator",
    //execcommand_callback : "myCustomExecCommandHandler",
    debug : false
});
</pre>
<p>და ინიციალიზაციის ობიექტის <strong>plugins</strong> თვისების მნიშვნელობას დაამატეთ პლაგინის სახელი: <strong>geokbd</strong>.</p>
<p>საბოლოო ჯამში ინიციალიზაციის ობიექტი მიიღებს ასეთ სახეს:</p>
<pre>
tinyMCE.init({
    theme : "advanced",
    mode : "exact",
    elements : "elm1,elm2",
    save_callback : "customSave",
    content_css : "example_advanced.css",
    extended_valid_elements : "a[href|target|name]",

    <strong>plugins : "geokbd,table",</strong> //geokbd პლაგინის მითითება

    theme_advanced_buttons3_add_before : "tablecontrols,separator",
    //execcommand_callback : "myCustomExecCommandHandler",
    debug : false
});
</pre>
<p>სულ ეს არის&#8230; TinyMCE &#8211; ში უკვე შესაძლებელია ქართულად წერა. ქართული კლავიატურის ჩართვა გამორთვისათვის გამოიყენეთ &#8220;~&#8221; კლავიში.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.code.ge/posts/geokbd-tinymce-dedicated-plugin-01/feed</wfw:commentRss>
		<slash:comments>50</slash:comments>
		</item>
		<item>
		<title>GeoKBD 0.3 &#8211; Rich Editor Support Completed!</title>
		<link>http://www.code.ge/posts/geokbd-03-rich-editor-support-completed</link>
		<comments>http://www.code.ge/posts/geokbd-03-rich-editor-support-completed#comments</comments>
		<pubDate>Mon, 19 Nov 2007 08:05:00 +0000</pubDate>
		<dc:creator>იოსები</dc:creator>
				<category><![CDATA[GeoKBD]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.code.ge/geokbd/geokbd-30-rich-editor-support-finished</guid>
		<description><![CDATA[ამჯერად WYSIWYG რედაქტორების მხარდაჭერა რეალიზებულია IE6/7 &#8211; ისათვის, შედარებით მახინჯი გამოსავალის მოძებნა გახდა ამისათვის საჭირო, თუმცა ეს არ არის ამ ეტაპზე მთავარი. ამიერიდან GeoKBD &#8211; ს ინტეგრაცია თავისუფლად შესაძლებელია WYSIWYG ტიპის რედაქტორებთან. მაგალითები შეგიძლიათ იხილოთ ამ გვერდზე. ასევე ამ რელიზში შესულია კიდევ ერთი გაუმჯობესება, ქართული კლავიატურის ჩართვა გამორთვისათვის უბრალოდ საკმარისია &#8220;~&#8221; ღილაკის გამოყენება, ე.წ. checkbox [...]]]></description>
			<content:encoded><![CDATA[<p>ამჯერად WYSIWYG რედაქტორების მხარდაჭერა რეალიზებულია IE6/7 &#8211; ისათვის, შედარებით მახინჯი გამოსავალის მოძებნა გახდა ამისათვის საჭირო, თუმცა ეს არ არის ამ ეტაპზე მთავარი. ამიერიდან GeoKBD &#8211; ს ინტეგრაცია თავისუფლად შესაძლებელია WYSIWYG ტიპის რედაქტორებთან. მაგალითები შეგიძლიათ იხილოთ <a href="http://www.code.ge/geokbd">ამ გვერდზე</a>.</p>
<p>ასევე ამ რელიზში შესულია კიდევ ერთი გაუმჯობესება, ქართული კლავიატურის ჩართვა გამორთვისათვის უბრალოდ საკმარისია &#8220;~&#8221; ღილაკის გამოყენება, ე.წ. checkbox ელემენტი საჭირო აღარ არის, თუმცა მისი გამოყენება კვლავ შეიძლება და სკრიპტს მუშაობაში ხელს არ უშლის.</p>
<p>განახლებული ვერსიის გადმოწერა შეგიძლია <a href="http://geokbd.googlecode.com/svn/trunk/geokbd/geokbd.js">SVN &#8211; იდან</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.code.ge/posts/geokbd-03-rich-editor-support-completed/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>GeoKBD 0.2.2 &#8211; Rich Editor Support Improvements</title>
		<link>http://www.code.ge/posts/geokbd-022-rich-editor-support-improvements</link>
		<comments>http://www.code.ge/posts/geokbd-022-rich-editor-support-improvements#comments</comments>
		<pubDate>Sun, 18 Nov 2007 14:23:17 +0000</pubDate>
		<dc:creator>იოსები</dc:creator>
				<category><![CDATA[GeoKBD]]></category>

		<guid isPermaLink="false">http://www.code.ge/geokbd/geokbd-022-rich-editor-support-improvements</guid>
		<description><![CDATA[მორიგი განახლება მოიცავს შემდეგ გაუმჯობესებებს: იმისათვის რათა მოხდეს ედიტორზე ქართული კლავიატურის მიბმა, აღარ არის საჭირო window ობიექტის onload ხდომილების გამოყენება. ნაცვლად ასეთი კონსტრუქციისა: window.onload = function() { GeoKBD.mapIFrame('elm1_ifr'); } უკვე საკმარისია მსგავსი კონსტრუქცია: GeoKBD.mapIFrame('elm1_ifr'); გარკვეულ შემთხვევბში მხოლოდ ედიტორის iframe ელემენტის იდენტიფიკატორის მითითება არ არის საკმარისი. ამიტომ mapIFrame() მეთოდს პირველ პარამეტრად შეგვიძლია გადავცეთ არა უბრალოდ იდენტიფიკატორი, [...]]]></description>
			<content:encoded><![CDATA[<p>მორიგი განახლება მოიცავს შემდეგ გაუმჯობესებებს:</p>
<ul>
<li>იმისათვის რათა მოხდეს ედიტორზე ქართული კლავიატურის მიბმა, აღარ არის საჭირო window ობიექტის onload ხდომილების გამოყენება.
<p>ნაცვლად ასეთი კონსტრუქციისა:</p>
<pre>
window.onload = function() {
    GeoKBD.mapIFrame('elm1_ifr');
}
</pre>
<p>უკვე საკმარისია მსგავსი კონსტრუქცია:</p>
<pre>
GeoKBD.mapIFrame('elm1_ifr');
</pre>
</li>
<li>გარკვეულ შემთხვევბში მხოლოდ ედიტორის iframe ელემენტის იდენტიფიკატორის მითითება არ არის საკმარისი. ამიტომ mapIFrame() მეთოდს პირველ პარამეტრად შეგვიძლია გადავცეთ არა უბრალოდ იდენტიფიკატორი, არამედ  ე.წ. <strong>callback</strong> ფუნქცია. მაგალითად FckEditor &#8211; ის ქართულ კლავიატურაზე მისაბმელად საჭიროა შემდეგი კონსტრუქცია:<br />

<pre>
GeoKBD.mapIFrame(function() {
   var _el = null;
   if (_el = document.getElementById('FCKeditor1___Frame')) {
       return _el.contentDocument.getElementsByTagName('iframe')[0];
   }
});
</pre>
<p>ეს საჭიროა გამომდინარე იქედან რომ FckEditor &#8211; ი iframe &#8211; ს შიგნით კიდევ ერთ iframe ელემენტს იყენებს.. თუმცა ნებისმიერ სპეციალურ შემთხვევაში  callback ფუნქცია ძალიან სასარგებლოდ შეიძლება იქნას გამოყენებული&#8230;</li>
<li>დაიფიქსა ჩვეულებრივი ფორმის ელემენტების მიბმის პატარა პრობლემა რომელიც ელემენტის type ატრიბუტის არარსებობის შემთხვევაში გვხდებოდა</li>
<li>
wysiwyg ედიტორთან მუშაობის დროს შესაძლებელია ქართულის ჩართვა/გამორთვა &#8220;~&#8221; კლავიშის მეშვეობით</li>
</ul>
<p>სკრიპტის განახლებული ვერსია შესაძლებელია გადაიწეროთ <a href="http://geokbd.googlecode.com/svn/trunk/geokbd/geokbd.js">SVN რეპოზიტორიდან</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.code.ge/posts/geokbd-022-rich-editor-support-improvements/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>GeoKBD 0.2.1 &#8211; Rich Editor Support</title>
		<link>http://www.code.ge/posts/geokbd-021-rich-editor-support</link>
		<comments>http://www.code.ge/posts/geokbd-021-rich-editor-support#comments</comments>
		<pubDate>Sat, 17 Nov 2007 13:05:28 +0000</pubDate>
		<dc:creator>იოსები</dc:creator>
				<category><![CDATA[GeoKBD]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.code.ge/geokbd/geokbd-021-rich-editor-support</guid>
		<description><![CDATA[GeoKBD &#8211; ს მორიგი განახლება მოიცავს ე.წ. Rich Editor(wysiwyg) &#8211; ინტეგრაციას, ამჯერად მისი მეშვეობით შესაძლებელია ნებისმიერ ასეთ ედიტორში ქართულად წერა. მართალია ჯერ ნედლი და დაუხვეწავი გადაწყვეტაა მაგრამ მთავარია მუშაობს. განახლების გადაწერა ცხადია შესაძლებელია SVN რეპოზიტორიდან. ამჯერად სკრიპტი გატესტილია შემდეგ ბრაუზერებში: Safari Mac OS X Opera Mozilla FireFox სკრიპტს დაემატა ერთი ახალი მეთოდი mapIFrame რომლის მეშვეობითაც [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.code.ge/geokbd">GeoKBD</a> &#8211; ს მორიგი განახლება მოიცავს ე.წ. Rich Editor(wysiwyg) &#8211; ინტეგრაციას, ამჯერად მისი მეშვეობით შესაძლებელია ნებისმიერ ასეთ ედიტორში ქართულად წერა. </p>
<p>მართალია ჯერ ნედლი და დაუხვეწავი გადაწყვეტაა მაგრამ მთავარია მუშაობს. განახლების გადაწერა ცხადია შესაძლებელია <a href="http://geokbd.googlecode.com/svn/trunk/geokbd/geokbd.js">SVN რეპოზიტორიდან</a>.</p>
<p>ამჯერად სკრიპტი გატესტილია შემდეგ ბრაუზერებში:</p>
<ul>
<li>Safari Mac OS X</li>
<li>Opera</li>
<li>Mozilla FireFox</li>
</ul>
<p>სკრიპტს დაემატა ერთი ახალი მეთოდი <strong>mapIFrame</strong> რომლის მეშვეობითაც შეძლებთ ედიტორში ქართულად წერის შესაძლებლობის რეალიზაციას.<br />
მისი მიბმა ედიტორზე შეგიძლიათ განახორციელოდ შემდეგი ჯავასკრიპტ კონსტრუქციით:</p>
<pre>
window.onload = function() {
	GeoKBD.mapIFrame('myEditorId');
        //სადაც 'myEditorId თქვენი კომპონენტის იდენტიფიკატორია!
}
</pre>
<p>არსებული მუშა მაგალითი შესაძლებელია <a href="http://www.code.ge/samples/richeditor.html">იხილოთ ამ მისამართზე.</a></p>
<p>P.S.<br />
ექსპერიმენტის სახით მოვსინჯე და GeoKBD ავამუშავე TinyMCE &#8211; სთან.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.code.ge/posts/geokbd-021-rich-editor-support/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>GeoKBD: პირველი განახლება</title>
		<link>http://www.code.ge/posts/geokbd-first-update</link>
		<comments>http://www.code.ge/posts/geokbd-first-update#comments</comments>
		<pubDate>Fri, 26 Oct 2007 09:47:46 +0000</pubDate>
		<dc:creator>იოსები</dc:creator>
				<category><![CDATA[GeoKBD]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.code.ge/javascript/geokbd-first-update</guid>
		<description><![CDATA[პირველ რიგში დიდი მადლობა მინდა გადავუხადო გიორგი კობერიძეს აღმოჩენილი შეცდომისათვის სკრიპტში. რადგან სრულფასოვნად ვერ გავტესტე სკრიპტი, ბუნებრივია რომ არ იყო გამორიცხული მას ჰქონოდა შეცდომები&#8230; ეს ასეც აღმოჩნდა და ეხლა უშეცდომოდ(იმედი მაქვს) მუშაობს ყველაფერი. გარდა შეცდომის შესწორებისა რომელიც მდგომარებოდა ერთი და იგივე ფორმის ელემენტების ქართულ კლავიატურასთან მიბმაში, სკრიპტში ასევე შევიტანე სხვა მცირე ცვლილებები რომლებიც მის მოხმარებას [...]]]></description>
			<content:encoded><![CDATA[<p>პირველ რიგში დიდი მადლობა მინდა გადავუხადო გიორგი კობერიძეს აღმოჩენილი შეცდომისათვის სკრიპტში.</p>
<p>რადგან სრულფასოვნად ვერ გავტესტე სკრიპტი, ბუნებრივია რომ არ იყო გამორიცხული მას ჰქონოდა შეცდომები&#8230; ეს ასეც აღმოჩნდა <img src='http://www.code.ge/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  და ეხლა უშეცდომოდ(იმედი მაქვს) მუშაობს ყველაფერი.</p>
<p>გარდა შეცდომის შესწორებისა რომელიც მდგომარებოდა ერთი და იგივე ფორმის ელემენტების ქართულ კლავიატურასთან მიბმაში, სკრიპტში ასევე შევიტანე სხვა მცირე ცვლილებები რომლებიც მის მოხმარებას უფრო გააიოლებს. ასევე დაფიქსულია Mac OS X Safari &#8211; ში აღმოჩენილი ბაგი, რომელიც ტექსტურ ველში პირველი სიმბოლოს აკრეფის დროს იყო.</p>
<p><strong><br />
მცირეოდენი საჭირო განმარტებები</strong></p>
<p>ერთი ფორმის, მრავალი ველის კლავიატურასთან მიბმის საჭიროების შემთხვევაში ნაცვლად შემდეგი კონსტრუქციისა:</p>
<pre>
GeoKBD.map('my-form', 'my-field-one');
GeoKBD.map('my-form', 'my-field-two');
</pre>
<p>დინამიური მასივის საშუალებით უკვე შესაძლებელია ასეთი კონსტრუქციის გამოყენება:</p>
<pre>
GeoKBD.map('my-form', ['my-field-one', 'my-field-two']);
</pre>
<p>იმ შემთხვევაში თუ საჭირო ფორმის ყველა ელემენტის კლავიატურაზე მიბმა საკმარისია შემდეგი კონსტრუქცია:</p>
<pre>
GeoKBD.map('my-form');
</pre>
<p><a href="http://geokbd.googlecode.com/svn/trunk/geokbd/geokbd.js"><br />
სკრიპტის გადაწერა შეგიძლიათ პირდაპირ SVN რეპოზიტორიდან</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.code.ge/posts/geokbd-first-update/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>ქართული კლავიატურის სკრიპტი</title>
		<link>http://www.code.ge/posts/georgian-keyboard</link>
		<comments>http://www.code.ge/posts/georgian-keyboard#comments</comments>
		<pubDate>Tue, 23 Oct 2007 13:09:54 +0000</pubDate>
		<dc:creator>იოსები</dc:creator>
				<category><![CDATA[GeoKBD]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.code.ge/javascript/georgian-keyboard</guid>
		<description><![CDATA[ესე იგი მინდოდა თუ არ მინდოდა ირაკლი ნადარეიშვილმა მიბიძგა და ქართული კლავიატურის სკრიპტი დავწერე&#8230; სკრიპტი ძალიან მარტივია, და მისი მიბმა შეგიძლიათ ნებისმიერ ტექსტურ ველზე, ასევე მას აქვს ქართული კლავიატურის ჩართვისა და გამორთვის მხარდაჭერა. სიმბოლოების ტრანსლირებისათვის გამოვიყენე ირაკლის მიერ წლების წინ შემუშავებული ალგორითმი (ორიგინალი შეგიძლიათ იხილოთ აქ) სკრიპტის მუშა მაგალითი შეგიძლიათ იხილოთ ამ მისამართზე სკრიპტის უახლესი [...]]]></description>
			<content:encoded><![CDATA[<p>ესე იგი მინდოდა თუ არ მინდოდა <a href="http://www.freshblurbs.com">ირაკლი ნადარეიშვილმა</a> მიბიძგა და ქართული კლავიატურის სკრიპტი დავწერე&#8230; </p>
<p>სკრიპტი ძალიან მარტივია, და მისი მიბმა შეგიძლიათ ნებისმიერ ტექსტურ ველზე, ასევე მას აქვს ქართული კლავიატურის ჩართვისა და გამორთვის მხარდაჭერა. სიმბოლოების ტრანსლირებისათვის გამოვიყენე ირაკლის მიერ წლების წინ შემუშავებული ალგორითმი (<a href="http://www.sapikhvno.org/viewtopic.php?t=47&#038;postdays=0&#038;postorder=asc&#038;start=10">ორიგინალი შეგიძლიათ იხილოთ აქ</a>)</p>
<p>სკრიპტის მუშა მაგალითი შეგიძლიათ იხილოთ <a href="http://www.code.ge/samples/geokbd.htm">ამ მისამართზე</a><br />
სკრიპტის უახლესი ვერსიის გადმოწერა შეგიძლიათ <a href="http://geokbd.googlecode.com/svn/trunk/geokbd/geokbd.js">ამ მისამართიდან</a></p>
<p>რა უპირატესობები აქვს ამ სკრიპტს? იგი არის პატარა, კოდი არის ძალიან მარტივი და გასაგები, არ აბინძურებს ვებ აპლიკაციის სკოუპს რადგან იგი მთლიანად არის ენკაპსულირებული თავისსავე სკოუპში რაც არის იმის გარანტია რომ მისი გამოყენება შეგიძლია მარტივად და უსაფრთხოდ თუნდაც სხვა ანალოგიური დანიშნულების სკრიპტებთან ერთად. </p>
<p>ასევე საგულისხმოა ის რომ <strong>String </strong> ობიექტს ემატება ორი მეთოდი ესენია:</p>
<ol>
<li><strong>translateToKA()</strong> &#8211;  მეთოდი რომელსაც შეუძლია ნებისმიერი სტრიქონის პირდაპირ გადაყვანა ქართულ უნიკოდში. რაც ნიშნავს იმას რომ ამ მეთოდის გამოყენება თამამად შეგიძლიათ თქვენს სკრიპტებში.
<p>მეთოდის გამოყენება შეგიძლიათ შემდეგნაირად:</p>
<pre>
var str = "es aris nebismieri teqsti";
alert(str.translateToKA());

//ან პირდაპირ ასე
alert("es aris text literali".translateToKA());
</pre>
</li>
<li><strong>pasteTo([html form element])</strong> &#8211; რომელსაც პარამეტრად გადაეცემა ფორმის ელემენტი. ეს მეთოდი ტექსტის კოპირებას ახდენს ან პირდაპირ თუ ელემენტის მნიშვნელობა ცარიელია, ან იმ ადგილას სადაც ზის კურსორი, ან ჩაანაცვლებს მონიშნულ ტექსტს ახალი ტექსტით.
<p>მეთოდის გამოყენება შეგიძლიათ შემდეგნაირად:</p>
<pre>
var str = "es aris nebismieri teqsti";
str.translateToKA().pasteTo(document.forms['my-form-name']['my-field-name']);
</pre>
</li>
</ol>
<p><strong>კოდი ვრცელდება MIT ლიცენზიით</strong></p>
<pre>
        /*
	 * GeoKBD 0.1 - Georgian keyboard and text convertation library
	 *
	 * Copyright (c) 2007 Ioseb Dzmanashvili (http://www.code.ge)
	 * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
	 */
</pre>
<p><span id="more-81"></span></p>
<h2>გამოყენების მაგალითი</h2>
<p>HTML კოდი:</p>
<div class="codecolorer-container html4strict blackboard" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br /></div></td><td><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/form.html"><span style="color: #000000; font-weight: bold;">form</span></a> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;my-form&quot;</span> <span style="color: #000066;">action</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;&quot;</span>&gt;</span><br />
&nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/input.html"><span style="color: #000000; font-weight: bold;">input</span></a> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;checkbox&quot;</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;geo&quot;</span> <span style="color: #000066;">checked</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;checked&quot;</span><span style="color: #66cc66;">/</span>&gt;</span><br />
&nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/br.html"><span style="color: #000000; font-weight: bold;">br</span></a> <span style="color: #66cc66;">/</span>&gt;</span><br />
&nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/textarea.html"><span style="color: #000000; font-weight: bold;">textarea</span></a> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;post&quot;</span> <span style="color: #000066;">cols</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;40&quot;</span> <span style="color: #000066;">rows</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;8&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/textarea.html"><span style="color: #000000; font-weight: bold;">textarea</span></a>&gt;</span><br />
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/form.html"><span style="color: #000000; font-weight: bold;">form</span></a>&gt;</span><br />
<br />
<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/br.html"><span style="color: #000000; font-weight: bold;">br</span></a> <span style="color: #66cc66;">/</span>&gt;</span><br />
<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/form.html"><span style="color: #000000; font-weight: bold;">form</span></a> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;another-form&quot;</span> <span style="color: #000066;">action</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;&quot;</span>&gt;</span><br />
&nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/input.html"><span style="color: #000000; font-weight: bold;">input</span></a> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;checkbox&quot;</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;geo1&quot;</span> <span style="color: #000066;">checked</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;checked&quot;</span><span style="color: #66cc66;">/</span>&gt;</span><br />
&nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/br.html"><span style="color: #000000; font-weight: bold;">br</span></a> <span style="color: #66cc66;">/</span>&gt;</span><br />
&nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/textarea.html"><span style="color: #000000; font-weight: bold;">textarea</span></a> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;frm&quot;</span> <span style="color: #000066;">cols</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;40&quot;</span> <span style="color: #000066;">rows</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;8&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/textarea.html"><span style="color: #000000; font-weight: bold;">textarea</span></a>&gt;</span><br />
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/form.html"><span style="color: #000000; font-weight: bold;">form</span></a>&gt;</span></div></td></tr></tbody></table></div>
<p>JavaScript კოდი:</p>
<div class="codecolorer-container javascript blackboard" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">GeoKBD.<span style="color: #660066;">map</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'my-form'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'post'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
GeoKBD.<span style="color: #660066;">map</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'another-form'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'frm'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'geo1'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>ამ კოდის შესრულების შემდეგ ორივე ფორმაში შესაძლებელი იქნება ქართულად ბეჭდვა, კლავიატურის გადართვის გარეშე.</p>
<p>სკრიპტის მუშაობის პრინციპი მარტივია, GeoKBD ობიექტის map მეთოდს გადავცემთ სამ პარამეტრს:</p>
<ol>
<li>HTML ფორმის სახელი ან თავად HTML ფორმა</li>
<li>იმ ველის სახელი რომელშიც შესაძლებელი უნდა იყოს ქართულად ბეჭდვა ან თუ გსურთ რომ ფორმის ყველა ველში იყოს შესაძლებელი ქართულად ბეჭდვა, მაშინ ამ პარამეტრის გადაცემა არ არის აუცილებელი</li>
<li>კლავიატურის გადამრთველი ველის(checkbox) სახელი (არ არის აუცილებელი პარამეტრი, თუ ამ პარამეტრს არ გადავცმეთ გამოყენებული იქნება სახელი &#8216;geo&#8217;)</li>
</ol>
<p><strong><br />
პროგრამის სრული კოდი:</strong></p>
<div class="codecolorer-container javascript blackboard" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br />97<br />98<br />99<br />100<br />101<br />102<br />103<br />104<br />105<br />106<br />107<br />108<br />109<br />110<br />111<br />112<br />113<br />114<br />115<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; <br />
&nbsp; <span style="color: #006600; font-style: italic;">/*<br />
&nbsp; &nbsp;* GeoKBD 0.1 - Georgian keyboard and text convertation library<br />
&nbsp; &nbsp;*<br />
&nbsp; &nbsp;* Copyright (c) 2007 Ioseb Dzmanashvili (http://www.code.ge)<br />
&nbsp; &nbsp;* Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)<br />
&nbsp; &nbsp;*/</span><br />
&nbsp; <br />
&nbsp; String.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">pasteTo</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>field<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; field.<span style="color: #000066;">focus</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>document.<span style="color: #660066;">selection</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> selection <span style="color: #339933;">=</span> document.<span style="color: #660066;">selection</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> range <span style="color: #339933;">=</span> selection.<span style="color: #660066;">createRange</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; range.<span style="color: #660066;">colapse</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>range<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; range.<span style="color: #660066;">text</span> <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>field.<span style="color: #660066;">selectionStart</span> <span style="color: #339933;">||</span> field.<span style="color: #660066;">selectionEnd</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> scrollTop <span style="color: #339933;">=</span> field.<span style="color: #660066;">scrollTop</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> start <span style="color: #339933;">=</span> field.<span style="color: #660066;">selectionStart</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> end <span style="color: #339933;">=</span> field.<span style="color: #660066;">selectionEnd</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> value <span style="color: #339933;">=</span> field.<span style="color: #660066;">value</span>.<span style="color: #660066;">substring</span><span style="color: #009900;">&#40;</span>0<span style="color: #339933;">,</span> start<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span> <span style="color: #339933;">+</span> field.<span style="color: #660066;">value</span>.<span style="color: #660066;">substring</span><span style="color: #009900;">&#40;</span>end<span style="color: #339933;">,</span> field.<span style="color: #660066;">value</span>.<span style="color: #660066;">length</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; field.<span style="color: #660066;">value</span> <span style="color: #339933;">=</span> value<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; field.<span style="color: #660066;">scrollTop</span> <span style="color: #339933;">=</span> scrollTop<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; field.<span style="color: #660066;">selectionStart</span> <span style="color: #339933;">=</span> start <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">length</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; field.<span style="color: #660066;">selectionEnd</span> <span style="color: #339933;">=</span> start <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">length</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; field.<span style="color: #660066;">value</span> <span style="color: #339933;">+=</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <br />
&nbsp; <br />
&nbsp; String.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">translateToKA</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #006600; font-style: italic;">/**<br />
&nbsp; &nbsp; &nbsp;* Original idea by Irakli Nadareishvili<br />
&nbsp; &nbsp; &nbsp;* http://www.sapikhvno.org/viewtopic.php?t=47&amp;postdays=0&amp;postorder=asc&amp;start=10<br />
&nbsp; &nbsp; &nbsp;*/</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> index<span style="color: #339933;">,</span> chr<span style="color: #339933;">,</span> text <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> symbols <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;abgdevzTiklmnopJrstufqRySCcZwWxjh&quot;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; chr <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">substr</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">,</span> 1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>index <span style="color: #339933;">=</span> symbols.<span style="color: #660066;">indexOf</span><span style="color: #009900;">&#40;</span>chr<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;=</span> 0<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; text.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span>String.<span style="color: #660066;">fromCharCode</span><span style="color: #009900;">&#40;</span>index <span style="color: #339933;">+</span> 4304<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; text.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span>chr<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> text.<span style="color: #660066;">join</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <br />
&nbsp; <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><br />
&nbsp; <br />
&nbsp; GeoKBD <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; event<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; get<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> e <span style="color: #339933;">||</span> window.<span style="color: #660066;">event</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; getKeyCode<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; e <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">get</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> e.<span style="color: #660066;">keyCode</span> <span style="color: #339933;">||</span> e.<span style="color: #660066;">which</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; targetIs<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>e<span style="color: #339933;">,</span> tagName<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; e <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">get</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> t <span style="color: #339933;">=</span> e.<span style="color: #660066;">target</span> <span style="color: #339933;">||</span> e.<span style="color: #660066;">srcElement</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> t.<span style="color: #660066;">tagName</span>.<span style="color: #660066;">toLowerCase</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> tagName <span style="color: #339933;">?</span> t <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; map<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>form<span style="color: #339933;">,</span> contentFieldName<span style="color: #339933;">,</span> switcher<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> self <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; form <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">typeof</span> form <span style="color: #339933;">==</span> <span style="color: #3366CC;">'string'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">?</span> document.<span style="color: #660066;">forms</span><span style="color: #009900;">&#91;</span>form<span style="color: #009900;">&#93;</span> <span style="color: #339933;">:</span> form<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; switcher <span style="color: #339933;">=</span> switcher <span style="color: #339933;">||</span> <span style="color: #3366CC;">'geo'</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; form.<span style="color: #660066;">onkeypress</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; e <span style="color: #339933;">=</span> self.<span style="color: #660066;">event</span>.<span style="color: #660066;">get</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>e.<span style="color: #660066;">altKey</span> <span style="color: #339933;">||</span> e.<span style="color: #660066;">ctrlKey</span><span style="color: #009900;">&#41;</span> <span style="color: #000066; font-weight: bold;">return</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> target<span style="color: #339933;">,</span> fieldName <span style="color: #339933;">=</span> contentFieldName<span style="color: #339933;">,</span> _switcher <span style="color: #339933;">=</span> switcher<span style="color: #339933;">,</span> keyCode <span style="color: #339933;">=</span> self.<span style="color: #660066;">event</span>.<span style="color: #660066;">getKeyCode</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>keyCode <span style="color: #339933;">==</span> 96<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#91;</span>_switcher<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">checked</span> <span style="color: #339933;">=</span> <span style="color: #339933;">!</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#91;</span>_switcher<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">checked</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#91;</span>_switcher<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">checked</span><span style="color: #009900;">&#41;</span> <span style="color: #000066; font-weight: bold;">return</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>target <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>self.<span style="color: #660066;">event</span>.<span style="color: #660066;">targetIs</span><span style="color: #009900;">&#40;</span>e<span style="color: #339933;">,</span> <span style="color: #3366CC;">'textarea'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> self.<span style="color: #660066;">event</span>.<span style="color: #660066;">targetIs</span><span style="color: #009900;">&#40;</span>e<span style="color: #339933;">,</span> <span style="color: #3366CC;">'input'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>fieldName <span style="color: #339933;">&amp;&amp;</span> <span style="color: #009900;">&#40;</span>target.<span style="color: #000066;">name</span> <span style="color: #339933;">!=</span> fieldName<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #000066; font-weight: bold;">return</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; text <span style="color: #339933;">=</span> String.<span style="color: #660066;">fromCharCode</span><span style="color: #009900;">&#40;</span>keyCode<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; kaText <span style="color: #339933;">=</span> text.<span style="color: #660066;">translateToKA</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>kaText <span style="color: #339933;">!=</span> text<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; kaText.<span style="color: #660066;">pasteTo</span><span style="color: #009900;">&#40;</span>target<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; form <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span><br />
&nbsp; <br />
&nbsp; window.<span style="color: #660066;">GeoKBD</span> <span style="color: #339933;">=</span> GeoKBD<span style="color: #339933;">;</span><br />
<br />
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://www.code.ge/posts/georgian-keyboard/feed</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
	</channel>
</rss>
