var objAjax=null;
var ajaxQueue=new Array();
var ajaxReturnObject=null;
var reloadAfter=false;

function callAjax(url,returnFunction,returnObject,formToPost) {
	var postData = "";
	if (objAjax == null) {
		if (!('undefined' == typeof returnObject || returnObject == null)) {
			ajaxReturnObject = returnObject;
			ajaxReturnObject.innerHTML = '';
			returnFunction = ajaxToElement;
		}
		else ajaxReturnObject = null;
		if (!('undefined' == typeof formToPost || formToPost == null)) postData = buildPostData(formToPost);
		if (window.XMLHttpRequest) {
			objAjax = new XMLHttpRequest();
			objAjax.onreadystatechange = returnFunction;
			if (postData != "") {
				objAjax.open("POST",url,true);
				objAjax.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
				objAjax.send(postData);
			}
			else {
				objAjax.open("GET",url,true);	
				objAjax.send(null);
			}			
		}
		else if (window.ActiveXObject) {
			objAjax = new ActiveXObject("Microsoft.XMLHTTP");
			objAjax.onreadystatechange = returnFunction;
			if (postData != "") {
				objAjax.open("POST",url,true);
				objAjax.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
				objAjax.send(postData);
			}
			else {
				objAjax.open("GET",url,true);	
				objAjax.send();
			}
		}
		else {
			alert("Browser incompatible");
		}
	}
	else queueAjaxCall(url,returnFunction,returnObject,formToPost);
}

function queueAjaxCall(url,retfunc,retobj,ftp) {
	var newqueue = new Array();
	newqueue['url'] = url;
	newqueue['retfunc'] = retfunc;
	newqueue['retobj'] = retobj;
	newqueue['ftp'] = ftp;
	ajaxQueue.push(newqueue);
}

function ajaxOk() {
	if (objAjax.readyState == 4) {
		if (objAjax.status == 200) return true;
		else if (objAjax.status == 401) {
			document.location.href = 'login.php';
			return false;
		}
 	}
	else return false;
}

function ajaxToElement() {
	var x;
	if (ajaxOk()) {
		ajaxReturnObject.innerHTML = objAjax.responseText;
		killAjax();
		// CHECKER SI LE ID DU RECORD EXISTE, SI OUI UPDATER LA VARIABLE JS
		var inpts = ajaxReturnObject.getElementsByTagName('input');
		for(x=0;x<inpts.length;x++) {
			if (inpts[x].getAttribute('id') == 'current_record') selectedRecord = inpts[x].value;
		}
		// CHECKER SI YA DES SOUS-FORMULAIRES A LOADER...
		var fs = ajaxReturnObject.getElementsByTagName('fieldset');
		for(x=0;x<fs.length;x++) {
			try { eval(fs[x].getElementsByTagName('script')[0].innerHTML);	}
			catch(e) { }
		}
		if(reloadAfter) {
			gridRefresh();
			reloadAfter=false;
		}
	}
}

function killAjax() {
	objAjax = null;	
	if (ajaxQueue.length > 0) {
		callAjax(ajaxQueue[0]['url'],ajaxQueue[0]['retfunc'],ajaxQueue[0]['retobj'],ajaxQueue[0]['ftp'])	
		ajaxQueue.shift();
	}
}

function postForm(frm) {
	strurl='/'+recordType+'.php?action=SAVE&fid='+currentForm+'&id='+selectedRecord;
	callAjax(strurl,null,$('form'),frm);
	reloadAfter = true;
}

function buildPostData(form) {
	var returnData = "";
	var tags = new Array("input","textarea","select");
	for (var k = 0; k < tags.length; ) {
		var ar = form.getElementsByTagName(tags[k++]);
		var cc = null;
		for (var i = 0; i < ar.length;) {
			cc = ar[i++];
			if (cc.name != "" && cc.type != "file") {
				if (cc.getAttribute("type") == 'checkbox' || cc.getAttribute('type') == 'radio') {
					if (cc.checked != false) returnData += (returnData != "") ? "&" + cc.name + "=" + escape(cc.value) : cc.name + "=" + escape(cc.value);
				}
				else returnData += (returnData != "") ? "&" + cc.name + "=" + escape(cc.value) : cc.name + "=" + escape(cc.value);					
			}
		}
	}
	return returnData;
}

