// vim: set filetype=javascript function getPosition(e) { var left = 0; var top = 0; while (e.offsetParent){ left += e.offsetLeft; top += e.offsetTop; e = e.offsetParent; } left += e.offsetLeft; top += e.offsetTop; return {x:left, y:top}; } function link(id, url) { var xmlHttpReq = false; var self = this; if (window.XMLHttpRequest) { // Mozilla/Safari self.xmlHttpReq = new XMLHttpRequest(); } else if (window.ActiveXObject) { // IE self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); } else { return true; } var throbber = document.getElementById('throbber'); if (throbber) { throbber.style.display = 'inline'; } var to_blur = document.getElementById('to_blur'); var class_to_blur; if (to_blur) { class_to_blur = to_blur.className; to_blur.className = class_to_blur+' blured'; } self.xmlHttpReq.open('POST', url, true); self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); self.xmlHttpReq.onreadystatechange = function() { if (self.xmlHttpReq.readyState == 4) { document.getElementById(id).innerHTML = self.xmlHttpReq.responseText; if (throbber) { throbber.style.display = 'none'; } if (to_blur) { to_blur.className = class_to_blur; } } } self.xmlHttpReq.send(''); return false; } function request () { var req; if (window.XMLHttpRequest) { try { req = new XMLHttpRequest(); } catch(e) { req = null; } } else if(window.ActiveXObject) { try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { req = null; } } } return req; } function AjaxRequest() { var req = request(); this.loadXMLDoc = function(id, url, throbber_id, visibility, focus) { var throbber = document.getElementById(throbber_id); if (throbber) { if (visibility == 'visibility') { throbber.style.visibility = 'visible'; } else { throbber.style.display = 'inline'; } } req.open('POST', url, true); req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); req.onreadystatechange = function() { if (req.readyState == 4) { if (id) { document.getElementById(id).innerHTML = req.responseText; } if (throbber) { if (visibility == 'visibility') { throbber.style.visibility = 'hidden'; } else { throbber.style.display = 'none'; } } if (focus != '') { var elt = document.getElementById(focus); if (elt) elt.focus(); } } } req.send(''); return false; } } function link2(id, url, throbber_id, focus) { var req = new AjaxRequest(); req.loadXMLDoc(id, url, throbber_id, '', focus); return true; } function create_fader () { var fade = document.createElement('div'); fade.className = 'fade'; return fade; } function create_throbber() { var div = document.createElement('div'); var head = document.createElement('h1'); var img; img = document.createElement('img'); img.className = 'throbber'; img.src = '/FFE/img/throbber.gif'; head.appendChild(img); img = document.createElement('img'); img.className = 'close'; img.src = '/FFE/img/button-close.png'; head.appendChild(img); div.appendChild(head); div.appendChild(document.createTextNode('Veuillez patienter...')); div.style.opacity = 0.7; return div; } function find_fader (e) { var f = e.previousSibling; while (f) { if (f.tagName && f.tagName == 'DIV' && f.className == 'fade') { return f; } f = f.previousSibling; } return f; } function AjaxRequestPopup() { var req = request(); if (!req) return false; this.loadXMLDoc = function(id, url, pos_id) { var e = document.getElementById(id); var f = find_fader(e); if (f) { f.style.visibility = 'visible'; } e.innerHTML = null; var pos = getPosition(document.getElementById(pos_id)); e.style.left = pos.x + 'px'; e.style.top = pos.y + 'px'; e.appendChild(create_throbber()); e.style.visibility = 'visible'; req.open('POST', url, true); req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); req.onreadystatechange = function() { if (req.readyState == 4) { e.innerHTML = req.responseText; } } req.send(''); return false; } } function popup(id, url, pos_id) { var req = new AjaxRequestPopup(); req.loadXMLDoc(id, url, pos_id); return false; } function popup_close(id) { var e = document.getElementById(id); if (e) { var f = find_fader(e); e.style.visibility = 'hidden'; if (f) { f.style.visibility = 'hidden'; } } return false; } function no_enter(ev) { if (!ev) ev=window.event; if (ev.keyCode==13) { return false; } return true; } function next_elt(id, ev, idnext) { if (!ev) ev=window.event; if (ev.keyCode==13) { nextInput = document.getElementById(idnext); if (nextInput) { id.blur(); nextInput.focus(); } else { id.blur(); } return false; } return true; } function next_or_popup(id, ev, idnext, idtarget, url, idpos) { if (!ev) ev=window.event; if (ev.keyCode==13) { if (url) { popup(idtarget, url, idpos); } else { nextInput = document.getElementById(idnext); if (nextInput) { id.blur(); nextInput.focus(); } else { id.blur(); } } return false; } else { return true; } }