<!--

// **********************************************************
//                     TRAITEMENT DU XML
// **********************************************************

// **********************************************************
// Objet contenant les informations du XML
// Param  : Keyword
// Param  : url
// Param  : tagcloud
// Param  : priority
// **********************************************************
function xmlItem(keyword, keywordFormat, url, tagcloud, visibility){
	this.keyword    	= keyword;
	this.keywordFormat  = keywordFormat;
	this.url        	= url;
	this.tagcloud   	= tagcloud;
	this.visibility 	= visibility;
}

// **********************************************************
// Initialisation du XML
// Param  : xml path
// Return : xmlDoc obj
// **********************************************************
function initXML(pathFile){
	try {//Internet Explorer
	  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
	} catch(e) {
		try { //Firefox, Mozilla, Opera, etc.
			xmlDoc=document.implementation.createDocument("","",null);
		} catch(e) {
			alert(e.message);
			return;
		}
	}
	xmlDoc.async=false;
	xmlDoc.load(pathFile);
	
	return xmlDoc;
}

// **********************************************************
//                         RECHERCHE
// **********************************************************

// **********************************************************
// Recherche dans le XML
// Param  : strSearch valeur de la recherche
// Return : Array contenant des obj xmlItem
// **********************************************************
function parseXML(searchField) {
	var result = new Array();
	var xmlDoc = initXML("/xml/projets.xml");

	var nbrItems = xmlDoc.getElementsByTagName("item").length;
	
	for(iterItem=0; iterItem < nbrItems; iterItem++){
		var visibility = xmlDoc.getElementsByTagName("item")[iterItem].attributes.getNamedItem("visibility").value;
		
		if(visibility == '1'){
			var keyword = xmlDoc.getElementsByTagName("item")[iterItem].attributes.getNamedItem("keyword").value;
			var url     = xmlDoc.getElementsByTagName("item")[iterItem].attributes.getNamedItem("url").value;
		
			if (keyword.toLowerCase().substr(0,searchField.length) == searchField.toLowerCase()){
				var keywordFormat = keyword;
				
				var tabSearchField = cleanString(searchField).split(" ");
				for(var j = 0; j < tabSearchField.length; j++){
					keywordFormat = keywordFormat.toLowerCase().replace(tabSearchField[j],"<b>"+tabSearchField[j]+"</b>");
				}
				result.push(new xmlItem(keyword, keywordFormat, url, null, null));
				
			} else {
				var tabSearchField = cleanString(searchField).split(" ");
				for(var j = 0; j < tabSearchField.length; j++){
					if(tabSearchField[j].length > 2){
						if (keyword.toLowerCase().match(tabSearchField[j].toLowerCase())){
							var keywordFormat = keyword.toLowerCase().replace(tabSearchField[j],"<b>"+tabSearchField[j]+"</b>");
							result.push(new xmlItem(keyword, keywordFormat, url, null, null));
						}
					}
				}
			}
		}
	}
	
	return result.length > 0 ? result : null;
}


// **********************************************************
// Liste de mots exclus
// **********************************************************
var excludeWords = new Array(" a ", " à ", " avec ", 
							 "c'"," ça ", " ce ", " ces ", 
							 " de ", " des ", "d'", 
							 " et ", " en ", " est ", 
							 " le ", " la ", " les ", "l'", 
							 " mon ", " ma ", " mes ", 
							 " ou ", 
							 "s'", " sa ", " ses",  " son ", 
							 " ta ", " tes ", " ton ");

// **********************************************************
// Nétoyage de la chaine de recheche
// Param  : searchField
// Retrun : clean string
// **********************************************************
function cleanString(searchField){
	for(i = 0; i < excludeWords.length; i++){
		searchField = searchField.replace(excludeWords[i], "");
	}
	return searchField;
}

// **********************************************************
// Variable necessaire a l'affichage de la recherche
// **********************************************************
var outp;
var oldins;
var posi = -1;
var xmlItems = new Array();
var input;
var key;

// **********************************************************
// Init de la recherche
// **********************************************************
function init(){
	outp = document.getElementById("output");
	window.setInterval("lookAt()", 100);
	setVisible("hidden");
	document.onkeydown = keygetter; //needed for Opera...
	document.onkeyup = keyHandler;
	document.getElementById('searchField').value = "";
}

// **********************************************************
// Gestion de la visibilité du bloc de resultat
// Param  : Type de visibilite hidden / visible
// **********************************************************
function setVisible(visi){
	document.getElementById("output").style.visibility = visi;
}

