/* ------------------------------ 6-Punkt-Braille: -------------------------------*/

var   braillecode = new Array();
  braillecode[' '] = "00";
  braillecode['a'] = "10"; braillecode['b'] = "30"; braillecode['c'] = "11"; braillecode['d'] = "13"; braillecode['e'] = "12"; braillecode['f'] = "31"; braillecode['g'] = "33"; braillecode['h'] = "32"; braillecode['i'] = "21"; braillecode['j'] = "23"; braillecode['k'] = "50"; braillecode['l'] = "70"; braillecode['m'] = "51"; braillecode['n'] = "53"; braillecode['o'] = "52"; braillecode['p'] = "71"; braillecode['q'] = "73"; braillecode['r'] = "72"; braillecode['s'] = "61"; braillecode['t'] = "63"; braillecode['u'] = "54"; braillecode['v'] = "74"; braillecode['w'] = "27"; braillecode['x'] = "55"; braillecode['y'] = "57"; braillecode['z'] = "56";
  braillecode['1'] = "10"; braillecode['2'] = "30"; braillecode['3'] = "11"; braillecode['4'] = "13"; braillecode['5'] = "12"; braillecode['6'] = "31"; braillecode['7'] = "33"; braillecode['8'] = "32"; braillecode['9'] = "21"; braillecode['0'] = "23";
  braillecode['@'] = "43";
  braillecode['\xe4'] = "43"; // ae
  braillecode['\xf6'] = "25"; // oe
  braillecode['\xfc'] = "36"; // ue
  braillecode['\xdf'] = "65"; // sz
  braillecode['\xc4'] = "43"; // Ae
  braillecode['\xd6'] = "25"; // Oe
  braillecode['\xdc'] = "36"; // Ue
  braillecode['ie'] = "45";    braillecode['§'] = "45";    braillecode['\xef']  = "45"; // i umlaut
  braillecode['ei'] = "15";    braillecode['\xeb']  = "15"; // e umlaut
  braillecode['eu'] = "34";    braillecode['\xea']  = "34"; // e dach
  braillecode['\xe4u'] = "41"; braillecode['\xe2']  = "41"; // a dach
  braillecode['au'] = "14";    braillecode['\xfb']  = "14"; // u dach
  braillecode['ch'] = "17";    braillecode['\xa2']  = "17"; // cent
  braillecode['sch'] = "16";   braillecode['\xa9']  = "16"; // copy
  braillecode['st'] = "67";    braillecode['\xb0']  = "67"; // grad
//
  braillecode[','] = "20";
  braillecode['.'] = "40";
  braillecode[':'] = "22";
  braillecode['-'] = "44";
  braillecode[';'] = "60";
  braillecode['!'] = "62"; braillecode['+'] = "62"; braillecode['!+'] = "62";
  braillecode['?'] = "24";
  braillecode['*'] = "42";
  braillecode['/'] = "26";
  braillecode['&'] = "75";
  braillecode['_'] = "07";    // HH
  braillecode['$'] = "05";    // Gro
  braillecode['#'] = "47";    // ZZ
  braillecode['%'] = "77";    // GZ
  braillecode['\'']= "04";    // apostroph
  braillecode['\"']= "01"; braillecode['\'\'']= "01";  // "
  braillecode['~'] = "02";    // (P5)
  braillecode['^'] = "37";    //  ^
  braillecode[eurozeichen] = "12"; braillecode['€'] = "12"; braillecode['¤'] = "12";    // €
  braillecode['`'] = "35";    //  grave
//  braillecode['\xb4'] = "35"; //  akut - falsch
//
  braillecode['('] = "66"; braillecode[')'] = "66"; braillecode['='] = "66"; braillecode['()'] = "66"; braillecode['( )'] = "66"; braillecode['(=)'] = "66";
  braillecode['<'] = "06"; braillecode['>'] = "03";
//
  /* ? */
  braillecode['\xbb'] = "64"; braillecode['\xab'] = "46"; // anfang + ende
  braillecode['{'] = "64"; braillecode['}'] = "46"; braillecode['art.'] = "46";
  braillecode['['] = "76"; braillecode[']'] = "67";

function ordziff(cha)               // herabgesetzte Ziffern
{
  var code=braillecode[cha];
  if (code=="60" || code=="22" || code=="26" || code=="24" || code=="62" || code=="66" || code=="64" || code=="42" || code=="46") return true;
  return false;
}

/* ----------------------------- 6-Punkt-Eurobraille: ---------------------*/

function eurobraille(zeichen,back) // 3 code (Voreinstellung)    1 de
{
  if (!back) back=3;
  for (var yy=0;yy<brailletab.length;yy++)
    if (zeichen==brailletab[yy][1]) return brailletab[yy][back-1];
//  alert('Zeichen nicht gefunden: '+zeichen);
  return false;
}

