/*-----------------------------------------------------------------------------------------------*/
//
// Copyright (c) 2009 Agence Clark (http://www.agence-clark.com)
//
/*-----------------------------------------------------------------------------------------------*/

/*-----------------------------------------------------------------------------------------------*/
// Init Page
/*-----------------------------------------------------------------------------------------------*/
Event.observe(window, 'load', InitPage, false);
var popupContact;
function InitPage(){
	// Rollover Input Image
	RollOverImage();
	//Vide les defaultValue des input avec la class 'focusInput'
	focusInput();
	//search focus
	
	if(!document.location.toString().endsWith('#industries') && $('mot_cle_mdr_searchbar'))
		$('mot_cle_mdr_searchbar').focus();
	// Menu accordeon
	menuAccordeon();
	// Menu onglet
	menuOnglet();
	//Changer la license d'un rapport
	frmChangelicense();
	// Open/Close Presentation reportlinker
	if($('action_presentation_rl')) openClosePresRL();	
	// Script segments
	if($('v_segments')) var defilSegment = new SwitchBloc('v_segments','visu', {SwiDuree:0.4});
	// Verif ajax email
	//if($('email_obtenir_rapport')) checkAjax();
	
	//Paiement CB / Facture
	if($('paiement_cb')) modePaiement();
	
	//édition des coordonnées de facturation
	if($('orderinfos')) observeSwitchProfile('orderinfos');
	
	//édition des codes d'accès
	if($('accesscodes')) observeSwitchProfile('accesscodes');
	
	//édition des infos personnelles
	if($('personalinfos')) observeSwitchProfile('personalinfos');
	
	//édition de l'adresse de facturation
	if($('billingaddress')) observeSwitchProfile('billingaddress');
	
	//édition des codes d'accès
	if($('shippingaddress')) observeSwitchProfile('shippingaddress');
	//Popup contact
//	Event.observe('contact_banniere','click',function(){
//		var popupContact = new infoBox('./commun/popup/contact.php');																	  
//		popupContact.ouvrir();
//	});	
//	Event.observe('contact_pied','click',function(){
//		var popupContact = new infoBox('./commun/popup/contact.php');																	  
//		popupContact.ouvrir();
//	});	
//	if($('poser_question')) {
//		Event.observe('poser_question','click',function(){
//			var popupContact = new infoBox('/notify/request');																	  
//			popupContact.ouvrir();
//		});	
//	}	
	//Popup mot de passe oublie
	if($('mdp_oublie')) {
		Event.observe('mdp_oublie','click',function(){
			var popup = new infoBox('/myprofile/password');																	  
			popup.ouvrir();
		});	
	}
	
	//Popup about us
	if($('about_us')) {
		Event.observe('about_us','click',function(){
			var popup = new infoBox('/index/about');																	  
			popup.ouvrir();
		});	
	}
	
		
	//Popup explication cvv code
	if($('lien_popup_cb')) {
		Event.observe('lien_popup_cb','click',function(){
			var popupContact = new infoBox('/mycart/cb');																	  
			popupContact.ouvrir();
		});	
	}
	
	//Popup explication TVA Number
	if($('vat_number')) {
		Event.observe('vat_number','click',function(){
			var popupContact = new infoBox('/mycart/vatnumber');																	  
			popupContact.ouvrir();
		});	
	}
		
	// Verif ajax email
	//if($('email_mdp')) checkAjax();
}

/*-----------------------------------------------------------------------------------------------*/
// Fonctions
/*-----------------------------------------------------------------------------------------------*/
//Popup PLP Infos
function DisplayForm(id, title){
	var popupContact = new infoBox('/notify/request/id/'+id+'/title/'+title);																	  
	popupContact.ouvrir();
}

//Popup Newsletter
var DisplayNewsletter = function(id, title, titleindustry, idindustry){	
	popupContact = new infoBox('/notify/newsletter/id/'+id+'/title/'+title+'?idindustry='+idindustry+'&industry='+titleindustry);																	  
	popupContact.ouvrir();	
};

//Popup confirmation de suppresion d'un article du panier
var DisplayConfirm = function(idProduct){
	popupContact = new infoBox('/mycart/remove/id/'+idProduct);																	  
	popupContact.ouvrir();
};

//Popup d'annulation d'un abonnement
var DisplayConfirmCancellation = function(){
	popupContact = new infoBox('/myprofile/cancelsubscriptionform');																	  
	popupContact.ouvrir();
};


// Fonction rollover des images + input image
var RollOverImage = function(){
	var options = Object.extend({}, arguments[0] || {});
	if (!options.RollRech) options.RollRech = '';
	var RollRech = options.RollRech;
	$$(RollRech+'input[type=image]',RollRech+'img.rollover').each(
		function(e,index){
			var chemin = e.src;
			var pos_debut = chemin.lastIndexOf('/')+1;
			var pos_fin = chemin.lastIndexOf('.');
			var chemin_fichier = chemin.substring(0,pos_debut);
			var nom_fichier = chemin.substring(pos_debut,pos_fin);
			var ext_fichier = chemin.substr(pos_fin);
			if(!e.hasClassName('no_roll')){
				Event.observe(e, 'mouseover', function(){
					e.src = chemin_fichier+nom_fichier+'_on'+ext_fichier;
				});			 
				Event.observe(e, 'mouseout', function(){
					e.src = chemin_fichier+nom_fichier+ext_fichier;
				});
			}
		}
	);
};
// Vide les defaultValue des input avec la class 'focusInput'
var focusInput = function(){
	var input = $$('input[value!=""]');
	input.each( function(e,i){
		if((e.type=='text' || e.type=='password') && e.hasClassName('focusInput')){
			Event.observe(e, 'focus', function(evt){
				if(e.value==e.defaultValue)e.value='';
			});
			Event.observe(e, 'blur', function(evt){
				if(e.value=='')e.value=e.defaultValue;
			});
		}
	});
}


// Accordeon
var menuAccordeon = function(){
	$$('.lien_accordeon').each( function(e){
		if(e.up().next('.contenu_accordeon') == undefined){
			var contenu_accordeon = e.previous('.contenu_accordeon'); 
		} else {
			var contenu_accordeon = e.up().next('.contenu_accordeon');
		}
		if(!e.hasClassName('in')) contenu_accordeon.hide();
		var observeAccordeon = function(){
			e.blur();
			if(contenu_accordeon.getStyle('display') == 'none'){
				Effect.BlindDown(contenu_accordeon, { 
					duration: 0.3,
					beforeStart :function() {Event.stopObserving(e, 'click', observeAccordeon)},
					afterFinish :function() {Event.observe(e, 'click', observeAccordeon);}	
				});
				e.addClassName('in');
			} else {
				Effect.BlindUp(contenu_accordeon, { 
					duration: 0.3,
					beforeStart :function() {Event.stopObserving(e, 'click', observeAccordeon)},
					afterFinish :function() {Event.observe(e, 'click', observeAccordeon)}				
				});
				e.removeClassName('in');				
			}
			var splitInner = e.innerHTML.substring(0,e.innerHTML.indexOf(' '));
			if(splitInner == 'More') {
				e.innerHTML = e.innerHTML.split('More').join('Minimize');
			} else if(splitInner == 'Minimize') {
				e.innerHTML = e.innerHTML.split('Minimize').join('More');
			}
		};
		observeAccordeon = observeAccordeon.bindAsEventListener(observeAccordeon); 
		Event.observe(e, 'click', observeAccordeon);
	});
};

var openClosePresRL = function(){
	var lien_openClosePresRL = $('action_presentation_rl').down('p.lien').down('a');
	var contenu_openClosePresRL = $('presentation_rl').down('div.contenu_presentation_rl');
	var titre_openClosePresRL = $('presentation_rl').down('p.titre').innerHTML;
	var observeOpenClose = function(){ 
		lien_openClosePresRL.blur();
		if(contenu_openClosePresRL.getStyle('display') == 'none'){
			lien_openClosePresRL.update('Close');
			lien_openClosePresRL.up('p').previous('p').remove();
		} else {
			lien_openClosePresRL.update('Open');
			lien_openClosePresRL.up('p').insert({before:'<p class="titre_fermer">'+titre_openClosePresRL+'</p>'});
		}	
		Effect.toggle(contenu_openClosePresRL,'blind',{
			  duration:0.4, 
			  beforeStart :	 function() {Event.stopObserving(lien_openClosePresRL, 'click', observeOpenClose)},
			  afterFinish :	 function() {
				  Event.observe(lien_openClosePresRL, 'click', observeOpenClose);
				  if('b_populaire') {
					var hauteur_conteneur = $('conteneur').getHeight();
					$('b_populaire').setStyle({bottom: '0', top: hauteur_conteneur-162+'px'});	
				  }
			 }
		});
	};
	observeOpenClose = observeOpenClose.bindAsEventListener(observeOpenClose); 
	Event.observe(lien_openClosePresRL, 'click', observeOpenClose);
	lien_openClosePresRL.onclick = function(){return false};
};

var menuOnglet = function(){
	$$('#resume_rapport .onglets a').each(function(e){
		Event.observe(e, 'click', function(){
			e.blur();
			e.addClassName('in');
			e.up('p').siblings('p').each(function(sibP){sibP.down('a').removeClassName('in');});
			$('contenu_'+e.id).show();
			$('contenu_'+e.id).siblings().each(function(sibD){if(!sibD.hasClassName('onglets'))sibD.hide();});
		});
	});
}

