function CheckJson(p_transport, p_json)
{
	if (p_json) { return true; }
	else { alert('Erreur : Json = ' + p_json + '\nResponse : ' + p_transport.responseText); return false; }
}

/**
 * @return true si l'email est un email valide
 */
function CheckValideEmail(_email)
{
	if ((_email.indexOf('@',0)==-1) || (_email.indexOf('.',0)==-1)) return false;
	return true;
}


/**
 * Change la visibilitée d'un noeud dont l'ID est passé en parametre
 */
function SwitchVisibility(p_id)
{
	var element = $(p_id);
	if (element != null)
	{
		if (element.style.visibility=='hidden')
		{
			element.style.visibility='visible';
			element.style.display='block';
		}
		else
		{
			element.style.visibility='hidden';
			element.style.display='none';
		}
	}
}

function Show(p_id)
{
	var element = document.getElementById(p_id);
	if (element != null)
	{
		element.style.display='block';
		element.style.visibility='visible';
	}
}

function Hide(p_id)
{
	var element = document.getElementById(p_id);
	if (element != null)
	{
		element.style.visibility='hidden';
		element.style.display='none';
	}
}

/**
 * Selectionne l'option d'un "select" dont la valeure est passée en parametre
 */
function SelectOption(p_idSelect, p_optionValue)
{
	var item = $(p_idSelect);

	for(var i=0;i<item.length;i++)
	{
		if (item.options[i].value == p_optionValue) item.selectedIndex = i;
	}
}

function GetSelectedRadioValue(p_radioName)
{
	var items = document.getElementsByName(p_radioName);

	for (var i=0; i<items.length; i++)
	{
		if(items[i].checked) return items[i].value;
	}
}

function ParseFloat(p_id)
{
	return parseFloat($(p_id).value.replace(',', '.'));
}

function Round(p_float, p_dec)
{
	return (Math.round(p_float*100)/100).toFixed(p_dec);
}

function DateValide(p_jour, p_mois, p_annee) 
{
	if (isNaN(parseInt(p_jour)) || isNaN(parseInt(p_mois)) || isNaN(parseInt(p_annee))) return false
	var datetmp = new Date(eval(p_annee),eval(p_mois)-1,eval(p_jour));
	return ((datetmp.getDate() == eval(p_jour)) && (datetmp.getMonth() == (eval(p_mois)-1)) && (datetmp.getFullYear() == eval(p_annee)))
}

/**
 * @return le code de la touche pressée correspondant a l'evenement passé en parametre
 */
function GetKeyCode(p_event)
{
	return (window.Event) ? p_event.which : p_event.keyCode; //pour savoir s'il s'agit de Msie ou de Netscape
}

/**
 * Autorise la saisie de nombres entiers uniquement
 */
function InputIntegerOnly(event)
{
	var touche = GetKeyCode(event);
	if (touche != 8 && touche != 13 && (touche < 48 || touche > 57)) return false;

	return true;
}

/**
 * Ouvre une popup au centre de la fenetre
 */
function PopupCentree(page,largeur,hauteur,options)
{
	var top=(screen.height-hauteur)/2;
	var left=(screen.width-largeur)/2;
	window.open(page,"","top="+top+",left="+left+",width="+largeur+",height="+hauteur+","+options);
}

function FindChild(p_noeud, p_id)
{
	var fils = p_noeud.childNodes;
	var nbFils = fils.length;

	for(var i=0; i<nbFils; i++) if (fils[i].id == p_id) return fils[i];

	return false;
}

function RemoveNode(p_node)
{
	p_node.parentNode.removeChild(p_node);
}

/*-------------------------------------*/
/*----- GESTION DE LA FACTURATION -----*/
/*-------------------------------------*/

