var contentSearch= new Array("content:PAGINE","news:NEWS");

//var sRootPath='/WorkingFolder/deploy/avanzi/';
$(document).ready(function(){
		if ($('#risultati_ricerca').is('div')){
		var stext=GetUrlParam('searchText');
		var mode=GetUrlParam('mode');
			if(stext!=''){
				var arrayWord=ritornaWordSearch(stext,mode);
				searchPage(arrayWord,stext);
			}
		}
});




function invia(){
  var a=document.getElementById("search_form");
	if(a.searchText.value!='' && a.searchText.value!='Keyword'){
	  a.submit();
	  return true;
  }else{
	  alert("Inserire una parola da ricercare!")
	    return false;
  }
}



function ritornaWordSearch(wordname,mode){

	wordname = wordname.replace(/[+]+/g,' ');
	var wordtrim=wordname.replace(/[\s]+/g,'').toLowerCase();


	if(wordtrim.indexOf("tag:")>=0|| wordtrim.indexOf("tags:")>=0||mode=='tags' || wordtrim.indexOf("news:")>=0||mode=='events' || wordtrim.indexOf("news:")>=0||mode=='events' || wordtrim.indexOf("page:")>=0 ){
		 var f=0;
		contentSearch= new Array();
		if((wordtrim.indexOf("tag:")>=0|| wordtrim.indexOf("tags:")>=0||mode=='tags')){
			contentSearch[f]="tags:TAGS";
			wordname=wordname.replace("tags:","");
			wordname=wordname.replace("tag:","");
			f++;
		}
		if(wordtrim.indexOf("news:")>=0||mode=='news'){
			contentSearch[f]="news:NEWS";
			wordname=wordname.replace("news:","");
			f++;
		}
	if(wordtrim.indexOf("page:")>=0 || mode=='all'){
			contentSearch[f]="content:PAGINE";
			wordname=wordname.replace("page:","");
			f++;
		}
	if(wordtrim.indexOf("events:")>=0 || mode=='all'){
			contentSearch[f]="eventi:EVENTI";
			wordname=wordname.replace("eventi:","");
			f++;
		}
	}

	var testString = wordname;
	testString = testString.replace( /^\s+|\s+$/g ,'').replace( /\s+/g,' ');
	var arr = testString.split(' ');
	var arrnew=new Array();
	var c=0;
	for(i=0;i<arr.length;i++) {
		//alert(arr[i]);
	var word=arr[i];
		if (word.length>2) {
			word = word.toUpperCase();
			if (!stopword(word)) {
			arrnew.push(wordRootIT(word));
			}
	  	}
	  }
	  	return arrnew;
	}


function stopword (word) {
	      var stopWord= new Array(
	      					   "GLI","DEL","DAI","DAL","NEL","NEI","SUL","SUI","SULLA","SULLE","SUGLI","NEGLI","DALLE","DEI","UNO","UNA",
	                           "NELLO","NELLA","NELLE","DEGLI","DELLE","DALLO","DALLA","DAGLI","DELLA","ALLO","AGLI","ALLA",
	                           "ALLE","TRA","FRA","PER","COI","CON","CHI","CHE","DELL","DALL"
	                           );

	      for (j=0;j<stopWord.length;j++){
	          if (stopWord[j]==word){
		           return true;
		           }
		      }
	      return false;
	  }

  function  wordRootIT ( word) {
	      if (word.endsWith("HI") || word.endsWith("HE")) {
	          word = word.substring(0,word.length-2);
	      }
	      if (word.endsWith("A") || word.endsWith("E") ||
	          word.endsWith("I") || word.endsWith("O") ||
	          word.endsWith("U")) {
	          word = word.substring(0,word.length-1);
	      }
	      word=word + "_";
	      return word;
	  }


