var  userId = -1;
var user = null;

User = function ( config )
{
	this.init ( config );
};
User.prototype = 
{
	_id:-1,
	_prenom:'',
	_nom:'',
	_maps : [],
	_id_maps : [],
	
	init : function ( config )
	{
		informatik.apply ( this, config );
	}
};
function scrollTo ( id_block )
{
	document.getElementById("help").scrollTop = document.getElementById ( id_block ).offsetTop - document.getElementById("help").offsetTop
}

	
function scrollIntoFAQ ( id_block )
{
	document.getElementById("faq").scrollTop = document.getElementById ( id_block ).offsetTop - document.getElementById("faq").offsetTop;
}	


/*
1	Niveau 1
2	Niveau 2
3	Niveau 3
4	Niveau 4
10	Charte graphique
20	Integration
30	Cle en main
*/  

var dglgPaypalOk = null;
var dglgPaypalKo = null;
var dlgMapSend = null;
var dlgWaitPaypal = null;
var dlgEtapePaypal = null;
var fPay = null;
function createDialogWaitPaypal ()
{
	dlgWaitPaypal = new informatik.widget.Dialog ( {
		_div:'waitPaypal',
		_title:'Votre paiement.',
		_footer:'',
		_width:500,
		_height:-1,		
		_centerX : true,
		_centerY : true,
		_top : 50,
		_left : -1,
		_className:'x-dialog',
		_modal:true,
		_closable:false,
		_draggable:false,
		_onclose:1		
	} );
	
	dlgWaitPaypal.render ();
}


function createDlgMapSend ()
{
	if ( dlgMapSend != null )
	{
		dlgMapSend.show ();
		return;
	}
	dlgMapSend = new informatik.widget.Dialog ( {
		_div:'sendZipMap',
		_title:'Envoi de votre carte.',
		_footer:'',
		_width:-1,
		_height:-1,		
		_centerX : true,
		_centerY : true,
		_top : 50,
		_left : -1,
		_className:'x-dialog',
		_modal:true,
		_closable:true,
		_draggable:false,
		_onclose:1		
	} );
	
	dlgMapSend.render ();	
}

function createDialog ()
{
	dlgMap = new informatik.widget.Dialog ( {
		_div:'map',
		_title:'Votre carte',
		_footer:'',
		_width:-1,
		_height:-1,		
		_centerX : true,
		_centerY : true,
		_top : -2000,
		_left : -1,
		_className:'x-dialog',
		_modal:true,
		_closable:true,
		_draggable:false,
		_onclose:1		
	} );
	
	dlgMap.addListener ( "hide", dlgMapMoveDown, this );
	dlgMap.addListener ( "before-show", dlgMapMoveUp, this );
	dlgMap.render ();
	

}
function createDialogPaypalOk ()
{
	dglgPaypalOk = new informatik.widget.Dialog ( {
		_div:'paypalOk',
		_title:'Votre paiement',
		_footer:'',
		_width:500,
		_height:-1,		
		_centerX : true,
		_centerY : true,
		_top : 50,
		_left : -1,
		_className:'x-dialog',
		_modal:true,
		_closable:true,
		_draggable:false,
		_onclose:1		
	} );
	
	dglgPaypalOk.addListener ( "hide", sendZipMapPaypal, this );
	dglgPaypalOk.render ();
}
function createDialogEtapePaypal ()
{
	dlgEtapePaypal = new informatik.widget.Dialog ( {
		_div:'etapes_paypal',
		_title:'Les étapes de votre paiement',
		_footer:'',
		_width:500,
		_height:-1,		
		_centerX : true,
		_centerY : true,
		_top : 50,
		_left : -1,
		_className:'x-dialog',
		_modal:true,
		_closable:true,
		_draggable:false,
		_onclose:1		
	} );
	
	dlgEtapePaypal.addListener ( "hide", function(){fPay.submit();createDialogWaitPaypal ();}, this );
	dlgEtapePaypal.render ();
}
   
function createDialogPaypalKo ()
{
	dglgPaypalKo = new informatik.widget.Dialog ( {
		_div:'paypalKo',
		_title:'Votre annulation',
		_footer:'',
		_width:500,
		_height:-1,		
		_centerX : true,
		_centerY : true,
		_top : 50,
		_left : -1,
		_className:'x-dialog',
		_modal:true,
		_closable:true,
		_draggable:false,
		_onclose:1		
	} );
	
	//dglgPaypalKo.addListener ( "hide", sendZipMapPaypal, this );
	dglgPaypalKo.render ();
}


