﻿
//var ROOTURL = "file:///D:/Data/TD/pariri/new/";
var ROOTURL = "";

var Languages = new Array("fr", "en");

var BLEND_DURATION = 700; // ms

var ViewMode =
{
   normal       : "normal",
   workitem     : "workitem"
};

var Ressfr =
{
   us :              "Nous",
   blog   :          "Le blog",
   friends:          "Les copains",
   status_message :  "Cliquez pour voir nos travaux",
   bio_mail :        "mail",
   bio_cv :          "Pdf/CV",
   bio_credit :      "Crédits du site",
   sites_label :     "Une sélection de site Web",
   friends_label :   "Quelques talentueux amis",
   stagiaires_label :"Stagiaires",
   news :            "Les News",
   goto_blog :       "Accès<br/>au blog",
   or :              "ou",   
   paris :           "Paris",
   london :          "Londres",
   beyrouth :        "Beyrouth",
   home_video:      "Une petite<br/>vidéo ?"
 
};
var Ressen =
{
   us :              "Us",
   blog   :          "The blog",
   friends:          "Our friends"  ,
   status_message:   "Click to view our works",
   bio_mail :        "mail"   ,
   bio_cv :          "Pdf/CV",
   bio_credit  :     "Credits of site",
   sites_label :     "A selection of websites",
   friends_label :   "Some of our telented friends",
   stagiaires_label :"Interns",
   news :            "&nbsp;&nbsp;&nbsp;News",
   goto_blog :       "Go to<br/>blog",
   or :              "or",
   paris :           "Paris",
   london :           "London",
   beyrouth :           "Beirut",
   home_video:      "A small<br/>film ?"
};

var RESS = Ressfr;

var VIEW_MODE = ViewMode.normal;

var WORKPLACES = new Array("paris", "london","beyrouth");
var WORKBOOKS = null; // hastable (name, WorkBook)
var CUR_BOOK = null; // WorkBook courant
var CUR_WORK = null; // Work courant
var CUR_WORK_ITEM = 0; // rang de l'item courant
var CUR_LANG = "fr";
var CONTACTS = null; // hash (city, Contact)
var ABOUTS = null; // hash (lang,About)
var BIOS = null; // hash (name, Bio)
var FRIENDS = new Array(); // Link
var WEBSITES = new Array(); // Link
var STAGIAIRES = new Array(); // Link
var NEWS = new Array(); // News
var BLOG = new Blog(); 

function getCurLang(){ return CUR_LANG;}
function setCurLanf(l){ CUR_LANG=l;}

function setLang(imgId, lang)
{
   CUR_LANG = lang;
   updateLang(imgId);
}

function switchLang(imgId)
{
   if (CUR_LANG == "fr" ) CUR_LANG="en";
   else CUR_LANG = "fr";
   updateLang(imgId);
}

function updateLang(imgId)
{
   var imageObj = document.getElementById(imgId);
   var newImage = "images/lang_" + CUR_LANG + ".jpg";
   imageObj.src = newImage
   imageObj.setAttribute("sysCurImage", newImage);
   
   RESS = eval("Ress"+CUR_LANG);// traduction
   
   // Links
   document.getElementById("link_us").innerHTML = RESS.us;
   document.getElementById("link_blog").innerHTML = RESS.blog;
   document.getElementById("link_friends").innerHTML = RESS.friends;
   document.getElementById("status_message").innerHTML = RESS.status_message;
   
   // Workplace
   for (var i=0; i<WORKPLACES.length; i++)
   {
      var elem = document.getElementById("workplace_"+WORKPLACES[i]);
      if (elem)
         elem.innerHTML = RESS[WORKPLACES[i]];
   }
   //document.getElementById("workplace_or").innerHTML = RESS.or;
   
   // Label Bios
   refreshBios();
   
   // Label Friends
   refreshFriends();
   
   // Label News
   document.getElementById("circle_news").innerHTML = RESS.news;
   
   // Text Blog
   refreshBlog();
   
   // Légende des travaux
   updateCurrentWorkItemComment();
   
   // Video home
   document.getElementById("home_video_text").innerHTML = RESS.home_video;
   
   // About
   var div = document.getElementById("about_panel_text");
   var abouts = loadAbout();
   if ( abouts )
   {   
      div.innerHTML = abouts[getCurLang()].text;   
   }
}