// **********************************************************
// Lancement de la recherche et création du blos resultat
// **********************************************************
function lookAt(){
	var ins = document.getElementById("searchField").value;
	if (oldins == ins) return;
	else if (posi > -1);
	else if (ins.length > 0){
		xmlItems = parseXML(ins);
		if (xmlItems != null && xmlItems.length > 0){
			clearOutput();
			for (var i=0;i<xmlItems.length; ++i) addItem (xmlItems[i]);
			setVisible("visible");
			input = document.getElementById("searchField").value;
		}
		else{
			setVisible("hidden");
			posi = -1;
		}
	}
	else{
		setVisible("hidden");
		posi = -1;
	}
	oldins = ins;
}

// **********************************************************
// Création d'un blos resultat
// Param  : xmlItem
// **********************************************************
function addItem(xmlItem){
	var sp = document.createElement("div");
	sp.innerHTML = xmlItem.keywordFormat;
	sp.setAttribute('keyword',xmlItem.keyword);
	sp.setAttribute('class','suboutput');
	sp.onmouseover = mouseHandler;
	sp.onmouseout = mouseHandlerOut;
	sp.onclick = mouseClick;
	outp.appendChild(sp);
}

// **********************************************************
// Clean du bloc résultat
// **********************************************************
function clearOutput(){
	while (outp.hasChildNodes()){
		noten=outp.firstChild;
		outp.removeChild(noten);
	}
	posi = -1;
}

function setColor (_posi, _color){
	outp.childNodes[_posi].style.background = _color;
}

function keygetter(event){
	if (!event && window.event) event = window.event;
	if (event) key = event.keyCode;
	else key = event.which;
}

// **********************************************************
// Handler de pression de touche
// Param  : event obj
// **********************************************************
function keyHandler(event){
	if (document.getElementById("output").style.visibility == "visible"){
		var searchField = document.getElementById("searchField");
	
		if (key == 40){ //Key down
			if (xmlItems.length > 0 && posi < xmlItems.length-1){
				if (posi >=0) setColor(posi, "#fff");
				else input = searchField.value;
				setColor(++posi, "#ffdeb5");
				var selection = outp.childNodes[posi].getAttributeNode("keyword").value;
				searchField.value = selection;
			} 
		} else if (key == 38){ //Key up
			if (xmlItems.length > 0 && posi >= 0){
				if (posi >=1){
					setColor(posi, "#fff");
					setColor(--posi, "#ffdeb5");
					var selection = outp.childNodes[posi].getAttributeNode("keyword").value;
					searchField.value = selection;
				} else{
					setColor(posi, "#fff");
					searchField.value = input;
					searchField.focus();
					posi--;
				}
			}
		}	else if (key == 8){ // Backspace
			posi = -1;
			oldins=-1;
		}	else if (key == 9){ // Tab
			setVisible("hidden");
			posi = -1;
		}	else if (key == 13){ // Enter
			setVisible("hidden");
			posi = -1;
		} else if (key == 27){ // Esc
			searchField.value = input;
			setVisible("hidden");
			posi = -1;
			oldins = input;
		} 
	}
}

var mouseHandler=function(){
	for (var i=0;i<xmlItems.length;++i)
		setColor (i, "#fff");

	this.style.background = "#ffdeb5";
}

var mouseHandlerOut=function(){
	this.style.background = "#fff";
}

var mouseClick=function(){
	document.getElementById("searchField").value = this.getAttributeNode("keyword").value; 
	setVisible("hidden");
	posi = -1;
	oldins = this.getAttributeNode("keyword").value;
}

function mouseExit(){
	setVisible("hidden");
	posi = -1;
}

// **********************************************************
// Object contenant les info pour l'echelon du montant
// Param : monant min
// Param : monant max
// Param : url
// **********************************************************
function step(min, max, url){
	this.min = min;
	this.max = max;
	this.url = url; 
}

// **********************************************************
// Init des infos 
// Return : Array d'obj step
// **********************************************************
function initStepTab(){
	var tabStep = new Array(
	new step(500,   600,   "http://www.yahoo.fr")/*,
	new step(1000,  2000,  "http://www.voila.fr"),
	new step(10000, 11000, "http://www.lycos.fr"),
	new step(25000, 30000, "http://www.google.fr")*/);
	return tabStep;
}

// **********************************************************
// Validateur du formulaire
// **********************************************************

function matchXML(project){
	var xmlDoc  = initXML("/xml/projets.xml");
	var nbrItems= xmlDoc.getElementsByTagName("item").length;
	
	for(iterItem=0; iterItem < nbrItems; iterItem++){
		var visibility = xmlDoc.getElementsByTagName("item")[iterItem].attributes.getNamedItem("visibility").value;
		if(visibility == '1'){
			var keyword = xmlDoc.getElementsByTagName("item")[iterItem].attributes.getNamedItem("keyword").value;
			var url     = xmlDoc.getElementsByTagName("item")[iterItem].attributes.getNamedItem("url").value;
			if (keyword.toLowerCase() == project.toLowerCase()){
				return url;
			}
		}
	}
}

