 var imgTabel =  new Array(); 
 var pos  =  new Array();  
 imgTabel[0] = 16; 
 imgTabel[-1] = 16;     
 pos[0]=1;
 pos[-1]=1;
 var imgNrs = 0;
 var len = 100;
 var numOfChars = 200;
//-----------------------------------
function key2code( keyNum )
{
var rval= -10;
switch(keyNum ) 
{
case 113: { rval=75; break;}   // q
case  81: { rval=73; break;}   // Q
case 101: { rval=72; break;}  // e
case 114: { rval=204; break;}  //r
case 116: { rval=62; break;}  //t
case  84: { rval=301; break;}   // T
case 121: { rval=82; break;}  //y
case 112: { rval=61; break;}  //p
case  97: { rval=201; break;}  //a
case  65: { rval=0 ; break;}  //A-shift
case 115: { rval=68 ; break;}  //s
case 83:  { rval=69 ; break;}  //S

case 100: { rval=202 ; break;}  //d
case 102: { rval=74 ; break;}  //f
case 103: { rval=77 ; break;}  //g
case  71: { rval=65 ; break;}  //G  che

case 104: { rval=81 ; break;}  //h
case  72: { rval=66 ; break;}  //h-jimi
case 106: { rval=64 ; break;}  //j
case  74: { rval=206 ; break;}  //J
case 107: { rval=76 ; break;}  //k
case  75: { rval=67 ; break;}  //K

case 108: { rval=78 ; break;}  //l
case  59: { rval=71 ; break;}  //; zad
case  39: { rval=70 ; break;}  //' sad

case 122: { rval=205 ; break;}  //z ze
case  90: { rval=203 ; break;}  //Z  zal
case  120: { rval=71 ; break;}  //x zed
case  88: { rval=302 ; break;}  //X zad

case  99: { rval=63 ; break;}  //c  se-se nogh
case  67: { rval=70 ; break;}  //C sad


case 118: { rval=207 ; break;}  //v
case  98: { rval=60 ; break;}  //b
case 110: { rval=80 ; break;}  //n
case 109: { rval=79 ; break;}  //m
case  48: { rval=20 ; break;}  //0 
case  41: { rval=10 ; break;}  //) 
case  49: { rval=21 ; break;}  //1  
case  50: { rval=22 ; break;}  //2  
case  51: { rval=23 ; break;}  //3  
case  52: { rval=24 ; break;}  //4  
case  53: { rval=25 ; break;}  //5  
case  37: { rval=19 ; break;}  //%  
case  54: { rval=26 ; break;}  //6  
case  55: { rval=27 ; break;}  //7  
case  56: { rval=28 ; break;}  //8 
case  42: { rval=33 ; break;}  //* 

case  57: { rval=29 ; break;}  //9  
case  40: { rval=9 ; break;}  //( 
 
case  61: { rval=30 ; break;}  //=
case  43: { rval=12 ; break;}  //+
case  44: { rval=11 ; break;}  //,
case  46: { rval=14 ; break;}  //.
case  47: { rval=37 ; break;}  //  / /
case  63: { rval=15 ; break;}  //? ?
case  59: { rval=34 ; break;}  //; ;
case  58: { rval=36 ; break;}  //: :
case  45: { rval=7 ; break;}  //-
case 111: { rval=208 ; break;}  //o   se-se noghte 
case 105: { rval=83; break;}  //i   hamzeh

case 32: { rval=16 ; break;}  //space
}
return rval;

}
//-----------------------------------
function changeLast( )
{
var pointer = pos[imgNrs];
var last = imgTabel[imgNrs-1];
if(last < 60 || last > 119 || last == 'nl' ) {return;}
var ptr =  pos[imgNrs-1];
var imgNr = "char_" + ptr;
var lst = last;
if(last < 90){last = last + 90; 
imgTabel[imgNrs - 1] = last;  return;}
last = last + 30; 
imgTabel[imgNrs - 1] = last;
}

//-----------------------------------
function getMyImg( my_img )
{
 if(imgNrs ==0 ) {return my_img ;}
 var pointer = pos[imgNrs];
 var last = imgTabel[imgNrs-1];
 if(my_img == 51) {return  my_img ;}
if(my_img < 30) { changeLast(); return my_img;    }
if(last < 60 )  { last= my_img ;  return last;   }
if(last < 120 || last> 300) { last = 30 + my_img ; return last; }
last = my_img ; return last;

}
//-----------------------------------
function writeInFarsi()
{

    var mashaghelUrl = "./images/farsiNevis/";
    var txt ="";
         for(var j=imgNrs-1; j> -1 ; j--) 
        { 
    
            var myImg = mashaghelUrl  + imgTabel[j] +".gif";
            txt = txt + "<IMG src='"+ myImg +"'>" ;
        }
	txt = txt + "<IMG src='"+ mashaghelUrl  + imgTabel[-1] +".gif" +"'>" ;
     return txt ;
}

//-----------------------------------
   function printFarsi(my_img)
   {
    if( my_img < -5) { return;} 
    var myImg = getMyImg(my_img);
    var img = myImg + ".gif";
    var pointer = pos[imgNrs];

     if ( my_img == 51 )  
     {          
      if(pointer > 1 )
        {
         //document.images[ "char_" + pointer ].src="images/farsiNevis/16.gif";     ///-- hazf
         pointer = pos[imgNrs-1];
         //document.images[ "char_" + pointer ].src="images/farsiNevis/51.gif";
         imgTabel[ imgNrs ] = null; pos[imgNrs--] =null;
        }
       //testKon("->");
       return;
     }

    if ( my_img == -2 ) 
    {   
     var ln ;
     if( pointer %len == 0) {ln = pointer /len ;  ln = ln*len +1 ;}
      else { ln = Math.floor(pointer /len ) +1;  ln = ln*len +1 ;}


      if(ln < numOfChars )
      {  
         imgTabel[imgNrs] = 'nl';
         pos[imgNrs++] = pointer;pos[imgNrs] = ln;
      }
      return;
    }
          
   if(pointer == numOfChars ) {return; };

   imgTabel[imgNrs++] = myImg ;
   pos[imgNrs] = pointer ;  
 }

 //-----------------------------------
function chg2Farsi( txt )
{
 imgTabel =  new Array(); 
 pos  =  new Array();  
 imgTabel[0] = 16; 
 imgTabel[-1] = 16;     
 pos[0]=1;
 pos[-1]=1;
 imgNrs = 0;

 for(var i=0;i<txt.length;i++)
       printFarsi(key2code(txt.charCodeAt(i)));
 printFarsi(16);
 return writeInFarsi(); 
}

//-------------------------END ---------

function writeInFarsi4wap()
{

    var mashaghelUrl = "../images/farsiNevis/";
    var txt ="";
         for(var j=imgNrs-1; j> -1 ; j--) 
        { 
    
            var myImg = mashaghelUrl  + imgTabel[j] +".gif";
            txt = txt + "<IMG src='"+ myImg +"'>" ;
        }
	txt = txt + "<IMG src='"+ mashaghelUrl  + imgTabel[-1] +".gif" +"'>" ;
     return txt ;
}
//----------------------------
function chg2Farsi4wap( txt )
{
 imgTabel =  new Array(); 
 pos  =  new Array();  
 imgTabel[0] = 16; 
 imgTabel[-1] = 16;     
 pos[0]=1;
 pos[-1]=1;
 imgNrs = 0;

 for(var i=0;i<txt.length;i++)
      printFarsi(key2code(txt.charCodeAt(i)));
 printFarsi(16);
 return writeInFarsi4wap(); 
}
