var g_DLB = null;
var g_DLBFAQQuestionStyle = {width:460,height:40};
var g_DLBFAQAnswerStyle = {width:460,height:160};
var g_DLBcontentHeight = 560;
var g_DLB_isIE = navigator.appName.substr(0, 9).toLowerCase() == 'microsoft';

/***
* la hauteur des reponses doit etre un multiple des hauteurs des question qui doivent etre un multiple de la hauteur totale
* ces valeurs se retrouvent egalement dans la CSS
***/


function DLB(id, mode) {
  this.id = id;
  this.mode = mode;
  this.slicer1 = new MlibSlicer("dlb_list1");
  this.divLevel1Top = document.getElementById("dlb_imgtop1");
  this.divLevel1Bottom = document.getElementById("dlb_imgbottom1");
  
  this.slicer2 = new MlibSlicer("dlb_list2");
  this.divLevel2Top = document.getElementById("dlb_imgtop2");
  this.divLevel2Bottom = document.getElementById("dlb_imgbottom2");

  this.slicerContent = new MlibSlicer("dlb_content");
  this.divContentTop = document.getElementById("dlb_imgtopcontent");
  this.divContentBottom = document.getElementById("dlb_imgbottomcontent");

  g_DLB = this;
}

DLB.prototype = {
  selected1: null,
  selectedDiv1: null,
  selected2: null,
  selectedDiv2: null,
  setItems: function(arr) {
    this.items = arr;
  },
  ajax: new Ajax(document.location.pathname + "?action=load", "POST", "DLBShowContent"),
  drawLevel1: function() {
    var str = '';
    var img;
    for(var k in this.items.level1) {
      img = this.items.level1[k].icon ? this.items.level1[k].icon : '/_images/spacer.gif';
      str += '<div class="dlbLevel1Off" id="dlbDivLevel1_' + k + '"';
      str += ' onmouseover="DLBOver(this, 1, true, \'' + k + '\');"  onmouseout="DLBOver(this, 1, false, \'' + k + '\');"';
      str += ' onclick="DLBSelect(this, 1, \'' + k + '\');">';
      str += '<table cellpadding="0" cellspacing="0" border="0" height="38"><tr>';
      str += '<td style="width:25px;vertical-align:middle;"><img id="dlbImgLevel1_' + k + '" style="margin:0px 10px 0px 10px;" src="' + img + '" width="36" height="36" border="0" alt=""></td>';
      str += '<td style="vertical-align:middle;width:120px;"><span>' + this.items.level1[k].display + '</span></td>';
      str += '</tr></table></div>';
    }
    this.selected1 = null;
    this.selectedDiv1 = null;
    this.slicer1.hide();
    this.slicer1.setContent(str);
    this.slicer1.forcePosition(-200, 0);
    this.slicer1.right("DLBUpDown1");
    this.slicerContent.hide();
  },
  drawLevel2: function() {
    var str = '';
    for(var k in this.items.level1[this.selected1].level2) {
      str += '<div class="dlbLevel2Off" id="dlbDivLevel2_' + k + '"';
      str += ' onmouseover="DLBOver(this, 2, true, \'' + k + '\');"  onmouseout="DLBOver(this, 2, false, \'' + k + '\');"';
      str += ' onclick="DLBSelect(this, 2, \'' + k + '\');">';
      str += '<table cellpadding="0" cellspacing="0" border="0" height="38"><tr>';
      str += '<td style="width:10px;">&nbsp;</td>';
      str += '<td style="vertical-align:middle;width:170px;"><span>' + this.items.level1[this.selected1].level2[k] + '</span></td>';
      str += '</tr></table></div>';
    }
    this.selected2 = null;
    this.selectedDiv2 = null;
    this.slicer2.hide();
    this.slicer2.setContent(str);
    this.slicer2.forcePosition(-200, 0);
    this.slicer2.right("DLBUpDown2");
  },
  arrFAQs: []
}


function DLBOver(div, level, on, key) {
  if(g_DLB['selected' + level] == key)
    on = true;
  var img = document.getElementById('dlbImgLevel1_' + key);
  if(img)
    img.src = on ? (g_DLB.items.level1[key].iconOn ? g_DLB.items.level1[key].iconOn : '/_images/spacer.gif') : (g_DLB.items.level1[key].icon ? g_DLB.items.level1[key].icon : '/_images/spacer.gif');
  div.className = on ? 'dlbLevel' + level + 'On' : 'dlbLevel' + level + 'Off';
}

