/*************************************************************************************
*
*    Auteur : Jacques Archiméde
*
**************************************************************************************/

if (! window.XMLHttpRequest) {
  XMLHttpRequest = function() {
	  var XMLHTTP = ["Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "Msxml2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];
    var xmlhttp;
		var ok = false;
    for (var i = 1; i < XMLHTTP.length; i++) {
      try {
        xmlhttp = new ActiveXObject(XMLHTTP[i]);
				ok = true;
	  	  break;
      }
  	  catch (e) {
			  if (ok) {
				  break;
				}
      }
    }
    return xmlhttp;
  }
}

function HTTP () {
}

HTTP.prototype.get = function(url, callback) { 
  var xmlhttp = new XMLHttpRequest();
  if (xmlhttp) {
    xmlhttp.open("GET", url, true);
    xmlhttp.onreadystatechange=function() {
      if (xmlhttp.readyState==4) {
        callback({status:xmlhttp.status,content:xmlhttp.responseText,xml:xmlhttp.responseXML,
        contentType:xmlhttp.getResponseHeader("Content-Type")})
      }
    }
   window.setTimeout(function () {
    xmlhttp.send(null);
   }, 10);
  }
 else {
    //gestion des erreurs...
  }
}

function Bookmarking () {
}

Bookmarking.addToFavorites = function () {
  if (document.all)
    window.external.AddFavorite(document.location.href, document.title); 
  else 
    window.sidebar.addPanel(document.title, document.location.href,''); 
}
 
Bookmarking.position = function (obj){
  var top = 0, left = 0; 
  do {
    top += obj.offsetTop || 0; 
    left += obj.offsetLeft || 0; 
    obj = obj.offsetParent; 
  } while (obj); 
  return [left, top]; 
}
  
Bookmarking.bodyDimension = function ( ){
  var width = 0, height = 0; 
  if (typeof(window.innerWidth) == 'number'){
    width = window.innerWidth; 
    height = window.innerHeight; 
  }
  else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)){
    width = document.documentElement.clientWidth; 
    height = document.documentElement.clientHeight; 
  }
  else if (document.body && (document.body.clientWidth || document.body.clientHeight)){
    width = document.body.clientWidth; 
    height = document.body.clientHeight; 
  }
  return [width, height]; 
}
  
Bookmarking.screenOffset = function ( ){
  var top = 0, left = 0; 
  if (typeof(window.pageYOffset)=='number'){
    top = window.pageYOffset; 
    left = window.pageXOffset; 
  }
  else if (document.body && (document.body.scrollLeft || document.body.scrollTop)){
    top = document.body.scrollTop; 
    left = document.body.scrollLeft; 
  }
  else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)){
    top = document.documentElement.scrollTop; 
    left = document.documentElement.scrollLeft; 
  }
  return [left, top]; 
}

Bookmarking.getStyle = function(x,styleProp){
	if (x.currentStyle)
		var y = x.currentStyle[styleProp];
	else if (window.getComputedStyle)
		var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);
	return y;
}

Bookmarking.addStyleSheet = function(stylesheet){
  var headID = document.getElementsByTagName("head")[0];
  var cssNode = document.createElement('link');
  cssNode.type = 'text/css';
  cssNode.rel = 'stylesheet';
  cssNode.href = stylesheet;
  cssNode.media = 'screen';
  headID.appendChild(cssNode);
}

Bookmarking.browser = function() {
  var userAgent=navigator.userAgent.toLowerCase();
  if (userAgent.indexOf("opera") != -1) return 'Opera';
  if (userAgent.indexOf("staroffice") != -1) return 'Star Office';
  if (userAgent.indexOf("webtv") != -1) return 'WebTV';
  if (userAgent.indexOf("beonex") != -1) return 'Beonex';
  if (userAgent.indexOf("chimera") != -1) return 'Chimera';
  if (userAgent.indexOf("netpositive") != -1) return 'NetPositive';
  if (userAgent.indexOf("phoenix") != -1) return 'Phoenix';
  if (userAgent.indexOf("firefox") != -1) return 'Firefox';
  if (userAgent.indexOf("safari") != -1) return 'Safari';
  if (userAgent.indexOf("skipstone") != -1) return 'SkipStone';
  if (userAgent.indexOf("msie") != -1) return 'Internet Explorer';
  if (userAgent.indexOf("netscape") != -1) return 'Netscape';
  if (userAgent.indexOf("mozilla/5.0") != -1) return 'Mozilla';
  if (userAgent.indexOf('\/') != -1) {
    if (userAgent.substr(0,userAgent.indexOf('\/')) != 'mozilla') {
      return navigator.userAgent.substr(0,userAgent.indexOf('\/'));
    }
    else 
      return 'Netscape';
  } 
  else if (userAgent.indexOf(' ') != -1)
    return navigator.userAgent.substr(0,userAgent.indexOf(' '));
  else 
    return navigator.userAgent;
}