function loadSubForm(subfrm,elmid) {
	strurl='/'+recordType+'.php?action=SUB&type='+subfrm+'&id='+selectedRecord;
	callAjax(strurl,null,$(elmid));
}



function doOnRowSelected(id,formtoshow){ 
	
	if ('undefined' == typeof formtoshow) formtoshow = default_form;
	currentForm = formtoshow;
	$('grid').style.width='200px';	
	selectedRecord = id;
	$('form').style.display='block';
	$('form').style.width=($('content').offsetWidth-$('grid').offsetWidth-71)+'px';
	callAjax('/'+recordType+'.php?action=FORM&fid='+formtoshow+'&id='+selectedRecord,null,$('form'));
	formIsVisible = true;
}

var tdrecv;

function toggleDetail(idtr, annee, periode, typrerec, idrec,srcItm) {
	if ($(idtr).style.display == 'none') {
		//$(idtr).style.display = '';
		try {
			var tritem = srcItm.parentNode;
			var tds = tritem.getElementsByTagName('td');
			
			tds[0].style.borderLeft = '2px solid #0000aa';
			
			tds[tds.length-1].style.borderRight = '2px solid #0000aa';
			
			for(var x=0;x<tds.length;x++) {
				tds[x].style.borderTop = '2px solid #0000aa';
				tds[x].style.backgroundColor = '#eeeeff';
			}
			$(idtr+'_detail').style.backgroundColor = '#eeeeff';
			$(idtr+'_detail').style.borderTopWidth = '1px';
			$(idtr+'_detail').style.borderLeftWidth = '2px';
			$(idtr+'_detail').style.borderRightWidth = '2px';
			$(idtr+'_detail').style.borderBottomWidth = '2px';
			$(idtr+'_detail').style.borderLeftColor = '#0000aa';
			$(idtr+'_detail').style.borderRightColor = '#0000aa';
			$(idtr+'_detail').style.borderBottomColor = '#0000aa';
		}
		catch(e) { }
		tdrecv = $(idtr+'_detail');
		var receiveData = function() {
			if (ajaxOk()) {
				tdrecv.innerHTML = objAjax.responseText;
				tdrecv.style.height = '1px';
				tdrecv.setAttribute('cheight',1);
				tdrecv.style.overflow = 'hidden';
				tdrecv.parentNode.style.display = '';
				setTimeout('showtimer(\''+tdrecv.id+'\');',50);
				try {
					tdrecv.getElementsByTagName('table')[0].style.border = '1px solid #6666aa';
					var ths = tdrecv.getElementsByTagName('table')[0].getElementsByTagName('th');
					for(var cm=0;cm<ths.length;cm++) ths[cm].style.borderWidth = '1px';	
					
				} catch(e) {  }
				killAjax();
			}
		}
		callAjax(typrerec + '.php?action=detailcoti&id='+idrec+'&periode='+periode+'&annee='+annee, receiveData);
	}
	else {
		try {
			var tritem = srcItm.parentNode;
			var tds = tritem.getElementsByTagName('td');			
			for(var x=0;x<tds.length;x++) {
				tds[x].style.border = '1px solid #aaaaaa';
				tds[x].style.backgroundColor = '#ffffff';
			}
			$(idtr+'_detail').innerHTML = '&nbsp;';
		}
		catch(e) { alert('erreur : '+e.description); }
		$(idtr).style.display = 'none';
	}
	
}

function showtimer(iditm) {
	var newheight = $(iditm).getAttribute('cheight')+1;
	$(iditm).style.height = newheight+'px';
	$(iditm).setAttribute('cheight',newheight);
	$(iditm).scrollTop = 999999;
	if ($(iditm).scrollTop != 0) setTimeout('showtimer(\''+iditm+'\');',50);
}