// ***********************************************
// JavaScript Document
// *****




// ***********************************************
// global vars
// **********************************************

// data / params
var gDATAFILE    = "projects/projects.txt"; // data file name

// html tags
var gPARENTID     = "__centerright__";
//...

// thumbnail
var gIMAGELIST    = "";      // projects at a glance
var gIMAGELIST2   = "";      // projects categories
var gMAXPOS       = 50; // max images in thumbnail
var gIMGDEFAULT   = {"name":"PT","uri":"pt.gif","caption":""};
var gIMG          = new Object();
var gIMG2         = new Object();
// ***********************************************



// ***********************************************
// parse data file into variables
// **********************************************
function parsingFile(_file, _categ, _proj) {
//charge la liste des projets avec leurs infos
    // ****
    c=new Array();
    d=new Array();
    f=new Array();

    // ****
    e=load(_file);

	  a=e.split('\n\n');
    //alert ('load ok ?' + a);
   	      	
    // **** parsing
	for(i=0;i<a.length;i++){

      // projects at a glance = liste complete
	  if (i==0) {
	    
        b=a[i].split('\n');
 	      b.shift(); // drop 1st line
        //alert ('b:\n' + b + '\nlongueur:' + b.length);
  	    // OK ?
	    for(j=0;j<b.length;j++){
	  	  //...
   	      c[j]=b[j].split('  '); // array 2 dim
        } 
  	    gIMAGELIST=c;
	  }

      // projects list by categories
	  if (i==_categ) {
	    
        b=a[i].split('\n');
 	    b.shift(); // drop 1st line
        //alert ('b:\n' + b + '\nlongueur:' + b.length);

	    for(j=0;j<b.length;j++){
	  	  //...
   	       //alert("categ:"+_categ);
           d[j]=b[j].split('  '); // array 2 dim
        
           if(_proj){
             //alert(d[j]); // nom du projet
             //recherche du projet dans la liste en param
             for(k=0;k<_proj.length;k++){
               if(d[j][1]==_proj[k]){
                 //alert(d[j][0]); // nom du projet
                 d[j][0]=k+1;
                 f[j]=d[j];
               }
             }
            }else{
              f[j]=d[j];
            };
          }
        
          gIMAGELIST2=f;
  	    
  	    //alert(gIMAGELIST2);
	  }

	}

//	getEl('download').value=t;

}