//Changer la license d'un rapport
//var changeLicense = function(){
//	$$('#centre .contenu_changer_license').each(function(cont) {										 
//		cont.setStyle({height:'0'});
//	});
//	$$('#centre .lien_changer_license').each(function(lien){	
//		Event.observe(lien, 'click', function(){
//			lien.blur();
//			lien.up('p').next('.contenu_changer_license').morph('height:30px;',{duration:0.3});
//			lien.fade({duration:0.3});
//		});
//		var selectLicense = lien.up('p').next('.contenu_changer_license').down('select');
//		Event.observe(selectLicense, 'change', function(){
//			lien.up('p').next('.contenu_changer_license').morph('height:0;',{duration:0.3});
//			lien.appear({duration:0.3});
//			optionText = selectLicense.options[selectLicense.selectedIndex].text;
//			lien.previous('span').innerHTML = optionText.substring(optionText.indexOf('-')+2);
//			new Effect.Highlight(lien.previous('span'),{duration:0.5});
//			var prix_actuel = new Array;
//			new Ajax.Request('./_ajax.php?ACT=majPrix',{
//				parameters: Form.serialize($('frm_paiement')),
//				onComplete: function(requester){
//					if(requester.responseText != "false"){
//						var prix_nouveau = requester.responseText.evalJSON();
//						$$('.ajax_prix').each(function(prix, i) {
//							prix_actuel.push(prix.innerHTML);
//							prix.innerHTML = prix.innerHTML.split(prix_actuel[i]).join(prix_nouveau[i]);
//							new Effect.Highlight(prix,{duration:0.8});
//						});					
//					}
//				}
//			});	
//		});		
//		lien.onclick = function(){return false};									  
//	});
//}

//Paiement CB / Facture
var modePaiement = function(){
	accordeonPaiement($('paiement_facture').down('fieldset'), $('paiement_cb').down('fieldset'));
	accordeonPaiement($('paiement_cb').down('fieldset'), $('paiement_facture').down('fieldset'));
	$('paiement_cb').down('fieldset').setStyle({zoom:'1'});
	$('paiement_facture').down('fieldset').setStyle({height:$('paiement_facture').down('fieldset').down('.txt').getHeight()+'px'});
};
var accordeonPaiement = function(focusField, cibleField){
	var hauteurField = focusField.getHeight();
	Event.observe(focusField.previous('.titre').down('a'), 'click', function(){	
		this.blur();
		focusField.morph('height:'+parseInt(hauteurField)+'px;', {duration:0.5});
		cibleField.morph('height:'+cibleField.down('.txt').getHeight()+'px;', {duration:0.5});
		if(focusField == $('paiement_facture').down('fieldset')) {
			if($('msgGlobal')) $('msgGlobal').fade({duration:0.3});
			$$('.inputError').each(function(e){e.removeClassName('inputError')});			
			//$('frm_paiement').onsubmit = function(){return true};
		}else{
			if($('msgGlobalAccount')) $('msgGlobalAccount').fade({duration:0.3});
			//$('frm_paiement').onsubmit = function(){return frmPayment()};
		}
	});
};

// Formulaires

var refreshprices = function(response){
	var prix_actuel = new Array;
	var prix_nouveau = response.evalJSON();
	$$('.ajax_prix').each(function(prix, i) {
		prix_actuel.push(prix.innerHTML);
		prix.innerHTML = prix.innerHTML.split(prix_actuel[i]).join(prix_nouveau[i]);
		new Effect.Highlight(prix,{duration:0.8});
	});
}

var cancelVat = function() {
	new Ajax.Request('/mycart/cancelvat', {
		method: 'post',
		onSuccess: function(transport)
		{
			var response = transport.responseText;					
			refreshprices(response);
			
			new Ajax.Request( '/mycart/vat', {
				method: 'post',				
				onSuccess: function(transport)
				{
					var html = transport.responseText;
					$('contenu').down('.tva').update(html);						
				}
			});
		}
	});
	return false;
}

var frmResetEmailPremium = function (){
	$('msgGlobal').hide();
	$('ajaxEmail').fade({duration: 1.0});
	$('frm_obtenir_rapport').onsubmit = function(){return frmObtenirRapportNotLogged()};
	return false;
}

var frmObtenirRapportNotLogged = function() {
	param_form = { mep: 'msg_global', autoScroll: false, action: 'submit'};
	champs_form = {
		email_obtenir_rapport: {type:'mel', alerte:'Email is missing and must be valid.'}
	};
	var errorMessage = '';
	
	var fName = $('prenom_obtenir_rapport').value;
	var fNameHasDefault = $('prenom_obtenir_rapport').hasClassName('focusInput');
	var fNameDefault = $('prenom_obtenir_rapport').defaultValue;
	if((fNameHasDefault && (fName == '' || fName == fNameDefault)) || fName == '') {
		errorMessage += '<p>First name is missing.</p>';	
		$('prenom_obtenir_rapport').addClassName('inputError');
	}else{
		$('prenom_obtenir_rapport').removeClassName('inputError');
	}

	var lName = $('nom_obtenir_rapport').value;
	var lNameHasDefault = $('nom_obtenir_rapport').hasClassName('focusInput');
	var lNameDefault = $('nom_obtenir_rapport').defaultValue;
	if((lNameHasDefault && (lName == '' || lName == lNameDefault)) || lName == '') {
			errorMessage += '<p>Family name is missing.</p>';	
		$('nom_obtenir_rapport').addClassName('inputError');
	}else{
		$('nom_obtenir_rapport').removeClassName('inputError');
	}
	
	var lPhone = $('telephone_obtenir_rapport').value;
	var lPhoneHasDefault = $('telephone_obtenir_rapport').hasClassName('focusInput');
	var lPhoneDefault = $('telephone_obtenir_rapport').defaultValue;
	if((lPhoneHasDefault && (lPhone == '' || lPhone == lPhoneDefault)) || lPhone == '') {
			lPhone= '';			
	}
	
	if (formVerif('frm_obtenir_rapport', champs_form, param_form,{errorMessage:errorMessage}))
	{
		showMessages('msgGlobal', false, '<strong>Please wait, we are processing your request...</strong>');
		
		new Ajax.Request( '/myprofile/checkmail', {
			method: 'post',
			parameters: {
				email: $('email_obtenir_rapport').value								
			},
			onSuccess: function(transport)
			{
				var response = transport.responseText;
				//champ.removeClassName('inputError');
				if(response == 'ko')
				{//email inconnu
					new Ajax.Request( '/mycart/postaddwithinfos', {
						method : 'post',
						asynchronous : false,
						parameters: {
							email: $('email_obtenir_rapport').value	,
							first_name: $('prenom_obtenir_rapport').value,
							last_name: $('nom_obtenir_rapport').value,
							id_produit: $('id_produit').value,
							id_license: getSelectedLicense(),
							phone: lPhone
						},
						onSuccess : function(transport)
						{
							var response = transport.responseText;
							if (response == 'ok')
							{
								//document.location.href = '/mycart/?ref=plp';
							}
							else
							{
								showMessages('msgGlobal', true, response);
							}
						},
						onFailure: function(transport)
						{
							var response = transport.responseText;
							showMessages('msgGlobal', true, response);
						}
					});										
				}
				else 
				{//email reconnu
					$('msgGlobal').hide();
					$('ajaxEmail').down('.frm_erreur').update('You are already registered : please <strong>provide your password</strong> or <strong>enter a new email address</strong>.');
					$('ajaxEmail').appear({duration:0.3});
					$('frm_obtenir_rapport').onsubmit = function(){return frmObtenirRapportLogin()};
					
					if($('email_obtenir_rapport')) {
						Event.observe('email_obtenir_rapport','click', frmResetEmailPremium);	
					}
				}
			},
			onFailure: function(transport)
			{
				var response = transport.responseText;
				showMessages('msgGlobal', true, response);
			}
		});
		
	}
	return false;
};

var frmObtenirRapportLogged = function() {
	
	new Ajax.Request('/mycart/postadd', {
		method: 'post',
		parameters:{
			id_produit: $('id_produit').value,
			id_license: getSelectedLicense()
		},
		onSuccess: function(transport)
		{
			var response = transport.responseText;
			if(response == 'ok')
			{
				document.location.href = '/mycart/?ref=plp';
			}
			else
				showMessages('msgGlobal', true, response);
		},
		onFailure: function(transport)
		{
			var response = transport.responseText;
			showMessages('msgGlobal', true, response);
		}
	});
	return false;
}