function searchPage(arrayWord,textoriginal){
	var z=0;
	var pageArray = new Array();
	var html='';
	var htmlheader='';
 	var y=0;

 	var risultati 		= new Array();
	var contents 		= new Array();
	var contentLabels 	= new Array();

	//popola l'array con le pagine
  $.ajax({
       type: "GET",
       url: sRootPath+"search/search.xml",
       dataType: 'xml',
       async:false,
       success: function(msg){
		 	$(msg).find("page").each(function(){
				 		var idpage = $(this).attr('id');
				 		var linkpage=	$(this).attr('htmlpath');
				 		if(linkpage=='/it/News/data.xml'){
				 			linkpage='/it/azienda/news_list/news.html?page=1&idnews='+$(this).attr('idxml');
				 		}


				 		var namepage=	$(this).attr('nomepagina');
				 		var count=0;
						pageArray[idpage] = new pageReferences(namepage,linkpage,idpage);
					});
				}
    });
    $("#risultati_ricerca").append("<h2>Risultati della ricerca</h2><p class=\"wideText\">Hai cercato: "+textoriginal+"</p>");
//    $("#risultati_ricerca").append("Hai cercato: "+textoriginal+"");
      var k=0;
      
      for(var i=0;i<contentSearch.length;i++){
										contents[i]	= contentSearch[i].split(":")[0]+'';
										contentLabels[i] = contentSearch[i].split(":")[1]+'';
									//	alert(contentLabels[i]);
										// istanzia l'array per il tipo di contenuto
										risultati[contents[i]+''] = new Array();
										//alert("istanziato array risultati["+contents[i]+"]");
									}
    	for(var i=0;i<arrayWord.length;i++){
    			k=i;
    			var VOCABOLO=arrayWord[i].charAt(0);
    			if (!isNaN(VOCABOLO)){
    				VOCABOLO="A";
    				}
    		$.ajax({
			       type: "GET",
			       url: sRootPath+"search/"+VOCABOLO+"-searchindex.xml",
			       dataType: 'xml',
			       async:false,
			       success:function(msg){
			       	var keyselected=arrayWord[k]
			       
									
						/*  for(var i=0;i<contentSearch.length;i++){
										contents[i]	= contentSearch[i].split(":")[0]+'';
										contentLabels[i] = contentSearch[i].split(":")[1]+'';
										// istanzia l'array per il tipo di contenuto
										risultati[contents[i]+''] = new Array();
										//alert("istanziato array risultati["+contents[i]+"]");
									}*/

									$(msg).find("Key").filter("[key="+keyselected+"]").each(function(){
												
						 				var id 			= $(this).attr('id');
								 		var n			=$(this).attr('n');
								 		var text		=$(this).attr('text');
								 		var count		= 0;
								 		var newtxt		= "";
								 		var keycontent 	= ""+$(this).attr('content');
					
													// inserisci i risultati solo se prensenti nei tipi di contenuto
													//alert("cerco se "+keycontent+" è nell'array "+contents);
										
													if(isInArray(keycontent,contents))
													{
										
														if(risultati[keycontent+''][id]+"" !='undefined' && risultati[keycontent+''].length>0){
												 			if(!isNaN(risultati[keycontent+''][id].rating)){
												 				count=risultati[keycontent+''][id].rating;
												 				newtxt=risultati[keycontent+''][id].texthtml;
												 			}
												 		}
					
												//controlla che non esista già il risultato
					
					
												if(!isInArray(id+'', risultati[keycontent+'']))
												{
												//alert("aggiungo id:"+id);
												// aggiungi ai risultati l'item wordText
												risultati[keycontent+''][id] = new wordText(count+1+parseInt(n),text,newtxt,id);
												}
					
											}
									});	//end filtro
								
					
					

			       	},
			       complete: function(msg){	
		      
			       	}//end chiamata success
						});// end ajax content
    		
   				}
		   		for(var i=0;i<contents.length;i++)
								{
									if(risultati[contents[i]].length!=0){
										$("#risultati_ricerca").append("<h2>"+contentLabels[i]+"</h2>");
										}
									
										risultati[contents[i]].sort(sortByRating);
									
										var count=0;
										var exit=false;
					
					      			for (var item in risultati[contents[i]]) {
									
					      				var resultItem = risultati[contents[i]][item];
					      					
								      /*if(resultItem.rating+""!='undefined'){
								      	
									     		alert(contents[i]);
										  }*/
								      	if(resultItem.rating+""!='undefined' ||pageArray[resultItem.idpage]+""!='undefined' ){
								      			//alert(resultItem.idpage+"-"+contents[i]);
								      		y++;
								      		count++;
								      		$("#risultati_ricerca").append('<div class="risultato"><div><h3><a href="'+pageArray[resultItem.idpage].htmlpath+'" >'+pageArray[resultItem.idpage].pagename+'<!-- RATING: ' + resultItem.rating+'--> </a></h3><p> '+ resultItem.texthtml+'</p></div></div>');
								      		if(count==10){
									      		break;
									      	}
										}
						 				if(exit){break;}
						 			}
					 				if(exit){break;}
					 			}
								//}// end for content
					
								if(y==0){
								  $("#risultati_ricerca").append('Nessun risultato per: '+textoriginal);
								}
			       	$("#loadcomp").html("") 
   
} // end searchpage

function sortByRating(a, b) {
    var x = a.rating;
    var y = b.rating;
    return ((x > y) ? -1 : ((x < y) ? 1 : 0));
}


function wordText(rating,texthtml,newtxt,idpage) {
    this.rating = rating;
    this.texthtml =newtxt+texthtml;
    this.idpage = idpage;
}
function pageReferences(pagename,htmlpath,idpage) {
    this.pagename = pagename;
    this.htmlpath =htmlpath;
    this.idpage = idpage;
}


//Generics Method
Array.prototype.inArray = function (value) {
    var i;
    for (i=0; i < this.length; i++) {
      if (this[i] === value) {
        return true;
      }
    }
    return false;
  };
/*
Array.prototype.replaceAll = function (value1,value2) {
    var i;
    for (i=0; i < this.length; i++) {
      if (this[i] === value) {
        return true;
      }
    }
    return false;
  };
*/
String.prototype.trim = function(str){return
(this.replace(/^[\s\xA0]+/, "").replace(/[\s\xA0]+$/, ""))}

String.prototype.endsWith = function(str)
{return (this.match(str+"$")==str)}

/*String.prototype.contain = function(str)
{return (this.match("^"$+str+"$")==str)}*/


String.prototype.startsWith = function(str)
{return (this.match("^"+str)==str)}

function GetUrlParam(paramName){
  var oRegex = new RegExp( '[\?&]' + paramName + '=([^&]+)', 'i' ) ;
  var oMatch = oRegex.exec( window.top.location.search ) ;
  if ( oMatch && oMatch.length > 1 )
    return decodeURIComponent( oMatch[1] ) ;
  else
    return '' ;
}

function isInArray(needle, haystack)
{
	var result = false;
	for (i in haystack)
	{
		if(needle==haystack[i]){
			result= true;
			break;
		}
	}
	return result;
}

