// JavaScript Document
// fonctions globales
var ajaxGui = {
 SaveEnabled:false,
 DeleteEnabled:false,
 CloseEnabled:false,
 AddEnabled:true,
 PrintEnabled:false,
 allowDelPanneauDetail:true,
 id : 0,
 vars : new Array(),
 currentClass : 'none',
 Reset: function() { this.id = 0; this.vars = new Array(); },
 HighLightLine: function(id) { _Elem('ajaxGuiLigne'+id).style.backgroundColor = '#99ccff'; },
 ResetLines: function () {
       ids = getElementsByClass('ajaxGuiLigne');
       for (i=0; i<ids.length; i++) {
           _Elem(ids[i].id).style.backgroundColor = '#ffffff';
       }
       this.id = 0;
 },
 View: function (className, id) {
       this.ResetLines();
       this.currentClass = className;
       _Elem('panneauDetail').innerHTML = '<div align="center"><img src="'+imagesPath+'loader.gif" alt="Chargement en cours" /></div>';
        
       remoteObj = new ajax_gui(ajaxCallBack);
       remoteObj.ajaxView(className, id);
 },
 Edit: function (className, id) {
       if (!className) className = this.currentClass; else this.currentClass = className ; 
       if (!id && id != 0) id = this.id; else this.id = id ;
       if (id >= 0) {
        _Elem('panneauDetail').innerHTML = '<div align="center"><img src="'+imagesPath+'loader.gif" alt="Chargement en cours" /></div>';
        remoteObj = new ajax_gui(ajaxCallBack);
        remoteObj.ajaxEdit(className, id);
       }
 },
 Add: function () {
        if (this.AddEnabled) {
         this.Disable('Save|Delete|Close|Add|Print');
         this.ResetLines();
        _Elem('panneauDetail').innerHTML = '<div align="center"><img src="'+imagesPath+'loader.gif" alt="Chargement en cours" /></div>';
        remoteObj = new ajax_gui(ajaxCallBack);
        remoteObj.ajaxEdit(this.currentClass, 0);
        }
 },
 Delete: function () {
      if (this.DeleteEnabled) {
         this.Disable('Save|Delete|Close|Add|Print');
         remoteObj = new ajax_gui(ajaxCallBack);
         remoteObj.ajaxDelete(this.currentClass, this.id);
      }
 },
 Save: function (obj) {
      if (this.SaveEnabled) {
       if (obj) {
         this.Disable('Save|Delete|Close|Add|Print');
         ShowDivMessage('Sauvegarde en Cours...');
         remoteObj = new ajax_gui(ajaxCallBack);
         remoteObj.ajaxSave(this.currentClass, this.id, obj);
       }
      }
 },
 Close: function (id) {
      if (this.CloseEnabled) {
       this.ForceClose(id);
      }
 },
 ForceClose: function (id) {
       if (id > 0) {
        this.Disable('Save|Delete|Close|Add|Print');
        this.View(this.currentClass, id);
       } else {
       this.ResetLines();
       this.Reset();
       if (this.allowDelPanneauDetail)
       _Elem('panneauDetail').innerHTML = '';
       this.Disable('Save|Delete|Close|Add|Print');
       this.Enable('Add');
       }
 },
 Error: function (aryRet) {
        _Elem('panneauDetail').innerHTML = aryRet;
 },
 CallUserFunction: function (fctName, args) {
                   remoteObj = new ajax_gui(ajaxCallBack);
                   remoteObj.ajaxCallUserFunction(this.currentClass, fctName, args);
 },
 Enable: function (functionList) {
      var fcts = functionList.split('|');
      for (fct in fcts) {
         eval('this.'+fcts[fct]+'Enabled=true;');
         if (_Elem('ajaxGui'+fcts[fct]+'Btn'))
         _Elem('ajaxGui'+fcts[fct]+'Btn').className = 'EnabledBtn';
      }
 },
 Disable: function (functionList) {
      var fcts = functionList.split('|');
      for (fct in fcts) {
         eval('this.'+fcts[fct]+'Enabled=false;');
         if (_Elem('ajaxGui'+fcts[fct]+'Btn'))
         _Elem('ajaxGui'+fcts[fct]+'Btn').className = 'DisabledBtn';
      }
 }
}

var ajaxCallBack = {
   	ajaxView: function (aryRet) {
      if ( aryRet['sec'] == true ) {
           _Elem('panneauDetail').innerHTML = aryRet['html'];
           ajaxGui.HighLightLine(aryRet['vars']['id']);
           ajaxGui.id = aryRet['vars']['id'];
           ajaxGui.vars = aryRet['vars'];
           ajaxGui.Enable('Save|Delete|Close|Add|Print');
           if (hasViewCallBack) eval('ajaxViewCallBack_'+ajaxGui.currentClass+'();');
      } else {
        ajaxGui.Error(aryRet);
      }
   	},
   	ajaxSave: function (aryRet){
   	    if ( aryRet['sec'] == true ) {
              //_Elem('panneauDetail').innerHTML = aryRet['html'];
              ajaxGui.id = aryRet['vars']['id'];
              //ajaxGui.vars = aryRet['vars'];
              ajaxGui.Enable('Save|Delete|Close|Add|Print');
              HideDivMessage();
              if (hasSaveCallBack) eval('ajaxSaveCallBack_'+ajaxGui.currentClass+'();');
   	    } else {
   	    ajaxGui.Error(aryRet);
        }
    },
    ajaxDelete: function (aryRet) {
        if ( aryRet['sec'] == true ) {
            ajaxGui.Enable('Add');            
            if (this.doNothingOnSave == false)
                  ajaxGui.ForceClose();
           if (hasDeleteCallBack) eval('ajaxDeleteCallBack_'+ajaxGui.currentClass+'();');           
        } else {
   	    ajaxGui.Error(aryRet);
        }
    },
   	ajaxEdit: function (aryRet) {
   	    if ( aryRet['sec'] == true ) {
              _Elem('panneauDetail').innerHTML = aryRet['html'];
              ajaxGui.id = aryRet['vars']['id'];
              ajaxGui.vars = aryRet['vars'];
              if (ajaxGui.id>0) ajaxGui.Enable('Delete');
              ajaxGui.Enable('Save|Close|Add');
              if (hasEditCallBack) eval('ajaxEditCallBack_'+ajaxGui.currentClass+'();');
   	    } else {
   	    ajaxGui.Error(aryRet);
        }
   	
    },
    ajaxCallUserFunction: function (aryRet) {
        if ( aryRet['sec'] == true ) {
             eval (aryRet['fctName']+'CallBack(aryRet[\'vars\']);');
        } else {
   	    ajaxGui.Error(aryRet);
        }
    }
  }

var ongletCourant = 't1';
function chTab(id) {
    _Elem(ongletCourant).className = 'ongletInactif';
    _Elem(id).className = 'ongletActif';
    Hide(ongletCourant+'Content');
    Show(id+'Content');
    ongletCourant = id;
	eval(ajaxGui.currentClass+"ChTab('"+id+"')");
}
