var meetingXH, workshopXH, meetinginlineXH, usersXH, usersgraphXH, nodesXH, servicesXH, newsXH, nagiosSnapshotXH, webserver;
function getNextMeeting(){
        meetingXH=GetXmlHttpObject();
        if (meetingXH==null){
                return;
        }
        var url="/inc/gadgets.php?type=next_meeting";
        meetingXH.onreadystatechange=meetingStateChanged;
        meetingXH.open("GET",url,true);
        meetingXH.send(null);

}
function meetingStateChanged(){
	if(meetingXH.readyState>1 && meetingXH.status==404){
		document.getElementById("next_meeting").innerHTML='<div class="banner">Next Meeting</div><div class="content">Could not retrieve from <a href="/wiki/index.php?title=Meetings">SOWN Wiki</a></div>';
	}
	else if (meetingXH.readyState==4 || meetingXH.readyState=="complete"){
		document.getElementById("next_meeting").innerHTML=meetingXH.responseText;
	}
}
function getNextWorkshop(){
        workshopXH=GetXmlHttpObject();
        if (workshopXH==null){
                return;
        }
        var url="/inc/gadgets.php?type=next_workshop";
        workshopXH.onreadystatechange=workshopStateChanged;
        workshopXH.open("GET",url,true);
        workshopXH.send(null);

}
function workshopStateChanged(){
        if(workshopXH.readyState>1 && workshopXH.status==404){
                document.getElementById("next_workshop").innerHTML='<div class="banner">Next Workshop</div><div class="content">Could not retrieve from <a href="/wiki/index.php?title=Workshops">SOWN Wiki</a></div>';
        }
        else if (workshopXH.readyState==4 || workshopXH.readyState=="complete"){
                document.getElementById("next_workshop").innerHTML=workshopXH.responseText;
        }
}

function getNextMeetingInline(){
        meetinginlineXH=GetXmlHttpObject();
        if (meetinginlineXH==null){
                return;
        }
        var url="/inc/gadgets.php?type=next_meeting_inline";
        meetinginlineXH.onreadystatechange=meetinginlineStateChanged;
        meetinginlineXH.open("GET",url,true);
        meetinginlineXH.send(null);

}
function meetinginlineStateChanged(){
	if(meetinginlineXH.readyState>1 && meetinginlineXH.status==404){
                document.getElementById("next_meeting_inline").innerHTML='No information about upcoming meetings could be retrieved from the <a href="/wiki/index.php?title=Meetings">SOWN Wiki</a>';
        }
        if (meetinginlineXH.readyState==4 || meetinginlineXH.readyState=="complete"){
                document.getElementById("next_meeting_inline").innerHTML=meetinginlineXH.responseText;
        }
}
function getUsersConnected(){
        usersXH=GetXmlHttpObject();
        if (usersXH==null){
                return;
        }
        var url="/inc/gadgets.php?type=users_connected";
        usersXH.onreadystatechange=usersStateChanged;
        usersXH.open("GET",url,true);
        usersXH.send(null);

}
function usersStateChanged(){
        if (usersXH.readyState==4 || usersXH.readyState=="complete"){
                document.getElementById("users_connected").innerHTML=usersXH.responseText;
        }
}
function getUsersConnectedGraph(){
        usersgraphXH=GetXmlHttpObject();
        if (usersgraphXH==null){
                return;
        }
        var url="/stats/graph/user/day";
        usersgraphXH.onreadystatechange=usersGraphStateChanged;
        usersgraphXH.open("GET",url,true);
        usersgraphXH.send(null);

}
function usersGraphStateChanged(){
        if (usersgraphXH.readyState==4 || usersgraphXH.readyState=="complete"){
		if (usersgraphXH.responseText.length>0){
//			document.getElementById("users_connected_graph").innerHTML=usersgraphXH.responseText;
	                document.getElementById("users_connected_graph").innerHTML='<a href="/stats/"><img src="/stats/graph/user/day" width="100%" alt="Graph of users over the last 30 days"/></a>';
		}
		else{
			document.getElementById("users_connected_graph").innerHTML='Could not retrieve <a href="/stats/">Graph of users over the last 30 days</a>';
		}
        }
}
function getServiceStatus(){
        servicesXH=GetXmlHttpObject();
        if (servicesXH==null){
                return;
        }
        var url="/inc/gadgets.php?type=service_status";
        servicesXH.onreadystatechange=servicesStateChanged;
        servicesXH.open("GET",url,true);
        servicesXH.send(null);

}
function servicesStateChanged(){
	if (servicesXH.readyState==4 || servicesXH.readyState=="complete"){
                document.getElementById("service_status").innerHTML=servicesXH.responseText;
        }
}
function getNodesAvailable(){
        nodesXH=GetXmlHttpObject();
        if (nodesXH==null){
                return;
        }
        var url="/inc/gadgets.php?type=nodes_available";
        nodesXH.onreadystatechange=nodesStateChanged;
        nodesXH.open("GET",url,true);
        nodesXH.send(null);

}
function nodesStateChanged(){
        if (nodesXH.readyState==4 || nodesXH.readyState=="complete"){
                document.getElementById("nodes_available").innerHTML=nodesXH.responseText;
        }
}
function getLatestNews(articles){
        newsXH=GetXmlHttpObject();
        if (newsXH==null){
                return;
        }
        var url="/inc/gadgets.php?type=latest_news&articles="+articles;
        newsXH.onreadystatechange=newsStateChanged;
        newsXH.open("GET",url,true);
        newsXH.send(null);
        if (articles){
                document.getElementById("allnews").style.display = "block";
                document.getElementById("latestnews").style.display = "none";
        }
        else{
                document.getElementById("allnews").style.display = "none";
                document.getElementById("latestnews").style.display = "block";
        }
}
function newsStateChanged(){
	if (newsXH.readyState>1 && newsXH.status==404){
		document.getElementById("latest_news").innerHTML='Could not retrieve from <a href="/wiki/index.php/Latest_News">SOWN Wiki</a>';
		document.getElementById("allnews").style.display = "none";
		document.getElementById("latestnews").style.display = "none";
	}
	else if (newsXH.readyState==4 || newsXH.readyState=="complete"){
	        document.getElementById("latest_news").innerHTML=newsXH.responseText;
	}

}
function getNagiosSnapshot(){
        nagiosSnapshotXH=GetXmlHttpObject();
        if (nagiosSnapshotXH==null){
                return;
        }
        var url="/inc/gadgets.php?type=nagios-snapshot";
        nagiosSnapshotXH.onreadystatechange=nagiosSnapshotStateChanged;
        nagiosSnapshotXH.open("GET",url,true);
        nagiosSnapshotXH.send(null);
}
function nagiosSnapshotStateChanged(){
	if (nagiosSnapshotXH.readyState>1 && nagiosSnapshotXH.status==404){
		document.getElementById("nagios-snapshot").innerHTML='Could not retrieve snapshot from sown-vpn';
	}
	else if (nagiosSnapshotXH.readyState==4 || nagiosSnapshotXH.readyState=="complete"){
	        document.getElementById("nagios-snapshot").innerHTML=nagiosSnapshotXH.responseText;
	}

}
function GetXmlHttpObject(){
        var xmlHttp=null;
        try{
                // Firefox, Opera 8.0+, Safari
                xmlHttp=new XMLHttpRequest();
        }
        catch (e){
                //Internet Explorer
                try{
                        xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
                }
                catch (e){
                        xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
                }
        }
        return xmlHttp;
}
