//AJAX

function ajaxGeneric(method,datasource, data, fct,param){

    var requestObject = "";
    
    if (window.XMLHttpRequest) 
    
        requestObject = new XMLHttpRequest();
    
    else 
        if (window.ActiveXObject) 
        
            requestObject = new ActiveXObject("Microsoft.XMLHTTP");
    
    if (requestObject != null) {
		if (method=="G") { //GET
			requestObject.open("GET", datasource);
			data = null;
		}
		else
		{ //POST
	        requestObject.open("POST", datasource, true);
	        requestObject.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');


		}
		requestObject.onreadystatechange = function(){
			if (requestObject.readyState == 4 && requestObject.status == 200){
					fct(requestObject,param);
			} 

		}
	    requestObject.send(data);
    }
}

function getDataIntoFormObjValue(datasource, formObj){
	ajaxGeneric("G",datasource, null, function(r,p) { p.value=r.responseText; },formObj);
}


function getDataValue(datasource, htmlObj){
ajaxGeneric("G",datasource, null, function(r,p) { if (p) { p.innerHTML=r.responseText; } },htmlObj);
}

// generic ajax post function into returning value
function postDataValue(datasource, htmlObj, data){
ajaxGeneric("P",datasource, data, function(r,p) { if (p) { p.innerHTML=r.responseText; } },htmlObj);

}



function postDataValueAndRefresh(datasource, htmlObj, data){
ajaxGeneric("P",datasource, data, function(r,p) { if (p) { p.innerHTML=r.responseText; }  document.location.href = document.location.href; },htmlObj);

}

// fonction ajax pour le heartbeat
function setHeartBeat(_hearbeatscript){
	loadAlertPanel();
    var frequence = 10000;
	ajaxGeneric("G",_hearbeatscript, null, 
		function(r,p) { 
			var dummy = r.responseText;
			var div = document.getElementById("newmsg");    
			if (div) {
				if (dummy == "") {
					div.innerHTML = "";
				}
				else {
					div.innerHTML = "<a href=inbox.php>" + dummy +"<img src=\"images/gotmail.png\" align=\"absmiddle\"></a>";
				}
			}
		}
		,null);
window.setTimeout("setHeartBeat('" + _hearbeatscript + "');", frequence);

}

// fonction ajax pour le heartbeat
function setHeartBeatLesson(_hearbeatscript,iduser){
	
    var frequence = 10000;
	ajaxGeneric("G",_hearbeatscript, null, 
		function(r,p) { 
			var dummy = r.responseText;
			if (dummy == 1) {
				//KKK replace by refresh of lessons only
				var thedata="";
				thedata+="iduser="+iduser;
				getDataValueJSON("sscripts/mustrefresh.php", thedata, refreshParticipant);
				
				
			}
		}
		,null);
	window.setTimeout("setHeartBeatLesson('" + _hearbeatscript + "','"+iduser+"');", frequence);
	
}

function showParArray(){
    var res = "";
    for (var i = 0; i < parArray.length; i++) {
        res += parArray[i].id + ":" + parArray[i].nickname + ":" + parArray[i].profile + ":" + parArray[i].isteacher + ":" + parArray[i].isinviter + "\n";
    }
    return res;
}

function getDataValueXML(datasource, data, fct){

	ajaxGeneric("P",datasource, data, function(r,p) { p(r.responseXML); },fct);

}

function getDataValueJSON(datasource, data, fct){

	ajaxGeneric("P",datasource, data, function(r,p) { 
		
		p(r.responseText); 
		
		
		},fct);

}


function getFirstValueXMLByTagName(xmlRep,tagName){

	var tag=xmlRep.getElementsByTagName(tagName);
	
	var res = null;
	if (tag.length>0)
		{
			if (tag[0].childNodes.length>0)
				res = tag[0].childNodes[0].nodeValue;
		}
	return res;
}

function g1x(xmlRep,tagName){
	return getFirstValueXMLByTagName(xmlRep,tagName);
}
function g1J(jsonData,tagName){
	if(jsonData){
		return jsonData[tagName];
	}
	return "data error";
}

function getArrayValueXMLByTagName(xmlRep, tagName){
	var tag = xmlRep.getElementsByTagName(tagName);
	var res = new Array();
	for (var i = 0; i < tag.length; i++) {
		if (tag[i].childNodes.length>0) {
			var res1 = tag[i].childNodes[0].nodeValue;
			res.push(res1);
		}
	}
	return res;
}

function codeUrl(url){
	return encodeURIComponent(url);
}
function json(jsonRep){
	var jsondecode="";
	jsondecode=YAHOO.lang.JSON.parse(jsonRep);
	return jsondecode;
	
}

