function checkDate(day, month, year) {
	var monthLength = new Array(31,28,31,30,31,30,31,31,30,31,30,31);

	if (!day || !month || !year)
		return false;

	if (year/4 == parseInt(year/4))
		monthLength[1] = 29;

	if (day > monthLength[month-1])
		return false;

	monthLength[1] = 28;

	var now = new Date();
	now = now.getTime(); //NN3

	var dateToCheck = new Date();
	dateToCheck.setYear(year);
	dateToCheck.setMonth(month-1);
	dateToCheck.setDate(day);
	var checkDate = dateToCheck.getTime();

	var futureDate = (now < checkDate);
	var pastDate = (now > checkDate);

	return true;
}

function isIE() {
	switch(navigator.appName) {
		case "Netscape"	:
			return false;
		default:
			return true;
	}
}


function isRequiredField(obj){
	if((window['_requireProcess'] != true) && obj.value == '') {
		window['_requireProcess'] = true;
		if(isIE())
			obj.focus();
		alert('Ce champ est obligatoire, veuillez le remplir!'); 
		window['_requireProcess'] = false;
	}
	else {
		window['_requireProcess'] = false;
	}
}

function amIRequiredNonIE(){
	if(this.value == '') {
		alert('Ce champ est obligatoire, veuillez le remplir!');
	}
}

function amIRequiredIE(e){
	var obj = e.srcElement;
	if((window['_requireProcess'] != true) && obj.value == '') {
		alert('Ce champ est obligatoire, veuillez le remplir!'); 
		obj.focus();
		window['_requireProcess'] = true;
	}
	else {
		window['_requireProcess'] = false;
	}
}

// Removes leading whitespaces
function LTrim(str) {
	
	var re = /^\s+/g;
	return str.replace(re, '');
	
}

// Removes ending whitespaces
function RTrim(str) {
	
	var re = /\s+$/g;
	return str.replace(re, '');
	
}

// Removes leading and ending whitespaces
function AllTrim(str) {
	var re = /\s+/g;
	return str.replace(re, '');	
}

//////////////////////////////////////////

function inArray(needle,haystack) {
	_return = false;
	
	if( (typeof needle == 'string' || typeof needle == 'number') && (typeof haystack == 'object') ) {
		sizeHaystack = haystack.length;
		if(!sizeHaystack)
			return false;
			
		for(i=0 ; i<sizeHaystack ; i++) {
			if(haystack[i] == needle){
				_return = true;
				break;
			}
			else
				continue;					
		}
		
		return _return;
	}
	else
		return false;
}

function putSameValueAs(form, destObjName, sourceObj) {
	if(sourceObj.type == 'checkbox' || sourceObj.type == 'radio') {
		//allDestObj = document.all.item(form).item(destObjName);
		allDestObj = getObjectFromName(destObjName);
		for(j=0 ; j<allDestObj.length ; j++) {
			if(allDestObj[j].value == sourceObj.value)
				allDestObj[j].checked = true;
		}
	}
}

function enDisField(form, me, value, other) {
	if( typeof other == 'string' || typeof other == 'number' ) {
		if(me.type == 'checkbox' || me.type == 'radio')
			checkCond = (me.checked == true);
		else
			checkCond = false;
		
		//otherObj = document.all.item(form).item(other);
		otherObj = getObjectFromName(other);
		
		if(me.value == value) {
			if(checkCond) {
				otherObj.disabled = false;
				if(otherObj.type == 'text') {
					if(otherObj.size >= 20)
						otherObj.value = "remplir ce champ";
					else
						otherObj.value = "ici";
					otherObj.select();
					if(isIE())
						otherObj.focus();
				}
				else
					if(isIE())
						otherObj.focus();
			}
			else {
				otherObj.value = '';
				otherObj.disabled = true;
			}
		}
	}
}

function clearFieldIf(form, me, values) {
	sizeValues = values.length;
	if(!sizeValues) {
		/*if(document.all.item(form).item(me).value == values)
			document.all.item(form).item(me).value = "";*/
		if(getObjectFromName(me).value == values)
			getObjectFromName(me).value = "";
	}
	else {
		/*if(inArray(document.all.item(form).item(me).value, values) == true)
			document.all.item(form).item(me).value = "";*/
		if(inArray(getObjectFromName(me).value, values) == true)
			getObjectFromName(me).value = "";
			
	}
}

function enDisFieldMany(form, me, values, others) {
	if( (typeof values == 'object') && (typeof others == 'object') ) {
		if(me.type == 'checkbox' || me.type == 'radio')
			checkCond = (me.checked == true && inArray(me.value,values));
		else
			checkCond = inArray(me.value,values);
		
		for(i = 0 ; i<others.length ; i++) {
			//enDisFieldByType(checkCond,document.all.item(form).item(others[i]));
			enDisFieldByType(checkCond, getObjectFromName(others[i]));
		}
	}
}

function enDisFieldByType(checkCond,obj) {
	if( (typeof obj.type == "undefined") && (typeof obj.length != "undefined") && (obj.length > 1) ) {
		if(checkCond) {
			for(j=0 ; j<obj.length ; j++) {
				obj[j].disabled = false;
			}
		}
		else {
			for(j=0 ; j<obj.length ; j++) {
				obj[j].checked = false;
				obj[j].disabled = true;
			}
		}
	}
	else {
		if(checkCond) {
			obj.disabled = false;
		}
		else {
			if(obj.type == 'text')
				obj.value = '';
				
			if(obj.type == 'select-one')
				obj.selectedIndex = -1;
				
			obj.disabled = true;
		}
	}
}

function denyEnterKey(e){
	key = getKey(e);
	if (key==10 || key==13)
		return false;
	else
		return true;
}

function replaceKeyWith(e, key1, key2) {
	if (e.keyCode==key1) {
		e.keyCode=key2;
		return e.keyCode;
	}
}

//Fonction utilisee par allowedDataEntry()
function getKey(e)
{	if (window.event)
	   return window.event.keyCode;
	else if (e)
	   return e.which;
	else
	   return null;
}

function retunFocusRankFld(dsName, searchTextFld, obj, selectSearch){
	if(searchTextFld.name != obj.name) {
		focusRankFld = parseInt(allDSFieldsOrder[dsName][selectSearch.options[selectSearch.selectedIndex].value][obj.name]);
		
		if(window['_previousKey']!=16)
			focusRankFld++;
		else
			focusRankFld--;
	}
	else {
		focusRankFld = 0;
	}
	
	if(focusRankFld < 0)
		focusRankFld = 0;
	
	if(focusRankFld >= iArr[selectSearch.options[selectSearch.selectedIndex].value] - 1)
		focusRankFld = iArr[selectSearch.options[selectSearch.selectedIndex].value] - 1;
	
	return focusRankFld;
}