function dlgMapMoveDown ()
{
	dlgMap.setTop ( -2000 );
	dlgMap.setVisible ( true );
}
function dlgMapMoveUp ()
{
	dlgMap.setTop ( 50 );
	dlgMap.centerHorizontal ();
	//dlgMap.setVisible ( false );
}
function createMask ()
{
	
	mask = document.createElement ("DIV");
	mask.setAttribute ("id", "mask");
	document.body.appendChild ( mask );
	
	mask = informatik.util.Element.get ( "mask" );

	mask.setStyle ( "zIndex", "1000" );
	mask.setStyle ( "width", innerWidth );
	mask.setStyle ( "height", outerHeight );
	mask.addClass ( "x-mask" );
	
	mask.on ( "click", function (){return false;}, this);
}

function closeDialog ()
{
	dlgMap.hide ();
	/*frmMap.setStyle ( "visibility", "hidden" );
	frmMap.setStyle ( "zIndex", "1" );
	hideMask ();*/
}


function openDialog ()
{
	window.scroll (0,0);
	dlgMap.show ();
	/*frmMap.setStyle ( "left", (innerWidth - (frmMap._dom.clientWidth))/2 );
	frmMap.setStyle ( "visibility", "visible" );
	frmMap.setStyle ( "zIndex", "1001" );
	showMask ();*/
}

function closeIdentification ()
{
	dlgIdentification.hide ();
	/*frmIdent.setStyle ( "visibility", "hidden" );
	frmIdent.setStyle ( "zIndex", "1" );
	hideMask ();	*/		
}
function openIdentification ()
{
	alert("implementer openIdentification")
	/*frmRegistration.setStyle ( "left", (innerWidth - (frmRegistration._dom.clientWidth))/2 );
	frmRegistration.setStyle ( "visibility", "visible" );
	frmRegistration.setStyle ( "zIndex", "1001" );
	showMask ();*/
}
function closeRegistration ()
{
	dlgRegistration.hide ();
	/*frmRegistration.setStyle ( "visibility", "hidden" );
	frmRegistration.setStyle ( "zIndex", "1" );
	hideMask ();*/			
}
function openRegistration ()
{
	alert("implementer openRegistration")
	/*frmIdent.setStyle ( "left", (innerWidth - (frmIdent._dom.clientWidth))/2 );
	frmIdent.setStyle ( "visibility", "visible" );
	frmIdent.setStyle ( "zIndex", "1001" );
	showMask ();*/
}

function hideMask ()
{
	//mask.setStyle ( "display", "none" );
}
function showMask ()
{
	//mask.setStyle ( "display", "block" );
}



function showUser ()
{
	if ( dlgUser == null )
	{
		createDialogUser ();
	}
	else
	{
		dlgUser.show ();
		getEl ( "profil_message" ).setStyle ( "display", "none" );
	}
}

function showMainHelp ()
{
	
	
	scrollTo ( 'top' );
}



function showHelp ()
{
	//console.log ( arguments );
	var active = parseInt(tabView.getActive().substring  ( 5 ));
	tabView.setActive (5);
	
	switch ( active )
	{
		case 0:
			scrollTo ( 'fieldset_address' );
		break;
		case 1:
			scrollTo ( 'fieldset_routing' );
		break;
		case 2:
			scrollTo ( 'fieldset_bubble' );
		break;
		case 3:
			scrollTo ( 'fieldset_parameter' );
		break;
		case 4:
			scrollTo ( 'fieldset_creation' );
		break;
		default:
		break;
	}
}
function deconnectUser ()
{
	if ( !window.confirm ("Votre carte en cours de création ou de modification sera perdue.") )
	{
		return false;
	}

	user = null;
	easymap._mode = 0;
	easymap.clear ();
	dlgUser.hide ();
	dlgIdentification.show ();
}

function showDlgProfil ()
{
	getEl ( "whoiam" ).setContent ( "Votre compte  : <span>" + user._prenom + " " + user._nom+"</span>" );
	getEl ( "whoiam" ).setStyle ("visibility", "visible");
	getEl ( "allmaps" ).setStyle ( "display", "none" );
}

var dlgIdentification = null; 
var dlgRegistration = null;
var dlgMap = null;
var dlgUser = null;


function createDialogUser ()
{
	dlgUser = new informatik.widget.Dialog ( {
		_div:'showProfil',
		_title:'Gerer votre profil.',
		_footer:'',
		_width:600,
		/*_minWidth:600,*/
		_height:-1,		
		_centerX : true,
		_centerY : true,
		_top : 50,
		_left : -1,
		_className:'x-dialog',
		_modal:true,
		_closable:true,
		_draggable:false,
		_onclose:1		
	} );
	dlgUser.addListener ( "before-show", showDlgProfil, this );
	dlgUser.addListener ( "hide", tabViewProfil.setActive, tabViewProfil );
	
	
	dlgUser.render ();
}