function refreshFriends()
{
   loadFriends();
   loadWebsites();
   loadStagiaires();
   
   var html = "<u>" + RESS.friends_label + "</u><br/>";
   for (var i=0; i<FRIENDS.length; i++)
   {
      var link = FRIENDS[i];
      if ( link.href != "" )
         html += "<a href='" + link.href + "' target='_blank' />" + link.name +"</a><br/>";
      else
         html += "<a href='javascript:void(0)' target='_blank' />" + link.name +"</a><br/>";
   }
   document.getElementById("friends_names").innerHTML = html;

    html = "<u>" + RESS.sites_label + "</u><br/>";
   for (var i=0; i<WEBSITES.length; i++)
   {
      var link = WEBSITES[i];
      html += "<a href='" + link.href + "' class='blue' target='_blank' />" + link.name +"</a><br/>";
   }
   document.getElementById("friends_sites").innerHTML = html;

    html = "<u>" + RESS.stagiaires_label + "</u><br/>";
   for (var i=0; i<STAGIAIRES.length; i++)
   {
      var link = STAGIAIRES[i];
      if ( link.href != "" )
         html += "<a href='" + link.href + "' class='green' target='_blank' />" + link.name +"</a><br/>";
      else
         html += "<a href='javascript:void(0)'  class='green' target='_blank' />" + link.name +"</a><br/>";
   }
   document.getElementById("stagiaires").innerHTML = html;

   
}

function refreshBios()
{   
   loadBios();
   for (var name in BIOS)
   {
      var bio = BIOS[name];
      if ( bio )
      {
         if ( name == "credit" )
            document.getElementById("bio_label_"+name).innerHTML = RESS.bio_credit;
         else
            document.getElementById("bio_label_"+name).innerHTML = bio.label + "&nbsp;&nbsp;&nbsp;";
         var mailref = document.getElementById("bio_mail_"+name);
         if ( mailref )
         {
            mailref.setAttribute("href","mailto:"+bio.mail);
            mailref.innerHTML = RESS.bio_mail + "&nbsp;&nbsp;&nbsp;";
         }
         var cvref = document.getElementById("bio_cv_"+name);
         if ( cvref )
         {
            cvref.setAttribute("href", bio.cv);
            cvref.innerHTML = RESS.bio_cv + "&nbsp;&nbsp;&nbsp;";
         }
         document.getElementById("bio_text_"+name).innerHTML = bio.contents[CUR_LANG];
      }
   }
}

function refreshBlog()
{
   loadBlog();
   
   document.getElementById("blog_text").innerHTML = BLOG.presentation[CUR_LANG];
   document.getElementById("blog_access").innerHTML = RESS.goto_blog;
   
}

function Blog()
{
   this.presentation = new Array();// hash (lang, text)
   return this;
}

function News(bookName, workName)
{
   this.book = bookName;
   this.work = workName;
   return this;
}

function Link(name, href)
{
   this.name = name;
   this.href = href;
   return this;
}

function Bio(name, label, mail, cv)
{
   this.name = name;
   this.label =label;
   this.mail = mail;
   this.cv = cv;
   this.contents = new Array(); // hash (lang, text)
   return this;
}
Bio.prototype.addText = function(lang, text)
{
   this.contents[lang] = text;
}

function Contact(name, address)
{
   this.name = name
   this.address = address;
   return this;
}

function About(lang, text)
{
   this.lang= lang
   this.text= text;
   return this;
}

function WorkItem(imgSource, comments, commentColor)
{
   this.name = imgSource;
   this.comments = comments;
   this.commentColor = commentColor;
   return this;
}

// name : nom du sous-dossier
function Work(name, label, comments)
{
   this.name = name;
   this.label = label;
   this.comments = comments;
   this.items = new Array();
   return this;
}
// imgSource est relatif à images/nomWorkBook/nomWork
Work.prototype.addItem = function(imgSource, comments, commentColor)
{
   var i = new WorkItem(imgSource, comments, commentColor);
   this.items[this.items.length] = i;
}


// Stocke les travaux
function WorkBook(name)
{
   this.name = name;
   this.works = new Array();
}
WorkBook.prototype.addWork = function(work)
{
   this.works[this.works.length] = work;
}