function DLBSelect(div, level, key) {
  if(!div)
    return;
  if(g_DLB['selected' + level] == key)
    return;
  if(g_DLB['selectedDiv' + level])
    g_DLB['selectedDiv' + level].className = 'dlbLevel' + level + 'Off';
  g_DLB['selected' + level] = key;
  g_DLB['selectedDiv' + level] = div;
  div.className = 'dlbLevel' + level + 'On';
  var img = document.getElementById('dlbImgLevel1_' + key);
  if(img)
    img.src = (g_DLB.items.level1[key].iconOn ? g_DLB.items.level1[key].iconOn : '/_images/spacer.gif');
  if(level == 1) {
    g_DLB.drawLevel2();
    g_DLB.slicerContent.hide();
    DLBUpDownContent();
  }
  if(level == 2)
    g_DLB.ajax.sendData({id: key, mode: g_DLB.mode}, true);
}

function DLBOpenForm() {
  var key1 = g_DLB.selected1;
  var key2 = g_DLB.selected2;
  document.location = "/particuliers/aide-support/nous-contacter/questions-suggestions.lbl?cat=" + key1 + "&subcat=" + key2;
}

function DLBUpDown1() {
  id = "dlb_list1";
  if(g_mlibSlicers[id].canSliceDown())
    g_DLB.divLevel1Bottom.src = '/_images/v4/dlb/bottom_200_on.jpg';
  else
    g_DLB.divLevel1Bottom.src = '/_images/v4/dlb/bottom_200_off.jpg';
  if(g_mlibSlicers[id].canSliceUp())
    g_DLB.divLevelTop.src = '/_images/v4/dlb/top_200_on.jpg';
  else
    g_DLB.divLevel1Top.src = '/_images/v4/dlb/top_200_off.jpg';
}

function DLBUpDown2() {
  id = "dlb_list2";
  if(g_mlibSlicers[id].canSliceDown())
    g_DLB.divLevel2Bottom.src = '/_images/v4/dlb/bottom_200_on.jpg';
  else
    g_DLB.divLevel2Bottom.src = '/_images/v4/dlb/bottom_200_off.jpg';
  if(g_mlibSlicers[id].canSliceUp())
    g_DLB.divLevel2Top.src = '/_images/v4/dlb/top_200_on.jpg';
  else
    g_DLB.divLevel2Top.src = '/_images/v4/dlb/top_200_off.jpg';
}

function DLBUpDownContent() {
  id = "dlb_content";
  DLBCheckSpace();
  if(g_mlibSlicers[id].canSliceDown())
    g_DLB.divContentBottom.src = '/_images/v4/dlb/bottom_460_on.jpg';
  else
    g_DLB.divContentBottom.src = '/_images/v4/dlb/bottom_460_off.jpg';
  if(g_mlibSlicers[id].canSliceUp())
    g_DLB.divContentTop.src = '/_images/v4/dlb/top_460_on.jpg';
  else
    g_DLB.divContentTop.src = '/_images/v4/dlb/top_460_off.jpg';
}

function DLBShowContent(arg) {
  if(!arg.result)
    return;
  //alert(arg.result);
  eval("var result = " + arg.result);
  if(g_intIntervalProgress)
    clearInterval(g_intIntervalProgress);
  g_currentOpenSlider = {id: null, src: null};
  
  var str = "";
  var arrSliders = new Array();
  if(result.FAQ) {
    g_DLB.arrFAQs = new Array();
    //FAQ
    for(var idFAQ in result.FAQ) {
      //question
      str += '<div id="dlb_FAQQuestion_' + idFAQ + '" class="dlbFAQQuestionOff" onclick="DLBSlideDiv(\'dlb_FAQAnswer_' + idFAQ + '\', this);">';
      str += '<div>' + result.FAQ[idFAQ].question + '</div></div>';
      //answer
      str += '<div id="dlb_FAQAnswer_' + idFAQ + '" style="display:none;width:' + (g_DLBFAQAnswerStyle.width - 5) + 'px;height:' + g_DLBFAQAnswerStyle.height + 'px" class="dlbFAQAnswerOff">';
      str += '<div>' + result.FAQ[idFAQ].answer + '</div></div>';

      arrSliders[idFAQ] = idFAQ;
      g_DLB.arrFAQs[idFAQ] = idFAQ;
    }
  } else if(result.block) {
    //BLOCK
    str += '<div class="dlbBlock" style="height:' + (g_DLBcontentHeight - 10) + 'px;">' + result.block + '</div>';
  }

  g_DLB.slicerContent.hide();
  g_DLB.slicerContent.forcePosition(g_DLB_isIE ? -460 : 0, 0);
  g_DLB.slicerContent.setContent(str);
  
  for(var id in arrSliders) {
    new MlibSlider('dlb_FAQAnswer_' + id);
  }
  g_DLB.slicerContent.right("DLBUpDownContent");

  
}

