//var nbProposalsPerPage=3;
//var offsetRdvPageProposal=0;


//fonctions utilitaires

//formatte une date represent?e dans la string dateValueStr selon le format dateFormatOrigStr,
// vers le format dateFormatDestStr
// renvoie: une string (date formatt?e)
//ATTENTION: utilise les fonction de date de Calendar.js !
// Field        | Full Form          | Short Form
// -------------+--------------------+-----------------------
// Year         | yyyy (4 digits)    | yy (2 digits), y (2 or 4 digits)
// Month        | MMM (name or abbr.)| MM (2 digits), M (1 or 2 digits)
//              | NNN (abbr.)        |
// Day of Month | dd (2 digits)      | d (1 or 2 digits)
// Day of Week  | EE (name)          | E (abbr)
// Hour (1-12)  | hh (2 digits)      | h (1 or 2 digits)
// Hour (0-23)  | HH (2 digits)      | H (1 or 2 digits)
// Hour (0-11)  | KK (2 digits)      | K (1 or 2 digits)
// Hour (1-24)  | kk (2 digits)      | k (1 or 2 digits)
// Minute       | mm (2 digits)      | m (1 or 2 digits)
// Second       | ss (2 digits)      | s (1 or 2 digits)
// AM/PM        | a                  |
//
// NOTE THE DIFFERENCE BETWEEN MM and mm! Month=MM, not mm!
// Examples:
//  "MMM d, y" matches: January 01, 2000
//                      Dec 1, 1900
//                      Nov 20, 00
//  "M/d/yy"   matches: 01/20/00
//                      9/2/00
//  "MMM dd, yyyy hh:mm:ssa" matches: "January 01, 2000 12:30:45AM"

function translateDateFromFormatToFormat(dateValueStr,dateFormatOrigStr,dateFormatDestStr){
	var date=new Date();
	date.setTime(getDateFromFormat(dateValueStr,dateFormatOrigStr));
	var retDateStrFormatted=formatDate(date,dateFormatDestStr);
	return retDateStrFormatted;
}

function inactivate(idHtmlField){
	document.getElementById(idHtmlField).disabled=true;
	document.getElementById(idHtmlField).selectedIndex=0;
	document.getElementById(idHtmlField).value="";
//	document.getElementById(idHtmlField).disabled=true;
}

function activate(idHtmlField){
	document.getElementById(idHtmlField).disabled=false;
}

function hide(idHtmlField){
	document.getElementById(idHtmlField).style.visibility="hidden"
}

function show(idHtmlField){
	document.getElementById(idHtmlField).style.visibility='visible'
}

function checkNotNullNotEmpty(idHtmlField){
	var valueHtmlField=document.getElementById(idHtmlField).value;
	var isNotNullNotEmpty=valueHtmlField!=null && valueHtmlField!="" ;
	
	return isNotNullNotEmpty;
}

function isNumeric(idHtmlField){
	if(!checkNotNullNotEmpty(idHtmlField)) return false;
	
	var valueHtmlField=document.getElementById(idHtmlField).value;
	var numVal=parseInt(valueHtmlField, 10);
	
	if(isNan(numVal)){
	 	return false;
	}else{
	 	return true;
	}
	
	//return typeof(valueHtmlField)=='number';
}


//garde la liste des jours ferm?s dans une var globale
var closedDaysListGlobal=new Array();

function initClosedDaysList(){
	//if(typeof closedDaysListGlobal=='undefined' ||closedDaysListGlobal.length==0
		//&& document.getElementById("dayValueId").value!=null && document.getElementById("dayValueId").value!="" 
	//	){
		var siteSel=document.getElementById("ISiteBeanKeySelect").value;
		var serviceSel=document.getElementById("serviceBeanKeySelect").value;
		refreshDaysList(siteSel,serviceSel);
		//closedDaysListGlobal=AjaxSelectionFormFeeder.getClosedDaysList( siteSel,serviceSel,createListDayCB);
	//}
}


function doInit(){
	var preSelectedSite = document.getElementById("preSelectedSiteKeyID");
	if(preSelectedSite!=null){
		if(document.getElementById("preSelectedSiteKeyID").value==""){
			if(document.getElementById("ISiteBeanKeySelect").value==""){
				onSiteChanged();
			}
		}else{
			//if(typeof document.getElementById("serviceBeanKeySelect")!='undefined' ) {
				if(dwr.util.getValue("serviceBeanKeySelect")==""){
					initWithPreSelectedSite();
				}
			//}
		}
	}
	checkInputsValidityOnReload();
}