// to be moved to general
function createFrmPopup(mode,strheaderDiv,popupBodyDiv,handleCancel,handleAction,panelName){

	// Instantiate the Dialog
	var popupPanel = "";
	// mode for normal popup 
	if(mode == 0){
		if(handleCancel == ""){
			handleCancel = function(){
				this.destroy();
			}
			
		}
		
		popupPanel = new YAHOO.widget.Dialog(
		panelName, 
		 {  
		 effect:{effect:YAHOO.widget.ContainerEffect.FADE, 
		         duration:0.1},  
		   fixedcenter: true,
		   visible: true,
		   draggable: true,		 
		   close: true,
		   constraintoviewport: true,
		  modal:true,
		  
		   buttons: [ { text:MLJS('btenvoyer'),handler:handleAction},
		  { text:MLJS('btannuler'),  handler:handleCancel } ]
		 } 
		 
		 );
	}
	// mode for listing
	else if(mode == 1){
		popupPanel = new YAHOO.widget.Dialog(
		panelName, 
		 {  
		 effect:{effect:YAHOO.widget.ContainerEffect.FADE, 
		         duration:0.1},  
		   fixedcenter: true,
		   visible: true,
		   draggable: true,
		   width:"800px",
		   close: true,
		   constraintoviewport: true,
		  modal:true
		  
		 } 
		 
		 );		
	}
	// only send
	else if(mode == 2){
		popupPanel = new YAHOO.widget.Dialog(
		panelName, 
		 {  
		 effect:{effect:YAHOO.widget.ContainerEffect.FADE, 
		         duration:0.1},  
		   visible: true,
		   draggable: true,		 
		   close: true,
		   constraintoviewport: true,
		  modal:true,
		  
		   buttons: [ { text:MLJS('btenvoyer'),handler:handleAction} ]
		 } 
		 
		 );
	}

	
	popupPanel.setHeader(strheaderDiv);

//	popupBodyDiv = createBodyPopup(popupBodyDiv);
	popupPanel.setBody(popupBodyDiv);
	
	popupPanel.render("containerdiv");	
	
	return popupPanel;
	
}

// to be moved to general
function createFrmPopup_update(mode,strHeader,strBody,handleCancel,handleAction,panelName,popupContainDivName){

	// Instantiate the Dialog
	var popupPanel = "";
	// mode for normal popup 
	if(mode == 0){
		if(handleCancel == ""){
			handleCancel = function(){
				this.destroy();
			}
			
		}
		
		popupPanel = new YAHOO.widget.Dialog(
		panelName, 
		 {  
		 effect:{effect:YAHOO.widget.ContainerEffect.FADE, 
		         duration:0.1},  
		   visible: true,
		   draggable: true,		 
		   close: true,
		   constraintoviewport: true,
		  modal:true,
		  
		   buttons: [ { text:MLJS('btenvoyer'),handler:handleAction},
		  { text:MLJS('btannuler'),  handler:handleCancel } ]
		 } 
		 
		 );
	}
	// mode for contain body html
	else if(mode == 1){
		popupPanel = new YAHOO.widget.Dialog(
		panelName, 
		 {  
		 effect:{effect:YAHOO.widget.ContainerEffect.FADE, 
		         duration:0.1},  
		   fixedcenter: true,
		   visible: true,
		   draggable: true,
		   width:"800px",
		   close: true,
		   constraintoviewport: true,
		  modal:true
		  
		 } 
		 
		 );	
		 

	}
	// only send with handle action
	else if(mode == 2){
		popupPanel = new YAHOO.widget.Dialog(
		panelName, 
		 {  
		 effect:{effect:YAHOO.widget.ContainerEffect.FADE, 
		         duration:0.1},  
		   fixedcenter: true,
		   visible: true,
		   draggable: true,		 
		   close: true,
		   constraintoviewport: true,
		  modal:true,
		  
		   buttons: [ { text:MLJS('btenvoyer'),handler:handleAction} ]
		 } 
		 
		 );
	}
	// popup alert
	else if(mode == 3){
		popupPanel = new YAHOO.widget.Dialog(
		panelName, 
		 {  
		 effect:{effect:YAHOO.widget.ContainerEffect.FADE, 
		         duration:0.1},  
		   visible: true,
		   draggable: true,	
		   width:"300px",	 
		   close: true,
		   constraintoviewport: true,
		  modal:true, // protect doc background
		  
		   buttons: [ { text:"ok",handler:handleAction} ]
		 } 
		 
		 );
	}		
	

	popupPanel.setHeader(strHeader);		 	
//	popupBodyDiv = createBodyPopup(popupBodyDiv);
	popupPanel.setBody(strBody);
	
	popupPanel.render(popupContainDivName);	
	
	return popupPanel;
	
}

function createBodyPopup(contain){
	
	var str ="<table width='80%'><tr><td>";
		str +=contain;
		str +="</td></tr></table>";
			
	return str;
}