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

//var sRootPath='/it/';
$(document).ready(function(){
	var stext=GetUrlParam('searchText');
	var mode=GetUrlParam('mode');
	if(stext!=''){
		var arrayWord=ritornaWordSearch(stext);
		
		
		if(mode=='wiki'){
			searchPage(arrayWord,stext,new Array("wikipage:WIKI"),"#co3_search");	
		}else{
			searchPage(arrayWord,stext,new Array("wikipage:WIKI","content:Pagine"),"#co3_search");	
		}
		
		
	}	
});

function ritornaWordSearch(wordname){

	wordname = wordname.replace(/[+]+/g,' ');
	var wordtrim=wordname.replace(/[\s]+/g,'').toLowerCase();
	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;
	}



 // Elimina
	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,contentSearch,iddiv){
	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=='/'+langXml+'/XML/NEWS/data.xml'){
				 			linkpage=sRootPath+langXml+'/azienda_'+langXml+'/news_'+langXml+'/newsDetail_'+langXml+'.html?DETTAGLIO='+$(this).attr('idxml');
				 		}else if(linkpage=='/'+langXml+'/XML/WIKI/data.xml'){//NO SCHEDA
				 			linkpage=sRootPath+langXml+'/wiki_'+langXml+'/wikiD_'+langXml+'.html?DETTAGLIO='+$(this).attr('idxml');
				 		}*/


				 		var namepage=	$(this).attr('nomepagina');
				 		var count=0;
						pageArray[idpage] = new pageReferences(namepage,linkpage,idpage);
					});
				}
    });
     $(iddiv).html("<h2>Hai cercato "+textoriginal+"</h2>");
      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]
			       
				

									$(msg).find("Key").filter("[key="+keyselected+"]").filter("[lang="+langXml+"]").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){
									$("#co3_search").append("<h3>"+contentLabels[i]+"</h3>");
										}
									
										risultati[contents[i]].sort(sortByRating);
									
										var count=0;
										var exit=false;
					                var ulList=$("<ul class='ul-blue p'></ul>");
                                    $(iddiv).append(ulList);
					      			for (var item in risultati[contents[i]]) {
										
					      				var resultItem = risultati[contents[i]][item];
					      					

								      	if(resultItem.rating+""!='undefined' ||pageArray[resultItem.idpage]+""!='undefined' ){
								      			//alert(resultItem.idpage+"-"+contents[i]);								      		
								      			y++;
								      		count++;
								      		var tstring=resultItem.texthtml;
								      			/*var tstring=resultItem.texthtml;
										      	var charstring=tstring.charAt(0).toString();
												  
												     if((charstring=='&'  || charstring=='#' ||  (!isNaN(charstring)))&& tstring.length>0 && charstring!=' ' ){
												      		//alert("++"+tstring+"--"+charstring);
												      	var lt=0;
												      
												      //	alert("----"+charstring+"--"+isNaN(charstring));
												      while((charstring=='&' || charstring=='#' || (!isNaN(charstring))) && tstring.length>0 && charstring!=' ') {
												      		//	alert("CUT--"+charstring+"--"+tstring +"--"+!isNaN(charstring));
												      			lt++;
												      		tstring=tstring.substring(lt,tstring.length);
												      		charstring=tstring.charAt(0).toString();
												      		
												      		}
												      	//alert("**"+tstring);
												      }*/
												      
												      tstring=ritagliaTesto(tstring);
			//$(iddiv).append('<div><h3><a href="'+pageArray[resultItem.idpage].htmlpath+'" title="'+pageArray[resultItem.idpage].idpage+'">'+pageArray[resultItem.idpage].pagename+'<!-- RATING: ' + resultItem.rating+'--> </a></h3><p> '+ tstring+'</p></div>');
			                
                                            
           ulList.append('<li><a href="'+pageArray[resultItem.idpage].htmlpath+'" title="'+pageArray[resultItem.idpage].idpage+'">'+pageArray[resultItem.idpage].pagename+'<!-- RATING: ' + resultItem.rating+'--> </a><ul><li><p> '+ tstring+'</p></li></ul></li>');

								      		if(count==10){
									      		break;
									      	}
										}
						 				if(exit){break;}
						 			}
					 				if(exit){break;}
					 			}
								//}// end for content
					
								if(y==0){
									
									
									
									
								  $(iddiv).append('Nessun risultato per: '+textoriginal);
								  
								}
			      
			       	
			       	
   
  
} // end searchpage

function sortByRating(a, b) {
    var x = a.rating;
    var y = b.rating;
    return ((x > y) ? -1 : ((x < y) ? 1 : 0));
}
function sortByRatingAsc(a, b) {
    var x = a.rating;
    var y = b.rating;
    return ((y > x) ? -1 : ((y < x) ? 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;
  };
/*
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.startsWith = function(str)
{return (this.match("^"+str)==str)}



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

function ritagliaTesto(textsearch)
{
	
	var charstring=textsearch.charAt(0).toString();
												  
 if((charstring=='&'  || charstring=='#' ||  (!isNaN(charstring)))&& textsearch.length>0 && charstring!=' ' ){

  	var lt=0;
  

  while((charstring=='&' || charstring=='#' || (!isNaN(charstring))) && textsearch.length>0 && charstring!=' ') {

 			lt++;
  		textsearch=textsearch.substring(lt,textsearch.length);
  		charstring=textsearch.charAt(0).toString();
  		
  		}
  }
	
	
	if (textsearch.length>0)
	{
		var last=textsearch.lastIndexOf(' ');
		if(last>0){
			textsearch=textsearch.substring(0,last);
			}
		
	}
	//alert(textsearch);
	textsearch=textsearch.replace("&lt"," ");
	textsearch=textsearch.replace("&gt"," ");
	textsearch=textsearch.replace(/&amp;/ig,"&");
	textsearch=textsearch.replace(/&#38;/ig,"&");
	textsearch=textsearch.replace(/&#35;/ig,"#");
	textsearch=textsearch.replace(/&#59;/ig," ");
	
	
	return textsearch;
}