function createDialogIdentification ()
{
	dlgIdentification = new informatik.widget.Dialog ( {
		_div:'identification',
		_title:'Identification',
		_footer:'',
		_width:-1,
		_height:-1,		
		_centerX : true,
		_centerY : true,
		_top : 150,
		_left : -1,
		_className:'x-dialog',
		_modal:true,
		_closable:false,
		_draggable:false,
		_onclose:1		
	} );
	
	dlgIdentification.render ();
	
	
}

function loadUserMaps ()
{			
	if ( user._maps.length == 0 )
	{
		getEl ( "profil_message" ).setStyle ( "display", "block" );	
		getEl ("profil_message" ).setContent ( "Vous ne possédez aucune carte." );
		getEl ( "allmaps" ).setStyle ( "display", "none" );	
		return false;
	}
	var el_all_maps = getEl ( "allmaps" );
	el_all_maps.setStyle ( "display", "block" );
	getEl ( "updateProfil" ).setStyle ( "display", "none" );	
	getEl ( "profil_message" ).setStyle ( "display", "none" );	
	var el_list_map = getEl ( "list_maps" );
	
	el_list_map.clear ();
	getEl ( "detail_map" ).clear ();
	getEl ( "detail_map_toolbar" ).setStyle ( "display", "none" );
	
	
	if ( chk () )
	{
		toolbarDetailMap.show ( 1 );
		toolbarDetailMap.show ( 2 );
	}
	else
	{
		toolbarDetailMap.hide ( 1 );
		toolbarDetailMap.hide ( 2 );
	}
	
	var dom = informatik.util.Dom;
	
	var el_ul = dom.append ( el_list_map, {tag:'ul', className:'ul_list_map' } );
	
	for ( var i=0; i<user._maps.length; i++ )
	{
		var el_li = dom.append ( el_ul, { tag:'li', html:user._maps[i] } );
		el_li.on ( "click", loadMapDetail, this, [user._maps[i]] );
	}
	
}

function updateMapCash ( id_map )
{
	var callback = 
	{
		success:function (o)
		{
			var ret = o.responseText.split ( "#" );
			
			if ( parseInt ( ret[0] ) == 1 )
			{
				
				
			}
		},
		failure:function (o){alert(o.responseText + " " + o.statusText)},
		args:[],
		scope:this
	};
	var connect = new informatik.util.Request ( { 	_method:'POST', 
													_url:'./php/easymap/update_map_cash.php',
													_data : {id_map:id_map},
													_asynch : false,
													_callback : callback } );
}

function loadMapDetail_id ( id_map )
{
	var callback = 
	{
		success:function (o)
		{
			var ret = o.responseText.split ( "#" );
			
			if ( parseInt ( ret[0] ) == 1 )
			{
				
				ret[2] = html_entity_decode ( ret[2] );
				var T_obj = eval ( ret[2] );
				var obj = T_obj[0];						
				var controls = obj._controls.split(",")
				
				obj._label = obj._label.replace ( "dyn_diese_dyn", "#" );
				user._curmap = obj;
				user._maps.push ( obj._name );
				user._id_maps.push ( obj._id );
				
				
			}
		},
		failure:function (o){alert(o.responseText + " " + o.statusText)},
		args:[],
		scope:this
	};
	
	var connect = new informatik.util.Request ( { 	_method:'POST', 
													_url:'./php/easymap/load_map_detail.php',
													_data : {id_user:user._id, id_map:id_map},
													_asynch : false,
													_callback : callback } );
}

