/** URL où sont stockés les procédures (PDF)
  **/
var URL_PDF = 'http://www1.nordnet.fr/contact2/pdf/';

/** Redirige vers le détail d'un ticket.
  * @param integer [#ticket]
  **/
function click_ticket( id_ticket ){
	document.location = 'index.php?page_assist=demande&t=' + id_ticket;
}

/** Modifie la classe CSS d'un element dont l'@id est le numéro de ticket.
  * @param integer [#ticket]
  **/
function rollover( idticket ){
	var sClassName = document.getElementById( idticket ).className;
	document.getElementById( idticket ).className = ( sClassName.indexOf( 'even' ) != -1 ? 'even ' : '' ) + ( sClassName.indexOf( 'odd' ) != -1 ? 'odd ' : '' ) + ( sClassName.indexOf( 'hover' ) != -1 ? 'nhover' : 'hover' );
}

/** Permet de vérifier que les informations soumises dans le formulaire d'identification sont correctes.
  * Si les informations sont correctes, la soumission du formulaire est automatique ;
  * sinon affiche un message dans une smoothbox et retourne false.
  * @return boolean
  **/
function soumettre(){
	var oDOMElement = document.getElementById( 'formulaire_id_client' );
	if( isBlank( oDOMElement.login.value ) ){
		if( typeof( document.createEvent ) != "undefined" ){
			var oEvent = document.createEvent( 'MouseEvents' );
			oEvent.initMouseEvent( 'click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null );
			document.getElementById( 'emptyLogin' ).dispatchEvent( oEvent );
		}else{
			document.getElementById( 'emptyLogin' ).click();
		}
	}else{
		if( isBlank( oDOMElement.passwd.value ) ) {
			if( typeof( document.createEvent ) != "undefined" ){
				var oEvent = document.createEvent( 'MouseEvents' );
				oEvent.initMouseEvent( 'click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null );
				document.getElementById( 'emptyPassword' ).dispatchEvent( oEvent );
			}else{
				document.getElementById( 'emptyPassword' ).click();
			}
		}else{
			oDOMElement.submit();
			return true;
		}
	}
	return false;
}

/** Vérifie que le formulaire de contact soit complété avec des valeurs non nulles.
  * Si complétion, le formulaire est validé, sinon une smoothbox alerte le client de son erreur.
  * @return boolean
  **/
function soumettre_contact(){
	var oDOMElement = document.getElementById( 'formu' );
	var sMessage = document.getElementById( 'message_client_tmp' ).value;
	if( isBlank( sMessage ) ){
		document.getElementById( 'message_client_tmp' ).value = '';
		if( typeof( document.createEvent ) != "undefined" ){
			var oEvent = document.createEvent( 'MouseEvents' );
			oEvent.initMouseEvent( 'click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null );
			document.getElementById( 'emptyNewContact' ).dispatchEvent( oEvent );
		}else{
			document.getElementById( 'emptyNewContact' ).click();
		}
		return false;
	}else{
		var pattern=new RegExp("¤","g");
		document.getElementById( 'message_client' ).value = sMessage.replace( pattern, '__EURO__' );
		oDOMElement.submit();
		return true;
	}
}

/** Retourne l'état de la validité d'une adresse email.
  * @param string [adresse email en question]
  * @return boolean
  **/
function ma_IsEMail( emailStr ){
	return /^[A-Za-z0-9!#-'\*\+\-\/=\?\^_`\{-~]+(\.[A-Za-z0-9!#-'\*\+\-\/=\?\^_`\{-~]+)*@[A-Za-z0-9!#-'\*\+\-\/=\?\^_`\{-~]+(\.[A-Za-z0-9!#-'\*\+\-\/=\?\^_`\{-~]+)+$/.test( emailStr );
}

/** Retourne l'état de la validité d'un numéro de téléphone.
  * @param string [numéro en question]
  * @return boolean
  **/
function ma_IsPhoneNumber( sPhoneNumber ){
	return /^((\+[0-9]+\.[0-9]+)||([0-9]+))$/.test( sPhoneNumber );
}

/** Retourne true si la chaîne de caractères en paramètre est vierge (vide ou complété par des caractères "blancs"), sinon retourne false.
  * @param string [la chaîne de caractères en question]
  * @return boolean
  **/
function isBlank( val ){
	try{
		var sValue = new String( val );
		return ( ! sValue.replace( /^\s*/, '' ).replace( /\s*$/, '' ).length );
	}catch( oException ){
		return false;
	}
}

/** Construit et retourne un noeud DOM contenant un attribut value et un contenu textuel.
  * @param string [valeur du futur attribut value]
  * @param string [valeur du futur contenu textuel]
  * @return DOMElement
  **/
function ma_new_option_entry( sValue, sContent ){
	var oDOMElement = document.createElement( 'option' );
	oDOMElement.value = sValue;
	oDOMElement.appendChild( document.createTextNode( sContent ) );
	return oDOMElement;
}

/** Ouvre un pop-up nommé "securitoo_pj" pointant sur l'URI en paramètre.
  * @param string [URI cible]
  * @return false
  **/
function view_pdf( sURI ){
	window.open( sURI, 'securitoo_pj', 'toolbar=no,scrollbars=no,status=no' );
	return false;
}

/** Permet d'afficher qu'une partie du formulaire en fonction du produit sélectionné et de la catégorie associé à la demande.
  **/
function ma_manage_block() {
	document.getElementById( 'os_block' ).style.display = 'none';
	document.getElementById( 'nav_block' ).style.display = 'none';
	document.getElementById( 'modRout_block' ).style.display = 'none';
	document.getElementById( 'autre_block' ).style.display = 'none';
	document.getElementById( 'mailTitle_block' ).style.display = 'none';
	document.getElementById( 'mailBox_block' ).style.display = 'none';
	document.getElementById( 'mailSoft_block' ).style.display = 'none';
	document.getElementById( 'linksys_block' ).style.display = 'none';
	document.getElementById( 'cpe_block' ).style.display = 'none';
	document.getElementById( 'fai_block' ).style.display = 'none';
	// Réinitialisation des options du champ Modem / Routeur
	var sel_modrout = document.getElementById( 'ma_modrout' );
	sel_modrout.options.length = null;
	switch( document.getElementById( 'ma_produit' ).value ){
		case 'CRTC':
			// Affichage des options du champ Modem / Routeur
			sel_modrout.appendChild( ma_new_option_entry( '', '' ) );
			sel_modrout.appendChild( ma_new_option_entry( '737', 'Modem USRobotics' ) );
			sel_modrout.appendChild( ma_new_option_entry( '738', 'Routeur Numéris Zyxel' ) );
			sel_modrout.appendChild( ma_new_option_entry( '739', 'Autre' ) );
			switch( document.getElementById( 'ma_categorie' ).value ){
				case 'technique':
					document.getElementById( 'os_block' ).style.display = '';
					document.getElementById( 'nav_block' ).style.display = '';
					document.getElementById( 'modRout_block' ).style.display = '';
					document.getElementById( 'mailSoft_block' ).style.display = '';
				case 'administrative':
				case 'commerciale':
					document.getElementById( 'mailTitle_block' ).style.display = '';
					document.getElementById( 'mailBox_block' ).style.display = '';
					break;
			}
			break;
		case 'CADSL':
			// Affichage des options du champ Modem / Routeur
			sel_modrout.appendChild( ma_new_option_entry( '', '' ) );
			sel_modrout.appendChild( ma_new_option_entry( '706', 'Modem Sagem Fast 800 E1' ) );
			sel_modrout.appendChild( ma_new_option_entry( '707', 'Modem Sagem Fast 800 E2' ) );
			sel_modrout.appendChild( ma_new_option_entry( '708', 'Modem Sagem Fast 800 E3' ) );
			sel_modrout.appendChild( ma_new_option_entry( '709', 'Modem Sagem Fast 800 E4' ) );
			sel_modrout.appendChild( ma_new_option_entry( '710', 'Modem Sagem Fast 1000' ) );
			sel_modrout.appendChild( ma_new_option_entry( '711', 'Modem Sagem Fast 1100 [Ethernet]' ) );
			sel_modrout.appendChild( ma_new_option_entry( '712', 'Modem Sagem Fast 1100 [USB]' ) );
			sel_modrout.appendChild( ma_new_option_entry( '713', 'Modem Sagem Fast 1100E' ) );
			sel_modrout.appendChild( ma_new_option_entry( '714', 'Modem Thomson 510 v4' ) );
			sel_modrout.appendChild( ma_new_option_entry( '715', 'Modem Thomson 510 v5' ) );
			sel_modrout.appendChild( ma_new_option_entry( '716', 'Modem Thomson 510 v6' ) );
			sel_modrout.appendChild( ma_new_option_entry( '717', 'Modem Sagem 908 [Ethernet]' ) );
			sel_modrout.appendChild( ma_new_option_entry( '718', 'Modem Sagem 908 [USB]' ) );
			sel_modrout.appendChild( ma_new_option_entry( '746', 'Modem Dlink DSL-200' ) );
			sel_modrout.appendChild( ma_new_option_entry( '747', 'Modem Thomson 330' ) );
			sel_modrout.appendChild( ma_new_option_entry( '719', 'Sagem 1400' ) );
			sel_modrout.appendChild( ma_new_option_entry( '720', 'Sagem 1500' ) );
			sel_modrout.appendChild( ma_new_option_entry( '721', 'Routeur NordNetBox Sagem 3302' ) );
			sel_modrout.appendChild( ma_new_option_entry( '722', 'Routeur NordNetBox Sagem 3504' ) );
			sel_modrout.appendChild( ma_new_option_entry( '723', 'Routeur NordNetBox Bewan IBOX' ) );
			sel_modrout.appendChild( ma_new_option_entry( '724', 'Routeur Linksys WRT54GC + Modem' ) );
			sel_modrout.appendChild( ma_new_option_entry( '725', 'Routeur Zyxel Series 300 (310/324)' ) );
			sel_modrout.appendChild( ma_new_option_entry( '735', 'IP Phone Linksys SPA 922' ) );
			sel_modrout.appendChild( ma_new_option_entry( '736', 'Boitier Linksys PAP2' ) );
			sel_modrout.appendChild( ma_new_option_entry( '726', 'Autre' ) );
			switch( document.getElementById( 'ma_categorie' ).value ){
				case 'technique':
					document.getElementById( 'os_block' ).style.display = '';
					document.getElementById( 'nav_block' ).style.display = '';
					document.getElementById( 'modRout_block' ).style.display = '';
					document.getElementById( 'mailSoft_block' ).style.display = '';
				case 'administrative':
				case 'commerciale':
					document.getElementById( 'mailTitle_block' ).style.display = '';
					document.getElementById( 'mailBox_block' ).style.display = '';
					break;
			}
			break;
		case 'CGEXIG':
			// Affichage des options du champ Modem / Routeur
			sel_modrout.appendChild( ma_new_option_entry( '', '' ) );
			sel_modrout.appendChild( ma_new_option_entry( '740', 'Routeur Bintec R3800' ) );
			sel_modrout.appendChild( ma_new_option_entry( '741', 'Routeur Bintec X2404' ) );
			sel_modrout.appendChild( ma_new_option_entry( '742', 'Routeur Zyxel P791R' ) );
			sel_modrout.appendChild( ma_new_option_entry( '743', 'Routeur Zyxel P792H' ) );
			sel_modrout.appendChild( ma_new_option_entry( '744', 'Routeur Zyxel P662HW' ) );
			sel_modrout.appendChild( ma_new_option_entry( '745', 'Autre' ) );
			switch( document.getElementById( 'ma_categorie' ).value ){
				case 'technique':
					document.getElementById( 'os_block' ).style.display = '';
					document.getElementById( 'nav_block' ).style.display = '';
					document.getElementById( 'modRout_block' ).style.display = '';
					document.getElementById( 'mailSoft_block' ).style.display = '';
				case 'administrative':
				case 'commerciale':
					document.getElementById( 'mailBox_block' ).style.display = '';
					document.getElementById( 'mailTitle_block' ).style.display = '';
					break;
			}
			break;
		case 'CSAT':
			// Affichage des options du champ Modem / Routeur
			sel_modrout.appendChild( ma_new_option_entry( '', '' ) );
			sel_modrout.appendChild( ma_new_option_entry( '727', 'Routeur Linksys WRT54GC' ) );
			sel_modrout.appendChild( ma_new_option_entry( '728', 'Démodulateur satellite' ) );
			sel_modrout.appendChild( ma_new_option_entry( '726', 'Autre' ) );
			switch( document.getElementById( 'ma_categorie' ).value ){
				case 'technique':
					document.getElementById( 'os_block' ).style.display = '';
					document.getElementById( 'nav_block' ).style.display = '';
					document.getElementById( 'modRout_block' ).style.display = '';
					document.getElementById( 'mailSoft_block' ).style.display = '';
				case 'administrative':
				case 'commerciale':
					document.getElementById( 'mailTitle_block' ).style.display = '';
					document.getElementById( 'mailBox_block' ).style.display = '';
					break;
			}
			break;
		case 'CWIMAX':
			switch( document.getElementById( 'ma_categorie' ).value ){
				case 'technique':
					document.getElementById( 'os_block' ).style.display = '';
					document.getElementById( 'nav_block' ).style.display = '';
					document.getElementById( 'mailSoft_block' ).style.display = '';
					document.getElementById( 'linksys_block' ).style.display = '';
					document.getElementById( 'cpe_block' ).style.display = '';
				case 'administrative':
				case 'commerciale':
					document.getElementById( 'mailTitle_block' ).style.display = '';
					document.getElementById( 'mailBox_block' ).style.display = '';
					break;
			}
			break;
		case 'IPPHONE' :
			switch( document.getElementById( 'ma_categorie' ).value ){
				case 'technique':
					document.getElementById( 'fai_block' ).style.display = '';
					break;
			}
			break;
	}
}

/** Procédure permettant de rendre inactif/actif un ensemble de champs spécifiques en fonction du produit sélectionné.
  **/
function ma_change_produit() {
	if( document.getElementById( 'ma_produit' ).value != '' ){
		document.getElementById( 'ma_os' ).disabled = '';
		document.getElementById( 'ma_nav' ).disabled = '';
		document.getElementById( 'ma_modrout' ).disabled = '';
		document.getElementById( 'ma_autre' ).disabled = '';
		document.getElementById( 'ma_mailsoft' ).disabled = '';
		document.getElementById( 'ma_mailbox' ).disabled = '';
//		document.getElementById( 'ma_envoyer' ).disabled = '';
	}else{
		document.getElementById( 'ma_os' ).disabled = 'disabled';
		document.getElementById( 'ma_nav' ).disabled = 'disabled';
		document.getElementById( 'ma_modrout' ).disabled = 'disabled';
		document.getElementById( 'ma_autre' ).disabled = 'disabled';
		document.getElementById( 'ma_mailbox' ).disabled = 'disabled';
		document.getElementById( 'ma_mailsoft' ).disabled = 'disabled';
//		document.getElementById( 'ma_envoyer' ).disabled = 'disabled';
	}
}

/** Procédure permettant de rendre inactif/actif un ensemble de champs spécifiques en fonction du produit sélectionné.
  **/
function ma_verifier_champs() {
	if( document.getElementById( 'ma_civilite' ).value != '' ){
		if( document.getElementById( 'ma_categorie' ).value != '' ){
			ma_change_produit();
		}else{
			document.getElementById( 'ma_os' ).disabled = 'disabled';
			document.getElementById( 'ma_nav' ).disabled = 'disabled';
			document.getElementById( 'ma_modrout' ).disabled = 'disabled';
			document.getElementById( 'ma_autre' ).disabled = 'disabled';
			document.getElementById( 'ma_mailbox' ).disabled = 'disabled';
			document.getElementById( 'ma_mailsoft' ).disabled = 'disabled';
//			document.getElementById( 'ma_envoyer' ).disabled = 'disabled';		
		}
	}else{
//		document.getElementById( 'ma_envoyer' ).disabled = 'disabled';
	}
}

/** Permet lors de la sélection d'un routeur de ne pas réinitialiser toutes les options.
  **/
function ma_verifier_modrout(){
	switch( ocument.getElementById( 'ma_modrout' ).value ){
		case 726:
		case 739:
		case 745:
			document.getElementById( 'autre_block' ).style.display = '';
			break;
		default:
			document.getElementById( 'autre_block' ).style.display = 'none';
			break;
	}
}

/** Vérifie que le formulaire de contact soit complété avec des valeurs non nulles.
  * Si complétion, le formulaire est validé, sinon une smoothbox alerte le client de son erreur.
  * @return boolean
  **/
function soumettre_demande(){
	if( submission_deja_en_cours == false ){
		var tab_errors = new Array();
		var formu = document.getElementById( 'formu' );
		// vérification sur les champs avant la soumission du formulaire
		checkFieldValidity( 'ma_civilite' );
		if( isBlank( document.getElementById( 'ma_civilite' ).value ) ){
			tab_errors.push( 'civility' );
		}
		if( document.getElementById( 'ma_prenom' ).type != 'hidden' ){
			checkFieldValidity( 'ma_nom' );
			if( isBlank( document.getElementById( 'ma_nom' ).value ) ){
				tab_errors.push( 'lastName' );
			}
			checkFieldValidity( 'ma_prenom' );
			if( isBlank( document.getElementById( 'ma_prenom' ).value ) ){
				tab_errors.push( 'firstName' );
			}
			checkFieldValidity( 'ma_email' );
			var mail = document.getElementById( 'ma_email' ).value;
			if( isBlank( mail ) ){
				tab_errors.push( 'email1' );
			}else{
				if( ! ma_IsEMail( mail ) ){
					tab_errors.push( 'email2' );
				}
			}
			if( document.getElementById( 'ma_adresse' ) ){
				checkFieldValidity( 'ma_adresse' );
				if( isBlank( document.getElementById( 'ma_adresse' ).value ) ){
					tab_errors.push( 'address' );
				}
				checkFieldValidity( 'ma_ville' );
				if( isBlank( document.getElementById( 'ma_ville' ).value ) ){
					tab_errors.push( 'city' );
				}
				checkFieldValidity( 'ma_code_postal' );
				if( isBlank( document.getElementById( 'ma_code_postal' ).value ) ){
					tab_errors.push( 'zipCode' );
				}
			}
		}
		// on vérifie les champs suivant la catégorie choisie
		checkFieldValidity( 'ma_categorie' );
		if( isBlank( document.getElementById( 'ma_categorie' ).value ) ){
			tab_errors.push( 'category' );
		}
		checkFieldValidity( 'ma_produit' );
		if( isBlank( document.getElementById( 'ma_produit' ).value ) ){
			tab_errors.push( 'product' );
		}
		checkFieldValidity( 'message_client_tmp' );
		if( isBlank( document.getElementById( 'message_client_tmp' ).value ) ){
			tab_errors.push( 'request' );
		}
		var div_la = document.getElementById( 'div_pour_message_erreur' );
		if( tab_errors.length > 0 ){
			var oDOMElement = document.getElementById( 'formNewDemandInvalid' );
			var sAttributeHREF = oDOMElement.href;
			oDOMElement.href = oDOMElement.href.replace( '{error}', tab_errors.join( ';' ) );
			if( typeof( document.createEvent ) != "undefined" ){
				var oEvent = document.createEvent( 'MouseEvents' );
				oEvent.initMouseEvent( 'click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null );
				oDOMElement.dispatchEvent( oEvent );
			}else{
				oDOMElement.click();
			}
			oDOMElement.href = sAttributeHREF;
		}else{
			var pattern = new RegExp( '¤', 'g' );
			formu.message_client.value = document.getElementById( 'message_client_tmp' ).value.replace( pattern, '__EURO__' );
			submission_deja_en_cours = true;
			formu.submit();
		}
	}else{
		return alert( 'Envoi en cours. Merci de patienter.' );
	}
}

/** Procédure permettant de signaler graphiquement au client qu'un champ est correctement compléter ou non.
  * @param string [@id du noeud]
  **/
function checkFieldValidity( sNodeId ){
	var bValid = false;
	var oDOMElement = document.getElementById( sNodeId );
	if( oDOMElement && document.getElementById( sNodeId + 'Validity' ) ){
		switch( sNodeId ){
			case 'ma_civilite':
			case 'ma_nom':
			case 'ma_prenom':
			case 'ma_adresse':
			case 'ma_ville':
			case 'ma_code_postal':
			case 'ma_categorie':
			case 'ma_produit':
			case 'message_client_tmp':
				bValid = ! isBlank( oDOMElement.value );
				break;
			case 'ma_email':
			case 'ma_mailbox':
				bValid = ! isBlank( oDOMElement.value ) && ma_IsEMail( oDOMElement.value );
				break;
			case 'ma_tel':
				bValid = ! isBlank( oDOMElement.value ) && ma_IsPhoneNumber( oDOMElement.value );
				break;
		}
		document.getElementById( sNodeId + 'Validity' ).className = ( bValid ? 'fieldValid' : 'fieldInvalid' );
	}
}

/**
 * Fonction permettant de simuler un click sur un élément identifié
 **/
function click_on( id ) {
	var oClickOnThis = document.getElementById( id );
	if( typeof( document.createEvent ) != "undefined" ){
		var oEvent = document.createEvent( "MouseEvents" );
		oEvent.initEvent( "click" , true , true );
		oClickOnThis.dispatchEvent( oEvent );
	} else {
		oClickOnThis.click();
	}
}