function brailleback(code,back) // 1 de (Voreinstellung)    2 eu     5 en
{
  if (!back) back=1;
  for (var yy=0;yy<brailletab.length;yy++)
    if (code==brailletab[yy][2]) return brailletab[yy][back-1];
//  alert('Zeichen nicht gefunden: '+code);
  return false;
}

function braille_back(code,von,nach) // 1 de   2 eu   3 grafcode   5 en    6 punkte     7 lautz
{
  if (!von||!nach) return false;
  if (von==6 && code!='')
  {
    var zeichenkette=new Array;
    for (var i=0;i<code.length;i++)
      zeichenkette[i]=code.charAt(i);
    zeichenkette.sort();
    code='';
    for (var i=0;i<zeichenkette.length;i++)
      code+=zeichenkette[i];
  }
  for (var yy=0;yy<brailletab.length;yy++)
    if (code==brailletab[yy][von-1]) return brailletab[yy][nach-1];
//  alert('Zeichen nicht gefunden: '+code);
  return false;
}

function sbs2euro(inp)
{
  for (var yy=0;yy<brailletab.length;yy++)
    if (inp==brailletab[yy][3]) return brailletab[yy][1];
  return inp;
}

function euro2sbs(inp)
{
  for (var yy=0;yy<brailletab.length;yy++)
  {
    if (inp==brailletab[yy][1] && brailletab[yy][3]!='')  return brailletab[yy][3];
  }
  return inp;
}