/*
var state=null;

function recoverState(){
		if(state==null) return;
		dwr.util.setValue(ISiteBeanKey,state.ISiteBeanKey);
		dwr.util.setValue(serviceBeanKey,state.serviceBeanKey);
		dwr.util.setValue(dayValue,state.dayValue);
		dwr.util.setValue(hourValue,state.hourValue);
	
}



function saveState(){
	state=new Object()
	state.ISiteBeanKey=dwr.util.getValue(ISiteBeanKey);
	state.serviceBeanKey=dwr.util.getValue(serviceBeanKey);
	state.dayValue=dwr.util.getValue(dayValue);
	state.hourValue=dwr.util.getValue(hourValue);
	window.alert(state);
}*/

//on submit selection page 1
//function onSubmitSelection(){

//}


//********************* Gestion des langues ********************* 
// Lorsqu'une langue est choisie dans le 1Â° formulaire.
function onLangChanged(iso639Lang2lettersCode){
	//rÃ©cupÃ©ration du code ISO de la langue (ex: en ou fr)
	var iso639Lang=dwr.util.getValue('IlocaleResolverSelect');
	
	//appel AJAX pour MAJ de la langue de l'interface dans la session.
	AjaxSelectionFormFeeder.setLanguage(iso639Lang,setLanguageCB);
}
// callback de MAJ de la langue: rechargement de la page.
function setLanguageCB(data){
	window.location.reload();
}

//*****************  Liste des sites ************************

function initWithPreSelectedSite(){
	var sitePreSel=document.getElementById("preSelectedSiteKeyID").value;
	
	if(typeof sitePreSel=='undefined' || sitePreSel=="") {
		return;
	}

	inactivate("dayValueId");
	hide("anchorCal");
	inactivate("hourValueSelect");
	inactivate("butValid");
		
	refreshServicesList(document.getElementById("ISiteBeanKeySelect").value);
}

//l'?v?nement s?lection d'un site s'est produit
function onSiteChanged(){
	var siteSel=document.getElementById("ISiteBeanKeySelect").value;
	if(siteSel=='' || siteSel=='undefined') { //cas o? rien n'a ?t? choisi
		inactivate("serviceBeanKeySelect");
		inactivate("dayValueId");
		hide("anchorCal");
		inactivate("hourValueSelect");
		inactivate("butValid");
		return;
	}
	
	inactivate("dayValueId");
	hide("anchorCal");
	inactivate("hourValueSelect");
	inactivate("butValid");
	refreshServicesList(siteSel);
}


//*****************  Liste des sites ************************
//rafraichir la liste des sites 
function refreshSiteList()
{
	AjaxSelectionFormFeeder.getSiteBeanList(createListSiteCB);
	     //dwr.engine._execute('http://localhost:80/eAppointment/dwr', 'AjaxSelectionFormFeeder', 'getSiteBeanList', "blah", createListSiteCB);
}

function createListSiteCB(data) //fction callback 
{
	var fieldIdStr='ISiteBeanKeySelect';
	if(typeof data=='') doInit();
		var oldLib=document.getElementById(fieldIdStr).options[0].text;
		
	    dwr.util.removeAllOptions(fieldIdStr);
	    
	    dwr.util.addOptions(fieldIdStr, [{key:'',name:oldLib}],'key','name');
		dwr.util.addOptions(fieldIdStr,data,'key','name');


	if(data.length >1){
		document.getElementById('idServiceBlock').style.visibility="visible";
		activate(fieldIdStr);
	}else{
		dwr.util.setValue(fieldIdStr,document.getElementById(fieldIdStr).options[1].value);
		document.getElementById('idServiceBlock').style.visibility="hidden";
		onServiceChanged();
	}
}


//*****************  Liste des services ************************
//rafraichir la liste des services pour le site choisi
function refreshServicesList(siteSel)
{
	AjaxSelectionFormFeeder.getServiceBeanList( siteSel,createListServiceCB);
}

function createListServiceCB(data) //fction callback 
{
	var fieldIdStr='serviceBeanKeySelect';
	if(typeof data=='') doInit();
		var oldLib=document.getElementById(fieldIdStr).options[0].text;
		
	    dwr.util.removeAllOptions(fieldIdStr);
	    
	    dwr.util.addOptions(fieldIdStr, [{serviceKey:'',name:oldLib}],'serviceKey','name');
		dwr.util.addOptions(fieldIdStr,data,'serviceKey','name');


	if(data.length >1){
		document.getElementById('idServiceBlock').style.visibility="visible";
		activate(fieldIdStr);
	}else{
		dwr.util.setValue(fieldIdStr,document.getElementById(fieldIdStr).options[1].value);
		document.getElementById('idServiceBlock').style.visibility="hidden";
		onServiceChanged();
	}
}

