Корисник:Michaello/kbdshortcuts.js

С Википедије, слободне енциклопедије

Напомена: Пошто објавите измене, можда ћете морати да обришете кеш меморију прегледача како бисте их видели. Google Chrome, Firefox, Microsoft Edge и Safari: Држите ⇧ Shift и кликните дугме Reload на траци са алаткама. За детаље и упутства о другим прегледачима, погледајте en:Wikipedia:Bypass your cache.

function doCyrLat(dir) {
  var cyr = [
'џ', 'Џ', 'љ', 'њ', 'Њ', 'Љ',
'а', 'б', 'в', 'г', 'д',
'ђ', 'е', 'ж', 'з', 'и',
'ј', 'к', 'л', 'м',
'н', 'о', 'п', 'р',
'с', 'т', 'ћ', 'у', 'ф',
'х', 'ц', 'ч', 'ш',
'А', 'Б', 'В', 'Г', 'Д',
'Ђ', 'Е', 'Ж', 'З', 'И',
'Ј', 'К', 'Л', 'М',
'Н', 'О', 'П', 'Р',
'С', 'Т', 'Ћ', 'У', 'Ф',
'Х', 'Ц', 'Ч', 'Ш'];
  
  var lat = [
'dž', 'Dž', 'lj', 'nj', 'Nj', 'Lj',
'a', 'b', 'v', 'g', 'd',
'đ', 'e', 'ž', 'z', 'i',
'j', 'k', 'l', 'm',
'n', 'o', 'p', 'r',
's', 't', 'ć', 'u', 'f',
'h', 'c', 'č', 'š',
'A', 'B', 'V', 'G', 'D',
'Đ', 'E', 'Ž', 'Z', 'I',
'J', 'K', 'L', 'M',
'N', 'O', 'P', 'R',
'S', 'T', 'Ć', 'U', 'F',
'H', 'C', 'Č', 'Š'];

 var txtarea;
 if (document.editform) {
  txtarea = currentFocused;
 } else {
  var areas = document.getElementsByTagName( 'textarea' );
  txtarea = areas[0];
 }

 var textScroll = txtarea.scrollTop;
 txtarea.focus();
 var startPos = txtarea.selectionStart;
 var endPos = txtarea.selectionEnd;
 txt = txtarea.value.substring( startPos, endPos );
	
 if(dir) {
  mch = new RegExp("LJ", 'g');
  txt = txt.replace(mch, "Љ");
    
  mch = new RegExp("NJ", 'g');
  txt = txt.replace(mch, "Њ");
    
  mch = new RegExp("DŽ", 'g');
  txt = txt.replace(mch, "Џ");

  for(i=0; i<60; i++) {
   mch = new RegExp(lat[i], 'g');
   txt = txt.replace(mch, cyr[i]);
  }
 } else {
  for(i=0; i<60; i++) {
   mch = new RegExp(cyr[i], 'g');
   txt = txt.replace(mch, lat[i]);
  }
 }
 txtarea.value = txtarea.value.substring(0, startPos)
  + txt
  + txtarea.value.substring(endPos, txtarea.value.length);

 txtarea.scrollTop = textScroll;
}

function toLower() {
 var txtarea;
 if (document.editform) {
  txtarea = currentFocused;
 } else {
  var areas = document.getElementsByTagName( 'textarea' );
  txtarea = areas[0];
 }

 textScroll = txtarea.scrollTop;
 txtarea.focus();
 startPos = txtarea.selectionStart;
 endPos = txtarea.selectionEnd;
	
 txtarea.value = txtarea.value.substring(0, startPos)
  + txtarea.value.substring( startPos, endPos ).toLowerCase()
  + txtarea.value.substring(endPos, txtarea.value.length);

 txtarea.scrollTop = textScroll;
}

function kbdprocess(e) {  
 e = e || window.event;
 var code = 0;
 if (e.keyCode) code = e.keyCode;
 else if (e.which) code = e.which;

 if(e.altKey) {
  switch(code) {
   case 49: insertTags("-{", "}-", ""); break;
   case 50: insertTags("''", "''", ""); break;
   case 51: insertTags("'''", "'''", ""); break;
   case 52: insertTags("„", "“", ""); break;
   case 53: insertTags("''-{", "}-''", ""); break;
   case 81: doCyrLat(true); break;
   case 82: toLower(); break;
   case 87: doCyrLat(false); break;
  }
 }
}

$(function() {
 if(document.addEventListener) document.addEventListener("keydown", kbdprocess, false);
 else if(document.attachEvent) document.attachEvent("onkeydown", kbdprocess, false);
}
);