var frmObtenirRapportLogin = function() {
	param_form = { mep: 'msg_global', autoScroll: false, action: 'submit'};
	champs_form = {
		email_obtenir_rapport: {type:'mel', alerte:'Email is missing and must be valid.'} ,
		password_obtenir_rapport: {alerte:'Password is missing.'}
	};
	if (formVerif('frm_obtenir_rapport', champs_form, param_form))
	{
		new Ajax.Request( '/auth/postlogin', {
			method: 'post',
			asynchronous : false,
			parameters: {
				email: $('email_obtenir_rapport').value,
				pwd: $('password_obtenir_rapport').value
			},
			onSuccess: function(transport)
			{
				var response = transport.responseText;
				if(response.startsWith('ok'))
				{
					showMessages('msgGlobal', false, '<strong>Please wait...</strong>');
					//new Effect.Pulsate($('msgGlobal'),{pulses: 3, duration:5.0});

					new Ajax.Request( '/mycart/postadd', {
						method : 'post',
						asynchronous : false,
						parameters : {
							id_produit: $('id_produit').value,
							id_license: getSelectedLicense()
						},					
						onSuccess : function(transport)
						{
							var response = transport.responseText;
							if (response.startsWith('ok'))
							{
								document.location.href = '/mycart/?ref=plp';
							}
						},
						onFailure: function(transport)
						{
							var response = transport.responseText;
							showMessages('msgGlobal', true, response);
							
						}						
					});
				}
				else 
				{
					$('password_obtenir_rapport').addClassName('inputError');
					$('ajaxEmail').down('.frm_erreur').update(response);
				}
			},
			onFailure: function(transport)
			{
				var response = transport.responseText;
				showMessages('msgGlobal', true, response);
			}
		});
	}
	return false;
};

var frmResetEmailDownload = function (){
	$('msgGlobal').hide();
	$('ajaxEmail').fade({duration: 1.0});
	$('frm_telecharger_rapport').onsubmit = function(){return frmTelechargerRapportNotLogged()};
	
	return false;
}

var frmTelechargerRapportNotLogged = function() {
	param_form = { mep: 'msg_global', autoScroll: false, action: 'submit'};
	champs_form = {
		email_telecharger_rapport: {type:'mel', alerte:'Email is missing and must be valid.'}
	};
	
	var errorMessage = '';
	
	var fName = $('prenom_telecharger_rapport').value;
	var fNameHasDefault = $('prenom_telecharger_rapport').hasClassName('focusInput');
	var fNameDefault = $('prenom_telecharger_rapport').defaultValue;
	if((fNameHasDefault && (fName == '' || fName == fNameDefault)) || fName == '') {
		errorMessage += '<p>First name is missing.</p>';	
		$('prenom_telecharger_rapport').addClassName('inputError');
	}else{
		$('prenom_telecharger_rapport').removeClassName('inputError');
	}

	var lName = $('nom_telecharger_rapport').value;
	var lNameHasDefault = $('nom_telecharger_rapport').hasClassName('focusInput');
	var lNameDefault = $('nom_telecharger_rapport').defaultValue;
	if((lNameHasDefault && (lName == '' || lName == lNameDefault)) || lName == '') {
			errorMessage += '<p>Family name is missing.</p>';	
		$('nom_telecharger_rapport').addClassName('inputError');
	}else{
		$('nom_telecharger_rapport').removeClassName('inputError');
	}
	
	if (formVerif('frm_telecharger_rapport', champs_form, param_form,{errorMessage:errorMessage}))
	{
		showMessages('msgGlobal', false, '<strong>Please wait, we are processing your request...</strong>');
		
		new Ajax.Request( '/myprofile/checkmail', {
			method: 'post',
			parameters: {
				email: $('email_telecharger_rapport').value								
			},
			onSuccess: function(transport)
			{
				var response = transport.responseText;
				
				if(response == 'ko')
				{//email inconnu
					//alert ('sauvegarde');
					new Ajax.Request( '/document/downloadwithinfos', {
						method : 'post',
						asynchronous : false,
						parameters: {
							email: $('email_telecharger_rapport').value	,
							first_name: $('prenom_telecharger_rapport').value,
							last_name: $('nom_telecharger_rapport').value,
							id_document: $('id_document').value
						},
						onSuccess : function(transport)
						{
							var response = transport.responseText;
							if (response == 'ok')
							{
								document.location.href = '/mycart/subscription/id/'+$('id_document').value+'/extref/'+$('extref').value;
							}
							else
							{
								showMessages('msgGlobal', true, response);								
							}
						},
						onFailure: function(transport)
						{
							var response = transport.responseText;
							showMessages('msgGlobal', true, response);
						}
					});										
				}
				else 
				{//email reconnu
					$('msgGlobal').hide();
					$('ajaxEmail').appear({duration:0.3});
					$('frm_telecharger_rapport').onsubmit = function(){return frmTelechargerRapportLogin()};
					$('ajaxEmail').down('.frm_erreur').update('You are already registered : please <strong>provide your password</strong> or <strong>enter a new email address</strong>.');
					
					if($('email_telecharger_rapport')) {
						Event.observe('email_telecharger_rapport','click', frmResetEmailDownload);	
					}
				}
			},
			onFailure: function(transport)
			{
				var response = transport.responseText;
				showMessages('msgGlobal', true, response);
			}
		});
	}
	return false;
};


var frmTelechargerRapportLogin = function()
{
	param_form = { mep: 'msg_global', autoScroll: false, action: 'submit'};
	champs_form = {
		email_telecharger_rapport: {type:'mel', alerte:'Email is missing and must be valid.'} ,
		password_telecharger_rapport: {alerte:'Password is missing.'}
	};
	if (formVerif('frm_telecharger_rapport', champs_form, param_form))
	{
		new Ajax.Request( '/auth/postlogin', {
			method: 'post',
			asynchronous : false,
			parameters: {
				email: $('email_telecharger_rapport').value,
				pwd: $('password_telecharger_rapport').value
			},
			onSuccess: function(transport)
			{
				var response = transport.responseText;
				if(response.startsWith('ok'))
				{
					document.location.reload();
				}
				else 
				{
					$('password_telecharger_rapport').addClassName('inputError');
					$('ajaxEmail').down('.frm_erreur').update(response);
				}
			},
			onFailure: function(transport)
			{
				var response = transport.responseText;
				showMessages('msgGlobal', true, response);
			}
		});
	}
	return false;
};


var frmTelechargerRapportLogged = function(status)
{
	if (status == 'customer')
		document.location.href = '/mycart/subscription';
	if (status == 'exsubscriber')
		document.location.href = '/myprofile/subscription';
}


var frmLireRapport = function() {
	param_form = { mep: 'msg_global', autoScroll: false, action: 'submit'};
	champs_form = {
		prenom_lire_rapport: {alerte:'First name is missing.'},
		nom_lire_rapport: {alerte:'Family name is missing.'},
		email_lire_rapport: {type:'mel', alerte:'Email is missing and must be valid.'}
	};
	return formVerif('frm_lire_rapport', champs_form, param_form);
};



var frmIdentification = function() {
	param_form = { mep: 'msg_global', autoScroll: false, action: 'submit'};
	champs_form = {
		email_identification: {type:'mel', alerte:'Email is missing and must be valid.'},
		mdp_identification: {alerte:'Password is missing.'}		
	};
	return formVerif('frm_identification', champs_form, param_form);
};

var frmInscription = function() {
	param_form = { mep: 'msg_global', autoScroll: false, action: 'submit'};
	champs_form = {
		mdp_inscription: {alerte:'Password is missing.'}		
	};
	var errorMessage = '';
		
	if($('mdp_inscription'))
	{
		champs_form_pwd = {
				mdp_inscription: {alerte:'Password is missing.'},
				mdp_inscription_2: {alerte:'Password confirmation is missing.'}
		};
		Object.extend(champs_form, champs_form_pwd);
	}
	return formVerif('frm_inscription', champs_form, param_form, {errorMessage:errorMessage});
};

var frmContact = function() {
	param_form = { mep: 'msg_global', autoScroll: false, action: 'submit'};
	champs_form = {
		sujet_contact: {alerte:'Subject is missing.'},
		entreprise_contact: {alerte:'Company Name is missing.'},
		email_contact: {type:'mel', alerte:'Email is missing and must be valid.'},
		commentaire_contact: {alerte:'Comments are missing.'}		
	};
	if (formVerif('frm_contact', champs_form, param_form))
	{		
		showMessages('msgGlobal', false, '<strong>Please wait, we are sending your request...</strong>');
		
		new Ajax.Request( '/notify/postcontact', {
			method: 'post',
			parameters: {
				sujet_contact: $('sujet_contact').value,
				nom_contact: $('nom_contact').value,
				prenom_contact: $('prenom_contact').value,
				entreprise_contact: $('entreprise_contact').value,
				email_contact: $('email_contact').value,
				tel_contact: $('tel_contact').value,
				commentaire_contact: $('commentaire_contact').value				
			},
			onSuccess: function(transport)
			{
				var response = transport.responseText;
				if(response.startsWith('ok'))
				{
					$('frm_contact').hide();
					$('msgGlobal').hide();
					showMessages('msgGlobal', false, '<strong>Thank you for contacting Reportlinker.com !</strong><br/>We will get back to you shortly. Answers are sent within 24 hours.');									
				}
				else 
				{
					showMessages('msgGlobal', true, response);									
				}
			},
			onFailure: function(transport)
			{
				var response = transport.responseText;
				showMessages('msgGlobal', true, response);				
			}
		});
		
	}
	return false;
};