function loadWorkBooks()
{
   if ( WORKBOOKS!=null ) return; // already done
   
   var xmldoc = XMLUtil_LoadXML("data/workbooks.xml", "UTF-8");
   if ( xmldoc )
   {
      var bookElems = xmldoc.getElementsByTagName("workbook");
      if ( bookElems )
      {
         WORKBOOKS = new Array();
         for (var i=0; i<bookElems.length; i++)
         {
            var bookElem = bookElems[i];
            var bookName = bookElem.getAttribute("name");
            var book = new WorkBook(bookName);
            var workElems = bookElem.getElementsByTagName("work");
            if ( workElems )
            {
               for (var j=0; j<workElems.length; j++)
               {
                  var workElem = workElems[j];
                  var workName = workElem.getAttribute("name");
                  var comments=  new Array();
                  for (p=0; p<Languages.length; p++)
                  {
                     var lang = Languages[p];
                     comments[lang] = workElem.getAttribute("comment_" + lang)
                  }
                  var work = new Work(workName,
                     workElem.getAttribute("label"), comments);
                  book.addWork(work);
                  var itemElems = workElem.getElementsByTagName("item");
                  if ( itemElems )
                  {
                     for (var k=0; k<itemElems.length; k++)
                     {
                        var itemElem = itemElems[k];
                        var comm = new Array();
                        for (p=0; p<Languages.length; p++)
                        {
                           var lang = Languages[p];
                           comm [lang] = itemElem.getAttribute("comment_" + lang)
                        }
                        var color = itemElem.getAttribute("comment_color");
                        work.addItem(itemElem.getAttribute("name"), comm, color );
                     }
                  }
               }
            }
            WORKBOOKS[bookName] = book;
         }
      }
   }
   else
   {
      alert("xml doc load failed");
   }
}

function resizeBgImage(img_id)
{
   var prop = 710/1210;
   imgStretchImage(img_id, prop);

}

function resizeBg(divId)
{
   var prop = 710/1210;
   var div = document.getElementById(divId);
   
   var contentType = div.getAttribute("sysContentType");

   if ( "image" == contentType )
   {
      imgStretchImage(divId, prop); // div
      imgStretchImage(divId+ "_content", prop); // image de fond
   }
   else if ( "swf" == contentType )
   {
      prop = 581/956;
      imgStretchImage(divId+ "_content", prop); //vidéo
   }
}

// contentType : image/swf
function setBackgroundContent(divId, contentType, contentSrc)
{
   var html = "";
   var div = document.getElementById(divId);
   if ( "image" == contentType )
   {
      html += "<img id='" + divId + "_content' src='" + contentSrc + "' />";
   }
   else if ( "swf" == contentType )
   {
      html += "<object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' "; 
  	   html += "codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0' ";
  	   html += "width='100%' height='100%' id='" + divId + "_content' >";
      html += "	<param name='allowScriptAccess' value='sameDomain' />";
      html += "	<param name='allowFullScreen' value='false' />";
      html += "	<param name='movie' value='" + contentSrc + "' />";
      html += "	<param name='quality' value='high' />";
      html += "	<param name='wmode' value='transparent' />";
      html += "	<embed src='" + contentSrc + "' quality='high' ";
      html += "	   width='100%' height='100%' name='" + divId + "_content' allowScriptAccess='sameDomain' ";
      html += "	   allowFullScreen='false' type='application/x-shockwave-flash' ";
      html += "	   pluginspage='http://www.macromedia.com/go/getflashplayer' wmode='transparent'/>";
  	   html += "</object>";
   }
   div.setAttribute("sysContentType", contentType);
   div.setAttribute("sysContentSource", contentSrc);
   div.innerHTML = html;
   
   resizeBg(divId);
}

var LASTSELECTED_SITE = null;

function showAddress(site, selectSite)
{
   var contacts = loadContacts();
   if ( contacts )
   {
      var divAddress = document.getElementById("address_panel");
      divAddress.innerHTML = contacts[site].address;
      switchStatus(true);
      
      if ( selectSite == true ) selectAddress(site);
   }
}

function showSelectedAddress()
{
   if ( LASTSELECTED_SITE != null )
   {
      var contacts = loadContacts();
      if ( contacts )
      {
         var divAddress = document.getElementById("address_panel");
         divAddress.innerHTML = contacts[LASTSELECTED_SITE].address;
      }
   }
   
}

function selectAddress(site)
{
   LASTSELECTED_SITE = site;
   //plus deworkspace visible setLinkSelected("workplace", "workplace_" + site, "workplace_selected"); // lien sélectionné      
   // désélecte les menus
   unselectActiveLink("menu", "grey");
}

function selectMenu(menu)
{
   setLinkSelected("menu", "link_" + menu, "menu_selected", "grey"); // lien sélectionné      
}

function switchStatus(showTip)
{
   var divMessage = document.getElementById("status_message");
   var divLinks = document.getElementById("status_links");
   if ( showTip==true )
   {
	   sysShowElement(divMessage, 'block');
	   sysHideElement(divLinks );
   }
   else
   {
	   sysHideElement(divMessage);
	   sysShowElement(divLinks, 'block');
   }
}

function switchLogoRollover(visible)
{
   var rollover_logo = document.getElementById("img_rollover_logo");
   if ( visible== true )
   {
      sysShowElement(rollover_logo, 'block');
   }
   else
   {
      sysHideElement(rollover_logo);
   }
   switchPresentation(visible);
}