// m?thode pour d?sactiver les champs pendant le calcul du calendrier
function onServiceChangedInactivation(){
	var serviceSel=document.getElementById("serviceBeanKeySelect").value;
	if(serviceSel!='') {
		document.getElementById('ISiteBeanKeySelect').disabled = true;
		document.getElementById('serviceBeanKeySelect').disabled = true;		
	}
}

// m?thode pour r?activer les champs ? l'issue du calcul du calendrier.
function onServiceChangedActivation(){
	document.getElementById('ISiteBeanKeySelect').disabled = false;
	document.getElementById('serviceBeanKeySelect').disabled = false;	
}


//l'?v?nement s?lection d'un service s'est produit
function onServiceChanged(){

	var serviceSel=document.getElementById("serviceBeanKeySelect").value;
	//inactivate("ISiteBeanKeySelect");
	//inactivate("serviceBeanKeySelect");
	if(serviceSel=='') { //cas o? rien n'a ?t? choisi
		inactivate("dayValueId");
		hide("anchorCal");
		inactivate("hourValueSelect");
		inactivate("butValid");
		onServiceChangedActivation();
		return;
	}
	
	var siteSel=document.getElementById("ISiteBeanKeySelect").value;
	refreshDaysList(siteSel,serviceSel);
	
	
	onServiceChangedActivation();
	//activate("hourValueSelect");
	//activate("ISiteBeanKeySelect");
	//activate("serviceBeanKeySelect");
}

//*****************  Liste des jours ************************
//rafraichir la liste des jours pour le site et le service choisis
function refreshDaysList(siteSel,serviceSel)
{
	AjaxSelectionFormFeeder.getClosedDaysList( siteSel,serviceSel,createListDayCB);
}

function createListDayCB(data) //fction callback 
{	
	if(data==null){
		window.alert(noAvailableTimeAreaMsg);
		document.getElementById("serviceBeanKeySelect").value="";
		inactivate("dayValueId");
		hide("anchorCal");
		inactivate("hourValueSelect");
		inactivate("butValid");
		onServiceChangedActivation();
	 	return;
	 }
	 
	var closedDaysList=new Array();
	closedDaysList=data;
	
	//garde la liste des jours ferm?s dans une var globale
	closedDaysListGlobal=closedDaysList; 
	
	
	activate("dayValueId");
	show("anchorCal");
	inactivate("hourValueSelect");
	inactivate("butValid");
		
	//ouvre le calendrier
	openCal(false); 
}
//la liste des jours ferm?s

  function openCal(bDoinit){  	
  	onServiceChangedActivation();
  	var monthsTrad =  document.getElementById("monthsBundleValueID").value;
  	var monthsAbrevTrad =  document.getElementById("monthsAbrevBundleValueID").value;
  	var daysTrad =  document.getElementById("daysBundleValueID").value;
 
 	var serviceSel=document.getElementById("serviceBeanKeySelect").value;
 	var siteSel=document.getElementById("ISiteBeanKeySelect").value;
 	if(siteSel=='' || serviceSel=='') return;
 	
  
  	//if(typeof closedDaysListGlobal=='undefined' ||closedDaysListGlobal.length==0){
  	if(bDoinit){
  	 	initClosedDaysList();
  	 }
  
  	var now = new Date();
  	var cal17 ;
    cal17 = new CalendarPopup("divCalendar",monthsTrad,monthsAbrevTrad,daysTrad);
	cal17.setTodayText("");
	var currentDate=new Date()
	
	//initClosedDaysList();
	
	if(typeof closedDaysListGlobal=='undefined' ||closedDaysListGlobal.length==0){
		return;
	}
	
	
	for(i=0;i<closedDaysListGlobal.length;i++){
		currentDate.setTime(getDateFromFormat(closedDaysListGlobal[i],"yyyy-MM-dd"));
	
		if(i==0){
			//grise la periode qui se termine ? la 1? date incluse
			cal17.addDisabledDates(null,formatDate(currentDate,"yyyy-MM-dd"));
		}else if(i==closedDaysListGlobal.length-1){
			//grise la periode qui se commence ? la derniere date incluse
			cal17.addDisabledDates(formatDate(currentDate,"yyyy-MM-dd"),null);
		}else{
			//grise la date
			cal17.addDisabledDates(formatDate(currentDate,"yyyy-MM-dd"));
		}
	}	
	
	//fonction qui sera appel?e lorsque la s?lection sera faite
	cal17.setReturnFunction("newSetReturnFunction");
	
	
	var dateFormatStr=document.getElementById("dateFormatStrId").value;
	cal17.select(document.forms[0].dayValueId,'anchorCal',dateFormatStr);
	
	
  }
  //fonction appel?e car le jour vient d'?tre choisi
  function newSetReturnFunction(y,m,d){
  	//ancienne fonction du calendrier: renseigne le champs destination avec la date choisie
  	CP_tmpReturnFunction(y,m,d);
  	
  	onDayChanged();
  }