var frmRequest = function() {
	param_form = { mep: 'msg_global', autoScroll: false, action: 'submit'};
	champs_form = {
		sujet_contact: {alerte:'Subject is missing.'},
		nom_contact: {alerte:'Family name is missing.'},
		prenom_contact: {alerte:'First name is missing.'},
		entreprise_contact: {alerte:'Company Name is missing.'},
		email_contact: {type:'mel', alerte:'Email is missing and must be valid.'},
		tel_contact: {alerte:'Phone number is missing.'},
		commentaire_contact: {alerte:'Comments are missing.'}		
	};
	
	if (formVerif('frm_request', champs_form, param_form))
	{
		showMessages('msgGlobal', false, '<strong>Please wait, we are sending your request...</strong>');
				
		new Ajax.Request( '/notify/postrequest', {
			method: 'post',
			parameters: {
				sujet_contact: $('sujet_contact').value,
				etude_id: $('etude_id').value,
				nom_contact: $('nom_contact').value,
				prenom_contact: $('prenom_contact').value,
				entreprise_contact: $('entreprise_contact').value,
				email_contact: $('email_contact').value,
				tel_contact: $('tel_contact').value,
				commentaire_contact: $('commentaire_contact').value				
			},
			onSuccess: function(transport)
			{
				var response = transport.responseText;
				if(response == 'ok')
				{
					$('frm_request').hide();
					$('msgGlobal').hide();
					showMessages('msgGlobal', false, '<strong>Thank you for contacting Reportlinker.com !</strong><br/>One of our research specialists is preparing an answer. <br/>You will be contacted within 24 hours at last. ');
				}
				else 
				{
					showMessages('msgGlobal', false, response);			
				}
			},
			onFailure: function(transport)
			{
				var response = transport.responseText;
				showMessages('msgGlobal', true, response);	
			}
		});
		
	}
	return false;
};

var frmNewsletter = function(){
	param_form = { mep: 'msg_global', autoScroll: false, action: 'submit'};
	champs_form = {
		sujet_contact: {alerte:'Subject is missing.'},
//		nom_contact: {alerte:'Family name is missing.'},
//		prenom_contact: {alerte:'First name is missing.'},
		//entreprise_contact: {alerte:'Company Name is missing.'},
		email_contact: {type:'mel', alerte:'Email is missing and must be valid.'}		
	};
	
	var errorMessage = '';
	
	var fName = $('prenom_contact').value;
	var fNameHasDefault = $('prenom_contact').hasClassName('focusInput');
	var fNameDefault = $('prenom_contact').defaultValue;
	if((fNameHasDefault && (fName == '' || fName == fNameDefault)) || fName == '') {
		errorMessage += '<p>First name is missing.</p>';	
		$('prenom_contact').addClassName('inputError');
	}else{
		$('prenom_contact').removeClassName('inputError');
	}

	var lName = $('nom_contact').value;
	var lNameHasDefault = $('nom_contact').hasClassName('focusInput');
	var lNameDefault = $('nom_contact').defaultValue;
	if((lNameHasDefault && (lName == '' || lName == lNameDefault)) || lName == '') {
			errorMessage += '<p>Family name is missing.</p>';	
		$('nom_contact').addClassName('inputError');
	}else{
		$('nom_contact').removeClassName('inputError');
	}
	
	if (formVerif('frmNewsletter', champs_form, param_form,{errorMessage:errorMessage}))
	{
		showMessages('msgGlobal', false, '<strong>Please wait, we are sending your request...</strong>');
				
		new Ajax.Request( '/notify/postnewsletter', {
			method: 'post',
			parameters: {
				sujet_contact: $('sujet_contact').value,
				etude_id: $('etude_id').value,
				industry_id: $('industry_id').value,
				nom_contact: $('nom_contact').value,
				prenom_contact: $('prenom_contact').value,
				//entreprise_contact: $('entreprise_contact').value,
				email_contact: $('email_contact').value
				//tel_contact: $('tel_contact').value			
			},
			onSuccess: function(transport)
			{
				var response = transport.responseText;
				if(response == 'ok')
				{
					$('frmNewsletter').hide();
					$('msgGlobal').hide();
					showMessages('msgGlobal', false, '<strong>Thank you, an email has been sent to you confirming your registration details.</strong>');
				}
				else 
				{
					showMessages('msgGlobal', false, response);			
				}
			},
			onFailure: function(transport)
			{
				var response = transport.responseText;
				showMessages('msgGlobal', true, response);	
			}
		});		
	}
	return false;
};

var frmCancelNewsletter = function (){
	popupContact.fermer();
	return false;
};

var frmPr = function() {
	param_form = { mep: 'msg_global', autoScroll: false, action: 'submit'};
	champs_form = {
		etude_id: {alerte:'Report ID is missing.'},
		nom_contact: {alerte:'Family name is missing.'},
		prenom_contact: {alerte:'First name is missing.'},
		entreprise_contact: {alerte:'Company Name is missing.'},
		email_contact: {type:'mel', alerte:'Email is missing and must be valid.'},
		commentaire_contact: {alerte:'Comments are missing.'}
	};
	return formVerif('frm_pr', champs_form, param_form);
};

var frmService = function() {
	param_form = { mep: 'msg_global', autoScroll: false, action: 'submit'};
	champs_form = {
		entreprise_contact: {alerte:'Company Name is missing.'},
		tel_contact: {alerte:'Phone number is missing.'},
		commentaire_contact: {alerte:'Comments are missing.'}		
	};
	return formVerif('frm_service', champs_form, param_form);
};

var frmRemove = function(value, id) {
	new Ajax.Request( '/mycart/remove/confirm/'+value, {
		method: 'post',
		parameters:{
			id_product : id
		},
		onSuccess: function(transport)
		{
			var response = transport.responseText;
			if(response == 'ko')
			{
				popupContact.fermer();
			}
			else 
			{
				$(id).remove();
				var nb = response.split('_')[0];
				var prices = response.split('_')[1];
				//si panier non vide, mise a jour des prix
				if (nb > 0)
				{
					refreshprices(prices);
					popupContact.fermer();
				}
				else // si panier vide, raffraichissement de la page
					document.location.reload();
			}
		}
	});
	return false;
};

var frmExcludeVat = function() {
	param_form = { mep: 'msgGlobalTVA', autoScroll: false, action: 'submit'};
	champs_form = {
		taxe_entreprise: {alerte:' Company VAT Number is missing.'}
	};
	if (formVerif('frm_paiement', champs_form, param_form))
	{
		new Ajax.Request( '/mycart/excludevat', {
			method: 'post',
			parameters:{
				vatNumber : $('taxe_entreprise').value
			},
			onSuccess: function(transport)
			{
				var response = transport.responseText;				
				refreshprices(response);	
				
				new Ajax.Request('/mycart/vat', {
					method: 'post',
					onSuccess: function(transport)
					{
						var html = transport.responseText;
						$('contenu').down('.tva').update(html);
					}
				});
			}
		});
	}
	return false;
}

var frmChangelicense = function() {	
	
	$$('#centre .contenu_changer_license').each(function(cont) {										 
		cont.setStyle({height:'0'});
	});
	$$('#centre .lien_changer_license').each(function(lien){	
		Event.observe(lien, 'click', function(){
			lien.blur();
			lien.up('p').next('.contenu_changer_license').morph('height:30px;',{duration:0.3});
			lien.fade({duration:0.3});
		});
		var selectLicense = lien.up('p').next('.contenu_changer_license').down('select');
		Event.observe(selectLicense, 'change', function(){
			lien.up('p').next('.contenu_changer_license').morph('height:0;',{duration:0.3});
			lien.appear({duration:0.3});
			//alert(selectLicense.options[selectLicense.selectedIndex].value);
			//alert(lien.up('tr').id);
			optionText = selectLicense.options[selectLicense.selectedIndex].text;
			lien.previous('span').innerHTML = optionText.substring(optionText.indexOf('-')+2);
			
			optionValue = selectLicense.options[selectLicense.selectedIndex].value;
			
			idproduct = lien.up('tr').id;
			office = "delivery_office_" + idproduct;
			email = "delivery_email_" + idproduct;
			
			if(optionValue == 1 || optionValue == 2 || optionValue == 4)
			{
				$(office).show();
				$(email).hide();
				new Effect.Highlight($(office),{duration:0.5});
			}
			else
			{
				$(office).hide();
				$(email).show();
				new Effect.Highlight($(email),{duration:0.5});
			}
			
			new Effect.Highlight(lien.previous('span'),{duration:0.5});
			
			new Ajax.Request( '/mycart/changelicense', {
				method: 'post',
				parameters:{
					idproduct: lien.up('tr').id,
					idlicense: selectLicense.options[selectLicense.selectedIndex].value
				},
				onSuccess: function(transport)
				{
					var response = transport.responseText;
					refreshprices(response);
				}
			});
		});		
		return false;									  
	});
};

