var chat_chambres = new chat_chambres();
var chat_usagers = new chat_usagers();
var chat_chatprives = new chat_chatprives();

function chat_chambres(){
  this.chambres = new Array();
  this.allchambres = new Array();
  this.ajouterchambre = function(id, nom){
    if (!this.chambres[id]){
      this.chambres[id] = new chat_chambre(nom);
    }
    this.allchambres = array_add(this.allchambres, id);
  }
  this.enleverchambre = function(id){
    if (this.chambres[id]){
      this.chambres[id] = null;
    }
    this.allchambres = array_remove(this.allchambres, id);
  }
}

function chat_chambre(nom){
  this.nom = nom;
  this.contenu = new Array();
  this.enattente = 0;
  this.ids = new Array();
  this.ajouterusager = function(id){
    this.ids = array_add(this.ids, id);
  }
  this.enleverusager = function(id){
    this.ids = array_remove(this.ids, id);
  }
}

function chat_usagers(){
  this.usagers = new Array();
  this.allusagers = new Array();
  this.ajouterusager = function(id, pseudo, genre, age, avatar, admin){
    if (!this.usagers[id]){
      this.usagers[id] = new chat_usager(id, pseudo, genre, age, avatar, admin);
    }
    this.allusagers = array_add(this.allusagers, id);
  }
  this.enleverusager = function(id){
    if (this.usagers[id]){
      this.usagers[id] = null;
    }
    this.allusagers = array_remove(this.allusagers, id);
  }
}

function chat_usager(id, pseudo, genre, age, avatar, admin){
  this.id = id;
  this.pseudo = pseudo;
  this.genre = genre;
  this.age = age;
  this.avatar = avatar;
  this.admin = admin;
  this.enligne = 1;
  this.chambres = Array();
  this.ajouterchambre = function(chambre){
    this.chambres = array_add(this.chambres, chambre);
  }
  this.enleverchambre = function(chambre){
    this.chambres = array_remove(this.chambres, chambre);
    chat_purgerusager(this.id);
  }
}

function chat_chatprives(){
  this.chatprives = new Array();
  this.allchatprives = new Array();
  this.ajouterchat = function(id){
    if (!this.chatprives[id]){
      this.chatprives[id] = new chat_chatprive();
    }
    this.allchatprives = array_add(this.allchatprives, id);
  }
  this.enleverchat = function(id){
    if (this.chatprives[id]){
      this.chatprives[id] = null;
    }
    this.allchatprives = array_remove(this.allchatprives, id);
    chat_purgerusager(id);
  }
}

function chat_chatprive(){
  this.contenu = new Array();
  this.enligne = 1;
  this.enattente = 0;
}

function chat_udc(usager, chambre){
  chat_chambres.chambres[chambre].ajouterusager(usager);
  chat_usagers.usagers[usager].ajouterchambre(chambre);
}

function chat_rudc(usager, chambre){
  chat_chambres.chambres[chambre].enleverusager(usager);
  if (chat_usagers.usagers[usager]){
    chat_usagers.usagers[usager].enleverchambre(chambre);
  }
}

function chat_purgerusager(id){
  if (chat_usagers.usagers[id].chambres.length == 0 && !chat_chatprives.chatprives[id]){
    chat_usagers.enleverusager(id);
  }
}

function chat_refairetitre(){
  var type = document.forms.chat_form.type.value;
  var id = document.forms.chat_form.id.value;
  if (type == 'c'){
    var nouveautitre = 'Chat dans le salon: ' + chat_chambres.chambres[id].nom;
  }
  else if (type == 'u'){
    var nouveautitre = 'Chat privé avec ' + chat_usagers.usagers[id].pseudo;
  }
  var titre = document.getElementById('chat_title');
  titre.innerHTML = nouveautitre;
  chat_refairesalons();
}