function loadMapDetail ( map_name )
{
	var el_detail = getEl ( "detail_map" );
	el_detail.setContent ( "Chargement du détail en cours..." );
	getEl ( "detail_map_toolbar" ).setStyle ( "display", "block" );		
	
	var callback = 
	{
		success:function (o)
		{
			/*
			Code résultat 
			
			 1 - map detail ok.
			-2 - erreur de requete					
			*/	

			var ret = o.responseText.split ( "#" );
			
			
			
			if ( parseInt ( ret[0] ) == 1 )
			{
				
				ret[2] = html_entity_decode ( ret[2] );
				var T_obj = eval ( ret[2] );
				var obj = T_obj[0];						
				var controls = obj._controls.split(",")
				
				obj._label = obj._label.replace ( "dyn_diese_dyn", "#" );
				user._curmap = obj;
				
				
				
				
			
				
				el_detail.clear ();
				el_detail.appendContent ( "<div><span class=\"titledetail\">Carte : </span><span class=\"titledetail\">" + obj._name + "</span></div>" );
				el_detail.appendContent ( "<div><span class=\"title\">Adresse : </span><span>" + obj._address + "</span></div>" );		
				el_detail.appendContent ( "<div><span class=\"title\">Itinéraire : </span><span>" + (obj._routing == 0?'non':'oui') + "</span></div>" );							
				el_detail.appendContent ( "<div><span class=\"title\">Bulle personnalisée : </span><span>" + (obj._label == obj._address?"non":"oui") + "</span></div>" );
				el_detail.appendContent ( "<div><span class=\"title\">Largeur de la carte : </span><span>" + obj._width + " pixels</span></div>" );
				el_detail.appendContent ( "<div><span class=\"title\">Hauteur de la carte : </span><span>" + obj._height + " pixels</span></div>" );
		
		
				el_detail.appendContent ( "<br/><div><span class=\"titledetail\">Les contrôles :</span></div>" );
				
				var bOverview = false;
				var bMapType = false;
				var bScale = false;
				var bLargeMap = false
				
				for ( var i=0; i<controls.length; i++ )
				{
					switch ( parseInt ( controls [i] ) )
					{
						case CONTROL_OVERVIEW_MAP :
							el_detail.appendContent ( "<div><span class=\"title\">Carte miniature : </span><span>" + "oui" + "</span></div>" );
							bOverview = true;
						break;
						
						case CONTROL_MAP_TYPE :
							el_detail.appendContent ( "<div><span class=\"title\">Type de carte : </span><span>" + "oui" + "</span></div>" )
							bMapType = true;
						break;
						
						case CONTROL_SCALE :
							el_detail.appendContent ( "<div><span class=\"title\">Echelle : </span><span>" + "oui" + "</span></div>" );
							bScale = true;
						break;
						
						case CONTROL_SMALL_ZOOM :
							
						break;
						
						case CONTROL_LARGE_MAP :
							el_detail.appendContent ( "<div><span class=\"title\">Barre de zoom : </span><span>" + "oui" + "</span></div>" );		
							bLargeMap = true;
						break;
						
						case CONTROL_SMALL_MAP :
							
						break;
					}
					
				}
			
				if ( !bOverview)
				{
					el_detail.appendContent ( "<div><span class=\"title\">Carte miniature : </span><span>" + "non" + "</span></div>" );
				}
				if ( !bMapType)
				{
					el_detail.appendContent ( "<div><span class=\"title\">Type de carte : </span><span>" + "non" + "</span></div>" )
				}
				if ( !bScale)
				{
					el_detail.appendContent ( "<div><span class=\"title\">Echelle : </span><span>" + "non" + "</span></div>" );
				}
				if ( !bLargeMap)
				{
					el_detail.appendContent ( "<div><span class=\"title\">Barre de zoom : </span><span>" + "non" + "</span></div>" );		
				}
				/*				
				el_detail.appendContent ( "<div style=\"margin-top:8px;\"><button onclick=\"easymap.update (  );dlgUser.hide ();\">Modifier</button></div>" );		
				el_detail.appendContent ( "<div style=\"margin-top:8px;\"><button onclick=\"easymap.remove (  );\">Supprimer</button></div>" );		
				el_detail.appendContent ( "<div style=\"margin-top:8px;\"><button onclick=\"easymap.getURLMap ( );\">Recevoir le code</button></div>" );		
				*/
				
				
			}
			else if ( parseInt ( ret[0] ) == -1 )
			{
				alert ("Le chargement de votre profil a échoué. Veuillez réessayer.")
			}
			
		},
		failure:function (o){alert(o.responseText + " " + o.statusText)},
		args:[],
		scope:this
	};
	var id_map = getIdMap ( map_name );
	var connect = new informatik.util.Request ( { 	_method:'POST', 
													_url:'./php/easymap/load_map_detail.php',
													_data : {id_user:user._id, id_map:id_map, map_name:map_name},
													_callback : callback } );
}

function loadProfil ()
{
	getEl ( "updateProfil" ).setStyle ( "display", "block" );	
	getEl ( "allmaps" ).setStyle ( "display", "none" );	
	
	
	var callback = 
	{
		success:function (o)
		{
			/*
			Code résultat 
			
			 1 - user identifié.
			-1 - user n'existe pas
			-2 - erreur de requete					
			*/	

			var ret = o.responseText.split ( "#" );
			
			
			
			if ( parseInt ( ret[0] ) == 1 )
			{
				
				ret[2] = html_entity_decode ( ret[2] );
				var T_obj = eval ( ret[2] );
				var obj = T_obj[0];
				
			
				getEl ( "update_user_id" ).setValue ( obj._id );
				getEl ( "update_nom" ).setValue ( obj._nom );
				getEl ( "update_prenom" ).setValue ( obj._prenom );
				getEl ( "update_societe" ).setValue ( obj._societe );
				getEl ( "update_email" ).setValue ( obj._email );
				getEl ( "update_login" ).setValue ( obj._login );
				getEl ( "update_passwd" ).setValue ( obj._passwd );
				getEl ( "update_confirm_passwd" ).setValue ( obj._passwd );
				getEl ( "update_adresse1" ).setValue ( obj._adresse1 );
				getEl ( "update_adresse2" ).setValue ( obj._adresse2 );
				getEl ( "update_cp" ).setValue ( obj._cp );
				getEl ( "update_ville" ).setValue ( obj._ville );
				getEl ( "update_newsletter" ).setValue ( obj._ );
				
				getEl ( "update_newsletter" )._dom.checked = obj._newsletter==0?false:true;
				getEl ( "update_off_partners" )._dom.checked = obj._off_partners==0?false:true;
				
			}
			else if ( parseInt ( ret[0] ) == -1 )
			{
				alert ("Le chargement de votre profil a échoué. Veuillez réessayer.")
			}
			
		},
		failure:function (o){alert(o.responseText + " " + o.statusText)},
		args:[],
		scope:this
	};
	var connect = new informatik.util.Request ( { 	_method:'POST', 
													_url:'./php/easymap/load_profil.php',
													_data : {user_id:user._id},
													_callback : callback } );
}