var brailletab = new Array();
    brailletab=[
/*   deutsch euro   code    SBS    engl     Punkte    Lautzeichen */
    ['a'    ,'a'   ,'10'   ,'A'    ,'a'     ,'1'      ,'a'    ],
    ['b'    ,'b'   ,'30'   ,'B'    ,'b'     ,'12'     ,'b'    ],
    ['c'    ,'c'   ,'11'   ,'C'    ,'c'     ,'14'     ,'c'    ],
    ['d'    ,'d'   ,'13'   ,'D'    ,'d'     ,'145'    ,'d'    ],
    ['e'    ,'e'   ,'12'   ,'E'    ,'e'     ,'15'     ,'e'    ],
    ['f'    ,'f'   ,'31'   ,'F'    ,'f'     ,'124'    ,'f'    ],
    ['g'    ,'g'   ,'33'   ,'G'    ,'g'     ,'1245'   ,'g'    ],
    ['h'    ,'h'   ,'32'   ,'H'    ,'h'     ,'125'    ,'h'    ],
    ['i'    ,'i'   ,'21'   ,'I'    ,'i'     ,'24'     ,'i'    ],
    ['j'    ,'j'   ,'23'   ,'J'    ,'j'     ,'245'    ,'j'    ],
    ['k'    ,'k'   ,'50'   ,'K'    ,'k'     ,'13'     ,'k'    ],
    ['l'    ,'l'   ,'70'   ,'L'    ,'l'     ,'123'    ,'l'    ],
    ['m'    ,'m'   ,'51'   ,'M'    ,'m'     ,'134'    ,'m'    ],
    ['n'    ,'n'   ,'53'   ,'N'    ,'n'     ,'1345'   ,'n'    ],
    ['o'    ,'o'   ,'52'   ,'O'    ,'o'     ,'135'    ,'o'    ],
    ['p'    ,'p'   ,'71'   ,'P'    ,'p'     ,'1234'   ,'p'    ],
    ['q'    ,'q'   ,'73'   ,'Q'    ,'q'     ,'12345'  ,'q'    ],
    ['r'    ,'r'   ,'72'   ,'R'    ,'r'     ,'1235'   ,'r'    ],
    ['s'    ,'s'   ,'61'   ,'S'    ,'s'     ,'234'    ,'s'    ],
    ['t'    ,'t'   ,'63'   ,'T'    ,'t'     ,'2345'   ,'t'    ],
    ['u'    ,'u'   ,'54'   ,'U'    ,'u'     ,'136'    ,'u'    ],
    ['v'    ,'v'   ,'74'   ,'V'    ,'v'     ,'1236'   ,'v'    ],
    ['w'    ,'w'   ,'27'   ,'W'    ,'w'     ,'2456'   ,'w'    ],
    ['x'    ,'x'   ,'55'   ,'X'    ,'x'     ,'1346'   ,'x'    ],
    ['y'    ,'y'   ,'57'   ,'Y'    ,'y'     ,'13456'  ,'y'    ],
    ['z'    ,'z'   ,'56'   ,'Z'    ,'z'     ,'1356'   ,'z'    ],
    [' '    ,' '   ,'00'   ,''     ,' '     ,'0'      ,' '    ],  // leerzeichen
    ['ie'   ,'0'   ,'45'   ,''     ,'ing'   ,'346'    ,'\xef' ],
    ['au'   ,'1'   ,'14'   ,''     ,'ch'    ,'16'     ,'\xfb' ],
    ['eu'   ,'2'   ,'34'   ,''     ,'gh'    ,'126'    ,'\xea' ],
    ['ei'   ,'3'   ,'15'   ,''     ,'sh'    ,'146'    ,'\xeb' ],
    ['ch'   ,'4'   ,'17'   ,''     ,'th'    ,'1456'   ,'\xa2' ],  //                                            Kurzschrift deutsch:
    ['sch'  ,'5'   ,'16'   ,''     ,'wh'    ,'156'    ,'\xa9' ],
    ['`'    ,'6'   ,'35'   ,''     ,'ed'    ,'1246'   ,'`'    ],  // grave                                      ein
    ['^'    ,'7'   ,'37'   ,''     ,'er'    ,'12456'  ,'^'    ],  //                                            er
    ['\xfc' ,'8'   ,'36'   ,''     ,'ou'    ,'1256'   ,'\xfc' ],  // ue
    ['\xf6' ,'9'   ,'25'   ,''     ,'ow'    ,'246'    ,'\xf6' ],  // oe
    ['~'    ,'!'   ,'02'   ,''     ,'S1'    ,'5'      ,'~'    ],  // (P5)
    ['#'    ,'#'   ,'47'   ,''     ,'#'     ,'3456'   ,'#'    ],  //                                            ich
    ['$'    ,'$'   ,'05'   ,''     ,'IT'    ,'46'     ,'$'    ],  // engl italic-sign (HH) + decimal-point
    ['%'    ,'%'   ,'77'   ,''     ,'for'   ,'123456' ,'%'    ],  //                                            es
    ['&'    ,'&'   ,'75'   ,''     ,'and'   ,'12346'  ,'&'    ],  //                                            ge
    ['\xbb' ,'('   ,'64'   ,''     ,'? “'   ,'236'    ,'\xbb' ],  // Anfang Az                                  te
    ['\xab' ,')'   ,'46'   ,''     ,'¿ ”'   ,'356'    ,'\xab' ],  // Ende Az                                    ar
    ['*'    ,'*'   ,'42'   ,''     ,'in'    ,'35'     ,'*'    ],  //                                            in
    ['!+'   ,'+'   ,'62'   ,''     ,'!'     ,'235'    ,'!'    ],  //                                            an
    [','    ,','   ,'20'   ,''     ,','     ,'2'      ,','    ],
    ['-'    ,'-'   ,'44'   ,''     ,'-'     ,'36'     ,'-'    ],
    ['.'    ,'.'   ,'40'   ,''     ,'\''    ,'3'      ,'.'    ],  // engl Apostroph
    ['/'    ,'/'   ,'26'   ,''     ,'.'     ,'256'    ,'/'    ],  //                                            un
    [':'    ,':'   ,'22'   ,''     ,':'     ,'25'     ,':'    ],  //                                            al
    [';'    ,';'   ,'60'   ,''     ,';'     ,'23'     ,';'    ],
    ['<'    ,'<'   ,'06'   ,''     ,'LTR'   ,'56'     ,'<'    ],  // engl Letter-sign
    ['(=)'  ,'='   ,'66'   ,''     ,'()'    ,'2356'   ,'('    ],  //                                            eh
    ['>'    ,'>'   ,'03'   ,''     ,'S3'    ,'45'     ,'>'    ],
    ['?'    ,'?'   ,'24'   ,''     ,'en'    ,'26'     ,'?'    ],  //                                            or
    ['\"'   ,'\"'  ,'01'   ,''     ,'´'     ,'4'      ,'\"'   ],  // engl ACC
    ['\''   ,'\''  ,'04'   ,''     ,'CAP'   ,'6'      ,'\''   ],  // engl Groß
    ['_'    ,'_'   ,'07'   ,''     ,'S2'    ,'456'    ,'_'    ],  //                                            lich
    ['\xe4' ,'`'   ,'43'   ,'@'    ,'ar'    ,'345'    ,'\xe4' ],  // ae
    ['['    ,'{'   ,'76'   ,'['    ,'of'    ,'12356'  ,'['    ],  //                                            em
    ['\xe4u','|'   ,'41'   ,'\\'   ,'st'    ,'34'     ,'\xe2' ],  // aeu
    ['st'   ,'}'   ,'67'   ,']'    ,'with'  ,'23456'  ,'\xb0' ],
    ['\xdf' ,'~'   ,'65'   ,'^'    ,'the'   ,'2346'   ,'\xdf' ]   // sz
  ];