var Facturation =
{
	/*-- GESTION DE L'IMPRESSION --*/
	
	PDF: function(p_id_devis, p_id_facture, p_id_contrat)
	{
		var nbLD=0;
		var nbLF=0;
		var nbLC=0;
		var nbFFr=0;
		var nbFEn=0;
		var nbC=0;
		var nbAFr=0;
		var nbDFr=0;
		var nbDEn=0;

		if ($('cbLD_' + p_id_devis) && $('cbLD_' + p_id_devis).checked) nbLD = $('nbLD_' + p_id_devis).value;
		if ($('cbLF_' + p_id_facture) && $('cbLF_' + p_id_facture).checked) nbLF = $('nbLF_' + p_id_facture).value;
		if ($('cbLC_' + p_id_contrat) && $('cbLC_' + p_id_contrat).checked) nbLC = $('nbLC_' + p_id_contrat).value;
		if ($('cbFFr_' + p_id_facture) && $('cbFFr_' + p_id_facture).checked) nbFFr = $('nbFFr_' + p_id_facture).value;
		if ($('cbFEn_' + p_id_facture) && $('cbFEn_' + p_id_facture).checked) nbFEn = $('nbFEn_' + p_id_facture).value;
		if ($('cbC_' + p_id_contrat) && $('cbC_' + p_id_contrat).checked) nbC = $('nbC_' + p_id_contrat).value;
		if ($('cbAFr_' + p_id_facture) && $('cbAFr_' + p_id_facture).checked) nbAFr = $('nbAFr_' + p_id_facture).value;
		if ($('cbDFr_' + p_id_devis) && $('cbDFr_' + p_id_devis).checked) nbDFr = $('nbDFr_' + p_id_devis).value;
		if ($('cbDEn_' + p_id_devis) && $('cbDEn_' + p_id_devis).checked) nbDEn = $('nbDEn_' + p_id_devis).value;
		var url = '/inc/communs/print.php?autoprint=1&id_facture=' + p_id_facture + '&id_devis=' + p_id_devis + '&id_contrat=' + p_id_contrat;

		if (nbLD || nbLF || nbLC || nbFFr || nbFEn || nbC || nbAFr || nbDFr || nbDEn)
		{
			if (nbLD>0) url += '&nbLD=' + nbLD;
			if (nbLF>0) url += '&nbLF=' + nbLF;
			if (nbLC>0) url += '&nbLC=' + nbLC;
			if (nbFFr>0) url += '&nbFFr=' + nbFFr;
			if (nbFEn>0) url += '&nbFEn=' + nbFEn;
			if (nbC>0) url += '&nbC=' + nbC;
			if (nbAFr>0) url += '&nbAFr=' + nbAFr;
			if (nbDFr>0) url += '&nbDFr=' + nbDFr;
			if (nbDEn>0) url += '&nbDEn=' + nbDEn;

			PopupCentree(url, 750, 800, 'scrollbars=yes');
		}
		else
		{
			alert('Vous devez choisir un document a imprimer');
		}
	},

	PDFLettreDevis: function(p_id_devis)
	{
		PopupCentree('/inc/communs/print.php?toPDF=1&nbLD=1&id_devis=' + p_id_devis, 750, 800, 'scrollbars=yes');
	},

	PDFLettreFacture: function(p_id_facture)
	{
		PopupCentree('/inc/communs/print.php?toPDF=1&nbLF=1&id_facture=' + p_id_facture, 750, 800, 'scrollbars=yes');
	},

	PDFLettreContrat: function(p_id_contrat)
	{
		PopupCentree('/inc/communs/print.php?toPDF=1&nbLC=1&id_contrat=' + p_id_contrat, 750, 800, 'scrollbars=yes');
	},

	PDFFactureEn: function(p_id_facture)
	{
		PopupCentree('/inc/communs/print.php?toPDF=1&nbFEn=1&id_facture=' + p_id_facture, 750, 800, 'scrollbars=yes');
	},

	PDFFactureFr: function(p_id_facture)
	{
		PopupCentree('/inc/communs/print.php?toPDF=1&nbFFr=1&id_facture=' + p_id_facture, 750, 800, 'scrollbars=yes');
	},

	PDFContrat: function(p_id_contrat)
	{
		PopupCentree('/inc/communs/print.php?toPDF=1&nbC=1&id_contrat=' + p_id_contrat, 750, 800, 'scrollbars=yes');
	},

	PDFAvoirFr: function(p_id_facture)
	{
		PopupCentree('/inc/communs/print.php?toPDF=1&nbAFr=1&id_facture=' + p_id_facture, 750, 800, 'scrollbars=yes');
	},

	PDFDevisFr: function(p_id_devis)
	{
		PopupCentree('/inc/communs/print.php?toPDF=1&nbDFr=1&id_devis=' + p_id_devis, 750, 800, 'scrollbars=yes');
	},

	PDFDevisEn: function(p_id_devis)
	{
		PopupCentree('/inc/communs/print.php?toPDF=1&nbDEn=1&id_devis=' + p_id_devis, 750, 800, 'scrollbars=yes');
	},

	/*-- AUTRES FONCTIONS --*/
	
	MAJEtape1TypeClient: function()
	{
		if ($('type_client1').checked)
		{
			$('lb_nom_societe').innerHTML = 'Nom de societ&eacute; *';
			$('responsable').disabled = false;
			$('lb_responsable').style.color = '#666666';
		}
		else if ($('type_client2').checked)
		{
			$('lb_nom_societe').innerHTML = 'Nom du particulier *';
			$('responsable').value = '';
			$('responsable').disabled = true;
			$('lb_responsable').style.color = '#AAAAAA';
		}
		else if ($('type_client3').checked)
		{
			$('lb_nom_societe').innerHTML = 'Nom de la collectivit&eacute; *';
			$('responsable').disabled = false;
			$('lb_responsable').style.color = '#666666';
		}
	},

	/*-- AUTRES FONCTIONS --*/
	
	AfficherDemandePrestation: function(p_id_demande)
	{
		PopupCentree('inc/compte/intermittent/facturation/demande_prestation.php?id_declaration_prestation=' + p_id_demande, 800, 700, '');
	},

	ContactPagePlusDInfos: function()
	{
		new Ajax.Request('inc/compte/intermittent/facturation/ajax.php',
		{
			method:'post',
			parameters:
			{
				pageAction: 'FacturationContactPagePlusDInfos',
				message: $('tfMessage').value,
				nom: $('nom').value,
				prenom: $('prenom').value,
				id_dossier: $('id_dossier').value
			},

			onSuccess: function(p_transport, p_json)
			{
				if (!CheckJson(p_transport, p_json)) return false;
				alert('message envoyé');
			}
		});
	},
	
	ValiderEtape1: function()
	{
		var erreur = '';
		var alerte = '';
		
		if ($('nom_societe').value.length == 0) { erreur += '- Vous devez saisir un nom de société\n'; }
		if (($('pays').value != 'France') && $('tva_intra').value.length==0) { alerte += '- Si le client est situé a l\'étranger, il est recommandé de nous fournir son numéro de TVA Intracommunautaire\n'; }

		if (erreur.length > 0)
		{
			alert(erreur);
			return;
		}
		
		if (alerte.length > 0) alert(alerte);

		var type_client=1;
		if ($('type_client2').checked) type_client=2;
		if ($('type_client3').checked) type_client=3;
	
		new Ajax.Request('inc/compte/intermittent/facturation/ajax.php',
		{
			method:'post',
			parameters:
			{
				pageAction: 'FacturationValiderEtape1',
				type_client: type_client,
				nom_societe: $('nom_societe').value,
				responsable: $('responsable').value,
				rue1: $('rue1').value,
				rue2: $('rue2').value,
				rue3: $('rue3').value,
				code_postal: $('code_postal').value,
				ville: $('ville').value,
				pays: $('pays').value,
				cb_adresse_courrier: $('cb_adresse_courrier').checked ? 1 : 0,
				rue1_courrier: $('rue1_courrier').value,
				rue2_courrier: $('rue2_courrier').value,
				rue3_courrier: $('rue3_courrier').value,
				code_postal_courrier: $('code_postal_courrier').value,
				ville_courrier: $('ville_courrier').value,
				pays_courrier: $('pays_courrier').value,
				tva_intra: $('tva_intra').value
			},

			onSuccess: function(p_transport, p_json)
			{
				if (!CheckJson(p_transport, p_json)) return false;
				window.location = '/index.php?page=facturation_etape2';
			}
		});
	},

	ValiderEtape2: function(p_redirect)
	{
		// On vérifie les champs uniquement si on clique sur l'étape suivante
		if (p_redirect == "facturation_etape3")
		{
			var erreur = '';
			if ($('description').value.length == 0) { erreur += '- Vous devez saisir une description du spectacle\n'; }
			if (erreur.length > 0)
			{
				alert(erreur);
				return;
			}
		}
	
		new Ajax.Request('inc/compte/intermittent/facturation/ajax.php',
		{
			method:'post',
			parameters:
			{
				pageAction: 'FacturationValiderEtape2',
				description: $('description').value,
				date: $('date').value,
				budget: $('budget').value
			},

			onSuccess: function(p_transport, p_json)
			{
				if (!CheckJson(p_transport, p_json)) return false;
				window.location = '/index.php?page=' + p_redirect;
			}
		});
	},

	ValiderEtape3: function(p_redirect)
	{
		var erreur = '';
		var lstIntermittents = $('liste_intermittents');
		var nbIntermittents = 0;
		var intermittents = new Array();

		if (lstIntermittents)
		{
			lstIntermittents = lstIntermittents.childNodes;
			for (var i=0;i<lstIntermittents.length;i++)
			{
				if (lstIntermittents[i].id && lstIntermittents[i].id.substr(0,13) == 'intermittent_')
				{
					var uid = lstIntermittents[i].id.substring(13);
					var dateNaissance = $('date_naissance_' + uid).value;
					if (dateNaissance != "")
					{
						var regDate = /^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d$/;
						if (!regDate.test(dateNaissance)) erreur += "- La date de naissance de " + $('nom_' + uid).value + " doit etre saisie au format jj/mm/aaaa\n";
					}

					var noSecu = $('no_secu_' + uid).value;
					if (noSecu.length > 0)
					{
						if (noSecu.length>15) erreur += "- Le numero de Sécu de " + $('nom_' + uid).value + " comporte trop de caractere\n";
						if (noSecu.length<13) erreur += "- Le numero de Sécu de " + $('nom_' + uid).value + " ne comporte pas assez de caractere\n";
					}

					var noCS = $('no_cs_' + uid).value;
					if (noCS != "")
					{
						var regNoCS = /[A-Z][0-9]{6}/;
						if (!regNoCS.test(noCS)) erreur += "- Le numéro de congés spectacle de  " + $('nom_' + uid).value + " doit contenir une lettre en majuscule suivie de six chiffres et sans espaces\n";
					}
					
					var tableau = new Array
					(
						uid,
						$('nom_' + uid).value,
						$('salaire_' + uid).value,
						$('type_salaire_' + uid).value,
						$('notes_' + uid).value,
						$('rue1_' + uid).value,
						$('rue2_' + uid).value,
						$('code_postal_' + uid).value,
						$('ville_' + uid).value,
						$('pays_' + uid).value,
						dateNaissance,
						$('lieu_naissance_' + uid).value,
						$('nationalite_' + uid).value,
						noSecu,
						$('no_cs_' + uid).value,
						$('profession_' + uid).value
					);

					intermittents.push(tableau);
					nbIntermittents++;
				}
			}
		}

		if (nbIntermittents == 0) erreur += '- Vous devez saisir au moins un intermittent\n';

		// On vérifie les champs uniquement si on clique sur l'étape suivante
		if (p_redirect == "facturation_etape4")
		{
			if (erreur.length > 0)
			{
				alert(erreur);
				return;
			}
		}

		new Ajax.Request('inc/compte/intermittent/facturation/ajax.php',
		{
			method:'post',
			parameters:
			{
				pageAction: 'FacturationValiderEtape3',
				intermittents: Object.toJSON(intermittents)
			},

			onSuccess: function(p_transport, p_json)
			{
				if (!CheckJson(p_transport, p_json)) return false;
				window.location = '/index.php?page=' + p_redirect;
			}
		});
	},

	ValiderEtape4: function(p_redirect)
	{
		var erreur = '';

		if (!$('cbContrat').checked && !$('cbFacture').checked && !$('cbDevis').checked)
		{
			erreur += '- Vous devez cocher au moins une case\n';
		}

		if ($('cbContrat').checked)
		{
			if ($('nom_spectacle').value.length == 0) { erreur += '- Vous devez saisir un nom de spectacle\n'; }
			if ($('date_debut').value.length == 0) { erreur += '- Vous devez saisir une date de début\n'; }
			if ($('date_fin').value.length == 0) { erreur += '- Vous devez saisir une date de fin\n'; }
			if ($('nb_representations').value.length == 0) { erreur += '- Vous devez saisir le nombre de représentations\n'; }
			if ($('lieu').value.length == 0) { erreur += '- Vous devez saisir le lieu\n'; }
			if ($('duree').value.length == 0) { erreur += '- Vous devez saisir la durée du spectacle\n'; }
			if ($('heure_spectacle').value.length == 0) { erreur += "- Vous devez saisir l'heure de la prestation\n"; }
		}

		if (erreur.length > 0)
		{
			alert(erreur);
			return;
		}
	
		new Ajax.Request('inc/compte/intermittent/facturation/ajax.php',
		{
			method:'post',
			parameters:
			{
				pageAction: 'FacturationValiderEtape4',
				nom_spectacle: $('nom_spectacle').value,
				date_debut: $('date_debut').value,
				date_fin: $('date_fin').value,
				nb_representations: $('nb_representations').value,
				lieu: $('lieu').value,
				duree: $('duree').value,
				heure_spectacle: $('heure_spectacle').value,
				heure_repetition: $('heure_repetition').value,
				fiche_technique: $('fiche_technique').value,
				devis: $('cbDevis').checked,
				facture: $('cbFacture').checked,
				contrat: $('cbContrat').checked
			},

			onSuccess: function(p_transport, p_json)
			{
				if (!CheckJson(p_transport, p_json)) return false;
				window.location = '/index.php?page=' + p_redirect;
			}
		});
	},

	ValiderEtape5: function(p_redirect)
	{
		new Ajax.Request('inc/compte/intermittent/facturation/ajax.php',
		{
			method:'post',
			parameters:
			{
				pageAction: 'FacturationValiderEtape5'
			},

			onSuccess: function(p_transport, p_json)
			{
				if (!CheckJson(p_transport, p_json)) return false;
				alert('Votre demande a bien été prise en compte');
				window.location = '/index.php?page=liste_prestations';
			}
		});
	},

	AjouterIntermittent: function()
	{
		var erreur = '';
		if ($('nom_prenom').value.length == 0) { erreur += "- Vous devez saisir le nom de l'intermittent\n"; }
		if (erreur.length > 0)
		{
			alert(erreur);
			return;
		}
	
		new Ajax.Request('inc/compte/intermittent/facturation/ajax.php',
		{
			method:'post',
			parameters:
			{
				pageAction: 'FacturationAjouterIntermittent',
				nom_prenom: $('nom_prenom').value,
				salaire: $('salaire').value,
				notes: $('notes').value,
				type_salaire: $('type_salaire_net').checked ? 'net' : 'brut'
			},

			onSuccess: function(p_transport, p_json)
			{
				if (!CheckJson(p_transport, p_json)) return false;
				var noeud = document. createElement("span");
				noeud.id = "intermittent_" + p_json.id;
				noeud.innerHTML = p_json.noeud;
				$('liste_intermittents').appendChild(noeud);

				$('nom_prenom').value = "";
				$('salaire').value = "";
				$('notes').value = "";
				$('type_salaire_net').checked = true;
				$('type_salaire_brut').checked = false;
			}
		});
	},

	SupprimerPrestation: function(p_id)
	{
		if (!confirm('Souhaitez-vous supprimer cette demande de prestation ?')) return;

		new Ajax.Request('inc/compte/intermittent/facturation/ajax.php',
		{
			method:'post',
			parameters:
			{
				pageAction: 'FacturationSupprimerPrestation',
				id: p_id
			},

			onSuccess: function(p_transport, p_json)
			{
				document.location='index.php?page=liste_prestations';
			}
		});
	},
	
	SupprimerIntermittent: function(p_id)
	{
		new Ajax.Request('inc/compte/intermittent/facturation/ajax.php',
		{
			method:'post',
			parameters:
			{
				pageAction: 'FacturationSupprimerIntermittent',
				id: p_id
			},

			onSuccess: function(p_transport, p_json)
			{
				if (!CheckJson(p_transport, p_json)) return false;
				RemoveNode($('intermittent_' + p_id));
			}
		});
	}
}
