
// Fonction permettant d'intégrer le résultat dans un div.

function show_result(div, result) {
			
			$("#" + div).fadeOut(200, function() {
				$("#" + div).empty();
				$("#" + div).append(result);
				$("#" + div).fadeIn(500);									
			});	
}

function showBlockAndResult(idDiv,idtorefresh,title,html) {
	
	if ($(idDiv).is(":visible")) {
		$(idDiv + ".header_block #title").append(title);
		$(idtorefresh).fadeOut(200);
		$(idtorefresh).empty();
		$(idtorefresh).fadeIn(500);
		$(idtorefresh).append(html);
	} else {
		$(idDiv).fadeIn(500);
		$(idDiv + ".header_block #title").append(title);
		$(idtorefresh).fadeOut(200);
		$(idtorefresh).empty();
		$(idtorefresh).fadeIn(500);
		$(idtorefresh).append(html);
	}
}

function showError(content,id){

	if(id == '#erreur_bug'){
		$(id).css({'background-color' : '#FAFAFA', 'width' : '795px', 'height' : '85px', 'display' : 'none', 'padding-top' : '50px' });
		// Display : none nous servira pour faire une belle apparition par la suite
	} else if (id == '#erreur_script'){
		$(id).css({'background-color' : '#FAFAFA', 'width' : '285px', 'height' : '70px', 'display' : 'none', 'padding-top' : '20px' });
	}
	
	$(id).empty();                // On vide le div (au cas où il y ait plusieurs erreurs de suite...)
	$(id).append(content);        // On ajoute au div la chaine de caractères retournée par Ajax
	$(id).fadeIn(400);            // Petit effet d'apparition histoire que cela soit un peu beau.
	setTimeout(function() {       // On laisse 2sec à la personne pour voir le message
		$(id).fadeOut(400);       // Avant d'effacer le calque
	}, 2000); 
}

// Fonction permettant de reloader le contenu d'un cookie

function reload_cookie(nom, value) {
	
	$.cookie(nom, value,{ expires: 99 });
}
 


	/* FONCTION PERMETTANT DE METTRE TOUS LES MODULES A JOUR
	 *
	 * 1. Nouveau cookie avec nom du script (pour actualisation)
	 * 2. Envoi des informations pour l'enregistrement dans la base de donnée
	 * 3. Réception de la liste des scripts avec la nouvelle valeur qu'on refresh en frontend
	 * 4. Refresh de la description du nouveau script ajouté en frontend.
	 * 5. Refresh du tableau des vulnerabilites (TODO)
	 *
	 */


function reload_all(script) {

	if(script != ""){ reload_cookie("script", script); }
	document.title = "WEB-BASED SCRIPTS SECURITY AUDITS ARCHIVE - Script auditing now : " + script;
	refresh_desc_script(script);
	refresh_bugs_script(script);
	refresh_list_script(script);

}

	/* FONCTION QUI ENVOI LES INFORMATIONS SUITE A LA VALIDATION DU FORMULAIRE "Add a new script"
	 *
	 * 1. Nouveau cookie avec nom du script (pour actualisation)
	 * 2. Envoi des informations pour l'enregistrement dans la base de donnée
	 * 3. Réception de la liste des scripts avec la nouvelle valeur qu'on refresh en frontend
	 * 4. Refresh de la description du nouveau script ajouté en frontend.
	 * 5. Refresh du tableau des vulnerabilites (TODO)
	 *
	 */

function send_new_script() {

		$.ajax({
		url: "externals_scripts/interact_core.php",
		type: "POST",
		data: ({session_token:$("#session_token").val(), name_script:$("#name_script").val(), description_script:$("#description_script").val(), languages_script:$("#languages_script").val(), option:"send_new_script"}),
		cache:false,
		success:function(html) {
			if(html.length < 2){
				reload_all($("#name_script").val());
			} else {
				showError(html, "#erreur_script");
			}
		},
		error:function(XMLHttpRequest, textStatus, errorThrown) {
			showError("Problème de communication<br />avec le backend", "#erreur_script");
		}
		});
	
}


	/* FONCTION RAFRAICHISSANT LE DIV DE DESCRIPTION
	 *
	 *  Paramètres : Nom du script 
	 *  Option : "generate_description"
	 */