var frmMdp = function() {
	$('msgGlobal').hide();
	param_form = { mep: 'msg_global', autoScroll: false, action: 'submit'};
	champs_form = {
		email_mdp: {type:'mel', alerte:'Email is missing and must be valid.'}
	};
	if(formVerif('frm_mdp', champs_form, param_form))
	{
		$('msgGlobal').className = "frm_ok";
		$('msgGlobal').update('<strong>Please wait while we are checking your email...</strong>');
		$('msgGlobal').appear({duration:1.0});
		new Ajax.Request( '/myprofile/password', {
				method: 'post',
				parameters: {
					email: $('email_mdp').value
				},
				onSuccess: function(transport)
				{
					var response = transport.responseText;
					if(response == 'ko')
					{
						$('msgGlobal').className = "frm_erreur";
						$('email_mdp').addClassName('inputError');
						$('msgGlobal').update('<strong>Sorry, this account is unknown to Reportlinker. Please re-enter your email.</strong>');
						$('msgGlobal').appear({duration:1.0})
					}
					else 
					{
						showMessages('msgGlobal', false, '<strong>Thank you !</strong><br/>An email has just been sent to you. Please, follow the instructions provided to get a new password.');
					}
				}
			});
	}
	return false;
};

var checkMail = function(field)
{
	var mailExist = false;
	new Ajax.Request( '/myprofile/checkmail', {
		method: 'post',
		asynchronous : false,
		parameters: {
			email: field.value
		},
		onSuccess: function(transport)
		{
			var response = transport.responseText;
			if(response == 'ok')
			{
				mailExist = true;
			}
		}
	});
	return mailExist;
}

var frmNewPwd = function() {
	param_form = { mep: 'msg_global', autoScroll: false, action: 'submit'};
	champs_form = {
		new_pwd: {alerte:'Password is missing.'},
		new_pwd_2: {alerte:'Confirmation is missing.'}
	};
	return formVerif('frm_new_pwd', champs_form, param_form);
};

var frmCompteMdp = function() {
	param_form = { mep: 'msg_global', autoScroll: false, action: 'submit'};
	champs_form = {
		mdp_actuel_compte: {alerte:'Actual password is missing.'},
		mdp_nouveau_compte: {alerte:'New password is missing.'}
	};
	return formVerif('frm_compte_mdp', champs_form, param_form);
};

var frmCancelSubscription = function (mode)
{
	param_form = { mep: 'msg_global', autoScroll: false, action: 'submit'};
	champs_form = {
		email: {type:'mel', alerte:'Email is missing and must be valid.'},
		number: {alerte:'Credit card last 4 digits are missing.'}			
	};
	
	if (formVerif('frm_cancel', champs_form, param_form))
	{
		showMessages('msgGlobal', false, 'Please wait, we are performing your request...');
		
		new Ajax.Request( '/myprofile/cancelsubscription/mode/'+mode, {
			method: 'post',
			parameters: {
				email: $('email').value,
				number: $('number').value,
				comments: $('comments').value
			},
			onSuccess: function(transport)
			{
				var response = transport.responseText;
				if(response.startsWith('ok'))
				{
					
					showMessages('msgGlobal', false, 'Subscription Renewal Cancelled');
					//new Effect.Pulsate($('msgGlobal'),{duration:3.0});
					document.location.href = '/myprofile/subscription';
				}
				else 
				{
					showMessages('msgGlobal', true, response);			
				}
			},
			onFailure: function(transport)
			{
				var response = transport.responseText;
				showMessages('msgGlobal', true, response);
			}
		});
		
	}
	return false;
}

var frmResetEmailSubscription = function (){
	$('msgGlobal').hide();
	$('ajaxEmail').fade({duration: 1.0});
	$('frm_activer_compte').onsubmit = function(){return frmActiverCompteNotLogged()};
	
	return false;
}

var frmActiverCompteNotLogged = function() {	
	//alert($('formule_compte').getValue());
	param_form = { mep: 'msg_global', autoScroll: false, action: 'submit'};
	champs_form = {
		email_compte: {type:'mel', alerte:'Email is missing and must be valid.'},	
		country: {alerte:'Country is missing.'},
		numero_carte_compte: {alerte:'Card Number is missing.'},
		mois_compte: {alerte:'Month of expiration date is missing.'},
		annee_compte: {alerte:'Year of expiration date is missing.'},
		code_compte: {alerte:'Security Code is missing.'}
	};
	var errorMessage = '';
	if($('prenom_compte').value == '' || $('prenom_compte').value == 'First name') {
		errorMessage += '<p>First name is missing.</p>';	
		$('prenom_compte').addClassName('inputError');
	}else{
		$('prenom_compte').removeClassName('inputError');
	}	
	if($('nom_compte').value == '' || $('nom_compte').value == 'Family name') {
		errorMessage += '<p>Family name is missing.</p>';	
		$('nom_compte').addClassName('inputError');
	}else{
		$('nom_compte').removeClassName('inputError');
	}
		
	if (formVerif('frm_activer_compte', champs_form, param_form, {errorMessage:errorMessage}))
	{
		$('submit_cb').hide();
		new Ajax.Request( '/myprofile/checkmail', {
			method: 'post',
			parameters: {
				email: $('email_compte').value								
			},
			onSuccess: function(transport)
			{
				var response = transport.responseText;
				//champ.removeClassName('inputError');
				if(response == 'ko')
				{//email inconnu
					showMessages('msgGlobal', false, "Please wait while we are processing your payment.");
					//new Effect.Pulsate($('msgGlobal'),{pulses: 5, duration:5.0});
					new Ajax.Request( '/mycart/postsubscribe', {
						method: 'post',
						parameters: {
							email: $('email_compte').value,
							first_name: $('prenom_compte').value,
							last_name: $('nom_compte').value,
							country: $('country').value,
							subscription: getSelectedSubscription(),
							cb: $('numero_carte_compte').value,
							month: $('mois_compte').value,
							year: $('annee_compte').value,
							cvv: $('code_compte').value,
							extref: $('extref').value,
							documentref: $('documentref').value
						},
						onSuccess: function(transport)
						{
							var response = transport.responseText;							
							if(response.startsWith('ok'))
							{
								document.location.href = '/mycart/subscriptionfinal';
							}
							else 
							{	
								showMessagesCB('msgGlobal', true, response);
								$('submit_cb').show();
							}
						},
						onFailure: function(transport)
						{
							var response = transport.responseText;
							showMessages('msgGlobal', true, response);
							$('submit_cb').show();
						}
					});
				}
				else 
				{//email reconnu
					$('submit_cb').show();
					$('msgGlobal').hide();
					$('ajaxEmail').appear({duration:0.3});
					$('frm_activer_compte').onsubmit = function(){return frmActiverCompteLogin()};
					$('ajaxEmail').down('.frm_erreur').update('You are already registered : please <strong>provide your password</strong> or <strong>enter a new email address</strong>.');
					
					if($('email_compte')) {
						Event.observe('email_compte','click', frmResetEmailSubscription);	
					}
				}
			},
			onFailure: function(transport)
			{
				var response = transport.responseText;
				showMessages('msgGlobal', true, response);
				$('submit_cb').show();
			}
		});
	}
	return false;
};

var frmActiverCompteLogin = function()
{
	param_form = { mep: 'msg_global', autoScroll: false, action: 'submit' };
	champs_form = {
		email_compte: {type:'mel', alerte:'Email is missing and must be valid.'} ,
		password_compte: {alerte:'Password is missing.'}
	};
	if (formVerif('frm_activer_compte', champs_form, param_form))
	{
		new Ajax.Request( '/auth/postlogin', {
			method: 'post',
			asynchronous : false,
			parameters: {
				email: $('email_compte').value,
				pwd: $('password_compte').value
			},
			onSuccess: function(transport)
			{
				var response = transport.responseText;
				if(response.startsWith('ok'))
				{
					//rafraichissement de la page
					document.location.reload(true);
				}
				else 
				{
					$('password_compte').addClassName('inputError');
					$('ajaxEmail').down('.frm_erreur').update(response);
				}
			},
			onFailure: function(transport)
			{
				var response = transport.responseText;
				showMessages('msgGlobal', true, response);
			}
		});
	}
	return false;
};

var getSubCountry = function()
{
	new Ajax.Request( '/mycart/changecountrysub', {
		method: 'post',
		parameters: {			
			country: $('country').value,
			mode : $('mode').value
		},
		onSuccess: function(transport)
		{
			var response = transport.responseText;
			if($('trial'))
			{
				$('trial').update(response);
				new Effect.Highlight($('trial'),{duration:0.8});
			}
			else
			{
				var prices = response.evalJSON();
				$$('.normal').each(function(cont, i)
						{
							cont.update(prices[i]);
							new Effect.Highlight(cont,{duration:0.8});
						});
			}
			
		},
		onFailure: function(transport)
		{
			var response = transport.responseText;
			showMessages('msgGlobal', true, response);
		}
	});
}

var getCountryPhone = function(countryCode)
{
	if($('bloc_contact'))
	{
		new Ajax.Request( '/mycart/changephone', {
			method: 'post',
			parameters: {			
				country: countryCode
			},
			onSuccess: function(transport)
			{
				var response = transport.responseText;
				$('bloc_contact').down('.h_bloc_contact').down('.tel').update(response);
			},
			onFailure: function(transport)
			{
				var response = transport.responseText;
				showMessages('msgGlobal', true, response);
			}
		});	
	}
	return false;
}

var getSelectedSubscription = function()
{
	if($('formule_trial'))
		return $('formule_trial').value;
	else
	{
		for (i=0;i<document.frm_activer_compte.formule_compte.length;i++)
		{
			if (document.frm_activer_compte.formule_compte[i].checked)
		    {
				return document.frm_activer_compte.formule_compte[i].value;
			}
		}
	}
}