// Présentation
function switchPresentation(visible)
{
   //alert("switchPresentation " + visible);
   var abouts = loadAbout();
   if ( abouts )
   {
      var div = document.getElementById("about_panel_text");
      //div.innerHTML = abouts[getCurLang()].text; ==> provoque clignotement
      var panel = document.getElementById("about_panel");
      if ( visible==true)
         sysShowElement(panel , 'block');
      else
  	      sysHideElement(panel);
  	}
}


function blendBackground(bg_div_fade_id, bg_div_id, newContentSource, millisec) 
{
    var speed = Math.round(millisec / 100);
    var timer = 0;
    
    //set the current content as background
    var div = document.getElementById(bg_div_id);
    var oldContentType = div.getAttribute("sysContentType");
    var oldContentSource = div.getAttribute("sysContentSource");
    setBackgroundContent(bg_div_fade_id, oldContentType , oldContentSource);
    
    
    //make new image transparent
    var newContentType = "image";
    if ( newContentSource.toLowerCase().indexOf(".swf")>-1 )
    {
        newContentType = "swf";
    }
    setBackgroundContent(bg_div_id, newContentType , newContentSource);
    sysChangeOpacity(0, bg_div_id);

    //fade in image
   for(i = 0; i <= 100; i++) 
   {
      setTimeout("sysChangeOpacity(" + i + ",'" + bg_div_id + "')",(timer * speed));
      timer++;
   }
   startLoading(BLEND_DURATION);
} 

function switchBackground(imgSource)
{
	blendBackground("bg_div_fade", "bg_div", "images/bg/" + imgSource, BLEND_DURATION);
}

function switchWorkItem(itemSource)
{
	blendBackground("bg_div_fade", "bg_div", itemSource, BLEND_DURATION);
}

function switchBackground(imgSource)
{
	blendBackground("bg_div_fade", "bg_div", "images/bg/" + imgSource, BLEND_DURATION);
}

function switchWorkItem(itemSource)
{
	blendBackground("bg_div_fade", "bg_div", itemSource, BLEND_DURATION);
}

function hideOtherPanels(panelToShow, noHideHome)
{
   if ( panelToShow != "home_panel" && noHideHome!=true)
   {
      sysHideElement(document.getElementById("home_panel"));
      blinkStop();
   }
      
   if ( panelToShow != "team_panel" )
      sysHideElement(document.getElementById("team_panel"));
      
   if ( panelToShow != "blog_panel" )
      sysHideElement(document.getElementById("blog_panel"));      
   
   if ( panelToShow != "friends_panel" )
      sysHideElement(document.getElementById("friends_panel"));

   if ( panelToShow != "home_video" )
   {
      //sysHideElement(document.getElementById("home_video"));
      homevideoStop();
   }

   if ( panelToShow != null )
      sysShowElement(document.getElementById(panelToShow));
   
}

function displayHome()
{
   switchBackground("01.png");
   setViewModeNormal();
   
   hideOtherPanels("home_panel");
   blinkRestart();
}

function displayNews(newsIndex)
{
   loadNews();
   var news = NEWS[newsIndex];
   if ( news )
   {
       loadWorkBooks();
       var workRank = getWorkRank(news.book, news.work);
       if ( workRank > - 1)
       {
         showWorksMenu(news.book);
         showWork(news.book, workRank);
       }
       else
       {
       alert("invalid news : " + news.book + " - " + news.work);
       }
   }
   else
   {
      alert("no news !");
   }
}

var LAST_RANDOM_BG = 0;
function getRandomBackground()
{
   // 1 à 5
   var n = 0;
   do
   {
      n = Math.round(Math.random() * 5) +1 ;
      if ( n > 5 ) n = 5;
   }
   while ( n == LAST_RANDOM_BG);
   LAST_RANDOM_BG = n;
   return "0" + n + ".png";

}

function displayTeam()
{
   switchBackground(getRandomBackground());
   setViewModeNormal();
   selectMenu("us");
   
   hideOtherPanels("team_panel");
}

function displayBlog()
{
   switchBackground(getRandomBackground());
   setViewModeNormal();
   selectMenu("blog");
   
   hideOtherPanels("blog_panel");

}

function displayFriends()
{
   switchBackground(getRandomBackground());
   setViewModeNormal();
   selectMenu("friends");
   

   hideOtherPanels("friends_panel");
}