//l'?v?nement s?lection d'un jour s'est produit
function onDayChanged(){
	var daySelStr=document.getElementById("dayValueId").value;
	var dayDate=new Date();
	
	var dateFormatStr=document.getElementById("dateFormatStrId").value;
	dayDate.setTime(getDateFromFormat( daySelStr , dateFormatStr));
	
	var daySel =formatDate(dayDate,"yyyy-MM-dd");
	document.getElementById("dayValueIsoID").value=daySel;
	if(daySel=='') { //cas o? rien n'a ?t? choisi
		inactivate("hourValueSelect");
		inactivate("butValid");
		return;
	}
	inactivate("hourValueSelect");
	inactivate("butValid");
	hide("anchorCal");
	
	var siteSel=document.getElementById("ISiteBeanKeySelect").value;
	var serviceSel=document.getElementById("serviceBeanKeySelect").value;
	
	//AjaxSelectionFormFeeder.getTimeAreaBeanListForADay(siteSel,serviceSel, daySel,_nop);
	
	refreshHoursList(daySel);
	
}

//*****************  Liste des heures ************************
//l'?v?nement s?lection d'une heure s'est produite
function onHourChanged(){
	inactivate("butValid");

	var serviceSel=document.getElementById("serviceBeanKeySelect").value;
	if(serviceSel=='') { //cas o? rien n'a ?t? choisi
		
		return;
	}
	
	
	var siteSel=document.getElementById("ISiteBeanKeySelect").value;
	
	var daySelStr=document.getElementById("dayValueId").value;
	var dayDate=new Date();
	var dateFormatStr=document.getElementById("dateFormatStrId").value;
	dayDate.setTime(getDateFromFormat( daySelStr , dateFormatStr ));
	
	var daySel =formatDate(dayDate,"yyyy-MM-dd");
	
	var hourSelStr=document.getElementById("hourValueSelect").value;
	if(hourSelStr=="") return;
	
	AjaxSelectionFormFeeder.initTimeAreaBeanListForDayAndHour(siteSel,serviceSel,daySel, hourSelStr,unlockButtonCB)
	
}

function unlockButtonCB(data)
{
	var bResultInitTimeAreaBeanListForDayAndHour=data;

	if(typeof bResultInitTimeAreaBeanListForDayAndHour!= 'undefined' && !bResultInitTimeAreaBeanListForDayAndHour){
		//pas de crÃ©neau horaire pour RDV pour les valeurs choisies: message d'alerte
		window.alert(noAvailableTimeAreaMsg);
		onServiceChanged();
		
	}else{
		activate("butValid");
	}


//	if(typeof data!= 'undefined' && document.getElementById("butValid").disabled==true){
//	}
	
}

function _nop(data){
}

function refreshHoursList(daySel)
{
	var siteSel=document.getElementById("ISiteBeanKeySelect").value;
	var serviceSel=document.getElementById("serviceBeanKeySelect").value;
	
	AjaxSelectionFormFeeder.getHoursProposalForADay(siteSel,serviceSel, daySel,createListHourCB);
	
	
}
function createListHourCB(data) //fction callback 
{
	//if(typeof data=='undefined') onServiceChanged();
	var fieldIdStr='hourValueSelect';
	var oldLib=document.getElementById(fieldIdStr).options[0].text;
	
    dwr.util.removeAllOptions(fieldIdStr);
    
    dwr.util.addOptions(fieldIdStr, [{id:'',name:oldLib}],'id','name');
	dwr.util.addOptions(fieldIdStr,data);
	
	activate("hourValueSelect");
	show("anchorCal");
	
}