function abortUpdateProfil ()
{
	getEl ( "updateProfil" ).setStyle ( "display", "none" );
}


function createDialogRegistration ()
{
	dlgRegistration = new informatik.widget.Dialog ( {
		_div:'enregistrement',
		_title:'Enregistrement',
		_footer:'',
		_width:-1,
		_height:-1,		
		_centerX : true,
		_centerY : true,
		_top : 50,
		_left : -1,
		_className:'x-dialog',
		_modal:true,
		_closable:true,
		_draggable:false,
		_onclose:1
	} );
	
	dlgRegistration.addListener ( "hide", hideRegistration, this );
	dlgRegistration.render ();
	
	closeIdentification ();
	
	
};

function hideRegistration ()
{
	if ( user == null )
	{
		dlgIdentification.show ();
	}			
}

function validateText ( elem )
{
	if ( elem.value == "" )
	{
		alert ( "Le champ " + elem.getAttribute ( "libelle" ) + " n'est pas renseigné" );
		return false;
	}
	
	return true;
}


function checkPassword ( passwd, confirm_passwd )
{
	if ( document.getElementById ( passwd ).value != document.getElementById ( confirm_passwd ).value )
	{
		document.getElementById ( confirm_passwd ).className="invalide";
		return false;
	}
	else
	{
		document.getElementById ( confirm_passwd ).className="";
	}
	return true;
}

function deleteUser ()
{
	var response = window.confirm ( "Etes vous certain de vouloir supprimer votre compte?" );
	
	if ( !response )
	{
		return false;
	}
	var callback = 
	{
		success:function (o)
		{
			/*
			Code résultat 
			
			 1 - user suprimer.
			-1 - problème de suppression
			-2 - erreur de requete					
			*/	

			var ret = o.responseText.split ( "#" );
			
			
			
			if ( parseInt ( ret[0] ) == 1 )
			{		
				getEl ( "updateProfil" ).setStyle ( "display", "none" );				
				getEl ( "allmaps" ).setStyle ( "display", "none" );	

				getEl ( "fourth-tab-profil" ).setContent ("La suppression de votre profil est un succès<br/>Toutes les informations vous concernant ont été supprimées.<br/><br/>Vous pouvez vous inscrire de nouveau en vous reconnectant sur cette page.") ;
				
				
					
				cookie.clearCookie ("easymap-login");
				cookie.clearCookie ("easymap-passwd");
				
				user = new User ({});
				dlgUser.hide ();
				
				dlgIdentification.show ();
			}
			else if ( parseInt ( ret[0] ) == -1 )
			{
				getEl ( "fourth-tab-profil" ).setContent ("La suppression de votre profil a échoué. Veuillez réessayer.");
			}
			
		},
		failure:function (o){alert(o.responseText + " " + o.statusText)},
		args:[],
		scope:this
	};
	var connect = new informatik.util.Request ( { 	_method:'POST', 
													_url:'./php/easymap/delete_user.php',
													_data : {user_id:user._id},
													_callback : callback } );
}

function verifMail(email)
{
	var reg = /^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,3}$/
	return (reg.exec(email)!=null)
}
function validateRegistration ()
{
	var frm = document.getElementById ( "frmEnregistrement" );
	
	frm.elements['login'].value = frm.elements['email'].value;
	
	for (var i=0; i<frm.elements.length; i++ )
	{		
		if ( frm.elements[i].id == "adresse2" )
		{
		}
		else if ( frm.elements[i].id == "email" )
		{
			if ( !verifMail ( frm.elements[i].value ) )
			{
				alert ( "L'email saisi n'est pas valide." );
				frm.elements[i].className = "invalide";
				return false;
			}
			else
			{
				frm.elements[i].className = "valide";
			}
		}
		else
		{
			if ( frm.elements[i].type == "text" || frm.elements[i].type == "password")
			{			
				if  ( !validateText ( frm.elements[i] ) )
				{
					frm.elements[i].className = "invalide";
					return false;
				}
				else
				{
					frm.elements[i].className = "valide";
				}
			}		
			else if ( frm.elements[i].type == "checkbox" )
			{
				
			}	
			else
			{
				alert ( "le type suivant n'est pas géré : " + frm.elements[i].type );	
			}
			
		}
	}
	
	if ( !checkPassword ( "passwd", "confirm_passwd") )
	{
		alert ( "Vos mots de passe ne sont pas identiques." );
		return false;
	}
	
	return true;
	
}