var getSelectedLicense = function()
{
	if(!$('lic'))
	{
		for (i=0;i<document.frm_obtenir_rapport.choix_rapport.length;i++)
		{
			if (document.frm_obtenir_rapport.choix_rapport[i].checked)
			{
				return document.frm_obtenir_rapport.choix_rapport[i].value;
			}
		}
	}
	else
		return $('lic').value;
}

var frmActiverCompteLogged = function ()
{
	$('msgGlobal').hide();
	param_form = { mep: 'msg_global', autoScroll: false, action: 'submit'};
	champs_form = {
		numero_carte_compte: {alerte:'Card Number is missing.'},
		mois_compte: {alerte:'Month of expiration date is missing.'},
		annee_compte: {alerte:'Year of expiration date is missing.'},
		code_compte: {alerte:'Security Code is missing.'}
	};
	var errorMessage = '';	
	if (formVerif('frm_activer_compte', champs_form, param_form, {errorMessage:errorMessage}))
	{	
		showMessages('msgGlobal', false, "Please wait while we are processing your payment.");
		//new Effect.Pulsate($('msgGlobal'),{pulses: 5, duration:5.0});
		$('submit_cb').hide();
		new Ajax.Request( '/mycart/postsubscribe', {
			method: 'post',
			parameters: {			
				subscription: getSelectedSubscription(),
				cb: $('numero_carte_compte').value,
				month: $('mois_compte').value,
				year: $('annee_compte').value,
				cvv: $('code_compte').value,
				extref: $('extref').value,
				documentref: $('documentref').value
			},
			onSuccess: function(transport)
			{
				var response = transport.responseText;							
				if(response.startsWith('ok'))
				{
					document.location.href = '/mycart/subscriptionfinal';
				}
				else 
				{	
					showMessagesCB('msgGlobal', true, response);
					$('submit_cb').show();
				}
			},
			onFailure: function(transport)
			{
				var response = transport.responseText;
				showMessages('msgGlobal', true, response);
				$('submit_cb').show();
			}
		});
	}
	
	return false;
}

var frmActiverCompteFinal = function(origin)
{
	var result = saveAccountInfos('frm_subscription_final');
	if(result)
		document.location.href = origin;
	return false;
}

var frmLogin = function() {
	$('msgGlobal').hide();
	param_form = { mep: 'msg_global', autoScroll: false, action: 'submit'};
	champs_form = {
			email: {type:'mel', alerte:'Email is missing and must be valid.'},
			pwd : {alerte :'Password is missing'}
		};
	if(formVerif('frm_login', champs_form, param_form))
	{
		$('btnLogin').hide();
		showMessages('msgGlobal', false, '<strong>Please wait...</strong>');
		new Ajax.Request( '/auth/postlogin', {
				method: 'post',
				asynchronous : false,
				parameters: {
					email: $('email').value,
					pwd: $('pwd').value
				},
				onSuccess: function(transport)
				{
					var response = transport.responseText;
					if(response.startsWith('ok'))
					{
						//$('banniere').down('div').fade({duration: 0.5});
						showMessages('msgGlobal', false, '<strong>Welcome ! You are currently being redirected.</strong>');
						var previous = response.split('_')[1];
						document.location.href = previous;
					}
					else 
					{
						showMessages('msgGlobal', true, '<strong>' + response + '</strong>');
						$('btnLogin').show();
					}
				},
				onFailure: function(transport)
				{
					var response = transport.responseText;
					showMessages('msgGlobal', true, '<strong>' + response + '</strong>');//
					$('btnLogin').show();
				}
			});
	}
	return false;
};

var frmPayment = function() {
	$('msgGlobal').hide();
	param_form = { mep: 'msg_global', autoScroll: false, action: 'submit'};
	champs_form = {
		cardNumber: {alerte:'Card Number is missing.'},
		expMonth: {alerte:'Month of expiration is missing.'},
		expYear: {alerte:'Year of expiration is missing.'},
		cvv: {alerte:'Security Code is missing.'}
	};

	if(formVerif('frm_paiement', champs_form, param_form))
	{
		showMessages('msgGlobal', false, "Please wait while we are processing your payment.");
		
		$('submit_cb').hide();
		
		new Ajax.Request( '/mycart/postcheckout', {
			method: 'post',
			parameters:{
				cardNumber : $('cardNumber').value,
				cvv : $('cvv').value,
				expMonth : $('expMonth').value,
				expYear : $('expYear').value
			},
			onSuccess: function(transport)
			{
				var response = transport.responseText;
				if(response.startsWith('ok'))
				{
					//showMessages('msgGlobal', false, 'Your payment is confirmed !');
					var id = response.split('-')[1];
					document.location.href = '/mycart/confirmation/id/' + id;
				}
				else
				{
					showMessagesCB('msgGlobal', true, response);
					$('submit_cb').show();
				}
			},
			onFailure: function(transport)
			{
				var response = transport.responseText;
				showMessages('msgGlobal', true, response);
				$('submit_cb').show();
			}});
	}
	return false;
};


var frmPaymentNotLogged = function() {
	$('msgGlobal').hide();
	param_form = { mep: 'msg_global', autoScroll: false, action: 'submit'};
	champs_form = {
		email_compte: {type:'mel', alerte:'Email is missing and must be valid.'},	
		prenom_compte: {alerte:'First name is missing.'},	
		nom_compte: {alerte:'Family name is missing.'},
		telephone_compte: {alerte:'Phone number is missing.'},
		cardNumber: {alerte:'Card Number is missing.'},
		expMonth: {alerte:'Month of expiration is missing.'},
		expYear: {alerte:'Year of expiration is missing.'},
		cvv: {alerte:'Security Code is missing.'}
	};
		
	if (formVerif('frm_paiement', champs_form, param_form))
	{
		$('submit_cb').hide();
		new Ajax.Request( '/myprofile/checkmail', {
			method: 'post',
			parameters: {
				email: $('email_compte').value								
			},
			onSuccess: function(transport)
			{
				var response = transport.responseText;
				//champ.removeClassName('inputError');
				if(response == 'ko')
				{//email inconnu
					showMessages('msgGlobal', false, "Please wait while we are processing your payment.");
		
					new Ajax.Request( '/mycart/postcheckout', {
						method: 'post',
						parameters:{
						email: $('email_compte').value,
						first_name: $('prenom_compte').value,
						last_name: $('nom_compte').value,
						phone: $('telephone_compte').value,
						country: $('country').value,
						cardNumber : $('cardNumber').value,
						cvv : $('cvv').value,
						expMonth : $('expMonth').value,
						expYear : $('expYear').value
						},
						onSuccess: function(transport)
						{
								var response = transport.responseText;
								if(response.startsWith('ok'))
								{
									//showMessages('msgGlobal', false, 'Your payment is confirmed !');
									var id = response.split('-')[1];
									document.location.href = '/mycart/confirmation/id/' + id;
								}
								else
								{
									showMessagesCB('msgGlobal', true, response);
									$('submit_cb').show();
								}
						},
						onFailure: function(transport)
						{
							var response = transport.responseText;
							showMessagesCB('msgGlobal', true, response);
							$('submit_cb').show();
						}});
				}
				else 
				{//email reconnu
					$('ajaxEmail').appear({duration:0.3});
					$('frm_paiement').onsubmit = function(){return frmPaymentLogin()};
					$('ajaxEmail').down('.frm_erreur').update('You are already registered : please <strong>provide your password</strong> or <strong>enter a new email address</strong>.');
					$('cbinfos').hide();
					$('userinfosnext').hide();
						if($('email_compte')) {
							Event.observe('email_compte','click', frmResetEmailPayment);	
						}
					}
				},
				onFailure: function(transport)
				{
					var response = transport.responseText;
					showMessagesCB('msgGlobal', true, response);
					$('submit_cb').show();
				}
			});
	}
	return false;
};

var frmPaymentCheckEmail = function (){
	$('msgGlobal').hide();
	if($('email_compte').value != '')
	{
		param_form = { mep: 'msg_global', autoScroll: false, action: 'submit'};
		champs_form = {
			email_compte: {type:'mel', alerte:'Email must be valid.'}
		};
			
		if (formVerif('frm_paiement', champs_form, param_form))
		{
			new Ajax.Request( '/myprofile/checkmail', {
				method: 'post',
				parameters: {
					email: $('email_compte').value								
				},
				onSuccess: function(transport)
				{
					var response = transport.responseText;
					//champ.removeClassName('inputError');
					if(response == 'ko')
					{//email inconnu
					}
					else 
					{//email reconnu
						$('msgGlobal').hide();
						$('ajaxEmail').appear({duration:0.3});
						$('frm_paiement').onsubmit = function(){return frmPaymentLogin()};
						$('ajaxEmail').down('.frm_erreur').update('You are already registered : please <strong>provide your password</strong> or <strong>enter a new email address</strong>.');
						$('cbinfos').hide();
						$('userinfosnext').hide();
							if($('email_compte')) {
								Event.observe('email_compte','click', frmResetEmailPayment);	
							}
						}
					},
					onFailure: function(transport)
					{
						var response = transport.responseText;
						showMessages('msgGlobal', true, response);
						$('submit_cb').show();
					}
				});
		}
	}
	
}

