
/*
 * Various things on tabs. Source: http://www.barelyfitz.com/projects/tabber/
 */

/*==================================================
  Set the tabber options (must do this before including tabber.js)
  ==================================================*/
var tabberOptions = {

  'cookie':"tabber", /* Name to use for the cookie */

  'onLoad': function(argsObj)
  {
    // We don't want to keep the same tab from one link to another. We just want to keep it when sending actions.
    // otherwise there's a pb with sub-tabs that need a call to Ajax.
    if (document.referrer != document.URL)
      return;

    var t = argsObj.tabber;
    var i;

    /* Optional: Add the id of the tabber to the cookie name to allow
       for multiple tabber interfaces on the site.  If you have
       multiple tabber interfaces (even on different pages) I suggest
       setting a unique id on each one, to avoid having the cookie set
       the wrong tab.
    */
    if (t.id) {
      t.cookie = t.id + t.cookie;
    }

    /* If a cookie was previously set, restore the active tab */
    i = parseInt(getCookie(t.cookie));
    if (isNaN(i)) { return; }
    t.tabShow(i);
  },

  'onClick':function(argsObj)
  {
    var t = argsObj.tabber;
    var i = argsObj.index;		// which tab was clicked: 0..n
    var c = t.cookie;
    setCookie(c, i);

    var tabFunc = this.tabs[i].div.id;
    // handle some possible javascript to call when switching tabs.
    if (typeof tabFunc == "string" && tabFunc.length > 0) {
	eval ("if (typeof " + tabFunc + " == 'function') " + tabFunc + "();");
    }
  }
};



/*==================================================
  Cookie functions
  ==================================================*/
function setCookie(name, value, expires, path, domain, secure) {
    document.cookie= name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires.toGMTString() : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}

function getCookie(name) {
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1) {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    } else {
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1) {
        end = dc.length;
    }
    return unescape(dc.substring(begin + prefix.length, end));
}
function deleteCookie(name, path, domain) {
    if (getCookie(name)) {
        document.cookie = name + "=" +
            ((path) ? "; path=" + path : "") +
            ((domain) ? "; domain=" + domain : "") +
            "; expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
}





// petites fonctions utiles. Surtout pour l'ajax
    
// setEnCours: affiche le message avec animation de 3 petits points a la suite. Ne rien mettre pour tmpvalue
// ne pas oublier de stopper le timer. Certes on pourrait le faire automatiquement, mais il faut changer le code de ajason du coup...
var timerID;
function setEnCours (eltid, txt, tmpvalue)
{
    stopEnCours ();  // enleve le timer precedent, si jamais... (cas d'un appel par le joueur)

    if (tmpvalue == null) {
        txt = txt + "...";
	tmpvalue = -3;
    }
    
    setInnerHtmlOfElement (eltid, txt.substr (0, txt.length + tmpvalue));
    
    timerID  = setTimeout('setEnCours ("'+eltid+'", "'+txt+'", '+(tmpvalue >= 0 ? -3 : tmpvalue+1) + ')', 500);
}

function stopEnCours () {
    if(timerID) {
	clearTimeout(timerID);
	timerID  = 0;
    }
}

function setDisplayOfElement (eltid, display)
{
    elt = document.getElementById(eltid);
    elt.style.display = display;
}

function setInnerHtmlOfElement (eltid, txt)
{
    elt = document.getElementById(eltid);
    elt.innerHTML = txt;
}