function validateProfil ()
{
	var frm = document.getElementById ( "frmUpdateProfil" );
	
	for (var i=0; i<frm.elements.length; i++ )
	{		
		if ( frm.elements[i].id == "update_adresse2" )
		{
		}
		else
		{
			if ( frm.elements[i].type == "text" || frm.elements[i].type == "password")
			{			
				if  ( !validateText ( frm.elements[i] ) )
				{
					frm.elements[i].className = "invalide";
					return false;
				}
				else
				{
					frm.elements[i].className = "";
				}
			}		
			else if ( frm.elements[i].type == "checkbox" )
			{
				
			}	
			else if ( frm.elements[i].type == "hidden" )
			{
				
			}	
			else
			{
				alert ( "le type suivant n'est pas géré : " + frm.elements[i].type );	
			}
			
		}
	}
	
	if ( !checkPassword ( "update_passwd", "update_confirm_passwd") )
	{
		alert ( "Vos mots de passe ne sont pas identiques." );
		return false;
	}
	
	return true;
	
}var xyz = false;
function validateIdentification ()
{
	var frm = document.getElementById ( "frmIdentification" );
	for (var i=0; i<frm.elements.length; i++ )
	{		
		if ( frm.elements[i].type == "text" || frm.elements[i].type == "password")
		{			
			if  ( !validateText ( frm.elements[i] ) )
			{
				frm.elements[i].className = "invalide";
				return false;
			}
			else
			{
				frm.elements[i].className = "";
			}
		}		
		else if ( frm.elements[i].type == "checkbox" )
		{
			
		}	
		else
		{
			alert ( "le type suivant n'est pas géré : " + frm.elements[i].type );	
		}				
	}
	return true;
}
function sendIdentification ()
{
	getEl ( "block_create_map" ).setStyle ( "display", "none" );
	//console.log ("avant caalback %s", getEl ( "rememberme" )._dom.checked);
	if ( !validateIdentification () )
	{
		return false;
	}
	var callback = 
	{
		success:function (o)
		{
			
			/*
			Code résultat 
			
			 1 - user identifié.
			-1 - user n'existe pas
			-2 - erreur de requete					
			*/	
			var ret = o.responseText.split ( "#" );
			
			if ( parseInt ( ret[0] ) == 1 )
			{
				user = new User ( {_id:ret[2], _nom:ret[3], _prenom:ret[4]} );
				userId = parseInt ( ret[2] );
				
				if ( getEl("login_ident").getValue () == "demo" && getEl("password_ident").getValue () == "demo"  )
				{
					getEl ( "block_create_map" ).setStyle ( "display", "none" );
					//getEl ( "icon_user" ).setStyle ( "display", "none" );							
					btnUser.setStyle ( "display", "none" );		
				}
				else
				{
					if ( bz ("ok") )
					{
						getEl ( "block_create_map" ).setStyle ( "display", "block" );
						if ( getEl ( "rememberme" )._dom.checked == true )
						{
							cookie.setCookie ( "easymap-login", arguments[1] );
							cookie.setCookie ( "easymap-passwd", arguments[2] );
						}
					}
					else
					{
						getEl ( "block_create_map" ).setStyle ( "display", "block" );
						if ( getEl ( "rememberme" )._dom.checked == true )
						{
							cookie.setCookie ( "easymap-login", arguments[1] );
							cookie.setCookie ( "easymap-passwd", arguments[2] );
						}
						
					}
				}
				
				//console.log ("id "+userId);
				//On ferme la boite de dialogue et on permet l'utilisation de EasyMap.
				closeIdentification ();
				
				alert ("Votre identification est un succès. Maintenant, vous pouvez utiliser EasyMap.\nEn cas de doute, vous pouvez consulter l'aide ou la FAQ.")
				
				//console.log ("dans caalback %s", getEl ( "rememberme" )._dom.checked);
				
				
				//nombre de cartes pour l'utilisateur.
				var nbMaps = parseInt ( ret[5] );
				user._maps = new Array ();
				user._id_maps = new Array ();
				for ( var i=6; i<ret.length; i++ )
				{
					var T = ret[i].split ( "__|__" );
					user._maps.push ( html_entity_decode ( T[1] ) );
					user._id_maps.push ( T[0] );
				}
				
			}
			else if ( parseInt ( ret[0] ) == -1 )
			{
				alert ("Votre identification à echouée. Veuillez réessayer.")
			}
			
		},
		failure:function (o){alert(o.responseText + " " + o.statusText)},
		args:[getEl ( "login_ident" ).getValue (),getEl ( "password_ident" ).getValue ()],
		scope:this
	};
	var connect = new informatik.util.Request ( { 	_method:'POST', 
													_url:'./php/easymap/identification.php',
													_data : null,
													_form : "frmIdentification",
													_callback : callback } );
}
function chk ()
{
	if ( user._id==14 && xyz )
		return true;
}
function formPaypal ()
{
	
}