var frmResetEmailPayment = function (){
	$('msgGlobal').hide();
	$('ajaxEmail').hide();
	$('cbinfos').show();
	$('userinfosnext').show();
	$('frm_paiement').onsubmit = function(){return frmPaymentNotLogged()};
	
	return false;
}

var frmPaymentByInvoiceCheckEmail = function (){
	$('msgGlobalAccount').hide();
	if($('email_compte2').value != '')
	{
		param_form = { mep: 'msg_global', autoScroll: false, action: 'submit'};
		champs_form = {
				email_compte2: {type:'mel', alerte:'Email must be valid.'}
		};
			
		if (formVerif('frm_payment_invoice', champs_form, param_form,  {idMsgGlobal:'msgGlobalAccount'}))
		{
			new Ajax.Request( '/myprofile/checkmail', {
				method: 'post',
				parameters: {
					email: $('email_compte2').value								
				},
				onSuccess: function(transport)
				{
					var response = transport.responseText;
					//champ.removeClassName('inputError');
					if(response == 'ko')
					{//email inconnu
					}
					else 
					{//email reconnu
						$('msgGlobalAccount').hide();
						$('ajaxEmail2').appear({duration:0.3});
						$('frm_payment_invoice').onsubmit = function(){return frmPaymentByInvoiceLogin()};
						$('ajaxEmail2').down('.frm_erreur').update('You are already registered : please <strong>provide your password</strong> or <strong>enter a new email address</strong>.');
						$('otherinfos').hide();
						$('delivery').hide();
						$('action').hide();
						//$('userinfosnext').hide();
							if($('email_compte2')) {
								Event.observe('email_compte2','click', frmResetEmailInvoice);	
							}
						}
					},
					onFailure: function(transport)
					{
						var response = transport.responseText;
						showMessages('msgGlobalAccount', true, response);
						$('submit_cb').show();
					}
				});
		}
	}
}

var frmResetEmailInvoice = function (){
	$('msgGlobalAccount').hide();
	$('ajaxEmail2').hide();
	$('otherinfos').show();
	editDeliveryAddress();
	$('action').show();
	//$('userinfosnext').show();
	$('frm_payment_invoice').onsubmit = function(){return frmPaymentByInvoice()};
	
	return false;
}



var frmPaymentLogin = function()
{
	param_form = { mep: 'msg_global', autoScroll: false, action: 'submit' };
	champs_form = {
		email_compte: {type:'mel', alerte:'Email is missing and must be valid.'} ,
		password_compte: {alerte:'Password is missing.'}
	};
	if (formVerif('frm_paiement', champs_form, param_form))
	{
		new Ajax.Request( '/auth/postlogin', {
			method: 'post',
			asynchronous : false,
			parameters: {
				email: $('email_compte').value,
				pwd: $('password_compte').value
			},
			onSuccess: function(transport)
			{
				var response = transport.responseText;
				if(response.startsWith('ok'))
				{
					//rafraichissement de la page
					document.location.reload(true);
				}
				else 
				{
					$('password_compte').addClassName('inputError');
					$('ajaxEmail').down('.frm_erreur').update(response);
				}
			},
			onFailure: function(transport)
			{
				var response = transport.responseText;
				showMessagesCB('msgGlobal', true, response);
			}
		});
	}
	return false;
};


var frmPaymentByInvoiceLogin = function()
{
	param_form = { mep: 'msg_global', autoScroll: false, action: 'submit' };
	champs_form = {
		email_compte2: {type:'mel', alerte:'Email is missing and must be valid.'} ,
		password_compte2: {alerte:'Password is missing.'}
	};
	if (formVerif('frm_payment_invoice', champs_form, param_form, {idMsgGlobal:'msgGlobalAccount'}))
	{
		new Ajax.Request( '/auth/postlogin', {
			method: 'post',
			asynchronous : false,
			parameters: {
				email: $('email_compte2').value,
				pwd: $('password_compte2').value
			},
			onSuccess: function(transport)
			{
				var response = transport.responseText;
				if(response.startsWith('ok'))
				{
					//rafraichissement de la page
					document.location.reload(true);
				}
				else 
				{
					$('password_compte2').addClassName('inputError');
					$('ajaxEmail2').down('.frm_erreur').update(response);
				}
			},
			onFailure: function(transport)
			{
				var response = transport.responseText;
				showMessages('msgGlobalAccount', true, response);
			}
		});
	}
	return false;
};


var billingEdit = function()
{
	$('billingInfosAction').stopObserving('click');
	if($('billingInfosAction').text == '[edit]')
		Event.observe($('billingInfosAction'), 'click', function(){return changeAccountEditionMode('edit')});
	else
		Event.observe($('billingInfosAction'), 'click', function(){return changeAccountEditionMode('view')});	
}

var changeAccountEditionMode = function(mode)
{
	new Ajax.Request('/mycart/accountinfos/mode/' + mode, {
		method: 'get',
		onSuccess: function(transport)
		{
			var response = transport.responseText;					
			$('billingInfos').update(response);
			if(mode == 'edit')
				$('billingInfosAction').update('[cancel]');
			else
				$('billingInfosAction').update('[edit]');
			billingEdit();
		}
	});	
	return false;
};

var observeSwitchProfile = function(elementName)
{
	var linkName = elementName + '_mode';
	if($(linkName))
	{
		if($(linkName).innerHTML == '[Edit]')
			$(linkName).onclick = function(){switchProfileView(elementName, 'edit'); return false;};
		else
			$(linkName).onclick = function(){switchProfileView(elementName, 'view'); return false;};
	}
}

var switchProfileView = function(elementName, mode)
{
	var linkName = elementName + '_mode';
	new Ajax.Request('/myprofile/switch/view/'+ elementName +'/mode/' + mode, {
		method: 'get',
		onSuccess: function(transport)
		{
			var response = transport.responseText;					
			$(elementName).update(response);
			if(mode == 'edit')
				$(linkName).update('[Cancel]');
			else
				$(linkName).update('[Edit]');
			observeSwitchProfile(elementName);
		},
		onFailure: function(transport)
		{
			var response = transport.responseText;
			showMessages('msg_' + elementName, true, response);
		}
	});	
	return false;
};

var switchState = function(country, stateContainer)
{
	if(stateContainer)
	{
		if(country.value == 'us') stateContainer.show();
		else stateContainer.hide();
	}
	return false;
}


var frmBillingInfos = function(next)
{
	param_form = { mep: 'msg_global', autoScroll: false, action: 'submit'};
	var champs_form = null;
	var save = false;
	if($('fName'))
	{
		save = true;
		champs_form = {
			fName: {alerte:'First name is missing.'},
			lName: {alerte:'Family name is missing.'},
			address1: {alerte:'Address1 is missing.'},
			phone: {alerte:'Phone number is missing.'},
			zip: {alerte:'Zip Code is missing.'},
			city: {alerte:'City is missing.'}
		};
	}

	if($('pwd'))
	{
		save = true;
		champs_form_2 = {
				pwd: {alerte:'Password is missing.'},
				pwd_2: {alerte:'Password confirmation is missing.'}
		};
		Object.extend(champs_form, champs_form_2);
	}
	
	if ($('usebilling'))
	{
		if(!$('usebilling').checked)
		{
			champs_form_delivery = {
					dfName: {alerte:'Delivery first name is missing.'},
					dlName: {alerte:'Delivery family name is missing.'},
					dAddress1: {alerte:'Delivery address is missing.'},
					dZip: {alerte:'Delivery zip Code is missing.'},
					dCity: {alerte:'Delivery city is missing.'},
					dCountry : {alerte:'Delivery country is missing'}
			};
			Object.extend(champs_form, champs_form_delivery);
		}
	}
	
	if(save)
	{
		if(formVerif('frm_billing_infos', champs_form, param_form))
		{
			new Ajax.Request( '/mycart/postaccountinfos', {
				method: 'post',
				parameters:$('frm_billing_infos').serialize(true),
				onSuccess: function(transport)
				{
					var response = transport.responseText;
					
					if(response=='ok')
					{
						if(next=='home')
							document.location.href = 'http://www.reportlinker.com/';
						else
							document.location.href = 'http://www.reportlinker.com/myprofile';
					}
					else
					{
						showMessages('msgGlobal', true, response);
					}
				},
				onFailure: function(transport)
				{
					var response = transport.responseText;
					showMessages('msgGlobal', true, response);
				}});
		}
	}
	else
	{
		if(next=='home')
			document.location.href = 'http://www.reportlinker.com/';
		else
			document.location.href = 'http://www.reportlinker.com/myprofile';
	}
	
	return false;
};

var frmDownload = function(url, name, params, id)
{
	window.open(url, name, params);
	//cet appel ajax n'effectue aucun traitement, il permet juste
	//d'assurer le tracking en base
	new Ajax.Request( '/document/download/'+id, {
		method: 'post',		
		asynchronous: true});
	
	return false;
}

var editDeliveryAddress = function()
{
	if($('usebilling').checked)
		$('delivery').hide();
	else
		$('delivery').show();
	return false;
}