function searchForDataInFields(dsName, searchTextFld, obj, selectSearch, e) {
	var keynum;
	var keychar;
	var numcheck;
	
	if(window.event) { // IE 
		keynum = e.keyCode;
	}
	else if(e.which) { // Netscape/Firefox/Opera
		keynum = e.which;
	}
	
	if(keynum == 123) {
		if(window['_previousKey'] == 17){
			searchTextFld.focus();
			searchTextFld.select();
			window['_previousKey'] = keynum;
			return null;
		}
		
		focusRankFld = retunFocusRankFld(dsName, searchTextFld, obj, selectSearch);
		
		var re = new RegExp(searchTextFld.value + ".*" , "i"); // "i" -> ignoreCase
		fld = getObjectFromName(allDSFieldsNames[dsName][selectSearch.options[selectSearch.selectedIndex].value][focusRankFld]);
		
		while(!re.test(fld.value)) {
			_focusRankFld = focusRankFld;
			focusRankFld = retunFocusRankFld(dsName, searchTextFld, fld, selectSearch);
			fld = getObjectFromName(allDSFieldsNames[dsName][selectSearch.options[selectSearch.selectedIndex].value][focusRankFld]);
			
			if(_focusRankFld == focusRankFld) {
				alert("Aucun résultat trouvé!");
				window['_previousKey'] = keynum;
				return null;
			}
		}
		
		fld.focus();
		fld.select();
		window['_previousKey'] = keynum;
		return null;
	}

	window['_previousKey'] = keynum;
	return true;
}


// Fonction qui permet la saisie seulement des carcateres passes comme parametre
function allowedDataEntry(e, goods)
{	var key, keychar;
	key = getKey(e);
	if (key == null) return true;

	// get character
	keychar = String.fromCharCode(key);
	keychar = keychar.toLowerCase();
	goods = goods.toLowerCase();
	
	if(!denyEnterKey(e))
		return false;
	
	
	// check goodkeys
	if (goods.indexOf(keychar) != -1)
		return true;

	// control keys
	if ( key==null || key==0 || key==8 || key==9 || key==27 )
	   return true;

	// else return false
	return false;
}

function focusFirstSelectedOptionInList() 
{
	var elm = document.getElementsByTagName("select");
	var n = elm.length;

	if(n > 0) 
		for(i = 0 ; i < n ; i++)
			focusSelectedOptionInList(elm[i]);
}