var LAST_SELECTED_LINKS = new Array(); //hash (linkGroupName, anchorObject)
function setLinkSelected(linkGroupName, linkId, selectedClassName, notselectedClassName)
{
   var anchorObject = document.getElementById(linkId);
   sysSetStyleClass(anchorObject, selectedClassName);
   
   var prevLink = LAST_SELECTED_LINKS[linkGroupName];
   if ( prevLink && prevLink!=anchorObject )
   {
      if ( notselectedClassName == null ) notselectedClassName = "";
      sysSetStyleClass(prevLink, notselectedClassName);
   }
   LAST_SELECTED_LINKS[linkGroupName] = anchorObject;
}

function unselectActiveLink(linkGroupName, notselectedClassName)
{
   var prevLink = LAST_SELECTED_LINKS[linkGroupName];
   if ( prevLink )
   {
      if ( notselectedClassName == null ) notselectedClassName = "";
      sysSetStyleClass(prevLink, notselectedClassName);
   }
   LAST_SELECTED_LINKS[linkGroupName] = null;
}

function showWorksMenu(bookName, noShowFirstWork)
{
   loadWorkBooks();
   var book = WORKBOOKS[bookName];
   if ( book == null )
   {
      alert("Pas de book configuré pour " + bookName + " encore !");
      return;
   }
   var html = "";
   if ( book )
   {
      var works = book.works;
      for (var i=0; i<works.length; i++ )
      {
         var w = works[i];
         var work_link_id = "worklink_" + i;
         html += "<a id='" + work_link_id + "' href=\"javascript:showWork('" + bookName + "','" + i + "')\">" + w.label + "</a><br/>";
      }
   }
   var div = document.getElementById("work_panel");
   div.innerHTML = html;
   
   CUR_BOOK = book; // pour autoriser le défilement
   sysVertScroll('work_panel', 'top', 1, true);//remet au début de la liste
   sysStopScroll();
   
   sysShowElement(document.getElementById("work_menu_bg"));
   
   var noHideHome = noShowFirstWork;
   setViewModeWork(noHideHome);
   
   if ( noShowFirstWork != true )
   {
      showWork(bookName,0);// montre le premier
   }
}

function setViewModeWork(noHideHome)
{
   hideOtherPanels("work_outter_container",noHideHome);
   sysShowElement(document.getElementById("work_outter_container_top"));
}

function setViewModeNormal()
{
   VIEW_MODE = ViewMode.normal;
   
   // 2008-08-29 Les travaux sont toujours visibles
   //sysHideElement(document.getElementById("work_menu_bg"));
   //sysHideElement(document.getElementById("work_outter_container"));
   sysHideElement(document.getElementById("work_item_nav_panel"));
   
   restoreOpacity("left_panel");
   /*
   restoreOpacity("work_outter_container");
   restoreOpacity("work_item_nav_panel");   
   */
}

function getWorkRank(bookName, workName)
{
   var book = WORKBOOKS[bookName];
   if ( book )
   {
      for (var i=0; i<book.works.length; i++)
      {
         var work = book.works[i];
         if ( work.name == workName )
            return i;
      }
   }
   return -1;
}

function showWork(bookName, workRank)
{
   CUR_BOOK = WORKBOOKS[bookName];
   CUR_WORK = CUR_BOOK.works[workRank];
   CUR_WORK_ITEM = 0;
   
   hideOtherPanels("work_outter_container");   
   
   Preloader.images =[];
   for (var i=0; i<CUR_WORK.items.length; i++)
   {
      if ( CUR_WORK.items[i].name.toLowerCase().indexOf(".swf") == -1 )
      {
         Preloader.add("images/" + CUR_BOOK.name + "/" + CUR_WORK.name + "/" + CUR_WORK.items[i].name);
      }
   }
   if ( Preloader.images.length > 0 ) // si au moins une image
   {
      Preloader.onFinish(preloaderFinish);
      Preloader.load();
   }
   else
   {
      showCurrentWorkItem();
   }
   setLinkSelected("workmenu", "worklink_" + workRank, "work_selected"); // lien sélectionné
}

function preloaderFinish()
{
   //alert("preloaderFinish");
   showCurrentWorkItem();
}

function showCurrentWorkItem()
{

   var itemSrc = "images/" + CUR_BOOK.name + "/" + CUR_WORK.name + "/" + CUR_WORK.items[CUR_WORK_ITEM].name;
   
   switchWorkItem(itemSrc);
   
   // comment
   updateCurrentWorkItemComment();
   
   sysShowElement(document.getElementById("work_item_nav_panel")); // affiche navigation item
   
   VIEW_MODE = ViewMode.workitem;
}