function chat_refairesalons(){
  var type = document.forms.chat_form.type.value;
  var id = document.forms.chat_form.id.value;
  var arraylen = chat_chambres.allchambres.length;
  var output = '';
  for (i = 0; i < arraylen; i++){
    var chambreid = chat_chambres.allchambres[i];
    if (id == chambreid){
      output += chat_chambres.chambres[chambreid].nom + ' ';
    }
    else{
      if (chat_chambres.chambres[chambreid].enattente){
        output += '<b><a href="Javascript:chat_changerchambre(\'c\',\'' + chambreid + '\');">' + chat_chambres.chambres[chambreid].nom + '</a></b> ';
      }
      else{
        output += '<a href="Javascript:chat_changerchambre(\'c\',\'' + chambreid + '\');">' + chat_chambres.chambres[chambreid].nom + '</a> ';
      }
    }
  }
  var arraylen = chat_chatprives.allchatprives.length;
  for (i = 0; i < arraylen; i++){
    var chatpriveid = chat_chatprives.allchatprives[i];
    if (id == chatpriveid){
      output += chat_usagers.usagers[chatpriveid].pseudo;
    }
    else{
      if (chat_chatprives.chatprives[chatpriveid].enattente){
        output += '<b><a href="Javascript:chat_changerchambre(\'u\',\'' + chatpriveid + '\');">' + chat_usagers.usagers[chatpriveid].pseudo + '</a></b>';
      }
      else{
        output += '<a href="Javascript:chat_changerchambre(\'u\',\'' + chatpriveid + '\');">' + chat_usagers.usagers[chatpriveid].pseudo + '</a>';
      }
    }
    output += '[<a href="Javascript:chat_fermerchambre(\'u\',\'' + chatpriveid + '\');">X</a>] ';
  }
  var salons = document.getElementById('chat_chambres');
  salons.innerHTML = output;
}

function chat_refairecontenu(doscroll){
  var doscroll = (doscroll == null) ? 1 : doscroll;
  var type = document.forms.chat_form.type.value;
  var id = document.forms.chat_form.id.value;
  var output = '<div id="ie_bug">';
  if (type == 'u'){
    output += chat_chatprives.chatprives[id].contenu.join('');
  }
  if (type == 'c'){
    output += chat_chambres.chambres[id].contenu.join('');
  }
  output += '</div>';
  var contenu = document.getElementById('chat_contenu');
  contenu.innerHTML = output;
  if (doscroll){
    var div = document.getElementById('ie_bug');
    div.scrollTop = 0;
    var contenu = document.getElementById('chat_contenu');
    contenu.scrollTop = contenu.scrollHeight;
  }
}

function chat_refairetarget(){
  var type = document.forms.chat_form.type.value;
  var id = document.forms.chat_form.id.value;
  var output = '';
  if (type == 'u'){
    chat_afficherusager(id);
    chat_chatprives.chatprives[id].enattente = 0;
  }
  if (type == 'c'){
    var avatar = 'http://images.chatgratuit.com' + chat_usagers.usagers[myuserid].avatar;
    output += '<a href="http://' + escape(chat_usagers.usagers[myuserid].pseudo) + '.chatgratuit.com/" target="_blank"><img src="' + avatar + '" border="0" /></a><br />';
    var usagers = document.getElementById('chat_target');
    usagers.innerHTML = output;
    chat_chambres.chambres[id].enattente = 0;
  }
}

function chat_refaireusager(){
  var type = document.forms.chat_form.type.value;
  var id = document.forms.chat_form.id.value;
  var output = '';
  var j = 0;
  if (type == 'c'){
    var rawarray = new Array();
    for (x in chat_chambres.chambres[id].ids){
      var userid = chat_chambres.chambres[id].ids[x];
      if (chat_usagers.usagers[userid].genre == 'Femme'){
        var tempvalue = 1000 + j;
      }
      else if (chat_usagers.usagers[userid].genre == 'Homme'){
        var tempvalue = 2000 + j;
      }
      else {
        var tempvalue = 3000 + j;
      }
      tempvalue += chat_usagers.usagers[userid].pseudo;
      rawarray[userid] = tempvalue;
      j++;
    }
    var cleanarray = assocSort(rawarray);
    var arraylen = chat_chambres.chambres[id].ids.length;
    output += 'Dans le chat (' + arraylen + ')<br />';
    for (i in cleanarray){
      var userid = i;
      var avatar = 'http://images.chatgratuit.com' + chat_usagers.usagers[userid].avatar;
      output += '<table class="strippedtable" width="90%"><tr><td width="31" valign="top" align="left"><img src="' + avatar + '" width="30" height="30" style="margin-right: 1px; margin-bottom: 1px;" /></td><td valign="top" align="left"><a href="Javascript:chat_afficherusager(\'' + userid + '\');">' + chat_usagers.usagers[userid].pseudo + '</a><br />';
      if (chat_usagers.usagers[userid].admin == 0){
        output += chat_usagers.usagers[userid].genre + ' de ' + chat_usagers.usagers[userid].age + ' ans';
      }
      output += '</td></tr></table>';
    }
  }
  if (type == 'u'){
    var avatar = 'http://images.chatgratuit.com' + chat_usagers.usagers[myuserid].avatar;
    output += '<a href="http://' + escape(chat_usagers.usagers[myuserid].pseudo) + '.chatgratuit.com/" target="_blank"><img src="' + avatar + '" /></a><br />';
  }
  var usagers = document.getElementById('chat_usagers');
  usagers.innerHTML = output;
}