function onSelectionFormSubmit(){
		if(
			document.getElementById("serviceBeanKeySelect").value==""
			||document.getElementById("dayValueId").value==""
			||document.getElementById("hourValueSelect").value=="") return;

	//var  serviceBeanKeySelectLib=(document.getElementById("serviceBeanKeySelect").options[document.getElementById("serviceBeanKeySelect").selectedIndex].text);
	
	//document.getElementById("serviceBeanLibId").value=Utf8.encode(serviceBeanKeySelectLib);
	//document.getElementById("serviceBeanLibId").value=document.getElementById("serviceBeanKeySelect").options[document.getElementById("serviceBeanKeySelect").selectedIndex].text;
	//if(document.getElementById("ISiteBeanKeySelect").options!=null){
		//document.getElementById("ISiteBeanLibId").value=document.getElementById("ISiteBeanKeySelect").options[document.getElementById("ISiteBeanKeySelect").selectedIndex].text;
	//}
	
	checkInputsValidityForFormSubmit();
	//document.selectionForm.submit();
}


function checkState(){
	if(document.getElementById("hourValueSelect").value!=''){
		
	}

}


/**
	VÃ©rifie lors de la soummission du 1Â° formulaire, qu'il existe bien toujours 
	des crÃ©neaux disponibles pour la prise de rendez-vous.
	Utile dans le cas oÃ¹ le formulaire est soumis quelques temps aprÃ¨s avoir Ã©tÃ© renseignÃ©, 
	pour Ã©viter de proposer ensuite Ã  l'utilisateur des rendez-vous qui ne sont plus disponibles.

*/

function checkAvailability(callbackFunction){
	var aSiteKey=document.getElementById("ISiteBeanKeySelect").value;
	var aServiceKey=document.getElementById("serviceBeanKeySelect").value;
//	var aDaySelected=document.getElementById("dayValueIso").value;
	var aStartHour=document.getElementById("hourValueSelect").value;
	var aEndHour=document.getElementById("hourValueSelect").value;
	
	var daySelStr=document.getElementById("dayValueId").value;
	var dayDate=new Date();
	var dateFormatStr=document.getElementById("dateFormatStrId").value;
	dayDate.setTime(getDateFromFormat( daySelStr , dateFormatStr ));
	
	var aDaySelected =formatDate(dayDate,"yyyy-MM-dd");
	
	AjaxSelectionFormFeeder.checkSelectionValidity(aSiteKey, aServiceKey, aDaySelected, aStartHour, aEndHour,callbackFunction) ;
}

/*
	VÃ©rification de la cohÃ©rence du formulaire avant submit.
*/
function checkInputsValidityForFormSubmit(){
	checkAvailability(checkInputsValidityForFormSubmitCB);
}
function checkInputsValidityForFormSubmitCB(data){
	var bInputsValid=data;
	if(bInputsValid){
		document.selectionForm.submit();
	}else{
		window.alert(noAvailableTimeAreaMsg);
		onServiceChanged();
	}
}

/*
	VÃ©rification de la cohÃ©rence du formulaire avant rechargement de la page.
*/

function checkInputsValidityOnReload(){
	var hourValue = document.getElementById("hourValueSelect");
	if(hourValue!=null){
		if(document.getElementById("hourValueSelect").value!=''){
			checkAvailability(checkInputsValidityOnReloadCB);
		}
	}
}

function checkInputsValidityOnReloadCB(data){
	var bInputsValid=data;
	if(bInputsValid){
		var fieldIdStr='serviceBeanKeySelect';
		if(document.getElementById(fieldIdStr).length >1){
			document.getElementById('idServiceBlock').style.visibility="visible";
			activate(fieldIdStr);
		}else{
			dwr.util.setValue(fieldIdStr,document.getElementById(fieldIdStr).options[1].value);
			document.getElementById('idServiceBlock').style.visibility="hidden";
			onServiceChanged();
		}
	}else{
		window.alert(noAvailableTimeAreaMsg);
		onServiceChanged();
	}
}