function updateCurrentWorkItemComment()
{
   var div = document.getElementById("work_comment");
   if ( sysIsVisible(div) && CUR_WORK!=null )
   {
      div.innerHTML = CUR_WORK.items[CUR_WORK_ITEM].comments[getCurLang()];
      var color = CUR_WORK.items[CUR_WORK_ITEM].commentColor;
      if ( color==null || color=="" ) color = "#000000";
      div.style.color = color;
   }
}

function getWorkMenuCount()
{
   if ( CUR_BOOK != null )
   {
      return CUR_BOOK.works.length;
   }
   return 0;
}

function showNextWorkItem()
{
   CUR_WORK_ITEM ++;
   if ( CUR_WORK_ITEM >= CUR_WORK.items.length )
      CUR_WORK_ITEM = 0;
   showCurrentWorkItem();
}
function showPrevWorkItem()
{
   CUR_WORK_ITEM --;
   if ( CUR_WORK_ITEM < 0 )
      CUR_WORK_ITEM = CUR_WORK.items.length-1;
   showCurrentWorkItem();

}

// Rend la div transparente
function makeTransparent(divId)
{
   sysChangeOpacity(0, divId);
}

function makeFuzzy(divId)
{
   sysChangeOpacity(30, divId);
}

function makeSemiTransparent(divId)
{
   sysChangeOpacity(93, divId);
}

function restoreOpacity(divId)
{
   sysChangeOpacity(100, divId);
}

function onPanelOver(divId)
{
   if ( VIEW_MODE == ViewMode.workitem)
      makeFuzzy(divId);
   //restoreOpacity(divId);
}
function onPanelOut(divId)
{
   if ( VIEW_MODE == ViewMode.workitem)
      makeTransparent(divId);
   else
      restoreOpacity(divId);
}


function loadContacts()
{
   if ( CONTACTS != null ) return CONTACTS; // already done
   
   var xmldoc = XMLUtil_LoadXML("data/contacts.xml", "UTF-8");
   if ( xmldoc )
   {
      var elems = xmldoc.getElementsByTagName("contact");
      if ( elems )
      {
         CONTACTS = new Array();
         for (var i=0; i<elems.length; i++)
         {
            var elem = elems[i];
            var name = elem.getAttribute("name");
            var address = XMLUtil_getElementContent(elem);
            var contact = new Contact(name, address);
            CONTACTS [name] = contact ;
         }
      }
      return CONTACTS;
   }
   else
   {
      alert("loadContacts() xml doc load failed");
      return null;
   }
}
function loadAbout()
{
   if ( ABOUTS != null ) return ABOUTS ; // already done
   
   //alert("loadAbout");
   var xmldoc = XMLUtil_LoadXML("data/about.xml", "UTF-8");
   if ( xmldoc )
   {
      var elems = xmldoc.getElementsByTagName("about");
      if ( elems )
      {
         ABOUTS = new Array();
         for (var i=0; i<elems.length; i++)
         {
            var elem = elems[i];
            var lang = elem.getAttribute("lang");
            var text = XMLUtil_getElementContent(elem);
            var about = new About(lang, text);
            ABOUTS[lang] = about ;
         }
      }
      return ABOUTS;
   }
   else
   {
      alert("loadAbout() xml doc load failed");
      return null;
   }
}
function loadBios()
{
   if ( BIOS != null ) return BIOS ; // already done
   
   var xmldoc = XMLUtil_LoadXML("data/bios.xml", "UTF-8");
   if ( xmldoc )
   {
      var elems = xmldoc.getElementsByTagName("bio");
      if ( elems )
      {
         BIOS = new Array();
         for (var i=0; i<elems.length; i++)
         {
            var elem = elems[i];
            var name = elem.getAttribute("name");
            var label = elem.getAttribute("label");
            var mail = elem.getAttribute("mail");
            var cv = elem.getAttribute("cv");
            var bio = new Bio(name, label, mail, cv);
            var contents = elem.getElementsByTagName("content");
            if ( contents )
            {
               for (var j=0; j<contents.length; j++)
               {
                  var content = contents[j];
                  var lang = content.getAttribute("lang");
                  var text = XMLUtil_getElementContent(content);
                  bio.addText(lang, text);
               }
            }
            BIOS[name] = bio ;
         }
      }
      return BIOS;
   }
   else
   {
      alert("loadBios() xml doc load failed");
      return null;
   }
}

function loadFriends()
{
   if ( FRIENDS.length > 0 ) return FRIENDS; // already done
   FRIENDS = loadLinks("data/friends.xml");
   return FRIENDS;
}
function loadWebsites()
{
   if ( WEBSITES.length > 0 ) return WEBSITES; // already done
   WEBSITES = loadLinks("data/websites.xml");
   return WEBSITES;
}
function loadStagiaires()
{
   if ( STAGIAIRES.length > 0 ) return STAGIAIRES; // already done
   STAGIAIRES = loadLinks("data/stagiaires.xml");
   return STAGIAIRES;
}

