//modifier=alt+shift+ctrl
function PCode(code_0, newcode_0, modifier_0) {
 this.code = code_0;
 this.newcode = newcode_0;
 this.modifier = modifier_0;
};



function persianCode(code, mod) {
 var retcode = code;

 for (var i=0; i<table.length; i++) {
  if (table[i].code == code && table[i].modifier == mod) {
   retcode = table[i].newcode;
   break;
  };
 };

 return retcode;
};





//according to ISIRI-2901, http://www.isiri.org/std/2901.htm
var table = new Array(
  new PCode(96, 0x200D,"000")  // PCN = zero width joiner

, new PCode(49, 0x06F1,"000")  // 1
, new PCode(50, 0x06F2,"000")  // 2
, new PCode(51, 0x06F3,"000")  // 3
, new PCode(52, 0x06F4,"000")  // 4
, new PCode(53, 0x06F5,"000")  // 5
, new PCode(54, 0x06F6,"000")  // 6
, new PCode(55, 0x06F7,"000")  // 7
, new PCode(56, 0x06F8,"000")  // 8
, new PCode(57, 0x06F9,"000")  // 9
, new PCode(48, 0x06F0,"000")  // 0

, new PCode(45, 45,"000")      // dash
, new PCode(61, 61,"000")      // equal sign
, new PCode(92, 92,"000")      // backslash




, new PCode(113, 0x0636,"000")  //zaad
, new PCode(119, 0x0635,"000")  //saad
, new PCode(101, 0x062B,"000")  //se-ye se-noghte
, new PCode(114, 0x0642,"000")  //ghaaf
, new PCode(116, 0x0641,"000")  //fe
, new PCode(121, 0x063A,"000")  //gheyn
, new PCode(117, 0x0639,"000")  //aeyn
, new PCode(105, 0x0647,"000")  //he -ye do-cheshm
, new PCode(111, 0x062E,"000")  //khe
, new PCode(112, 0x062D,"000")  //heye jimi
, new PCode(91, 0x062C,"000")   //jim
, new PCode(93, 0x0686,"000")   //che



, new PCode(97, 0x0634,"000")   //shin
, new PCode(115, 0x0633,"000")  //sin
, new PCode(100, 0x06CC,"000")  //ye-ye persian
, new PCode(102, 0x0628,"000")  //beh
, new PCode(103, 0x0644,"000")  //laam
, new PCode(104, 0x0627,"000")  //alef (bedoone kolaah)
, new PCode(106, 0x062A,"000")  //te (do noghte)
, new PCode(107, 0x0646,"000")  //noon
, new PCode(108, 0x0645,"000")  //mim
, new PCode(59, 0x06A9,"000")   //kaaf
, new PCode(39, 0x06AF,"000")   //gaaf



, new PCode(122, 0x0638,"000")  //zaa (zeye daste daar)
, new PCode(120, 0x0637,"000")  //taa (teye daste daar)
, new PCode(99, 0x0632,"000")   //ze (re ze)
, new PCode(118, 0x0631,"000")  //re
, new PCode(98, 0x0630,"000")   //zaal
, new PCode(110, 0x062F,"000")  //daal
, new PCode(109, 0x067E,"000")  //pe
, new PCode(44, 0x0648,"000")   //vaav
, new PCode(46, 46,"000")       //noghte (full stop)
, new PCode(47, 47,"000")       //slash

, new PCode(32, 32,"000")       //space





, new PCode(33, 33,"010")       //exclamation mark
, new PCode(64, 0x066C,"010")   //comma (thousand separator)
, new PCode(35, 0x066B,"010")   //momayyez (decimal separator)
, new PCode(36, 0xFDFC,"010")   //persian rial sign
, new PCode(37, 0x066A,"010")   //percent
, new PCode(94, 0x00D7,"010")   //times (product) symbol
, new PCode(38, 0x060C,"010")   //persian virgol
, new PCode(42, 42,"010")       //star symbol
, new PCode(40, 40,"010")       //left parenthesis
, new PCode(41, 41,"010")       //right parenthesis
, new PCode(95, 0x0640,"010")   //taweel (baraaye keshidane yel harf)
, new PCode(43, 43,"010")       //plus sign
, new PCode(124, 124,"010")     //bar sign




, new PCode(81, 0x0652,"010")  //sokoon
, new PCode(87, 0x064C,"010")  //on (tanvin)
, new PCode(69, 0x064D,"010")  //en (tanvin)
, new PCode(82, 0x064B,"010")  //an (tanvin)
, new PCode(84, 0x064F,"010")  //o (harkat)
, new PCode(89, 0x0650,"010")  //e (harkat)
, new PCode(85, 0x064E,"010")  //a (harkat)
, new PCode(73, 0x0651,"010")  //tashdid
, new PCode(79, 91,"010")      //left bracket
, new PCode(80, 93,"010")      //right bracket
, new PCode(123, 123,"010")    //left brace
, new PCode(125, 125,"010")    //right brace




, new PCode(65, 0x0624,"010")  //vaav baa ye hamze baalaash
, new PCode(83, 0x0626,"010")  //ye baa hamze baalaash
, new PCode(68, 0x064A,"010")  //ye 2 taa noghte ziresh
, new PCode(70, 0x0625,"010")  //alef hamze ziresh
, new PCode(71, 0x0623,"010")  //alef hamze baalaash
, new PCode(72, 0x0622,"010")  //alef baa kolaah
, new PCode(74, 0x0629,"010")  //he baa 2 taa noghte baalaash
, new PCode(75, 0x00BB,"010")  //left giyoome
, new PCode(76, 0x00AB,"010")  //right giyoome
, new PCode(58, 58,"010")      //colon
, new PCode(34, 0x061B,"010")  //semi-colon (arabic)




, new PCode(90, 0x0643,"010")  //kaaf-e arabi (baa hamze roosh)
, new PCode(88, 88,"010")      //unassigned
, new PCode(67, 0x0698,"010")  //zhe
, new PCode(86, 86,"010")      //unassigned
, new PCode(66, 0x200C,"010")  //PSP zero width non-joiner
, new PCode(78, 78,"010")      //unassigned
, new PCode(77, 0x0621,"010")  //hamze (tanhaa)
, new PCode(60, 60,"010")      //less than <
, new PCode(62, 62,"010")      //more than >
, new PCode(63, 0x061F,"010")  //persian question mark


, new PCode(32, 0x200C,"010")  //PSP zero width non-joiner
);