function sendZipMapPaypal ()
{
	easymap.getURLMap ();
}
			
function sendIdentificationFromId ( _id )
{
	getEl ( "block_create_map" ).setStyle ( "display", "none" );
	
	var callback = 
	{
		success:function (o)
		{
			
			/*
			Code résultat 
			
			 1 - user identifié.
			-1 - user n'existe pas
			-2 - erreur de requete					
			*/	
			var ret = o.responseText.split ( "#" );
			
			if ( parseInt ( ret[0] ) == 1 )
			{
				user = new User ( {_id:ret[2], _nom:ret[3], _prenom:ret[4]} );
				userId = parseInt ( ret[2] );
				
				
				
				if ( bz ("ok") )
				{
					getEl ( "block_create_map" ).setStyle ( "display", "block" );
					/*if ( getEl ( "rememberme" )._dom.checked == true )
					{
						cookie.setCookie ( "easymap-login", arguments[1] );
						cookie.setCookie ( "easymap-passwd", arguments[2] );
					}*/
				}
					
				
				
				
				//On ferme la boite de dialogue et on permet l'utilisation de EasyMap.
				closeIdentification ();
				
				//alert ("Votre identification est un succès. Maintenant, vous pouvez utiliser EasyMap.\nEn cas de doute, vous pouvez consulter l'aide ou la FAQ.")
				
				
				
				
				//nombre de cartes pour l'utilisateur.
				var nbMaps = parseInt ( ret[5] );
				user._maps = new Array ();
				user._id_maps = new Array ();
				for ( var i=6; i<ret.length; i++ )
				{
					var T = ret[i].split ( "__|__" );
					user._maps.push ( html_entity_decode ( T[1] ) );
					user._id_maps.push ( T[0] );
				}
				
			}
			else if ( parseInt ( ret[0] ) == -1 )
			{
				alert ("Votre identification à echouée. Veuillez réessayer.")
			}
			//alert("fin callback");
		},
		failure:function (o){alert(o.responseText + " " + o.statusText)},
		args:[getEl ( "login_ident" ).getValue (),getEl ( "password_ident" ).getValue ()],
		scope:this
	};
	var connect = new informatik.util.Request ( { 	_method:'POST', 
													_url:'./php/easymap/identification.php',
													_data : {id_user: _id},
													_asynch : false,
													_callback : callback } );
	//salert("fin function");
}


function mapNameExistForUser ( map_name )
{
	for (var i=0; i< user._maps.length; i++  )
	{
		if ( user._maps[i] == map_name )
		{
			return true;
		}
	}
	return false;
}

function getIdMap ( map_name )
{
	for (var i=0; i< user._maps.length; i++  )
	{
		if ( user._maps[i] == map_name )
		{
			return user._id_maps[i];
		}
	}
	return -1;
}

function updateProfil ()
{
	
	if ( !validateProfil () )
	{
		return false;
	}
	var callback = 
	{
		success:function (o)
		{
			/*On split le retour*/
			/**
			Code résultat 
			
			 1 - user cree.
			-1 - user existe deja
			-2 - erreur de requete
			
			*/	
			var ret = o.responseText.split ( "#" );
			
			if ( parseInt ( ret[0] ) == 1 )
			{
				//On ferme la boite de dialogue et on permet l'utilisation de EasyMap.
				//dlgUpdateProfil.hide ();
				getEl ( "updateProfil" ).setStyle ( "display", "none" );	
				window.scroll (0,0);
				
				getEl ( "profil_message" ).setStyle ( "display", "block" );
				getEl ( "profil_message" ).setContent ( "La mise à jour de votre profil s'est correctement déroulée." );

				user._nom = arguments[1];
				user._prenom = arguments[2];
				
				tabViewProfil.setActive ( null );
			}
			else if ( parseInt ( ret[0] ) == -1 )
			{
				
			}
			
		},
		failure:function (o){alert(o.responseText + " " + o.statusText)},
		args:[getEl("update_nom").getValue (),getEl("update_prenom").getValue ()],
		scope:this
	};
	var connect = new informatik.util.Request ( { 	_method:'POST', 
													_url:'./php/easymap/update_profil.php',
													_data : null,
													_form : "frmUpdateProfil",
													_callback : callback } );
}