function partialyMatchXML(project){
	var xmlDoc  = initXML("/xml/projets.xml");
	var nbrItems= xmlDoc.getElementsByTagName("item").length;
	
	for(iterItem=0; iterItem < nbrItems; iterItem++){
		var visibility = xmlDoc.getElementsByTagName("item")[iterItem].attributes.getNamedItem("visibility").value;
		if(visibility == '1'){
			var keyword = xmlDoc.getElementsByTagName("item")[iterItem].attributes.getNamedItem("keyword").value;
			var url     = xmlDoc.getElementsByTagName("item")[iterItem].attributes.getNamedItem("url").value;
			
			var tabSearchField = cleanString(project).split(" ");
			for(var j = 0; j < tabSearchField.length; j++){
				var tabKeyword = keyword.split(' ');
				for(var k = 0; k < tabKeyword.length; k++){
					if (tabSearchField[j].toLowerCase() == tabKeyword[k].toLowerCase()){
						return url;
					}
				}
			}
		}
	}
}


function validForm(){
	var project = document.getElementById('searchField').value;
	var amount  = document.getElementById('amount').value;
	
	// Si le montant n'est pas null
	if(amount != null && amount != ''){
		//Verif que le champs montant est bien un nombre
		if(isNaN(amount)){
			generateError('Veuillez saisir un nombre pour le montant.');
		} else {
			amount = parseInt(amount);
		}
		
		if (amount >= 500 && amount <= 5000) {
			document.location.href = '/simulation-credit.asp';
			//return true;
        } else if (amount > 5000 && amount <= 30000){
			// Si champs projet est null
			if (project == null || project == ''){
				document.location.href = '/credit-personnel.asp';
				//return true;
            } else if (project != null && project != ''){
				// Recherche dans le XML (mot exacte)
				var url = matchXML(project);
				if(url != null){
					document.location.href = '/' + url;
				}
				// Verif si un mot correspond dans le XML
				else{
					url = partialyMatchXML(project);
					if(url != null){
						document.location.href = '/' + url;
					} else {
						generateError('Aucun résultat pour votre recherche');
					}
				}
			}
		} else if(amount > 30000 || amount < 500){
			generateError('Le montant ne doit pas etre inferieur à 500&euro; ou superieur à 30000&euro;');
		}
	} 
	
	// Si le montant est null
	else if(amount == null || amount == ''){
		if(project == null || project == ''){
			generateError('Veuillez saisir au moins un champs.');
		} else if(project != null && project != ''){
			// Recherche dans le XML (mot exacte)
			var url = matchXML(project);
			if(url != null){
				document.location.href = '/' + url;
			}
			// Verif si un mot correspond dans le XML
			else{
				url = partialyMatchXML(project);
				if(url != null){
					document.location.href = '/' + url;
				} else {
					generateError('Aucun résultat pour votre recherche');
				}
			}
		}
	}
}

function generateError(pMessage) {
	document.getElementById('errorText').innerHTML = pMessage;
	document.getElementById('errorSearch').style.display = "block";
}



// **********************************************************
//                         TAGCLOUD
// **********************************************************

function generateTagcloud() {

	var xmlDoc = initXML("/xml/projets.xml");
	
	var nbrItems = xmlDoc.getElementsByTagName("item").length;
	//var foo = document.getElementById('foo').value;
	
	var result = "";
	
	for(i=0; i<nbrItems; i++){
		
		var keyword    = xmlDoc.getElementsByTagName("item")[i].attributes.getNamedItem("keyword").value;
		var url        = xmlDoc.getElementsByTagName("item")[i].attributes.getNamedItem("url").value;
		var ttl        = xmlDoc.getElementsByTagName("item")[i].attributes.getNamedItem("ttl").value;
		var tagcloud   = xmlDoc.getElementsByTagName("item")[i].attributes.getNamedItem("tagcloud").value;
		
		if(tagcloud != 0){
			switch (tagcloud){
				case '1' : 
					result += '<a href="' + url + '" title="' + ttl + '" class="style1">' + keyword + '</a> ';
					break;
				case '2' :
					result += '<a href="' + url + '" title="' + ttl + '" class="style2">' + keyword + '</a> ';
			       	break;
				case '3' :
					result += '<a href="' + url + '" title="' + ttl + '" class="style3">' + keyword + '</a> ';	
					break;
				case '4' :
					result += '<a href="' + url + '" title="' + ttl + '" class="style4">' + keyword + '</a> ';					
				    break;
				case '5' :
					result += '<a href="' + url + '" title="' + ttl + '" class="style5">' + keyword + '</a> ';
			       	break;
			   	default:
			       result += '<a href="' + url + '" title="' + ttl + '" class="style0">' + keyword + '</a> ';
			       break;
			}
		}
	}
	document.getElementById('tagcloud').innerHTML = result;
}

//-->