var g_currentOpenSlider = {id: null, src: null, pos: null};

function DLBSlideDiv(id, src) {
  if(g_currentOpenSlider.id != id) {
    //opening a new div
    var infos = DLBGetInfos(id);
    var bolCheck = true;
    if(g_currentOpenSlider.id) {
      //already open -> close
      if(g_currentOpenSlider.pos < infos.topQuestion) {
        //alert("close page before");
        DLBCloseDiv(true);
        DLBScrollContent(-g_DLBFAQAnswerStyle.height, true);
      } else if(g_currentOpenSlider.pos > infos.bottomQuestion) {
        //alert("close page after");
        DLBCloseDiv(true);
      } else {
        //alert("close same page");
        DLBCloseDiv();
        bolCheck = false;
      }
      g_currentOpenSlider = {id: null, src: null, pos: null};
    }
    
    //open
    g_mlibSliders[id].slide("vertical", "DLBUpDownContent");
    src.style.backgroundImage = "url('/_images/v4/dlb/sepa_off.jpg')";
    g_currentOpenSlider = {id: id, src: src, pos: infos.selectedQuestion};
    if(bolCheck) 
      DLBCheckSpace();
  } else {
    //closing current div
    DLBCloseDiv();
    g_currentOpenSlider = {id: null, src: null, pos: null};
  }
}

function DLBGetInfos(id) {
  //determines question number
  var selectedQuestion = 0;
  for(var k in g_DLB.arrFAQs) {
    if('dlb_FAQAnswer_' + k == id)
      break;
    selectedQuestion++;
  }
  
  //determines top displayed question
  var topQuestion = -parseInt(g_DLB.slicerContent.contentDiv.style.top) / g_DLBFAQQuestionStyle.height;
  if(g_currentOpenSlider.pos !== null && g_currentOpenSlider.pos != selectedQuestion && g_currentOpenSlider.pos < topQuestion)
    topQuestion -= g_DLBFAQAnswerStyle.height / g_DLBFAQQuestionStyle.height;
  
  //determines nb question displayable
  var nbDisplayablesQuestions = g_DLBcontentHeight / g_DLBFAQQuestionStyle.height;
  
  //determines last displayed question
  var bottomQuestion = topQuestion - 1 + nbDisplayablesQuestions;
  if(g_currentOpenSlider.pos !== null && g_currentOpenSlider.pos >= topQuestion && g_currentOpenSlider.pos < bottomQuestion)
    bottomQuestion -= g_DLBFAQAnswerStyle.height / g_DLBFAQQuestionStyle.height;

  return {selectedQuestion: selectedQuestion, nbDisplayablesQuestions:nbDisplayablesQuestions, topQuestion: topQuestion, bottomQuestion: bottomQuestion};
}

function DLBCheckSpace() {
  if(!g_currentOpenSlider.id)
    return;
  var infos = DLBGetInfos(g_currentOpenSlider.id);
  //check bottom space
  if(infos.selectedQuestion >= infos.topQuestion && infos.selectedQuestion <= infos.bottomQuestion) {
    var need = (infos.selectedQuestion - infos.topQuestion + 1) * g_DLBFAQQuestionStyle.height + g_DLBFAQAnswerStyle.height;
    if(need > g_DLBcontentHeight)
      DLBScrollContent(need - g_DLBcontentHeight);
  }
}

function DLBCloseDiv(bolFast) {
  if(bolFast)
    document.getElementById(g_currentOpenSlider.id).style.display = "none";  
  else
    g_mlibSliders[g_currentOpenSlider.id].slide("vertical", "DLBUpDownContent");
  g_currentOpenSlider.src.style.backgroundImage = "url('/_images/v4/dlb/sepa.jpg')";
}

function DLBScrollContent(px, bolFast) {
  var h = g_DLB.slicerContent.h;
  var step = g_DLB.slicerContent.step;
  if(bolFast)
    g_DLB.slicerContent.step = Math.abs(px);
  g_DLB.slicerContent.h = Math.abs(px);
  if(px < 0)
    g_DLB.slicerContent.up();
  else
    g_DLB.slicerContent.down();
  g_DLB.slicerContent.h = h;
  g_DLB.slicerContent.step = step;
}

function DLBSubmitAjax(f, strURL, uid) {
  if(typeof Ajax != "function")
    return alert("Erreur: librairie AJAX non disponible.");
  var ajax = new Ajax(strURL, "POST", "DLBShowContent");
  var str="";
  var data = new Array();
  for(k in f) {
    if(f[k] && f[k].value)
      data[k] = f[k].value;
  }
  sig_showSubmitProcess(uid);
  ajax.sendData(data, true);
  return false;
}