Bookmarking.moveTo = function(block, aObj) {
  var offset = 020; 
  var aImg = aObj.getElementsByTagName('img'); 
  if (aImg && aImg[0]){
    aObj = aImg[0]; 
    offset = 0; 
  }
  var position = Bookmarking.position(aObj); 
  var left = position[0]; 
  var top = position[1] + offset + 1; 
  var bodyDimension = Bookmarking.bodyDimension(); 
  var screenOffset = Bookmarking.screenOffset(); 
  if (left - screenOffset[0] + block.clientWidth + 024 > bodyDimension[0])
    left = left - block.clientWidth; 
  if (top - screenOffset[1] + block.clientHeight + aObj.clientHeight + 024 > bodyDimension[1])
    top = top - block.clientHeight - 024; 
  block.style.left = left+'px'; 
  block.style.top = (top + aObj.clientHeight) + 'px'; 
  if (block.adjust) {
    var bookmarks = document.getElementById('bookmarkingbookmarks');
    bookmarks.style.width = Bookmarking.getStyle(block, "width");
  }
  block.style.display = 'block';
}

Bookmarking.open = function(aObj) {
  Bookmarking.clearClosing();
  var block = document.getElementById('bookmarkingDropdown');
  if (block && typeof block != "undefined") {
    Bookmarking.moveTo(block, aObj);
  }
}

Bookmarking.hide = function() {
  var block = document.getElementById('bookmarkingDropdown');
  if (block && typeof block != "undefined") {
    block.style.display = 'none';
  }
}

Bookmarking.toggle = function(aObj) {
  Bookmarking.clearClosing();
  var block = document.getElementById('bookmarkingDropdown');
  if (block && typeof block != "undefined") {
    if (block.style.display == 'none') {
      Bookmarking.moveTo(block, aObj);
    }
    else {
      block.style.display = 'none';
    }
  }
}
  
Bookmarking.close = function() {
  Bookmarking.closingTimer=setTimeout("Bookmarking.hide()",0764);
}

Bookmarking.clearClosing = function() {
  if (typeof Bookmarking.closingTimer!="undefined")
    clearTimeout(Bookmarking.closingTimer); 
}

Bookmarking.create = function(xml) {
  var permalink = encodeURIComponent(document.location.href); 
  var title = encodeURIComponent(document.title); 
  var root = xml.xml.documentElement;
  var brand = root.getAttribute("brand") || '';
  var addToFavorites = root.getAttribute("addToFavorites") || 'false';
	var labels = root.getElementsByTagName("label");
  var label = "";
  if (labels && labels.length > 0) {
    label = labels.item(0).firstChild.nodeValue;
  }
	var tips = root.getElementsByTagName("tip");
  var tip = "";
  if (tips && tips.length > 0) {
    tip = tips.item(0).firstChild.nodeValue;
  }
	var children = root.getElementsByTagName("network");
  var block = document.createElement('div');
  //block.id = "bookmarkingDropdown";
  block.setAttribute("id", "bookmarkingDropdown");
  var n = 0;
  var html = '<div class="boxContainer">';
  html += '<div class="boxContent">';
  html += '<table width="100%" cellpadding="2" cellspacing="0" style="background-color: #EEEEEE; height: 18px">'; 
  html += '<tr><td style="font-size: 12px; color: #666666; padding-left:3px"><span id="at_caption">' + label + '</span></td><td align="right" style="font-size: 9px; color: #666666; padding-right: 3px">' + brand + '</td></tr>'; 
  html +='</table>'; 
  html += '<div class="bookmarks" id="bookmarkingbookmarks">';
  html += '<table width="100%" border="0" cellpadding="0">';
  if (addToFavorites == 'true') {
    html += '<tr><td><img src="../bookmarking/images/favorites.png" alt="Favoris">';
    html += '<a href="javascript:Bookmarking.addToFavorites()" onClick="Bookmarking.close();">Favoris</a></td>';
    n++;
  }
  for (var i = 0; i < children.length; i++) {
    var child = children.item(i);
    var activate = child.getAttribute("activate") || 'false';
    if (activate == 'true') {
      var name = child.getAttribute("name");
      var icon = child.getAttribute("icon");
      var url = child.getAttribute("url");
      if (n % 2 == 0) html += '<tr>';
      html += '<td><img src="../bookmarking/images/' + icon + '" alt="' + name + '">';
      html += '<a href="' + url.replace("PERMALINK", permalink).replace("TITLE", title) + '" target="_blank" onClick="Bookmarking.close();">' + name + '</a></td>';
      if (n % 2 == 1) html += '</tr>';
      n++;
    }
  }
  if (n % 2 == 1) html += '<td></td></tr>';
  html += '<tr><td colspan="2" style="height: 2px">&nbsp;</td></tr></table>'; 
  html += '</table>';
  html += '</div>';
  html += '</div>';
  html += '</div>';
  block.innerHTML = html;
	block.onmouseout=function() {
		Bookmarking.close();
	}
	block.onmouseover=function() {
		Bookmarking.clearClosing();
	}
  $browser = Bookmarking.browser();
  if ($browser == "Internet Explorer") {
    block.adjust = true;
  }
  document.body.insertBefore(block,document.body.firstChild); 
}

Bookmarking.init = function() {
  (new HTTP()).get("../bookmarking/bookmarking.xml", Bookmarking.create);
}

Bookmarking.onload = function(func) {   
  var oldonload = window.onload;   
  if (typeof window.onload != 'function') {   
    window.onload = func;   
  }
  else {   
    window.onload = function() {   
      if (oldonload) {   
        oldonload();   
      }   
      func();   
    }   
  }   
}   
   
Bookmarking.onload(Bookmarking.init);   