function refresh_desc_script(value) {

		$.ajax({
		url: "externals_scripts/interact_core.php",
		type: "POST",
		data: ({name_script:value, option:"generate_description"}),
		cache:false,
		success:function(html) {
			show_result("stats_refresh", html);
		},
		error:function(XMLHttpRequest, textStatus, errorThrown) {
			show_result("stats_refresh", "Problème de communication avec l'interface");
		}
		});
}


	/* FONCTION RAFRAICHISSANT LE TABLEAU DES VULNERABILITES
	 *
	 *  Paramètres : Nom du script 
	 *  Option : "generate_table"
	 */
	 
function refresh_bugs_script(value) {

		$.ajax({
		url: "externals_scripts/interact_core.php",
		type: "POST",
		data: ({name_script:value, option:"generate_table"}),
		cache:false,
		success:function(html) {
			show_result("bugs_list", html);
		},
		error:function(XMLHttpRequest, textStatus, errorThrown) {
			show_result("bugs_list", "Problème de communication avec l'interface");
		}
		});
}



	/* FONCTION PERMETTANT D'AFFICHER LES PoC & Codes
	 *
     *  Paramètres : Nom du script, id de la vulnerabilite, le titre à donner & PoC Or Code 
	 *  Option : "generate_code"
	 */

function showCode(script,id,title,type) {

		$.ajax({
		url: "externals_scripts/interact_core.php",
		type: "POST",
		data: ({name_script:script, id_bug:id, option:"generate_code", type_code:type}),
		cache:false,
		success:function(html) {
			showBlockAndResult("#codePrez","#body_code",title, html);
		},
		error:function(XMLHttpRequest, textStatus, errorThrown) {
			showBlockAndResult("#codePrez","#body_code","error", "Problème de communication avec l'interface");
		}
		});
}


	/* FONCTION RAFRAICHISSANT LE DIV DU SELECT
	 *
     *  Paramètres : Nom du script 
	 *  Option : "generate_list"
	 */
	 
function refresh_list_script(script) {

		$.ajax({
		url: "externals_scripts/interact_core.php",
		type: "POST",
		data: ({option:"generate_list",script:script}),
		cache:false,
		success:function(html) {
			show_result("script_list", html);
		},
		error:function(XMLHttpRequest, textStatus, errorThrown) {
			show_result("script_list", "Problème de communication avec l'interface");
		}
		});
		trace("none");
		
}


	/* FONCTION QUI ENVOI LES INFORMATIONS SUITE A LA VALIDATION DU FORMULAIRE "Add a new bug"
	 *
	 * 1. Envoi des informations pour l'enregistrement dans la base de donnée
	 * 2. Refresh de la description avec les nouvelles valeurs ajoutées ajouté en frontend.
	 * 3. Refresh du tableau des vulnerabilites (TODO)
	 * 
	 */

function send_vulnz() {

	$.ajax({
		url: "externals_scripts/interact_core.php",
		type: "POST",
		data: ({session_token:$("#session_token").val(), file_bug:$("#file_bug").val(), vuln_bug:$("#vuln_bug").val(), combo_bug:$("#combo_bug").val(), desc_bug:$("#desc_bug").val(), code_bug:$("#code_bug").val(), poc_bug:$("#poc_bug").val(), option:"send_new_vuln"}),
		cache:false,
		success:function(html) {
			if(html.length < 2){
				reload_all($.cookie('script'));
			} else {
				showError(html, "#erreur_bug");
			}
		},
		error:function(XMLHttpRequest, textStatus, errorThrown) {
			showError("Problème de communication<br />avec le backend", "#erreur_bug");
		}
	});

}

function logUser() {

	$.ajax({
		url: "externals_scripts/interact_core.php",
		type: "POST",
		data: ({login:$("#login").val(), password:$("#password").val(), option:"log_user"}),
		cache:false,
		success:function(html) {
			document.location.reload();
		},
		error:function(XMLHttpRequest, textStatus, errorThrown) {
			alert("Problème lors de la connexion");
		}
	});

}

function disconnectUser() {

	$.ajax({
		url: "externals_scripts/interact_core.php",
		type: "POST",
		data: ({disconnect:"yes"}),
		cache:false,
		success:function(html) {
			document.location.reload();
		},
		error:function(XMLHttpRequest, textStatus, errorThrown) {
			alert("Problème lors de l'identification");
		}
	});

}


