function OpenWriteToLayer(objDoc, idLayer) {
	if( objDoc.all ) { objDoc.all[idLayer].innerHTML = ""; return; }
	if( objDoc.layers ) { objDoc.layers[idLayer].clear(); return; }	
	else { var objLayer = objDoc.getElementById(idLayer); objLayer.innerHTML = ""; }
}
function WriteToLayer(objDoc, idLayer, strHtml) {
	if( objDoc.all ) { objDoc.all[idLayer].innerHTML = objDoc.all[idLayer].innerHTML + strHtml;	return; }
	if( objDoc.layers ) { objDoc.layers[idLayer].write(strHtml); return; }
	else { var objLayer = objDoc.getElementById(idLayer); objLayer.innerHTML = objLayer.innerHTML + strHtml; }
}
function CloseWriteToLayer(objDoc, idLayer) {
	if( objDoc.layers ) objDoc.layers[idLayer].close();
}
function alertMsg(oCtrl, strCalc, strMsg) {
	alert(strMsg); SelectSsForm(strCalc); oCtrl.focus();
}
function isNumValid(strNumParam, iBorneInf, iBorneSup, bInt) {
	var bOk = false;
	strNum = new String(strNumParam);
	strNum = strNum.replace(/,/i, ".");
	var n = new Number(strNum);
	if( n.toString() == "NaN" ) bOk = false;
	else {if( bInt==true && n!=Math.floor(n) ) { return false; }
	if( !(iBorneInf == 0 && iBorneSup == 0) )
	if( iBorneInf <= n && n <= iBorneSup ) bOk = true;
	else bOk = false; else bOk = true; }
	return bOk;
}
function isDateValidJJMMAAAA(strDateParam) {
	strDate = new String(strDateParam);
	if( strDate.length != 10 ) return false;
	var bOk = false; var bBisex = false; var dd = new Number(strDate.substring(0, 2));
	var mm = new Number(strDate.substring(3, 5)); var aaaa = new Number(strDate.substring(6, 10));
	if( strDate.charAt(2) != "\/" || strDate.charAt(5) != "\/" ) bOk = false;
	else if( aaaa.toString() == "NaN" || aaaa<1800 || aaaa>2200 ) bOk = false;
	else { if( (aaaa%4==0 && aaaa%100!=0) || (aaaa%400==0 && aaaa%100==0) ) bBisex = true;
	if( mm.toString() == "NaN" || mm<1 || mm>12 )	bOk = false;
	else if( dd.toString() == "NaN" || (dd<1 || dd>31) || ((dd<1 || dd>30) && (mm==4 || mm==6 || mm==9 || mm==11)) ||
	((dd<1 || dd>29) && mm==2 && bBisex==true) || ((dd<1 || dd>28) && mm==2 && bBisex==false) )	bOk = false;
	else bOk = true; }
	delete dd; delete mm; delete aaaa; return bOk;
}
function isRadioCheck(oCtrl) {
	var nbElt = oCtrl.length;	var bRes = false;
	for(var i=0; i<nbElt; i++) bRes = bRes || oCtrl[i].checked;
	return bRes;
}
function ReplaceSpecialChar(oCtrl, type) {
  if( type=="memo" || type=="text" ) {
		var strTexte = new String(oCtrl.value);
		var strNew = "";
		for (j=0; j<strTexte.length; j++) {
	    if( strTexte.charCodeAt(j) == 8217 ) strNew = strNew + "'";
      else if( strTexte.charCodeAt(j) > 255 ) strNew = strNew + " ";
      else strNew = strNew + strTexte.charAt(j);
    }
    oCtrl.value = strNew;
  }
}
function VerifCtrl(f, nbCtrl) {
	for(i=0; i<nbCtrl; i++) {
		var layerName = tabCtrl[i][0];
		var ctrlName = tabCtrl[i][1];
		var type = tabCtrl[i][2];
		var bReq = tabCtrl[i][3];
		var oCtrl = eval("f.elements['"+ctrlName+"'];");
		if( oCtrl && oCtrl.numCtrl ) {
			ReplaceSpecialChar(oCtrl, type);
			if( bReq==true ) {
				if( type=="memo" || type=="text" || type=="date10" || type=="int" || type=="radio" ) {
					if( oCtrl.value=="" )	{ alertMsg(oCtrl, layerName, "Ce champ est obligatoire."); return false; }
				} else
					if( type=="radio" ) {
						if( isRadioCheck(oCtrl) == false ) {
							if( layerName == "Section4" ) 
								{ alertMsg(oCtrl, layerName, "Vous devez sélectionner le type de compte."); return false; }
							else
								{ alertMsg(oCtrl, layerName, "Les choix Oui / Non sont obligatoires."); return false; }
						}
					}
			} 
			// vérifie le bon format pour une information existante
			switch( type ) {
				case "memo" : if( oCtrl.value.length>3999 ) { alertMsg(oCtrl, layerName, "Ce champ est limité à 4000 caractères."); return false; } break;
				case "int" : if( !isNumValid(oCtrl.value, 0, 0, true) ) { alertMsg(oCtrl, layerName, "Ce champ nécessite un nombre entier."); return false; } break;
				case "date10" : if( oCtrl.value!="" && !isDateValidJJMMAAAA(oCtrl.value) ) { alertMsg(oCtrl, layerName, "Ce champ nécessite une date au format jj/mm/aaaa."); return false; } break;
			}
		}
	}
	return true;
}
