// aligwlor.h - WL ordered/unordered display. Included

// #ifdef _ALIG_WL_ORDERED


   
    //++int             iSy;
    //double          dWL = ((double)(iW - dX1 - dX2 ) + 1.) / (double)(iSeqLen - 1);  // *** -1
    double          dWL = ((double)(iW - dX1 - dX2 ) ) / (double)iSeqLen;

    //cout << " ** sWL len = " << sWL.length() << " dWL = " << dWL << endl;
    //cout << "  - last pos iW - dX2 = " << iW - dX2 << ", dX1 + i*dWL = " << dX1 + 80*dWL << endl;

    int     iWLceil = ceil( (oAli.WeightLineMax) ) * 10 ;

    bool    bColOrdered = false;
    if( (image_cfg.type == 12) || (image_cfg.type == 21) || (image_cfg.type == 22) )
        bColOrdered = true;

    // +int to save index to plot GL (max group line)     *** 22.08.2001
    // -----------------------------------------------------------------
    //multiset< double, greater< double >, alloc >               orSums, orSums2; 
    //multiset< double, greater< double >, alloc >::iterator     iiSU,  iiSU2;    // 2 - for com pic
    //+multimap< double, int, greater< double >, alloc >               orSums, orSums2; 
    //+multimap< double, int, greater< double >, alloc >::iterator     iiSU,  iiSU2;    // 2 - for com pic
    orSumsDef                                                  orSums, orSums2; 
    orSumsDef::iterator                                        iiSU,  iiSU2;    // 2 - for com pic

// Alex
/*
    multiset< int, greater< int >, alloc >                     orSL, orGL,  orSL2, orGL2; 
    multiset< int, greater< int >, alloc >::iterator           iiSL, iiGL,  iiSL2, iiGL2; 
    multiset< int, less< int >, alloc >                        orNG, orNG2; 
    multiset< int, less< int >, alloc >::iterator              iiNG, iiNG2; 
*/
    multiset< int, greater< int > >                     orSL, orGL,  orSL2, orGL2; 
    multiset< int, greater< int > >::iterator           iiSL, iiGL,  iiSL2, iiGL2; 
    multiset< int, less< int > >                        orNG, orNG2; 
    multiset< int, less< int > >::iterator              iiNG, iiNG2; 

    if( image_cfg.type == 12 || (image_cfg.type == 21) || (image_cfg.type == 22) ) {

        f_fillValueMaps( vAli, oAli.WeightLineSums, aG, vColGroup, orSums, orSL, orGL, orNG );

        if( (image_cfg.type == 21) || (image_cfg.type == 22) ) {
            f_fillValueMaps( *(oAli.pAli2), oAli.WeightLineSums2,  aG, *(image_cfg.pColGroup2), orSums2, orSL2, orGL2, orNG2 );
        }
/***
        //+for( i = 0; i < sWL.length(); ++i ) {
        for( i = 0; i < iSeqLen; ++i ) {
            //+if( i >= iSeqLen ) break;    // --------->
            orSums.insert( oAli.WeightLineSums[i] );
        }
 
        if( image_cfg.type == 22 ) {
            for( i = 0; i < oAli.WeightLineLen2; ++i ) {
                orSums2.insert( oAli.WeightLineSums2[i] );
            }
        }


        int     iQ, iG;

        for( i = 0; i < iSeqLen; ++i ) {

          //Num of same letters
          map< char, int, less< char >, alloc >             mLet, mGLet;
          map< int , int, less< int  >, alloc >             mGr;
          map< char, int, less< char >, alloc >::iterator   iiL;   // set ?
          int        iGL = 0;
          for( j = 0; j < nSeq; ++j ) {

              string     sAli = vAli[j];
              //mLet[vAli[j][i]]
              if( sAli[i] != '-' ) {
                iQ = mLet[ sAli[i] ];
                mLet[ sAli[i] ] = iQ + 1;            // same letters

                iG = f_findGroup( sAli[i], aG );  
                if( iG > -1 ) {
                    if( iG == vColGroup[i] )         // Same group
                        ++iGL;

                    mGr[iG] = iG;                    // num of groups
                }
              }

          }

          // Max same letters
          iQ = -1;
          for( iiL = mLet.begin(); iiL != mLet.end(); ++iiL ) {
              if( (*iiL).second > iQ ) {
                  iQ = (*iiL).second;
              }
          }
          
          // Inserts:
          orSL.insert( iQ );
          orGL.insert( iGL );
          orNG.insert( mGr.size() );
        }
***/
        // Start pos of iterator:
        iiSU = orSums.begin();
        if( (image_cfg.type == 21) || (image_cfg.type == 22) ) {
            iiSU2 = orSums2.begin();
        }
   }
 
// EOF