/* SBS = Schweitzerische Bilbliothek für Blinde und Sehbehinderte */

function kuerzel(zeichen)
{
  if      (zeichen=='\xe4u') return 'aeu'; // äu
  else if (/[a-z0-9]/.test(zeichen)) return zeichen;
  else if (zeichen==' ') return 'lz';
  else if (zeichen=='\xe4') return 'ae';
  else if (zeichen=='\xf6') return 'oe';
  else if (zeichen=='\xfc') return 'ue';
  else if (zeichen=='\xdf') return 'sz';
  else if (zeichen=='.') return 'pu';
  else if (zeichen==',') return 'ko';
  else if (zeichen==':') return 'dp';
  else if (zeichen==';') return 'se';
  else if (zeichen=='+') return 'pl';
  else if (zeichen=='-') return 'mi';
  else if (zeichen=='!') return 'az';
  else if (zeichen=='?') return 'fz';
  else if (zeichen=='=') return 'gl';
  else if (zeichen=='(') return 'ka';
  else if (zeichen==')') return 'kz';
  else if (zeichen=='()') return 'ka';
  else if (zeichen=='[') return 'ea';
  else if (zeichen==']') return 'ez';
  else if (zeichen=='{') return 'ga';
  else if (zeichen=='}') return 'gz';
  else if (zeichen=='\xbb') return 'an';  // » - wie ga
  else if (zeichen=='\xab') return 'en';  // « - wie gz
  else if (zeichen=='/') return 'ss';
  else if (zeichen=='&') return 'un';
  else if (zeichen=='%') return 'pr';
  else if (zeichen=='$') return 'do';  // auch gb
  else if (zeichen=='*') return 'sn';
  else if (zeichen=='#') return 'rt';
  else if (zeichen=='\"') return 'af';
  else if (zeichen=='\'') return 'ap';
  else if (zeichen=='<') return 'kl';
  else if (zeichen=='>') return 'gr';
  else if (zeichen=='~') return 'ru';
  else if (zeichen=='_') return 'us';
  else if (zeichen=='@') return 'at';
  else if (zeichen=='§') return 'pa';
  else if (zeichen=='\xef') return 'ie';
  else if (zeichen=='\xeb') return 'ei';
  else if (zeichen=='\xea') return 'eu';
  else if (zeichen=='\xe2') return 'aeu';
  else if (zeichen=='\xfb') return 'au';
  else if (zeichen=='\xa2') return 'ch';
  else if (zeichen=='\xa9') return 'sch';
  else if (zeichen=='\xb0') return 'st';
  else if (zeichen=='^') return 'da';
  else if (zeichen=='\x60') return 'gv';
  else if (zeichen=='!+') return 'az';
  else if (zeichen=='(=)') return 'ka';
  else return 'unklar';
}

var alt_l = new Array();
  alt_l[0]='p';
  alt_l[1]='p1';
  alt_l[2]='p2';
  alt_l[3]='p12';
  alt_l[4]='p3';
  alt_l[5]='p13';
  alt_l[6]='p23';
  alt_l[7]='p123';

  alt_l[8]='p7';
  alt_l[9]='p17';
  alt_l['a']='p27';
  alt_l['b']='p127';
  alt_l['c']='p37';
  alt_l['d']='p137';
  alt_l['e']='p237';
  alt_l['f']='p1237';

var alt_r = new Array();
  alt_r[0]='';
  alt_r[1]='4';
  alt_r[2]='5';
  alt_r[3]='45';
  alt_r[4]='6';
  alt_r[5]='46';
  alt_r[6]='56';
  alt_r[7]='456';

  alt_r[8]='8';
  alt_r[9]='48';
  alt_r['a']='58';
  alt_r['b']='458';
  alt_r['c']='68';
  alt_r['d']='468';
  alt_r['e']='568';
  alt_r['f']='4568';

var p_links;
var p_rechts;
function braillealttext(wie) // wie = z (nur ziffern)
{
  if (p_links!='' && p_rechts!='')
  {
    if (p_links==0&&p_rechts==0) return '- ';
    var links=alt_l[p_links];
    if (parseInt(p_links,16)>7) links=alt_l[parseInt(p_links,16)-8]; // '7' abschneiden
    var rechts=alt_r[p_rechts]
    if (parseInt(p_links,16)>7)
    {
      if (parseInt(p_rechts,16)>7) rechts=rechts.substr(0,rechts.indexOf('8'))+'78'; // '7' einfügen
      else                         rechts=rechts+'7';
    }
    if (wie=='z') return links.substr(1)+rechts;
    else          return links+rechts+' ';
  }
  else return '';
}

/* -- www.fakoo.de -- */