function loadLinks(path)
{
   var xmldoc = XMLUtil_LoadXML(path, "UTF-8");
   var ret = new Array();
   if ( xmldoc )
   {
      var elems = xmldoc.getElementsByTagName("link");
      if ( elems )
      {
         for (var i=0; i<elems.length; i++)
         {
            var elem = elems[i];
            var name = elem.getAttribute("name");
            var href = elem.getAttribute("href");
            ret[i] = new Link(name, href) ;
         }
      }
      return ret;
   }
   else
   {
      alert("load " + path + " failed");
      return null;
   }
}

function loadNews()
{
   if ( NEWS.length > 0 ) return NEWS; // already done
   var xmldoc = XMLUtil_LoadXML("data/news.xml", "UTF-8");
   if ( xmldoc )
   {
      var elems = xmldoc.getElementsByTagName("new");
      if ( elems )
      {
         for (var i=0; i<elems.length; i++)
         {
            var elem = elems[i];
            var book = elem.getAttribute("book");
            var work = elem.getAttribute("work");
            NEWS[i] = new News(book, work) ;
         }
      }
      return NEWS;
   }
   else
   {
      alert("loadNews() xml doc load failed");
      return null;
   }
}
function loadBlog()
{
   if ( BLOG.presentation.length > 0 ) return BLOG; // already done
   var xmldoc = XMLUtil_LoadXML("data/blog.xml", "UTF-8");
   if ( xmldoc )
   {
      var elems = xmldoc.getElementsByTagName("presentation");
      if ( elems )
      {
         for (var i=0; i<elems.length; i++)
         {
            BLOG.presentation[elems[i].getAttribute("lang")] = 
               XMLUtil_getElementContent(elems[i]);
         }
      }
      return BLOG;
   }
   else
   {
      alert("loadBlog() xml doc load failed");
      return null;
   }
}

function openBlog()
{
   window.open("http://jarajaja.blogspot.com", "blog_win");
}


function startLoading(duration)
{
   var maxWidth = 200;
   var speed = Math.round(duration / 100);
   var timer = 0;
   var randomDelay = Math.round(Math.random()*15+15);
   for(i = 0; i <= 100; i++) 
   {
      setTimeout("refreshLoading('" + "loading_top" + "'," + maxWidth + "," 
           + i+")", (timer * speed));
      setTimeout("refreshLoading('" + "loading_bottom" + "'," + maxWidth + "," 
           + (i-randomDelay)+")", (timer * speed));
      timer++;
   }
   for(i=100-randomDelay; i <=100; i++) 
   {
      setTimeout("refreshLoading('" + "loading_bottom" + "'," + maxWidth + "," 
           + i+")", (timer * speed));
      timer++;
   }   
}

function refreshLoading(lineId, maxWidth, percent)
{
   if (percent > 100 ) percent = 100;
   var textOffset = 22
   var line = document.getElementById(lineId);
   var text = document.getElementById(lineId+"_text");   
   var w = (percent * maxWidth) / 100;
   if ( w < 0 ) w = 0;   
   var textLeft = w+textOffset;
   var textLabel = "" + percent;
   if ( percent < 0 ) textLabel = "0";
   text.innerHTML = textLabel + "%";
   
   text.style.left = textLeft + "px";
   line.style.width = w + "px";
   if (percent <= 0 )
   {
      //sysShowElement(text);
      line.style.backgroundColor = "red";
   }
   if ( percent >= 100 )
   {
      //alert("finish");
      line.style.backgroundColor = "black";
      sysHideElement(text);
   }

}



var VIDEO_ROWS = 4;
var VIDEO_COLS = 6;
var VIDEO_INIT = false;
function homevideoRun()
{
   homevideoInit();
   var frame = 0;
   var delay = 500; //ms
   
   var div= document.getElementById("home_video");
   sysShowElement(div);
   
   for (var i=1; i<=VIDEO_ROWS; i++)
   {
      for (var j=1; j<=VIDEO_COLS; j++)
      {
         var vname = "window.document.home_video"+i+""+j;
         eval(vname+".style.visibility='hidden'");
      }
   }
   
   for (var i=1; i<=VIDEO_ROWS; i++)
   {
      for (var j=1; j<=VIDEO_COLS; j++)
      {
         var vname = "window.document.home_video"+i+""+j;
         setTimeout(vname+".style.visibility='visible';"+vname+".Play()", delay);
         //setTimeout(vname+".GotoFrame("+frame+");"+vname+".Play()", 1000);
         //setTimeout(vname+".GotoFrame("+frame+");", 500);
         //frame+=2;
         delay+=500;
      }
   }
}