function assocSort (oAssoc) {
	var idx; var key; var arVal = []; var arValKey = []; var oRes = {};
	for (key in oAssoc) {
		arVal[arVal.length] = oAssoc[key];
		arValKey[oAssoc[key]] = key;
	}
	arVal.sort();
	for (idx in arVal)
		oRes[arValKey[arVal[idx]]] = arVal[idx];
	return oRes;
}

function chat_afficherusager(id){
  var output = '';
  var avatar = 'http://images.chatgratuit.com' + chat_usagers.usagers[id].avatar;
  output += '<a href="http://' + escape(chat_usagers.usagers[id].pseudo) + '.chatgratuit.com/" target="_blank"><img src="' + avatar + '" /></a><br />';
  output += chat_usagers.usagers[id].pseudo + ' ' + chat_usagers.usagers[id].genre + chat_usagers.usagers[id].age;
  if (chat_usagers.usagers[id].admin != 1){
    var bareid = id.substring(1, id.length);
    output += '<br /><a href="Javascript:chat_nouveauchat(\'' + id + '\');">Chat privé</a><br /><a href="http://www.chatgratuit.com/envoyer.php?type=message&dest=' + escape(chat_usagers.usagers[id].pseudo) + '&source=profil" target="blank">Message privé</a><br /><a href="Javascript:confirmer_action(\'reporterprofil\',\'' + bareid + '\');">Inapproprié?</a><br /><a href="Javascript:confirmer_action(\'ajouterignore\',\'' + bareid + '\');">Bloquer</a>';
  }
  var usagers = document.getElementById('chat_target');
  usagers.innerHTML = output;
  document.forms.chat_form.message.focus();
}

function chat_nouveauchat(id){
  chat_chatprives.ajouterchat(id);
  document.forms.chat_form.type.value = 'u';
  document.forms.chat_form.id.value = id;
  chat_refairetitre();
  chat_refairecontenu();
  chat_refaireusager();
  document.forms.chat_form.message.focus();
}

function chat_changerchambre(type, id){
  document.forms.chat_form.type.value = type;
  document.forms.chat_form.id.value = id;
  chat_refairetitre();
  chat_refairecontenu();
  chat_refairetarget();
  chat_refaireusager();
  document.forms.chat_form.message.focus();
}

function chat_fermerchambre(type, id){
  if (type == 'u'){
    chat_chatprives.enleverchat(id);
  }
  if (id == document.forms.chat_form.id.value){
    chat_changerchambre('c', 'c1');
  }
  else{
    chat_refairetitre();
  }
  document.forms.chat_form.message.focus();
}

function chat_resize(){
  var winH = 750;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    winH = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    winH = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    winH = document.body.clientHeight;
  }
  if (winH < 440){
    winH = 440;
  }
  var chat_h = winH - (165 + toolbarheight);
  var user_h = winH - (385 + toolbarheight);
  chat_h += 'px';
  user_h += 'px';
  var contenu = document.getElementById('chat_contenu');
  contenu.style.height = chat_h;
  contenu.style.overflow = 'auto';
  var usagers = document.getElementById('chat_usagers');
  usagers.style.height = user_h;
  usagers.style.overflow = 'auto';
//  Nifty("div.roundcorners2","all fixed-height");
}