function focusSelectedOptionInList(obj)
{

	var allOptions = obj.options;
	if(allOptions != null)
		for(j=allOptions.length-1;j>=0;j--)
			if(allOptions[j].selected == true)
				allOptions[j].selected = true;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function AutoComplete(aStr, oText, oDiv,startSearchFrom)
{
	// initialize member variables
	this.oText = oText;
	this.oDiv = oDiv;
	this.aStr= aStr;
	this.startSearchFrom = startSearchFrom;
	
	// attach handlers to the text-box
	oText.AutoComplete = this;
	oText.onkeyup = AutoComplete.prototype.onTextChange;
	oText.onblur = AutoComplete.prototype.onTextBlur;
}

AutoComplete.prototype.onTextBlur = function()
{
	this.AutoComplete.onblur();
}

AutoComplete.prototype.onblur = function()
{
	this.oDiv.style.visibility = "hidden";
}

AutoComplete.prototype.onTextChange = function()
{
	this.AutoComplete.onchange();
}

AutoComplete.prototype.onDivMouseDown = function()
{
	this.AutoComplete.oText.value = this.innerHTML;
}

AutoComplete.prototype.onDivMouseOver = function()
{
	this.style.backgroundColor = "yellow";
}

AutoComplete.prototype.onDivMouseOut = function()
{
	this.style.backgroundColor = "white";
}

AutoComplete.prototype.onchange = function()
{
	var txt = this.oText.value;
	
	// count the number of strings that match the text-box value
	var nCount = txt.length;

	
	// if a suitable number then show the popup-div
	if ( nCount > this.startSearchFrom )
	{
	
		// clear the popup-div.
		while ( this.oDiv.hasChildNodes() )
			this.oDiv.removeChild(this.oDiv.firstChild);
			
		// get all the matching strings from the AutoCompleteDB
	//this.aStr;   var sndr = window.event.srcElement;
    //var char = String.fromCharCode(key);

	
    
		//var re = new RegExp("^" + txt + ".*" , "i"); // "i" -> ignoreCase
		var re = new RegExp(txt + ".*" , "i"); // "i" -> ignoreCase
		
		if(window[this.oDiv.id] != true) {
			this.oDiv.style.posTop = this.oDiv.offsetTop+25;
			this.oDiv.style.posLeft = this.oDiv.parentNode.offsetLeft;
			window[this.oDiv.id] = true;
		}
		
		for(var i=0; i<this.aStr.length; i++)
		{
				
			if(re.test(this.aStr[i]))
			{
				var oDiv = document.createElement('div');
				this.oDiv.appendChild(oDiv);
				oDiv.innerHTML = this.aStr[i];
				oDiv.onmousedown = AutoComplete.prototype.onDivMouseDown;
				oDiv.onmouseover = AutoComplete.prototype.onDivMouseOver;
				oDiv.onmouseout = AutoComplete.prototype.onDivMouseOut;
				oDiv.AutoComplete = this;			
				
				//limit display to 100 elements
				if(i==100) break;

			}
		
		}
		
		this.oDiv.style.visibility = "visible";
		
	}
	else // hide the popup-div
	{

		this.oDiv.innerHTML = "";
		this.oDiv.style.visibility = "hidden";
	}
	
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function listAutoComplete(searchObject, listObject, divObject, startSearchFrom){
	// initialize member variables
	this.searchObject = searchObject;
	this.listObject = listObject;
	this.divObject= divObject;
	
	this.startSearchFrom = startSearchFrom?startSearchFrom-1:2;
	
	// attach handlers to the text-box
	searchObject.listAutoComplete = this;
	searchObject.onkeyup = listAutoComplete.prototype.onTextChange;
	searchObject.onblur = listAutoComplete.prototype.onTextBlur;
}

listAutoComplete.prototype.onTextBlur = function() {
	this.listAutoComplete.onblur();
}

listAutoComplete.prototype.onblur = function() {
	allSelect = document.body.getElementsByTagName("SELECT");
	var nS = allSelect.length;
	for ( i = 0; i < nS; i++ ) {
		allSelect[i].style.visibility = "visible";
	}

	this.divObject.style.visibility = "hidden";
}

listAutoComplete.prototype.onTextChange = function() {
	this.listAutoComplete.onchange();
}

listAutoComplete.prototype.onDivMouseDown = function() {
	this.listAutoComplete.searchObject.value = "";
	this.listAutoComplete.listObject.selectedIndex = this.childNodes[1].innerHTML;
	this.listAutoComplete.listObject.fireEvent('onChange');
}

listAutoComplete.prototype.onDivMouseOver = function() {
	this.style.backgroundColor = "yellow";
}

listAutoComplete.prototype.onDivMouseOut = function() {
	this.style.backgroundColor = "white";
}

listAutoComplete.prototype.onchange = function() {
	var txt = this.searchObject.value;
	// count the number of strings that match the text-box value
	var nCount = txt.length;
	// if a suitable number then show the popup-div
	if ( nCount > this.startSearchFrom ) {
		this.divObject.innerHTML  = "";
		//var re = new RegExp("^" + txt + ".*" , "i"); // "i" -> ignoreCase
		var re = new RegExp(txt + ".*" , "i"); // "i" -> ignoreCase
		this.divObject.style.width = 0;
		var x = 0;
		for( var i=0; i<this.listObject.length; i++) {
			if(re.test(this.listObject.options[i].text)) {
				var oDiv = document.createElement('DIV');
				this.divObject.appendChild(oDiv);
				
				switch(navigator.appName) {
					case "Netscape"	:
						oDiv.setAttribute("NOWRAP", "true");
						break;
					default:
						oDiv.style.cursor = "hand";	
						oDiv.noWrap = "true";
						break;
				}
				
				
				oDiv.innerHTML = this.listObject.options[i].text+"";
				var oSpan = document.createElement('SPAN');
				oDiv.appendChild(oSpan);
				oSpan.innerHTML = i;
				oSpan.style.visibility = "hidden";
				oDiv.onmousedown = listAutoComplete.prototype.onDivMouseDown;
				oDiv.onmouseover = listAutoComplete.prototype.onDivMouseOver;
				oDiv.onmouseout = listAutoComplete.prototype.onDivMouseOut;
				oDiv.listAutoComplete = this;
				//limit display to x elements
				x = x + 1 ;
			}
		}
		
		if(x>0) {
			this.divObject.style.left = this.searchObject.style.left;
			this.divObject.style.top = this.searchObject.style.top;
			
			if(navigator.appName != 'Netscape') {
				this.divObject.style.zIndex = 999; 	
			}
			
			allSelect = document.body.getElementsByTagName("SELECT");
			var nS = allSelect.length;
			for ( i = 0; i < nS; i++ ) {
				allSelect[i].style.visibility = "hidden";
			}
			
			this.divObject.style.visibility = "visible";
		}
	}
	else { // hide the popup-div
		this.divObject.innerHTML = "";
		
		allSelect = document.body.getElementsByTagName("SELECT");
		var nS = allSelect.length;
		for ( i = 0; i < nS; i++ ) {
			allSelect[i].style.visibility = "visible";
		}
		this.divObject.style.visibility = "hidden";
	}
	
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

var DBAutoCompleteObjects = new Array();

function DBAutoComplete(oText, oDiv, pageXML, startSearchFrom) {
	// initialize member variables
	this.oText = oText;
	this.pageXML = pageXML;
	this.oDiv = oDiv;
	this.startSearchFrom = startSearchFrom;
	
	// attach handlers to the text-box
	oText.DBAutoComplete = this;
	oText.onkeyup = DBAutoComplete.prototype.onTextChange;
	oText.onblur = DBAutoComplete.prototype.onTextBlur;
}

DBAutoComplete.prototype.onTextBlur = function() {
	this.DBAutoComplete.onblur();
}

DBAutoComplete.prototype.onblur = function() {
	allSelect = document.body.getElementsByTagName("SELECT");
	var nS = allSelect.length;
	for ( i = 0; i < nS; i++ ) {
		allSelect[i].style.visibility = "visible";
	}
	
	this.oDiv.style.visibility = "hidden";
}

DBAutoComplete.prototype.onTextChange = function() {
	this.DBAutoComplete.onchange();
}

DBAutoComplete.prototype.onDivMouseDown = function() {
	this.DBAutoComplete.oText.value = this.innerHTML;
}

DBAutoComplete.prototype.onDivMouseOver = function() {
	this.style.backgroundColor = "yellow";
}

DBAutoComplete.prototype.onDivMouseOut = function() {
	this.style.backgroundColor = "white";
}

DBAutoComplete.prototype.onchange = function() {
	var txt = this.oText.value;
	
	// count the number of strings that match the text-box value
	var nCount = txt.length;

	
	// if a suitable number then show the popup-div
	if ( nCount > this.startSearchFrom ){
		DBAutoCompleteObjects[this.oText.id] = this;
		//alert(DBAutoCompleteObjects[this.oText.id]);
		DBAutoCompleteSearchData(txt, this.oDiv.id, this.oText.id, this.pageXML);
		
		allSelect = document.body.getElementsByTagName("SELECT");
		var nS = allSelect.length;
		for ( i = 0; i < nS; i++ ) {
			allSelect[i].style.visibility = "hidden";
		}
	}
}

var DBAutoCompleteReq;
var DBAutoCompleteReqPageXML;
var DBAutoCompleteEnableStopError = false;

function DBAutoCompleteSearchData(dataReq, divId, searchfield, pageXML)
{
	DBAutoCompleteReq = null;
	DBAutoCompleteReqPageXML = pageXML;
	
	if (window.XMLHttpRequest) {// code for Mozilla, etc.
	  DBAutoCompleteReq = new XMLHttpRequest()
	}
	else if (window.ActiveXObject){// code for IE
	  DBAutoCompleteReq = new ActiveXObject("Microsoft.XMLHTTP")
	}
	
	if (DBAutoCompleteReq==null) {
	  	alert("XMLHttpRequest not supported!!");
		return;
	}
	else {
		DBAutoCompleteReq.open("POST", pageXML, true);
		DBAutoCompleteReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		DBAutoCompleteReq.onreadystatechange = DBAutoCompleteReceiveData;
		
		DBAutoCompleteReq.send("theval=" + encodeURIComponent(dataReq)+"&div_id=" + encodeURIComponent(divId)+"&searchfield=" + encodeURIComponent(searchfield));
	}
}

function DBAutoCompleteReceiveData()
{
	if(DBAutoCompleteReq.readyState != 4)
		return;
	
	var xmlResponse = DBAutoCompleteReq.responseXML;
	/*alert(DBAutoCompleteReq.responseText)	;
	return;*/
	if(xmlResponse)
	{
		var back_engine_response_tag = xmlResponse.getElementsByTagName('back_engine_response');
		//alert(back_engine_response_tag.length); // 1
		//alert(back_engine_response_tag[0].hasChildNodes()); // true
		//alert(back_engine_response_tag[0].childNodes.length); // 5
		/*s='';
		for (i=0; i<back_engine_response_tag[0].childNodes.length; i++) {
			s+=back_engine_response_tag[0].childNodes[i].tagName+'\n';
		}
		alert(s);*/
		if(back_engine_response_tag[0] && back_engine_response_tag[0].hasChildNodes()) {
			for (i=0; i<back_engine_response_tag[0].childNodes.length; i++) {
				switch(back_engine_response_tag[0].childNodes[i].tagName){
					case "div":
						var tDiv = back_engine_response_tag[0].childNodes[i].childNodes[0];
						divName = tDiv.nodeValue;
						continue;
					case "searchfield":
						var tSField = back_engine_response_tag[0].childNodes[i].childNodes[0];
						fieldName = tSField.nodeValue;
						continue;
					case "data":
						var tData = back_engine_response_tag[0].childNodes[i].childNodes;
						var xArr = new Array();
						
						//sss = '';
						for(j=0; j<tData.length; j++) {
							xArr[j] = tData[j].childNodes[0].nodeValue;
							//sss += 'node#'+j+'# : '+tData[j].childNodes[0].nodeValue+'\n';
						}
						//alert(sss);
						continue;
				}
			}
			
			if((!xArr || xArr.length==0) && divName) {
				var divSearchObj = document.getElementById(divName);
				divSearchObj.innerHTML = "";
				divSearchObj.style.visibility = "hidden";
				
				if(DBAutoCompleteEnableStopError) {
					var fieldSearchObj = document.getElementById(fieldName);
					var sss = fieldSearchObj.value;
					if(sss.length==1)
						fieldSearchObj.value = "";
					else {
						fieldSearchObj.value = sss.substring(0, sss.length-1);
						//DBAutoCompleteSearchData(fieldSearchObj.value, divName, fieldName, DBAutoCompleteReqPageXML);
					}
				}
			}
			else {
				if(divName && xArr.length>0 && fieldName){
					var divSearchObj = document.getElementById(divName);
					var fieldSearchObj = document.getElementById(fieldName);
					
					while ( divSearchObj.hasChildNodes() )
						divSearchObj.removeChild(divSearchObj.firstChild);
				
					for(dI=0; dI<xArr.length; dI++)
					{
						var rowData = xArr[dI];
						
						var oDiv = document.createElement('div');
						divSearchObj.appendChild(oDiv);
						oDiv.innerHTML = rowData;
						oDiv.onmousedown = DBAutoComplete.prototype.onDivMouseDown;
						oDiv.onmouseover = DBAutoComplete.prototype.onDivMouseOver;
						oDiv.onmouseout = DBAutoComplete.prototype.onDivMouseOut;
						oDiv.DBAutoComplete = DBAutoCompleteObjects[fieldName];
						//oDiv.DBAutoComplete = fieldSearchObj.DBAutoComplete;
						
						//limit display to 10 elements
						if(dI==10) {
							var oDiv = document.createElement('div');
							divSearchObj.appendChild(oDiv);
							oDiv.innerHTML = '...';
							break;
						}
					}
					
					divSearchObj.style.visibility = "visible";
				}
			}
		}
	}
	else {
		alert(DBAutoCompleteReq.responseText);
	}
	
	DBAutoCompleteReq = null;
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function RoundToNdp(X, N) { 
	var T = Number('1e'+N);
	X = ""+X;
	if(X.indexOf(" ")!=-1)
		X = AllTrim(X);
	
	return Math.round(X*T)/T;
}

function formatterNombre(nombreStr) {
	nombreStr = ""+nombreStr;
	if(nombreStr.indexOf(" ")!=-1)
		nombre = AllTrim(nombreStr);
	else
		nombre = nombreStr;
		
	if((nombre == '') || (isNaN(nombre)==true))
		return '';
		
	var num = new NumberFormat();
	num.setInputDecimal('.');
	num.setNumber(parseFloat(nombre));
	num.setPlaces('2');
	num.setCurrency(false);
	num.setCurrencyPosition(num.RIGHT_OUTSIDE);
	num.setNegativeFormat(num.LEFT_DASH);
	num.setNegativeRed(false);
	num.setSeparators(true, ' ', '.');
	
	return(num.toFormatted());
}

function afficherFormattedNumber(obj) {
	var divAff = document.getElementById("format_number_"+obj.name);
	divAff.innerHTML = "<b><i>"+formatterNombre(obj.value)+"</i></b>";
}

function popupWindow(windowLink, fullscreen) {
	switch(navigator.appName) {
		case "Netscape"	:
			var varFullscreen = "";
			break;
		default:
			var varFullscreen = "fullscreen ="+fullscreen+",";	
			break;
	}
	
	var divAff = window.open(windowLink,"_blank",varFullscreen+"height=200,width=400,status=yes,scrollbars=yes,toolbar=no,titlebar=yes,menubar=no,location=no,resizable=yes");
}

function modalWindow(URL, iW,iH,TOP,LEFT,R,S,SC,T,TB) {
	
	var sF="";
	var _rv;
	sF+=T?'unadorned:'+T+';':'';
	sF+=TB?'help:'+TB+';':'';
	sF+=S?'status:'+S+';':'';
	sF+=SC?'scroll:'+SC+';':'';
	sF+=R?'resizable:'+R+';':'';
	sF+=iW?'dialogWidth:'+iW+'px;':'';
	sF+=iH?'dialogHeight:'+(parseInt(iH)+(S?42:0))+'px;':'';
	sF+=TOP?'dialogTop:'+TOP+'px;':'';
	sF+=LEFT?'dialogLeft:'+LEFT+'px;':'';
	
	var da=new Object();
	da.w=iW;
	da.h=iH;
	da.url=URL;
	_rv=window.showModalDialog(URL,da,sF);
	
	if ("undefined" != typeof(_rv) )
		return _rv;
}

function windowParentReload(fieldName, jSName, Layout, hiddenValues) {
	eval("var outputDiv = document.getElementById('popup_div_"+jSName+"');");
	if(outputDiv) {
		
		var outStr = "";
		
		for(hiddenName in hiddenValues) {
			outStr += "<input type='hidden' name='"+hiddenName+"' value='"+hiddenValues[hiddenName]["value"]+"'>";
			if(hiddenName == fieldName)
				outStr += "<input type='hidden' name='layout_"+hiddenName+"["+hiddenValues[hiddenName]["value"]+"]' value=\""+Layout+"\">";
			else
				outStr += "<input type='hidden' name='layout_"+hiddenName+"["+hiddenValues[hiddenName]["value"]+"]' value=\""+hiddenValues[hiddenName]["text"]+"\">";
		}
		
		outStr += Layout;
		//alert(outStr);
		outputDiv.innerHTML = outStr;
	}
	else {
		for(hiddenName in hiddenValues) {
			var obj = getObjectFromName(hiddenName);
			//alert('hiddenName = '+hiddenName);
			obj.value = hiddenValues[hiddenName]["value"];
			
			var objLay = getObjectFromName("layout_"+hiddenName);
			
			if(hiddenName == fieldName)
				objLay.value = Layout;
			else
				objLay.value = hiddenValues[hiddenName]["text"];
		}
	}
}

function isArray(obj) {
   if (obj.constructor.toString().indexOf("Array") == -1)
      return false;
   else
      return true;
}

function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}

function convertFromTo(sommeStr, monIni, MonFin, coursDuJour) {
	sommeStr = ""+sommeStr;
	if(sommeStr.indexOf(" ")!=-1)
		somme = AllTrim(sommeStr);
	else
		somme = sommeStr;
		
	if((somme == 0) || (somme == '') || (somme == '0') || (isNaN(somme)==true))
		return 0;
	
	somme = parseFloat(somme);
	return RoundToNdp(convertBeforeRoundFromTo(somme, monIni, MonFin, coursDuJour), 2);
}

function convertBeforeRoundFromTo(somme, monIni, MonFin, coursDuJour) {
	if(monIni != MonFin) {
		
		if(monIni != '01' && MonFin != '01') {
			var cc = convertBeforeRoundFromTo(somme, monIni, '01', coursDuJour);
			return convertBeforeRoundFromTo(cc, '01', MonFin, coursDuJour);
		}
		else {
			var cDJ = coursDuJour[monIni+':'+MonFin];
			if((typeof cDJ) == 'undefined' || cDJ == null) {
				return 0;
			}
			else {
				return somme*cDJ;
			}
		}
	}
	else {
		return somme;
	}
}

function checkContreValeur(obj, aff_obj_name, deviseCompte, coursDuJour, divAffiche) {
	var aff_obj = getObjectFromName(aff_obj_name);
	aff_obj.value = convertFromTo(obj.value, deviseCompte, '01', coursDuJour);
	
	if(divAffiche==true)
		aff_obj.value = formatterNombre(aff_obj.value);
	else
		afficherFormattedNumber(aff_obj);
}

function checkContreValeurDevise(obj, aff_obj_name, deviseCompte, deviseCompte2, coursDuJour, divAffiche) {
	var aff_obj = getObjectFromName(aff_obj_name);
	aff_obj.value = convertFromTo(obj.value, deviseCompte, deviseCompte2, coursDuJour);
	
	if(divAffiche==true)
		aff_obj.value = formatterNombre(aff_obj.value);
	else
		afficherFormattedNumber(aff_obj);
}

function _initTableHF(fieldName, dataArray, delRemove) {		
	
	switch(navigator.appName) {
		case "Netscape"	:
			var mytablebody = document.all.item('_'+fieldName+'_afficheTable');
			break;
		default:
			var mytablebody = document.getElementsByName('_'+fieldName+'_afficheTable').item(0);
			break;
	}
	
	mycurrent_row = document.createElement('TR');
	
	if((typeof delRemove) == 'undefined' || delRemove==null) {
		mycurrent_cell=document.createElement('TD');
		mycurrent_row.appendChild(mycurrent_cell);
	}	
	var scriptCode = "";
	window[fieldName+'_isThereAnyCurrencyField'] = new Array();
	window[fieldName+'_isThereAnyCurrencyFieldTest'] = false;
	for(fld in dataArray) {
		if(dataArray[fld]['hide_column']){
			continue;
		}
		else if(inArray(dataArray[fld]['field_type'], new Array('section', 'hidden'))) {
			continue;
		}
	
		if(dataArray[fld]['field_type'] == 'multiselect') {
			for(sFld in dataArray[fld]['array']) {
				mycurrent_cell=document.createElement('TD');
				mycurrent_cell.className = 'verno8';
				mycurrent_cell.noWrap = true;
				currentBold=document.createElement('B');
				currenttext=document.createTextNode(dataArray[fld]['array'][sFld]['label']);
				currentBold.appendChild(currenttext);
				mycurrent_cell.appendChild(currentBold);
				mycurrent_row.appendChild(mycurrent_cell); 
			}
		}
		else {
			mycurrent_cell=document.createElement('TD');
			mycurrent_cell.className = 'verno8';
			mycurrent_cell.noWrap = true;
			currentBold=document.createElement('B');
			currenttext=document.createTextNode(dataArray[fld]['field_label']);
			currentBold.appendChild(currenttext);
			mycurrent_cell.appendChild(currentBold);
			mycurrent_row.appendChild(mycurrent_cell);
		}
		
		if(inArray(dataArray[fld]['field_type'], new Array('currency'))) {
			window[fieldName+'_isThereAnyCurrencyField'][fld] = "true";
			window[fieldName+'_isThereAnyCurrencyFieldTest'] = true;
		}
	}
									
	window['_'+fieldName+'_firstRowInTable'] = mycurrent_row;
	
	mytablebody.appendChild(mycurrent_row);
			
	if(window[fieldName+'_isThereAnyCurrencyFieldTest']) {
		switch(navigator.appName) {
			case "Netscape"	:
				var mytablefoot = document.all.item('_'+fieldName+'_afficheTableFoot');
				break;
			default:
				var mytablefoot = document.getElementsByName('_'+fieldName+'_afficheTableFoot').item(0);
				break;
		}
		
		mycurrent_row = document.createElement('TR');
		
		if((typeof delRemove) == 'undefined' || delRemove==null) {
			mycurrent_cell=document.createElement('TD');
			mycurrent_row.appendChild(mycurrent_cell);
		}
		
		for(fld in dataArray) {
			if(dataArray[fld]['hide_column']){
				continue;
			}
			else if(inArray(dataArray[fld]['field_type'], new Array('section', 'hidden'))) {
				continue;
			}
		
			if(dataArray[fld]['field_type'] == 'multiselect') {
				for(sFld in dataArray[fld]['array']) {
					mycurrent_cell=document.createElement('TD');
					mycurrent_row.appendChild(mycurrent_cell);
				}
			}
			else {
				if(inArray(dataArray[fld]['field_type'], new Array('currency', 'currency_no_sum'))) {
					mycurrent_cell=document.createElement('TD');
					mycurrent_cell.className = 'verno8';
					mycurrent_cell.setAttribute('align','right');
					mycurrent_cell.noWrap = true;
					mycurrent_div=document.createElement('DIV');
					mycurrent_div.setAttribute('class','verno8');
					mycurrent_div.setAttribute('id','div_'+fld+'_formatted');
					mycurrent_cell.appendChild(mycurrent_div);
					mycurrent_row.appendChild(mycurrent_cell);	
				} 
				else {
					mycurrent_cell=document.createElement('TD');
					mycurrent_row.appendChild(mycurrent_cell);
				}
			}
		}
		
		window['_'+fieldName+'_lastRowInTable'] = mycurrent_row;
		mytablefoot.appendChild(mycurrent_row);
		
	}
	//alert("done "+fieldName+"!");
}//end function _initTableHF

function _deleteRecordData(fieldName, rndVal) {
	var obj = window['_'+fieldName+'_V_'+rndVal];
	
	switch(navigator.appName) {
		case "Netscape"	:
			var rmv = obj.parentNode.removeChild(obj);
			break;
		default:
			var rmv = obj.removeNode(true);
			break;
	}
	
	
	if(rmv) {
		window['_'+fieldName+'_totalRows'] = window['_'+fieldName+'_totalRows'] - 1;
	
		if(window[fieldName+'_isThereAnyCurrencyFieldTest']) {
			for(fld in window[fieldName+'_isThereAnyCurrencyField']) { 
				
				eval("var var_"+fld+"_totField = getObjectFromName('"+fld+"_tot');");
				eval("var var_"+fld+"_totValue = var_"+fld+"_totField.value;");
				
				var xO = operationSpeciale[fld];
				if(xO!=null) {
					eval(xO['remove']);
				}
				else {
					eval("var_"+fld+"_totField.value = parseFloat(var_"+fld+"_totValue) - parseFloat(window['Tot_"+fld+"_'+rndVal]);");
				}
				
				eval("document.getElementById('div_"+fld+"_formatted').innerHTML = \"<b>\"+formatterNombre(var_"+fld+"_totField.value)+\"</b>\";");
			} 
		} 
	
		if(window['_'+fieldName+'_totalRows'] == 0) {
			switch(navigator.appName) {
				case "Netscape"	:
					window['_'+fieldName+'_firstRowInTable'].parentNode.removeChild(window['_'+fieldName+'_firstRowInTable']);
					break;
				default:
					window['_'+fieldName+'_firstRowInTable'].removeNode(true);
					break;
			}
			
			if(window[fieldName+'_isThereAnyCurrencyFieldTest']) {
				switch(navigator.appName) {
					case "Netscape"	:
						window['_'+fieldName+'_lastRowInTable'].parentNode.removeChild(window['_'+fieldName+'_lastRowInTable']);
						break;
					default:
						window['_'+fieldName+'_lastRowInTable'].removeNode(true);
						break;
				}
			}
		}
	}
}//end function _deleteRecord

function _addRecordData(fieldName, dataArray, data, colorTr, rndVal, delRemove) {
	for(fld in dataArray) { 
		if(dataArray[fld]['hide_column']){
			continue;
		}
		else if(dataArray[fld]['no_javascript'])
			continue;
	
		switch(dataArray[fld]['field_type']) {
			case 'section':
				continue;
			case 'multiselect':
				for(sFld in dataArray[fld]['array']) {
					var xD = dataArray[fld]['array'];
					if(sFld != (xD.length-1))
						prefiX = "i"+sFld+"_";
					else
						prefiX = "";
						
					eval("var var_"+prefiX+fld+"_field = data['"+prefiX+fld+"'];");
					eval("var var_"+prefiX+fld+"_text = var_"+prefiX+fld+"_field['text'];");
					eval("var var_"+prefiX+fld+"_value = var_"+prefiX+fld+"_field['value'];");
				}
				break;
			case 'currency':
				eval("var var_"+fld+"_field = data['"+fld+"'];");
				eval("var var_"+fld+"_text = var_"+fld+"_field['text'];");
				eval("var var_"+fld+"_value = var_"+fld+"_field['value'];");
				//eval("var var_"+fld+"_format_number_div = document.getElementById(\"format_number_\"+\""+fld+"\");");
				//alert("var_"+fld+"_totField = document.all.item('"+fld+"_tot');");
				eval("var_"+fld+"_totField = getObjectFromName('"+fld+"_tot');");
				eval("var var_"+fld+"_totValue = var_"+fld+"_totField.value;");
				break;
			case 'currency_no_sum':
				eval("var var_"+fld+"_field = data['"+fld+"'];");
				eval("var var_"+fld+"_text = var_"+fld+"_field['text'];");
				eval("var var_"+fld+"_value = var_"+fld+"_field['value'];");
				//eval("var var_"+fld+"_format_number_div = document.getElementById(\"format_number_\"+\""+fld+"\");");
				break;
			default:
				eval("var var_"+fld+"_field = data['"+fld+"'];");
				eval("var var_"+fld+"_text = var_"+fld+"_field['text'];");
				eval("var var_"+fld+"_value = var_"+fld+"_field['value'];");
				break;
		}
	}
	
	switch(navigator.appName) {
		case "Netscape"	:
			var mytablebody = document.all.item('_'+fieldName+'_afficheTable');
			break;
		default:
			var mytablebody = document.getElementsByName('_'+fieldName+'_afficheTable').item(0);
			break;
	}
	
	
	//alert("before init "+fieldName+"! \n\n window['_'"+fieldName+"'_totalRows'] = "+window['_'+fieldName+'_totalRows']);
	if(window['_'+fieldName+'_totalRows'] == 0) {
		_initTableHF(fieldName, dataArray, delRemove);
	}
	//alert("after init "+fieldName+"!");
			
	mycurrent_row = document.createElement('TR');
	
	if((typeof rndVal) == 'undefined' || rndVal==null) {
		var d = new Date();
		var rndVal = (String)(d.getFullYear())+(String)(d.getMonth() + 1)+(String)(d.getDate())+(String)(d.getHours())+(String)(d.getMinutes())+(String)(d.getSeconds())+(String)(d.getMilliseconds());
	}
	
	///////////////////////////////////////////////////////////////////////////
	//creating the delete cell
	if((typeof delRemove) == 'undefined' || delRemove==null) {
		mycurrent_cell=document.createElement('TD');
		mycurrent_cell.setAttribute('align','center');
		mycurrent_cell.noWrap = true;
		mycurrent_cell.innerHTML = "<a href=\"javascript: _"+fieldName+"_deleteRecord('"+rndVal+"');\"><img border='0' src='../../images/divers/x_delete.gif'></a>";
		mycurrent_row.appendChild(mycurrent_cell);
	}
	
	//alert('rndVal = '+rndVal);
	
	//creating the cells
	
	var re = new RegExp("\r\n", "g");
			
					
	for(fld in dataArray) {
		if(dataArray[fld]['hide_column']){
			continue;
		}
		else if(inArray(dataArray[fld]['field_type'], new Array('section', 'hidden'))) {
			continue;
		}
	
		if(dataArray[fld]['field_type'] == 'multiselect') {
			for(sFld in dataArray[fld]['array']) {
				mycurrent_cell=document.createElement('TD');
				mycurrent_cell.style.color = colorTr;
				mycurrent_cell.vAlign = 'top';
				mycurrent_cell.className = 'verno8';
				///////////////////////////////////////////////////////////////////////////
				///////////////////////////////////////////////////////////////////////////
				mycurrent_cell.noWrap = true;
				///////////////////////////////////////////////////////////////////////////
				///////////////////////////////////////////////////////////////////////////
				
				switch(navigator.appName) {
					case "Netscape"	:
						eval("currenttext = document.createTextNode(var_"+(sFld == (dataArray[fld]['array'].length-1)?"":"i"+sFld+"_")+fld+"_text.replace(re, \"<br/>\"));");
						mycurrent_cell.appendChild(currenttext);
						
						if(sFld == (dataArray[fld]['array'].length-1)) {
							hiddenValue=document.createElement('INPUT');
							hiddenValue.type = "hidden";
							eval("var nameH = \""+fieldName+"["+fld+"]["+rndVal+"]\";");
							eval("var valueH = var_"+fld+"_value;");
							hiddenValue.setAttribute("NAME", nameH);
							hiddenValue.setAttribute("VALUE", valueH);
							mycurrent_cell.appendChild(hiddenValue);
						}
						break;
					default:
						currenttext = document.createElement('');
						eval("if(var_"+(sFld == (dataArray[fld]['array'].length-1)?"":"i"+sFld+"_")+fld+"_text) currenttext.innerHTML = var_"+(sFld == (dataArray[fld]['array'].length-1)?"":"i"+sFld+"_")+fld+"_text.replace(re, \"<br/>\");");
		
						mycurrent_cell.appendChild(currenttext);
						if(sFld == (dataArray[fld]['array'].length-1)) {
							hiddenValue=document.createElement('');
							eval("var nameH = \""+fieldName+"["+fld+"]["+rndVal+"]\";");
							eval("var valueH = var_"+fld+"_value;");
							hiddenValue.innerHTML = "<input type=\"hidden\" name=\""+nameH+"\" value=\""+valueH+"\">";
							mycurrent_cell.appendChild(hiddenValue);
						}
						break;
				}
				
				
				mycurrent_row.appendChild(mycurrent_cell);
			}
		}
		else {
			mycurrent_cell=document.createElement('TD');
			mycurrent_cell.style.color = colorTr;
			mycurrent_cell.vAlign = 'top';
			mycurrent_cell.className = 'verno8';
			///////////////////////////////////////////////////////////////////////////
			///////////////////////////////////////////////////////////////////////////
			eval("window['Tot_"+fld+"_'+rndVal] = var_"+fld+"_value;");
			
			if(dataArray[fld]['field_type'] != 'textarea') {
				mycurrent_cell.noWrap = true;
			}
			
			if(inArray(dataArray[fld]['field_type'], new Array('currency', 'currency_no_sum'))) {
				mycurrent_cell.align = 'right';
				eval("var_"+fld+"_text = formatterNombre(var_"+fld+"_text);");
				
				if(inArray(dataArray[fld]['field_type'], new Array('currency'))) {
					if(operationSpeciale[fld] != null) {
						eval(operationSpeciale[fld]['add']);
					}
					else {
						eval("var_"+fld+"_totField.value = parseFloat(var_"+fld+"_totValue) + parseFloat(var_"+fld+"_value);");
					}
					
					eval("document.getElementById('div_"+fld+"_formatted').innerHTML = \"<b>\"+formatterNombre(var_"+fld+"_totField.value)+\"</b>\";");
				}
			}
			
			///////////////////////////////////////////////////////////////////////////
			///////////////////////////////////////////////////////////////////////////
			
			switch(navigator.appName) {
				case "Netscape"	:
					eval("currenttext = document.createTextNode((typeof var_"+fld+"_text) != 'undefined' && var_"+fld+"_text!=null?var_"+fld+"_text.replace(re, \"<br/>\"):'');");
					mycurrent_cell.appendChild(currenttext);
					
					if(inArray(dataArray[fld]['field_type'], new Array('date'))) {
						var varFldSplit;
						eval("var varFldSplit = var_"+fld+"_value.split(\"-\");");
						
						hiddenValue=document.createElement('INPUT');
						hiddenValue.type = "hidden";
						eval("var nameH = \""+fieldName+"["+fld+"]["+rndVal+"][year]\";");
						var valueH = varFldSplit[0];
						hiddenValue.setAttribute("NAME", nameH);
						hiddenValue.setAttribute("VALUE", valueH);
						mycurrent_cell.appendChild(hiddenValue);
						
						hiddenValue=document.createElement('INPUT');
						hiddenValue.type = "hidden";
						eval("var nameH = \""+fieldName+"["+fld+"]["+rndVal+"][month]\";");
						var valueH = varFldSplit[1];
						hiddenValue.setAttribute("NAME", nameH);
						hiddenValue.setAttribute("VALUE", valueH);
						mycurrent_cell.appendChild(hiddenValue);
						
						hiddenValue=document.createElement('INPUT');
						hiddenValue.type = "hidden";
						eval("var nameH = \""+fieldName+"["+fld+"]["+rndVal+"][day]\";");
						var valueH = varFldSplit[2];
						hiddenValue.setAttribute("NAME", nameH);
						hiddenValue.setAttribute("VALUE", valueH);
						mycurrent_cell.appendChild(hiddenValue);
					}
					else {
						hiddenValue=document.createElement('INPUT');
						hiddenValue.type = "hidden";
						eval("var nameH = \""+fieldName+"["+fld+"]["+rndVal+"]\";");
						eval("var valueH = var_"+fld+"_value;");
						hiddenValue.setAttribute("NAME", nameH);
						hiddenValue.setAttribute("VALUE", valueH);
						mycurrent_cell.appendChild(hiddenValue);
					}
					
					break;
				default:
					currenttext = document.createElement('');
					eval("if((typeof var_"+fld+"_text) != 'undefined' && var_"+fld+"_text!=null) currenttext.innerHTML = var_"+fld+"_text.replace(re, \"<br/>\");");
					mycurrent_cell.appendChild(currenttext);
					
					hiddenValue=document.createElement('');
			
					if(inArray(dataArray[fld]['field_type'], new Array('date'))) {
						var varFldSplit;
						eval("var varFldSplit = var_"+fld+"_value.split(\"-\");");
						
						eval("var nameH = \""+fieldName+"["+fld+"]["+rndVal+"][year]\";");
						var valueH = varFldSplit[0];
						hiddenValue.innerHTML = "<input type=\"hidden\" name=\""+nameH+"\" value=\""+valueH+"\">";
						
						eval("var nameH = \""+fieldName+"["+fld+"]["+rndVal+"][month]\";");
						var valueH = varFldSplit[1];
						hiddenValue.innerHTML += "<input type=\"hidden\" name=\""+nameH+"\" value=\""+valueH+"\">";
						
						eval("var nameH = \""+fieldName+"["+fld+"]["+rndVal+"][day]\";");
						var valueH = varFldSplit[2];
						hiddenValue.innerHTML += "<input type=\"hidden\" name=\""+nameH+"\" value=\""+valueH+"\">";
					}
					else {
						eval("var nameH = \""+fieldName+"["+fld+"]["+rndVal+"]\";");
						eval("var valueH = var_"+fld+"_value;");
						hiddenValue.innerHTML = "<input type=\"hidden\" name=\""+nameH+"\" value=\""+valueH+"\">";
					}
					mycurrent_cell.appendChild(hiddenValue);
					break;
			}
			
			///////////////////////////////////////////////////////////////////
			///////////////////////////////////////////////////////////////////
			///////////////////////////////////////////////////////////////////
			
			
			mycurrent_row.appendChild(mycurrent_cell);
		}
	}
	
	
	//append to the table	
	
	mytablebody.appendChild(mycurrent_row);
	
	//creating an adequate object to delete the record easily
	
	window['_'+fieldName+'_V_'+rndVal] = mycurrent_row;
	
	return true;
	
}//end function _addRecordData


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


function select_countSelected(selectObj) {
	var cnt = 0;

	if(selectObj != null) {
		var optionsCollection = selectObj.options;
		if(optionsCollection != null) {
			var oIndex = 0;
	
			for(oIndex=0;oIndex < optionsCollection.length;oIndex++) {
				if(optionsCollection.item(oIndex).selected)
					cnt++;
			}
		}
	}
  
	return cnt;
}//end function select_countSelected

function select_countSelectedByName(selectObjName) {
	return select_countSelected(document.getElementsByName(selectObjName)[0]);
}//end function select_countSelectedByName

function select_removeSelected(selectObj) {
	if(selectObj == null || selectObj.selectedIndex == -1)
		return;
	// select_removeElement(selectObj.selectedIndex);

	var optionsCollection = selectObj.options;
	if(optionsCollection != null) {
		var oIndex = 0;

		for(oIndex = optionsCollection.length - 1;oIndex >= 0;oIndex--) {
			if(optionsCollection.item(oIndex).selected)
				selectObj.remove(oIndex);
		}
	}
}//end function select_removeSelected

function select_itemValueExists(selectObj, iValue) {
	if(selectObj == null)
		return false;

	var itemValueExists = false;
	var optionList = selectObj.options;
	if(optionList != null && optionList.length != 0) {
		var oIndex = 0;
		for(oIndex = 0;oIndex < optionList.length;oIndex++) {
			if(optionList.item(oIndex).value == iValue) {
				itemValueExists = true;
				break;
			}
		}
	}
	return itemValueExists;
}//end function select_itemValueExists

function select_removeElement(selectObj, indx) {
	if(selectObj == null)
		return;
	selectObj.remove(indx);
}//end function select_removeElement

function select_removeAll(selectObj) {
	if(selectObj == null)
		return;
	// select_removeElement(selectObj.selectedIndex);

	var optionsCollection = selectObj.options;
	if(optionsCollection != null) {
		var oIndex = 0;
		
		for(oIndex = optionsCollection.length - 1;oIndex >= 0;oIndex--)
			selectObj.remove(oIndex);
	}
}//end function select_removeAll

function select_moveSelectedUp(selectObjName) {
	//////////////////////////////////////////////////////////////
	if(selectObjName == null)
		return;
	var selectObj = document.getElementsByName(selectObjName)[0];
	if(selectObj == null || selectObj.options == null || selectObj.options.length == 0 || select_countSelected(selectObj) == 0 || selectObj.options.item(0).selected)
		return;
	//////////////////////////////////////////////////////////////
	var oIndex = 0; 
	var optionList = selectObj.options; 
	for(oIndex = 0;oIndex < optionList.length;oIndex++) {
		if(optionList.item(oIndex).selected) {
			var tmpOption = optionList.item(oIndex).removeNode();
			
			switch(navigator.appName) {
				case 'Netscape'	:
					selectObj.appendChild(tmpOption, oIndex - 1);
					break;
				default:
					selectObj.add(tmpOption, oIndex - 1);
					break;
			}
		}
	}
}//end function select_moveSelectedUp

function select_moveSelectedDown(selectObjName) {
	/////////////////////////////////////////////////////////////////////////////
	if(selectObjName == null)
		return;
	var selectObj = document.getElementsByName(selectObjName)[0];
	if(selectObj == null || selectObj.options == null || selectObj.options.length == 0 || select_countSelected(selectObj) == 0 || selectObj.options.item(selectObj.options.length - 1).selected)
		return;
	/////////////////////////////////////////////////////////////////////////////
	var oIndex = 0; 
	var optionList = selectObj.options; 
	
	for(oIndex = optionList.length - 1;oIndex >= 0 ;oIndex--) {
		if(optionList.item(oIndex).selected) {
			var tmpOption = optionList.item(oIndex).removeNode();
			
			switch(navigator.appName) {
				case 'Netscape'	:
					selectObj.appendChild(tmpOption, oIndex + 1);
					break;
				default:
					selectObj.add(tmpOption, oIndex + 1);
					break;
			}
		}
	}
}//end function select_moveSelectedDown

function sts_chooseAll(srcSelectName, destSelectName) {
	var srcSelect = document.getElementsByName(srcSelectName)[0];
	if(srcSelect == null || srcSelect.options.length == 0)
		return;
	var destSelect = document.getElementsByName(destSelectName)[0];
	if(destSelect == null)
		return;
	
	// remove all elements first from destSelect
	select_removeAll(destSelect);
	var srcIndex = 0;
	for(srcIndex = 0;srcIndex < srcSelect.options.length;srcIndex++) {
		switch(navigator.appName) {
			case 'Netscape'	:
				destSelect.appendChild(new Option(srcSelect.options.item(srcIndex).innerText, srcSelect.options.item(srcIndex).value));
				break;
			default:
				destSelect.add(new Option(srcSelect.options.item(srcIndex).innerText, srcSelect.options.item(srcIndex).value));
				break;
		}
	}
}//end function sts_chooseAll

function sts_selectAll(selectName) {
	var srcSelect = document.getElementsByName(selectName)[0];
	if(srcSelect == null || srcSelect.options.length == 0)
		return;
	
	// remove all elements first from destSelect
	var srcIndex = 0;
	for(srcIndex = 0;srcIndex < srcSelect.options.length;srcIndex++)
		srcSelect.options.item(srcIndex).selected = true;
}//end function sts_chooseAll

function sts_chooseSelected(srcSelectName, destSelectName) {
	srcSelect = document.getElementsByName(srcSelectName)[0];
	if(srcSelect == null || srcSelect.options == null || srcSelect.options.length == 0)
		return;
	destSelect = document.getElementsByName(destSelectName)[0];
	if(destSelect == null)
		return;
	
	var srcOptions = srcSelect.options;
	var srcIndex = 0;
	for(srcIndex = 0;srcIndex < srcOptions.length;srcIndex++) {
		if(srcOptions.item(srcIndex).selected) {
			if(!select_itemValueExists(destSelect, srcOptions.item(srcIndex).value)) {
				
				switch(navigator.appName) {
					case 'Netscape'	:
						destSelect.appendChild(new Option(srcOptions.item(srcIndex).innerText, srcOptions.item(srcIndex).value));
						break;
					default:
						destSelect.add(new Option(srcOptions.item(srcIndex).innerText, srcOptions.item(srcIndex).value));
						break;
				}
			}
		}
	}
}//end function sts_chooseSelected

function sts_removeSelected(destSelectName) {
	destSelect = document.getElementsByName(destSelectName)[0];
	if(destSelect == null)
		return;
		
	select_removeSelected(destSelect);
}//end function sts_removeSelected

function sts_removeAll(destSelectName) {
	destSelect = document.getElementsByName(destSelectName)[0];
	if(destSelect == null)
		return;
	
	select_removeAll(destSelect);
}//end function sts_removeAll


function populateSelectFromArray(objName, dataArray) {
	oSelect = document.all.item(objName);
	
	var key;
						
	oSelect.options.length = 1;
	
	var oOption = document.createElement("OPTION");
	oOption.value = "";
	oOption.text = "";
	switch(navigator.appName) {
		case 'Netscape'	:
			oSelect.appendChild(oOption);
			break;
		default:
			oSelect.add(oOption);
			break;
	}
	
	oSelect.options.length = 1;
	oSelect.selectedIndex = 0;
	
	for(key in dataArray) {
		var oOption = document.createElement("OPTION");
		oOption.value = key;
		oOption.text = dataArray[key];
		switch(navigator.appName) {
			case 'Netscape'	:
				oSelect.appendChild(oOption);
				break;
			default:
				oSelect.add(oOption);
				break;
		}
	}
		
}//end function sts_removeAll


function checkboxCheckAll(obj, all_chk_name) {
	switch(navigator.appName) {
		case "Netscape"	:
			var elem = document.all.item(all_chk_name);
			break;
		default:
			var elem = document.getElementsByName(all_chk_name);
			break;
	}
	alert(all_chk_name);
	if(obj.checked==true)
		check = true;
	else
		check = false;
		
	for(i=0;i<elem.elements.length;i++) {
		elem.elements[i].checked = check;
	}
}

function checkboxCheckMe(obj, chk_all_name) {
	switch(navigator.appName) {
		case "Netscape"	:
			var elem = document.all.item(chk_all_name);
			break;
		default:
			var elem = document.getElementsByName(chk_all_name);
			break;
	}
	alert(chk_all_name);
	if(obj.checked == false)
		elem.checked = false;
}


function getObjectFromName(objName) {
	//alert('objName='+objName);
	switch(navigator.appName) {
		case "Netscape"	:
			return document.all.item(objName);
		default:
			return document.getElementsByName(objName)[0];
	}
}

function getObjectValueFromName(objName) {
	var obj = getObjectFromName(objName);
	return obj.value;
}