function homevideoStop()
{
   if (!VIDEO_INIT) return;
   var div = document.getElementById("home_video");
   if ( ! sysIsVisible(div) ) return;
   
   sysHideElement(div);
   
   for (var i=1; i<=VIDEO_ROWS; i++)
   {
      for (var j=1; j<=VIDEO_COLS; j++)
      {
         var vname = "window.document.home_video"+i+""+j;
         eval(vname+".style.visibility='hidden';"+vname+".StopPlay()");
      }
   }
}

// appelé une fois
function homevideoInit()
{
   //var html = "<table style='border-collapse:collapse;border-spacing: 1px;'>";
   var tablew = VIDEO_COLS * 240;
   var html = "<table width='" + tablew + "px' style='border-collapse:collapse;border-spacing: 1px;'>";
   for (var i=1; i<=VIDEO_ROWS; i++)
   {
      html +="<tr";
      for (var j=1; j<=VIDEO_COLS; j++)
      {
         var rank = i + "" + j;
         html+="<td style='width:237px;height:179px;>";
         html+="<object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' ";
         html+="      codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0' ";
         html+="      width='100%' height='100%' id='home_video" + rank + "' >";
         html+="      <param name='allowScriptAccess' value='sameDomain' />";
         html+="      <param name='allowFullScreen' value='false' />";
         html+="      <param name='movie' value='movies/homevideo.swf' />";
         html+="      <param name='quality' value='high' />";
         html+="      <param name='wmode' value='transparent' />";
         html+="      <param name='play' value='false' />";
         html+="      <embed src='movies/homevideo.swf' quality='high' ";
         html+="         width='100%' height='100%' name='home_video" + rank + "' allowScriptAccess='sameDomain' ";
         html+="         allowFullScreen='false' type='application/x-shockwave-flash' ";
         html+="         pluginspage='http://www.macromedia.com/go/getflashplayer' wmode='transparent' play='false'/>";
         html+="   </object>";
         html+="</td>";
      }
      html +="</tr>";
   }
   html+="</table>";
   var div= document.getElementById("home_video");
   div.innerHTML = html;
   VIDEO_INIT = true;
}

var BLINK_SRC1 = ROOTURL+"images/puces/video1.png";
var BLINK_SRC2 = ROOTURL+"images/puces/video2.png";
var BLINK_PAUSE = true;
var BLINK_IMG1 = null;
var BLINK_IMG2 = null;

var NO_BLINK =true;

function blinkPreload()
{
   Preloader.add(BLINK_SRC1);
   Preloader.add(BLINK_SRC2);
   Preloader.onFinish(blinkCache);
   Preloader.load();
}
function blinkCache()
{
   BLINK_IMG1 = Preloader.loadedImages[0];
   BLINK_IMG2 = Preloader.loadedImages[1];
   blinkRestart(0);
}


function blinkStart(count)
{
   if ( NO_BLINK ) return;

   var img = document.getElementById("img_blink");
   sysShowElement(img);

   var src = img.src;
   var img_cache = null;
   if ( src.indexOf(BLINK_SRC1) != -1 )
      img_cache = BLINK_IMG2;
   else
      img_cache = BLINK_IMG1;
   if ( BLINK_PAUSE == true ) return;
   img.src = img_cache.src;
   count ++;
   if ( count < 12 )
   {
      if ( BLINK_PAUSE == true ) return;
      setTimeout("blinkDelay()", 25);// masque
      setTimeout("blinkStart(" + count +")", 50);
   }
   else
   {
      if ( BLINK_PAUSE == true ) return;
      blinkWait()
   }
}
function blinkDelay()
{
   if ( NO_BLINK ) return;
   var img = document.getElementById("img_blink");
   sysHideElement(img);
}

function blinkWait()
{
   if ( NO_BLINK ) return;
   if ( BLINK_PAUSE == true ) return;
   sysHideElement(document.getElementById("img_blink"));
   if ( BLINK_PAUSE == true ) return;
   setTimeout("blinkStart(0)", Math.random()*250+250);
}
function blinkPause()
{
   BLINK_PAUSE = true;
   var img = document.getElementById("img_blink");
   img.src = BLINK_SRC1;
   sysShowElement(img);
   sysShowElement(document.getElementById("home_video_circle"));
}
function blinkRestart()
{
   sysHideElement(document.getElementById("home_video_circle"));
   BLINK_PAUSE = false;
   if ( NO_BLINK ) return;
   blinkStart(0);
}
function blinkStop()
{
   BLINK_PAUSE = true;
}