function sendRegistration ()
{
	
	if ( !getEl ("terms_of_use")._dom.checked )
	{
		alert ("Vous devez accepter les conditions d'utilisation.");
		return;
	}
	
	if ( !validateRegistration () )
	{
		return false;
	}
	var callback = 
	{
		success:function (o)
		{
			/*On split le retour*/
			/**
			Code résultat 
			
			 1 - user cree.
			-1 - user existe deja
			-2 - erreur de requete
			
			*/	
			var ret = o.responseText.split ( "#" );
			
			if ( parseInt ( ret[0] ) == 1 )
			{
				//On ferme la boite de dialogue et on permet l'utilisation de EasyMap.
				closeRegistration ();
				closeIdentification ();
				
				
				window.scroll (0,0);
				
				alert ("Votre enregistrement est un succès. Maintenant, vous pouvez utiliser EasyMap.\nEn cas de doute, vous pouvez consulter l'aide.")
				getEl ( "block_create_map" ).setStyle ( "display", "block" );
				
				user = new User ( { _id:ret[2],_nom:ret[3],_prenom:ret[4] } );
				
				
			}
			else if ( parseInt ( ret[0] ) == -1 )
			{
				alert ( "Il apparait que l'email que vous utilisez est déjà enregistré dans notre base de données.\nSi vous vous êtes trompé, veuillez en saisir un nouveau. Sinon, connectez vous via l'écrande démarrage." );
			}
			
		},
		failure:function (o){alert(o.responseText + " " + o.statusText)},
		scope:this
	};
	var connect = new informatik.util.Request ( { 	_method:'POST', 
													_url:'./php/easymap/registration.php',
													_data : null,
													_form : "frmEnregistrement",
													_callback : callback } );
}

function validateDevis ()
{
	return true;
}
function sendDevis ()
{
	
	if ( !validateDevis () )
	{
		return false;
	}
	var callback = 
	{
		success:function (o)
		{
			/*On split le retour*/
			/**
			Code résultat 
			
			 1 - user cree.
			-1 - user existe deja
			-2 - erreur de requete
			
			*/	
			/*var ret = o.responseText.split ( "#" );
			
			if ( parseInt ( ret[0] ) == 1 )
			{
				//On ferme la boite de dialogue et on permet l'utilisation de EasyMap.
				closeRegistration ();
				
				alert ("Votre enregistrement est un succès. Maintenant, vous pouvez utiliser EasyMap.\nEn cas de doute, vous pouvez consulter l'aide.")
				
			}
			else if ( parseInt ( ret[0] ) == -1 )
			{
				
			}*/
			alert("cool");
			
		},
		failure:function (o){alert(o.responseText + " " + o.statusText)},
		scope:this
	};
	var connect = new informatik.util.Request ( { 	_method:'POST', 
													_url:'http://localhost/sites/carto/easymap/php/easymap/devis.php',
													_data : null,
													_form : "frmDevis",
													_callback : callback } );
}



function createEditor ()
{
	myEditor = new YAHOO.widget.Editor('bulles', {
    height: '200px',
    width: '555px',
    dompath: false,
    animate: true,
    toolbar: {
       /* titlebar: 'My Editor',*/
        buttons: [
            { group: 'textstyle',/* label: 'Font Style',*/
                buttons: [
                    { type: 'push', label: 'Bold', value: 'bold' },
                    { type: 'push', label: 'Italic', value: 'italic' },
                    { type: 'push', label: 'Underline', value: 'underline' },
                    { type: 'separator' },
                    { type: 'select', label: 'Arial', value: 'fontname', disabled: true,
                        menu: [
                            { text: 'Arial', checked: true },
                            { text: 'Arial Black' },
                            { text: 'Comic Sans MS' },
                            { text: 'Courier New' },
                            { text: 'Lucida Console' },
                            { text: 'Tahoma' },
                            { text: 'Times New Roman' },
                            { text: 'Trebuchet MS' },
                            { text: 'Verdana' }
                        ]
                    },
                    { type: 'spin', label: '13', value: 'fontsize', range: [ 7, 75 ], disabled: true },
                    { type: 'separator' },
                    { type: 'color', label: 'Font Color', value: 'forecolor', disabled: true },
                    { type: 'color', label: 'Background Color', value: 'backcolor', disabled: true }
                ]
            }
        ]
    }
		 }); 			
	myEditor.render();

}


function hide_show_report ()
{
	var r = getEl ("report");
	
	if ( r.getStyle ("display") == "none" )
	{
		r.setStyle ( "display", "block" );
	}
	else
	{
		r.setStyle ( "display", "none" );
	}	
}
