/*
todo:
- changer nommage _p : confusion image/photo
*/


/*
Principe:
	- on remplace le contenu d'un layer par le contenu genere dynamiquement a partir des donnees d'une photo et d'un modele html
*/

function detect_type_image(max_dim)
{
  // A terme, remplacer 320 et 70 par les dims de la vignette et de l'apercu propres a chaque image
  var type_image = 'vign';
  if(max_dim > 320){
    type_image = 'hr';
  }else if(max_dim > 70){
    type_image = 'image';
  }
  return type_image;
}

// Proprietes specifiques a l'affichage des proprietes d'une image
// page impliquees: guestbook site derive (ecrire)
function build_image_prop(_p, max_dim)
{
  // Construction d'un objet avec les proprietes d'affichage generique pour une photo
  var _p_display = build_photo(_p, max_dim);
  // On complete avec les props specifiques a l'affichage des proprietes d'une image
  _p_display.lien = page_id == 56?"href=\"index.php?SiteID="+site_id+"&PageID=43&ImageID="+_p_display.image_id+"\" target=_new":"href=\"javascript:affiche("+_p_display.index+", 0);\"";
  _p_display.auteur_display = _p_display.auteur != ''?'block':'none';
  _p_display.desc_display = _p_display.desc != ''?'block':'none';  
  _p_display.desc_class = _p_display.auteur != ''?'prop-image-desc':'prop-image-desc2';        
  _p_display.desc = replace(_p_display.desc, '\r\n', '\n');
  _p_display.desc = replace(_p_display.desc, '\n', '<br />');  
  return _p_display;  
}

// Fonction utilisee pour preparer data d'affichage des proprietes d'une image
function build_photo(_p, max_dim)
{
  var border_w = 1; // Largeur de la bordure autour de la photo => a variabiliser a terme
  var _p_display = new cloneObject(_p);
  dims = resize(_p_display.width, _p_display.height, max_dim);
  // Gestion dynamique de l'url de l'image en fonction de max_dim
  _p_display.url = eval('_p_display.'+detect_type_image(max_dim)+'_url');
  _p_display.dims = _p_display.width+'x'+_p_display.height+' px'; 
  _p_display.width = dims[0];
  _p_display.height = dims[1];  
  _p_display.margin_left = Math.floor(((max_dim+(2*border_w)) - ((_p_display.width*1)+(2*border_w))) / 2);
  _p_display.margin_top = Math.floor(((max_dim+(2*border_w)) - ((_p_display.height*1)+(2*border_w))) / 2);    
  _p_display.size = certify(Math.round(_p_display.size/100)/10)+' Ko';
  return _p_display;
}

/*
//a integrer dans l'objet photo ou diaporama
function display_photo(_p, layer, modele)
{
  var properties = new Array('desc_class', 'auteur_display', 'desc_display', 'date_str', 'lien','url','width','height','size','dims','titre','auteur','desc');
  transStart(layer, template(tmp_photo, properties, _p));
  // On force l'affichage du layer au bout d'un certain temp car parfois le onload n'est pas pris en compte (ex: opera sur guestbook ecrire)
  //setTimeout(layer.name+'.show()', 500);
}
*/

function Photo(imageData)
{


  // Rq: toutes les proprietes y compris width et height sont des strings
  this.titre    = imageData[0];
  this.auteur   = imageData[1];
  this.desc     = imageData[2];
  this.imajour_album = '';
  if(!window.imajour || imajour == 0){
    this.desc = imageData[2];
  }else if(imajour == 1){ // diaporama
    this.desc = imageData[2].split('&');
	this.desc = this.desc[0]+' par <font color=white>"'+this.desc[1]+'"</font> extrait de l\'album <font color=white>"'+this.desc[2]+'"</font>';
  }else if(imajour == 2){ // popslide
    this.desc = imageData[2].split('&');
	this.imajour_album = this.desc[2];
	this.desc = this.desc[0];
  }
  this.date_str = imageData[3];
  if(window.imajour_mois){
    this.date_str = ((imageData[8]*1)+1)+'/'+imajour_mois;
  }

  this.filename = imageData[4];
  this.width    = imageData[5];
  this.height   = imageData[6];
  this.host_url = (imageData[13]?eval('host_url_'+imageData[13]):'')+'/users/';
  this.album_id = imageData[9];//album_id; 
  this.size = imageData[10];
  this.path = imageData[11];
  this.timestamp = imageData[12];
  // On pourra a terme avoir des images issues de plusieurs album_id <> dans un meme album (peut etre alors mieux vaut sauvegarder le image_path direct)
  this.pseudo = pseudo;
  // this.index = index; // Index originel dans l'album
    
  this.get_path = function(dir){
    return this.path?
	  (this.host_url + replace(this.path, '/type/', '/'+dir+'/') + '/' + this.filename)
	  :(this.host_url + this.pseudo + '/' + dir + '/' + this.album_id + '/' + this.filename)
	;
  }  
  this.vign_url  = this.get_path('vignettes');
  this.image_url = this.get_path('images');
  this.hr_url    = this.get_path('hr');
  this.image_id = imageData[7];
  this.index = imageData[8];

}
/*
Photo.prototype.display = function(layer, modele, properties){
  transStart(layer, template(tmp_photo, properties, this));
  // On force l'affichage du layer au bout d'un certain temp car parfois le onload n'est pas pris en compte (ex: opera sur guestbook ecrire)
  //setTimeout(layer.name+'.show()', 500);
}
*/