/**
	VÃ©rifie lors de la sÃ©lection d'une heure dans le 1Â° formulaire, qu'il existe bien toujours 
	des crÃ©neaux disponibles pour la prise de rendez-vous.
	Utile dans le cas oÃ¹ la sÃ©lection de l'heure est faite quelques temps aprÃ¨s avoir renseignÃ© les champs prÃ©cÃ©dents, 
	pour Ã©viter de proposer ensuite Ã  l'utilisateur des rendez-vous qui ne sont plus disponibles.

*/
/*function checkInputsValidityForHourSelection(){

	var aSiteKey=document.getElementById("ISiteBeanKeySelect").value;
	var aServiceKey=document.getElementById("serviceBeanKeySelect").value;
//	var aDaySelected=document.getElementById("dayValueIso").value;
	var aStartHour=document.getElementById("hourValueSelect").value+":00";
	var aEndHour=document.getElementById("hourValueSelect").value+":59";
	
	var daySelStr=document.getElementById("dayValueId").value;
	var dayDate=new Date();
	var dateFormatStr=document.getElementById("dateFormatStrId").value;
	dayDate.setTime(getDateFromFormat( daySelStr , dateFormatStr ));
	
	var aDaySelected =formatDate(dayDate,"yyyy-MM-dd");
	

AjaxSelectionFormFeeder.checkSelectionValidity(aSiteKey, aServiceKey, aDaySelected, aStartHour, aEndHour,checkInputsValidityForHourSelectionCB) ;

}
function checkInputsValidityForHourSelectionCB(data){
	var bInputsValid=data;
	if(bInputsValid){
		document.selectionForm.submit();
	}else{
		window.alert(noAvailableTimeAreaMsg);
	}
}
*/

//------------------------------------------------------------------------------------------------------------
// Page des choix


function onNextProposalClick(newFormAction){
	//var index=nbProposalsPerPage* offsetRdvPageProposal++
	var offsetPage=document.getElementById("offsetPageId").value;
	var nbProposalsPerPage=document.getElementById("nbProposalsPerPageId").value;
	var nbProposalsMax=document.getElementById("nbProposalsMaxId").value;
	
	offsetPage=parseInt(offsetPage)+parseInt(nbProposalsPerPage);
	

	if(offsetPage<nbProposalsMax) {
		document.getElementById("offsetPageId").value=offsetPage;
		
		var form=document.forms["form0"];
		form.action=newFormAction;
		form.submit()
	}

	
}

function onPreviousProposalClick(newFormAction){
	//var index=nbProposalsPerPage* offsetRdvPageProposal++
	var offsetPage=document.getElementById("offsetPageId").value;
	var nbProposalsPerPage=document.getElementById("nbProposalsPerPageId").value;
	offsetPage=parseInt(offsetPage)-parseInt(nbProposalsPerPage);
	
	if(offsetPage<0) {
		offsetPage=0;
		//inactivate(document.getElementById(butPrev));
	}else{
	
	
		document.getElementById("offsetPageId").value=offsetPage;
		
		var form=document.forms["form0"];
		form.action=newFormAction;
		form.submit()

	}
}


esii = { 
	show : function(id){
		document.getElementById(id).style.display='block';
	},
	hide : function(id){
		document.getElementById(id).style.display='none';
	},
	toggle : function(id){
		if (document.getElementById(id).style.display=='none') { document.getElementById(id).style.display='block';}
		else { document.getElementById(id).style.display='none';}
	},
	zoom : function(factor) {
		if ((navigator.userAgent.indexOf("MSIE") != -1) && (navigator.userAgent.indexOf("Opera") == -1)) {
			document.body.style.zoom = factor;
		} else if ((navigator.userAgent.indexOf("Firefox") != -1)) {
			/*
			 * 	Saisir "about:config" dans l'url de firefox puis modifier le parametre 
			 *  user_pref("signed.applets.codebase_principal_support", true); (en le placant a true
			 *  remarque ce n'est pas securisé mais cela permet d'eviter de signer le script
			 *  pour un kiosk le risque est acceptable.
			 */
			try {
				//netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")
				//Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator).getMostRecentWindow("navigator:browser").getBrowser().mCurrentBrowser.markupDocumentViewer.fullZoom = factor;
			} catch (e) {/*undefined*/}
		}
	},
	showKeyboard : function(visible) {
		try {
			if (parent == window) { return;} 
			else { 
				parent.window.external.InitScriptInterface();
				if (parent.SiteKiosk.Keyboard.Initialized) {
					parent.SiteKiosk.Keyboard.Small=true;
					parent.SiteKiosk.Keyboard.Visible = visible;
					parent.SiteKiosk.Keyboard.Full= visible;
					parent.SiteKiosk.Keyboard.OnSmallKeyboard= function() {
						parent.SiteKiosk.Keyboard.Visible = true;
				   	}				 
				}
			}
		} catch (e){ /*undefined*/}
    }
}

