function xhr_init () {
	var xhr = null; 
	
	if(window.XMLHttpRequest) {
		xhr = new XMLHttpRequest(); 
	} else if(window.ActiveXObject) {
		try {
			xhr = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			xhr = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}

	return xhr;	
}

// traj : temps de trajet en minutes
// nav  : l'heure de navette sert de référence
function maj_listes(traj, nav) {
    var nav_sel = document.getElementById('reservation_depart_navette');
    var a_h_sel = document.getElementById('reservation_depart_heure');
    var a_m_sel = document.getElementById('reservation_depart_minute');
    var nav_hm = 0;
    var a_h = 0;
    var a_m = 0;
    var tmpDate = new Date();
    if (nav) {
        nav_hm = nav_sel.options[nav_sel.selectedIndex].value;
        var nav_hm_tab = nav_hm.split(':');
        tmpDate.setHours(nav_hm_tab[0], parseInt(nav_hm_tab[1])+parseInt(traj));
        a_h = ''+tmpDate.getHours();
        a_m = ''+tmpDate.getMinutes();
        for (var i=0; i<a_h_sel.length; ++i) {
            if (a_h_sel.options[i].value==a_h) {
                a_h_sel.selectedIndex = i;
                break;
            }
        }        
        for (var i=0; i<a_m_sel.length; ++i) {
            if (a_m_sel.options[i].value>=a_m) {
                a_m_sel.selectedIndex = i;
                break;
            }
        }        
    } else {
        a_h = a_h_sel.options[a_h_sel.selectedIndex].value;
        a_m = a_m_sel.options[a_m_sel.selectedIndex].value;   
        tmpDate.setHours(a_h, a_m-traj);
        var h = tmpDate.getHours(); 
        if (h<10) h='0'+h;
        var m = tmpDate.getMinutes(); 
        if (m<10) m='0'+m;
        nav_hm = h+':'+m+':00';
        for (var i=0; i<nav_sel.length; ++i) {
            if (nav_sel.options[i].value>nav_hm) {
                if (i) {
                    nav_sel.selectedIndex = i-1;
                } else {
                    nav_sel.selectedIndex = nav_sel.length-1;        
                }
                break;
            }
        }
        if (i>=nav_sel.length) {
            nav_sel.selectedIndex = nav_sel.length-1;
        }
    }
}

function getformobjdata (obj) {
    var postdata = "";
    var i;
    
    for (i=0; i<obj.childNodes.length; i++) {
        if (obj.childNodes[i].tagName == "INPUT") {
            if (obj.childNodes[i].type == "text") {
                postdata += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
            }else if (obj.childNodes[i].type == "checkbox") {
                if (obj.childNodes[i].checked) {
                    postdata += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
                } else {
                    postdata += obj.childNodes[i].name + "=&";
                }
            }else if (obj.childNodes[i].type == "radio") {
                if (obj.childNodes[i].checked) {
                    postdata += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
                }
            }
        } else if (obj.childNodes[i].tagName == "SELECT") {
            var sel = obj.childNodes[i];
            postdata += sel.name + "=" + sel.options[sel.selectedIndex].value + "&";
        } else if (obj.childNodes[i].tagName == "TEXTAREA") {
            postdata += obj.childNodes[i].name + '=' + obj.childNodes[i].value + "&";
        } else {
            postdata += getformobjdata (obj.childNodes[i]);
        }    
    }

    return postdata;
}

function getformdata(formid) {
    var obj = document.getElementById(formid);
    return getformobjdata (obj);
}


function aj_post (aj_script, aj_data, aj_res_id, aj_callback, notigoulip) {
	var xhr = xhr_init();
	if (!xhr) {
		alert("Votre navigateur ne supporte pas certaines fonctionnalités nécessaires pour cette application ..."); 
		return false;
	}
	
	if (!notigoulip) {
        document.getElementById(aj_res_id).innerHTML = '<span class="tigoulip"><img src="images/tigoulip.gif" alt="Veuillez patienter ..." /></span>';
    }
	
	xhr.onreadystatechange = function() {
		if (xhr.readyState == 4 && xhr.status == 200) {
			if (aj_res_id) {
				document.getElementById(aj_res_id).innerHTML = xhr.responseText;
			}
			if (aj_callback) {
				eval (aj_callback);
			}
		}
	}

	xhr.open("POST", aj_script, true);
	xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	xhr.send(aj_data);
}

function aj_get (aj_script, aj_res_id, aj_post_script, notigoulip) {
	var xhr = xhr_init();
	if (!xhr) {
		alert("Votre navigateur ne supporte pas certaines fonctionnalités nécessaires pour cette application ..."); 
		return false;
	}

	if (!notigoulip) {
    	document.getElementById(aj_res_id).innerHTML = '<div class="tigoulip"><img src="images/tigoulip.gif" alt="Veuillez patienter ..." /></div>';
    }
    
	xhr.onreadystatechange = function() {
		if (xhr.readyState == 4 && xhr.status == 200) {
			if (aj_res_id) {
				document.getElementById(aj_res_id).innerHTML = xhr.responseText;
			}
			if (aj_post_script) {
				eval(aj_post_script);
			}
		}
	}
	xhr.open("GET", aj_script, true);
	xhr.send(null);
}