var saveAccountInfos = function(formName)
{
	param_form = { mep: 'msg_global', autoScroll: false, action: 'submit'};
	champs_form = {
		fName: {alerte:'First name is missing.'},
		lName: {alerte:'Family name is missing.'},
		phone: {alerte:'Phone number is missing.'},
		address1: {alerte:'Address1 is missing.'},
		zip: {alerte:'Zip Code is missing.'},
		city: {alerte:'City is missing.'},
		country : {alerte:'Country is missing'}
	};

	if($('pwd'))
	{
		champs_form_pwd = {
				pwd: {alerte:'Password is missing.'},
				pwd_2: {alerte:'Password confirmation is missing.'}
		};
		Object.extend(champs_form, champs_form_pwd);
	}
	
	if($('email_compte2'))
	{
		champs_form_email = {
				email_compte2: {type:'mel', alerte:'Email is missing and must be valid.'}
		};
		Object.extend(champs_form, champs_form_email);
	}
	
	if ($('usebilling'))
	{
		if(!$('usebilling').checked)
		{
			champs_form_delivery = {
					dfName: {alerte:'Delivery first name is missing.'},
					dlName: {alerte:'Delivery family name is missing.'},
					dAddress1: {alerte:'Delivery address is missing.'},
					dZip: {alerte:'Delivery zip Code is missing.'},
					dCity: {alerte:'Delivery city is missing.'},
					dCountry : {alerte:'Delivery country is missing'}
			};
			Object.extend(champs_form, champs_form_delivery);
		}
	}
	
	if(formVerif(formName, champs_form, param_form, {idMsgGlobal:'msgGlobalAccount'}))
	{
		var result;
		showMessages('msgGlobalAccount', false, "Please wait while we are saving your data.");
		//$('msgGlobalAccount').appear({duration:0.5});
		//new Effect.Pulsate($('msgGlobalAccount'),{pulses: 2, duration:3.0});
		new Ajax.Request( '/mycart/postaccountinfos', {
			method: 'post',
			asynchronous: false,
			parameters:$(formName).serialize(true),
			onSuccess: function(transport)
			{
				var response = transport.responseText;
				if(response=='ok')
				{
					result = true;
				}
				else
				{
					showMessages('msgGlobalAccount', true, response);
					result = false;
				}
			},
			onFailure: function(transport)
			{
				var response = transport.responseText;
				showMessages('msgGlobalAccount', true, response);
				result = false;
			}});
		return result;
	}
	else
		return false;
}


var frmAccountInfos = function(elementName)
{
	param_form = { mep: 'msg_global', autoScroll: false, action: 'submit'};
	
	if(elementName == 'accesscodes')
	{
		champs_form = {
				email: {type: 'mel', alerte:'Email is missing and must be valid.'},
				pwd: {alerte:'Old password is missing.'},
				new_pwd: {alerte:'Password is missing.'},
				new_pwd_2: {alerte:'Password confirmation is missing.'}
			};
	}
	
	if(elementName == 'personalinfos')
	{
		champs_form = {
			fName: {alerte:'First name is missing.'},
			lName: {alerte:'Family name is missing.'}
		};
	}

	if(elementName == 'billingaddress')
	{
		champs_form = {
				address1: {alerte:'Address1 is missing.'},
				zip: {alerte:'Zip code is missing.'},
				city: {alerte:'City is missing.'},
				country: {alerte:'Country is missing.'},
				phone: {alerte:'Phone number is missing.'}
		};
	}
	
	if(elementName == 'shippingaddress')
	{
		if(!$('usebilling').checked)
		{
			champs_form = {
				dfName: {alerte:'First name is missing.'},
				dlName: {alerte:'Family name is missing.'},
				dAddress1: {alerte:'Address1 is missing.'},
				dZip: {alerte:'Zip code is missing.'},
				dCity: {alerte:'City is missing.'},
				dCountry: {alerte:'Country is missing.'}
			};
		}
		else
			champs_form = null;
	}
	
	var formName = 'frm_' + elementName;
	var msgName = 'msg_' + elementName;
	if(formVerif(formName, champs_form, param_form, {idMsgGlobal:msgName}))
	{
		showMessages(msgName, false, "Please wait while we are saving your data.");
		//$('msgName').appear({duration:0.5});
		//new Effect.Pulsate($(msgName),{pulses: 2, duration:3.0});
		new Ajax.Request( '/myprofile/postaccountinfos/mode/' + elementName, {
			method: 'post',
			asynchronous: false,
			parameters:$(formName).serialize(true),
			onSuccess: function(transport)
			{
				var response = transport.responseText;
				if(response!='ok')
				{
					showMessages(msgName, true, response);
				}
				else
					switchProfileView(elementName, 'view');
			},
			onFailure: function(transport)
			{
				var response = transport.responseText;
				showMessages(msgName, true, response);
			}});
	}
	return false;
}

var frmPaymentByInvoice = function()
{
	$('submit_facture').hide();
	var result = saveAccountInfos('frm_payment_invoice');
	if(result)
	{
		showMessages('msgGlobalAccount', false, "Please wait while we are creating your order.");
		//$('msgGlobalAccount').appear({duration:0.5});
		//new Effect.Pulsate($('msgGlobalAccount'),{pulses: 2, duration:3.0});
		new Ajax.Request( '/mycart/createinvoice', {
			method: 'get',
			asynchronous: false,
			onSuccess: function(transport)
			{
				var response = transport.responseText;
				if(response.startsWith('ok'))
				{
					var id = response.split('-')[1];
					generatePdf('order', id);
					document.location.href = '/mycart/orderform/id/' + id;
				}
				else
					showMessages('msgGlobalAccount', true, response);
			},
			onFailure: function(transport)
			{
				var response = transport.responseText;
				showMessages('msgGlobalAccount', true, response);
			}
			
		});
	}
	$('submit_facture').show();
	return false;
}

var showMessages = function(id, error, text)
{
	if(error)
		$(id).className = "frm_erreur";
	else
		$(id).className = "frm_ok";
	
	$(id).update('<strong>' + text + '</strong>');
	$(id).appear({duration:1.0});
}

//Affichage des messages d'erreur de carte bancaire
var showMessagesCB = function(id, error, text)
{
	if(error)
		$(id).className = "frm_erreur";
	else
		$(id).className = "frm_ok";
	
	$(id).update(text);
	$(id).appear({duration:1.0});
}

var invoiceByYear = function (filter, year, selected, selectedYear)
{
	if (filter == 'pyear')
	{
		if (selected == 'yes' && selectedYear != 0)
			document.location.href = '/myprofile/invoices/pyear/'+year+'/syear/'+selectedYear;
		else
			document.location.href = '/myprofile/invoices/pyear/'+year;
	}
	if (filter == 'syear')
	{
		if (selected == 'yes' && selectedYear != 0)
			document.location.href = '/myprofile/invoices/syear/'+year+'/pyear/'+selectedYear;
		else
			document.location.href = '/myprofile/invoices/syear/'+year;
	}
}

var generatePdf = function (type, id)
{
	var params = 'left=70,right=70, top=10,width=1024,height=768,resizable,scrollbars=yes,status=1';
	switch(type)
	{
		case 'invoice':
			window.open('/myprofile/pdfinvoiceform/id/'+id, 'YourInvoice', params);
			break;
		case 'order':
			window.open('/mycart/pdforderform/id/'+id, 'YourOrder', params);
			break;
	}
	return false;
}

var search = function(keywords, url)
{
	if(keywords != '')
	{
		keywords = checkKeywords(keywords);
		document.location.href = url + '/keywords/' + keywords;
	}
	return false;
}

var searchPublic = function(keywords)
{
	if(keywords != '')
	{
		keywords = checkKeywords(keywords);
		document.location.href = '/report/search/keywords/' + keywords + '/mode/public';
	}
	return false;
}

var checkKeywords = function(keywords)
{
	var quotes = substr_count(keywords, '"');
	if(quotes%2 == 1)
		keywords += '"';
	return keywords;
}

var substr_count = function( haystack, needle, offset, length ) {
    var pos = 0, cnt = 0;
    haystack += '';
    needle += '';
    if(isNaN(offset)) {offset = 0;}
    if(isNaN(length)) {length = 0;}
    offset--;
    while( (offset = haystack.indexOf(needle, offset+1)) != -1 ){
        if(length > 0 && (offset+needle.length) > length){
            return false;
        } else{
            cnt++;
        }
    }
    return cnt;
}

var scrambleJS = function(urlscrambled)
{
    var l  = '';
    l = urlscrambled.replace(/\|/g,'/').replace(/@/g,'.');
    window.location.href=l;    
}

var getPremiumCountry = function(country, secondcountry)
{
	if(secondcountry)
	{
		for(i = 0; i < secondcountry.length; i++) {
		if(secondcountry[i].value == country.value)
			secondcountry.selectedIndex = i;
		}
	}
	new Ajax.Request( '/mycart/changecountrypremium', {
		method: 'post',
		parameters: {			
			country: country.value
		},
		onSuccess: function(transport)
		{
			
			new Ajax.Request( '/mycart/vat', {
				method: 'post',
				asynchronous : false,
				onSuccess: function(transport)
				{
					var html = transport.responseText;
					$('contenu').down('.tva').update(html);
				}
			});
			
			var response = transport.responseText;
			refreshprices(response);			
		},
		onFailure: function(transport)
		{
			var response = transport.responseText;
			showMessages('msgGlobal', true, response);
		}
	});
}