//10 septembre 2005
//http://www.i-gaia.com

function Heure() {
}

Heure.is_ie = ( /msie/i.test(navigator.userAgent) &&
		   !/opera/i.test(navigator.userAgent) );

Heure._H = null;
Heure.chp = null;

Heure.defautTxt = "Sélectionner une heure";

Heure.prototype.afficher = function() {

    var parent = document.getElementsByTagName("body")[0];
	
	var table = Heure.createElement("table");
    this.table = table;
	table.cellSpacing = 0;
	table.cellPadding = 0;
	table.border = 0;
	table.className = "tabheure",
	
	table.heure = this;
    
	var div = Heure.createElement("div");
	this.element = div;
	div.className = "listeheure";
	div.style.position = "absolute";
	div.style.display = "none";

	div.appendChild(table);
	
	Heure._H = div;
	
	Heure.autreEve(div);
	
    var thead = Heure.createElement("thead", table);
	
	var table2 = Heure.createElement("table", table);
	
	var row = null;
	var cell = null;
	var minute = null;
	var h = null;
	
	var colone = 24;
	
	row = Heure.createElement("tr", thead);
	for (j=0; j<colone; j++) {
	  
	  cell = Heure.createElement("td", row);
	  cell.className = "hcelh";
	  
	  div2 = Heure.createElement("div", cell);
	  div2.innerHTML = j+"h";
	  div2.className = "hcelhh";
	  div2.id = "h"+j;
	  
	  Heure.autreEve(cell);
	  
	  cell.setAttribute("unselectable", true);
	}  
	  
	for (i=0; i<6; i++) {
	  row = Heure.createElement("tr", thead);
		
	  for (j=0; j<colone; j++) { 
	    cell = Heure.createElement("td", row);
		
		h = j;
	    h = h<10 ? "0"+String(h) : h;
		
	    minute = i*10;
	    minute = minute<10 ? "0"+String(minute) : minute;
		
	    cell.className = "hcel";
	    cell.innerHTML = minute ;
		Heure._add_evs(cell);
		cell.setAttribute("unselectable", true);
	    cell.setAttribute("val", h+":"+minute);
		cell.setAttribute("h", "h"+j);
	  }
	}
    
	row = Heure.createElement("tr", thead);
	cell = Heure.createElement("td", row);
	cell.colSpan = colone;

	cell.setAttribute("unselectable", true);
	cell.setAttribute("id", "hbas");
	
	cell.className = "hbas";
	cell.innerHTML = Heure.defautTxt;

	parent.appendChild(div);
}
 
 
Heure.createElement = function(type, parent) {
	var el = null;
	if (document.createElementNS) {
		// use the XHTML namespace; IE won't normally get here unless
		// _they_ "fix" the DOM2 implementation.
		el = document.createElementNS("http://www.w3.org/1999/xhtml", type);
	} else {
		el = document.createElement(type);
	}
	if (typeof parent != "undefined") {
		parent.appendChild(el);
	}
	return el;
}; 
 


Heure.addEvent = function(el, evname, func) {
	if (el.attachEvent) { // IE
		el.attachEvent("on" + evname, func);
	} else if (el.addEventListener) { // Gecko / W3C
		el.addEventListener(evname, func, false);
	} else {
		el["on" + evname] = func;
	}
};

Heure.removeEvent = function(el, evname, func) {
	if (el.detachEvent) { // IE
		el.detachEvent("on" + evname, func);
	} else if (el.removeEventListener) { // Gecko / W3C
		el.removeEventListener(evname, func, false);
	} else {
		el["on" + evname] = null;
	}
};


Heure.stopEvent = function(ev) {
    
	ev || (ev = window.event);
	if (Heure.is_ie) {
		ev.cancelBubble = true;
		ev.returnValue = false;
	} else {
		ev.preventDefault();
		ev.stopPropagation();
	}
	return false;
};


Heure._add_evs = function(el) {
	with (Heure) {
		addEvent(el, "mouseover", mouseOver);
		addEvent(el, "mousedown", mouseDown);
		addEvent(el, "mouseout", mouseOut);
	}
};

Heure.mouseOver = function(ev) {
  var el = Heure.getElement(ev);
  el.className = "hcel-over";
  
  document.getElementById("hbas").innerHTML = el.getAttribute("val");
  document.getElementById(el.getAttribute("h")).className = "hcelhh-over";
}

Heure.mouseOut = function(ev) {
  var el = Heure.getElement(ev);
  el.className = "hcel";
  document.getElementById("hbas").innerHTML = Heure.defautTxt;
  document.getElementById(el.getAttribute("h")).className = "hcelhh";
}

Heure.mouseDown = function(ev) {
  var el = Heure.getElement(ev);
  document.getElementById("hbas").innerHTML = Heure.defautTxt;
  
  if (Heure.chp != null) {
	Heure.chp.value = el.getAttribute("val")
  }
  el.className = "hcel";
  
  Heure.fin();
  return Heure.stopEvent(ev);
}


Heure.autreEve = function(el) {
  with (Heure) {
    addEvent(el, "mousedown", autre);
  }
}

Heure.autre = function(ev) {
    return Heure.stopEvent(ev);
}



Heure.getElement = function(ev) {
	var f = Heure.is_ie ? window.event.srcElement : ev.currentTarget;
	while (f.nodeType != 1 || /^div$/i.test(f.tagName))
		f = f.parentNode;
	return f;
};


Heure.getTargetElement = function(ev) {
	var f = Heure.is_ie ? window.event.srcElement : ev.target;
	while (f.nodeType != 1)
		f = f.parentNode;
	return f;
};


Heure.fin = function(ev) {

  Heure._H.style.display = "none";
  with (Heure) {
	removeEvent(document, "mousedown", fin);
  }
}

Heure.prototype.hide = function () {
	Heure.fin();
};

Heure.prototype.show = function (obj) {
    
	//attention ne pas oublier d'intgrer les fonctions : cmGetX, cmGetY, cmGetHeight
	
	Heure.chp = obj;
	var posx = cmGetX (obj);
    var posy = cmGetY (obj) + cmGetHeight (obj);
	
	this.element.style.display = "block";
	this.element.style.left = posx+"px";
	this.element.style.top = posy+"px";
	
	with (Heure) {
	  addEvent(document, "mousedown", fin);
	}
};

/*-------------------------------------------------------------------------------*/

function cmGetX (obj) {
  var x = 0;
  
  if (obj.firstChild) {
    obj = obj.firstChild;
  }

  do {
  x += obj.offsetLeft;
    obj = obj.offsetParent;
  }
  while (obj);
  return x;
}


function cmGetY (obj) {
  var y = 0;
  do {
    y += obj.offsetTop;
    obj = obj.offsetParent;
  }
  while (obj);
  return y;
}

function cmGetWidth (obj) {
  var width = obj.offsetWidth;
  if (width > 0) {
	return width;
  }
  
  if (!obj.firstChild) {
    return 0;
  }
  
  return obj.lastChild.offsetLeft - obj.firstChild.offsetLeft + cmGetWidth (obj.lastChild);
}

function cmGetHeight (obj) {
  var height = obj.offsetHeight;
  if (height > 0) {
		return height;
  }

  return obj.firstChild.offsetHeight;
}

function liste1(obj) {
  element = "cal2";
  var px = cmGetX(obj);
  var py = cmGetY(obj)+cmGetHeight(obj);
  if (objpage = document.getElementById(element)) {
	    objpage.style.top = py+"px";
		objpage.style.left = px+"px";
        objpage.style.display = "block";
  }
}