// ***********************************************
// create thumbnail and dynamic images show
// **********************************************
function IMGManager3(){
    // ****
    this.maxpos     = gMAXPOS;
    this.imgdefault = gIMGDEFAULT;
    this.img        = new Object();
    this.img2       = new Object();
    this.parent     = getEl(gPARENTID);
        

    // ***********************************************
    // ***********************************************
    this.Add = function(_pos, _name, _title, _intro ){
      // **** position + name + caption / thumbnail images
      _pos = ( isNaN(_pos) ) ? 0 : Math.abs(parseInt(_pos, 10))
      _pos = (_pos > this.maxpos) ? this.maxpos - 1: _pos - 1;

      // ****
      this.img[_name] = new Object();

      // ****
      this.img[_name].name    = _name;
      this.img[_name].title   = _title;
      this.img[_name].intro   = _intro;
//      this.img[_pos].thumb   = getThumb(_name);
    }

    this.Add2 = function(_pos, _name){
      // **** position + name + caption / thumbnail images
      _pos = ( isNaN(_pos) ) ? 0 : Math.abs(parseInt(_pos, 10))
      _pos = (_pos > this.maxpos) ? this.maxpos - 1: _pos - 1;

      // ****
      this.img2[_pos] = new Object();

      // ****
      this.img2[_pos].name    = _name;
//      this.img2[_pos].caption = _caption;
//      this.img2[_pos].uri     = _name;
//      this.img2[_pos].thumb   = getThumb(_name);
    }

    // ***********************************************
    // ***********************************************
    this.preLoad = function(){
      // ****
      var i, iMax = gIMAGELIST2.length;

      // ****
      for(i in gIMAGELIST2){
        // ****
        //alert(i + " : " + gIMAGELIST2[i][0] + ":" + gIMAGELIST2[i][1])
        gIMG2[i] = document.createElement("img");
        gIMG2[i].src = 'projects/'+gIMAGELIST2[i][1]+'.jpg';
      }
    }


    // ***********************************************
    // ***********************************************
    this.buildHtmlImgBlock = function(_o){
      // ****
      
      //_o = this.img2[i]
      //alert('_o:' + _o.name + '+?:' + this.img[_o.name].name);
      
         // _o = this.img[i] filled by function Add
      var oDiv  = document.createElement("div");
//
      var oDiv1 = document.createElement("div");
      var oA1   = document.createElement("a");
      var oImg  = document.createElement("img");
//
      var oDiv2 = document.createElement("div");
      var oA2   = document.createElement("a");
//
//      var oDiv3 = document.createElement("div");
//      var oA3   = document.createElement("a");

      // **** IMAGE
      // **** in case of wrong projects definition
      if(this.img[_o.name]){
        
        oImg.src = 'projects/'+_o.name+'.jpg';
        oImg.name = _o.name;
        oA1.href = _o.name+'/project.html?categ='+gCATEG; // TODO : project.html vers index.html pour affichage auto ??
        oA2.href = _o.name+'/project.html?categ='+gCATEG; // TODO : project.html vers index.html pour affichage auto ??
        oA2.innerHTML = '<span>' + this.img[_o.name].title + '</span><BR />' + this.img[_o.name].intro + '<BR /><span>| more |</span>'
      }else{
        //warning only for local dev
        if (gWARNING == 'yes')
          alert("Warning : project <"+_o.name+"> does not exist in file <projects.txt>.");
      }
        
        
      //css : les id c top pour la CSS
      oImg.id = '__imagesize__';
      oDiv1.id = '__image__';
      oDiv2.id = '__intro__';
      oDiv.id = '__index__';
      //css : je garde les classes pour IE6 qui lui n'aime pas les id !!...
      oImg.className = 'ImageSize';
      oDiv1.className = 'Image';
      oDiv2.className = 'Intro';
      oDiv.className = 'Index';
      //css IE6
      
      // ****
      var __o__ = this;

      // ****
      oImg.onclick = function(){
        //
//        alert("image name : " + this.name)
      }

       // ****
      oImg.onmouseover = function(){
//        __o__.imgviewer.src     = _o.name; //this.name; //gIMG[this.name].src;
//        __o__.caption.innerHTML = _o.caption;
//        showit(gVIEWERID);
      }
      
       // ****
      oImg.onmouseout = function(){
        //
//        showit(gOPENERID);
        //__o__.imgopener.src     = ??;
        //__o__.caption.innerHTML = "";
      }

      // ****
      //pour eviter les images cassees sur IE
      if(this.img[_o.name]){oA1.appendChild(oImg);}
      oDiv1.appendChild(oA1);
      oDiv2.appendChild(oA2);
//      oDiv3.appendChild(oA3);
      oDiv.appendChild(oDiv1);
      oDiv.appendChild(oDiv2);
//      oDiv.appendChild(oDiv3);

      // ****
      this.parent.appendChild(oDiv);

    }

    // ***********************************************
    // ***********************************************
    this.buildDefaultHtmlImgBlock = function(_o){
      // ****
      var oDiv  = document.createElement("div");

      // ****
      //oDiv.className = "EmptyBlock";
      oDiv.id = '__index__';
      
      // ****
      this.parent.appendChild(oDiv);
    }

    // ***********************************************
    // ***********************************************
    this.Show = function(){
      // ****
      if( this.parent != null ){
        // ****
        var i, iMax = this.maxpos;
        var tmp = null;
        
        // **** thumbnail
        for(i = 0; i < iMax; i++){
          // ****
          if(i in this.img2){
            // **** build img blocks
            this.buildHtmlImgBlock(this.img2[i]);
          }
          else
          {
            // **** set default img
            this.buildDefaultHtmlImgBlock(this.imgdefault);
          }
        }
      }
      else{
        // **** TODO : HAS NO PARENT
      }
    }

    // ***********************************************
    // ***********************************************
    this.Init = function(){
      
      var i, iMax = gIMAGELIST.length;
      var j, jMax = gIMAGELIST2.length;
      //alert('gIMAGELIST.length:' + gIMAGELIST.length)

      // ****
      for(i in gIMAGELIST){
        // ****
        //alert('gIMAGELIST:' + i + " : " + gIMAGELIST[i][1] )
        this.Add(gIMAGELIST[i][0], gIMAGELIST[i][1], gIMAGELIST[i][2], gIMAGELIST[i][3]);
        }

      // ****
      for(j in gIMAGELIST2){
        // ****
        //alert('gIMAGELIST2:' + j + " : " + gIMAGELIST2[j][1] )
        this.Add2(gIMAGELIST2[j][0], gIMAGELIST2[j][1]);
        }
    }

    // ***********************************************
    // ***********************************************
      //??? c'est le main ??
    this.Init();
}






// *********************************************
// ****
function init(_categ){

    // **** 
    loadParam(); // email + telephone

    // **** 
    var http = new HTTP();

    //
    gPROJ = http.Get("proj");
    if(gPROJ){gPROJ = gPROJ.split('+')};
    //alert(gPROJ[1]);

    //
    gCATEG = _categ;
        
    // **** link menu
    gLINK = getEl('link'+gCATEG);
    //alert(gLINK.href);
    gLINK.className = 'selectedItem';

    // **** Parsing text file
    //alert( "gDATAFILE : " + gDATAFILE)
    parsingFile(gDATAFILE, gCATEG, gPROJ);
       
    // **** Preload IMG
    var im = new IMGManager3();
    im.Show();    // first we show text and thumbnail
    im.preLoad(); // after we make preload of big images
    //

    // **** 
    //var http = new HTTP();
    //http.Set(null, "nom", "miguelraffaele", true)
    //
}
// ****

