var $j = jQuery.noConflict();
 var _GET = (function() {
    var get = {};
    var vars = window.location.search.substring(1).split('&');
    for (i=0; i<vars.length; i++ ) {
	  var v= vars[i];
      var pair = v.split('=');
      get[ pair[0] ] = pair[1];
    }
    return get;
  })();
 
 function selectedOptionCombo(xcombo,xvalue){	
	for (var i=0;i< xcombo.options.length ;i++)
		if (xcombo[i].value == xvalue)			
			xcombo.options[i].selected=true;
}
 /*function resetKeyword() {
	if (document.search.q.value == 'parola di ricerca')
		document.search.q.value = '';
}*/
 
 
  var numPage = (_GET.numPage) ? _GET.numPage : 1;

 //var scope = (_GET.scope&&_GET.scope=='sito') ? '&scope='+_searchproperties['scope'] : '';
 

 var scope = (_GET.scope &&_GET.scope!='mediaset') ? '&scope='+_GET.scope : '';
 
 var sort = (_GET.sort&&_GET.sort=='date') ? '&sort=date' : '';
 var pagesize = '&pagesize='+_searchproperties['pagesize'];
  //var dtrange = (_GET.dtrange) ? '&dtrange='+_GET.dtrange : '';
  
 var txt ='';
     
 var maxtext=_searchproperties['textlength'];
 var part=_searchproperties['textlength_firstpart'];
 
 function roundTo(num, decimalpositions){
     var i = this * Math.pow(10,decimalpositions);
     i = Math.round(i);
     return i / Math.pow(10,decimalpositions);
 }
 
 function manageText(_text){
 	var preStringLenght=Math.round((maxtext/part));
 	var idx1=0;
 	var idx2=0;
 	var dummystring="";
 	idx1=_text.toLowerCase().indexOf("<strong>");
 	idx2=_text.toLowerCase().indexOf("</strong>");
 	idx2=idx2+"</strong>".length;
 	var wordm=_text.substring(idx1,idx2);
 	var preText="";
 	var postText="";
 	dot=false;
 	if(idx1>4){
 		dummystring=_text.substring(0,idx1);
 	
 		var count=0;
	 	var lastIdSpace=0;
 		if(dummystring.length==preStringLenght){ 			
 			if(idx1-dummystring.length > 0){
 				dot=true;
 			}
 			lastIdSpace=idx1-dummystring.length;
		}else{
	 		for(i=dummystring.length-1;i>-1;i--){
	 			count=count+1;
	 			
	 			if(count>preStringLenght){
	 				i=-1;
	 				if(lastIdSpace==0)
	 					lastIdSpace=(dummystring.length)-preStringLenght;
	 			}else{
	 				if(dummystring.charAt(i)==" "){
	 					lastIdSpace=i;
	 				}
	 			}
	 			
	 		}
	 		dot=true;
	 	}
 		preText=(_text.substring(lastIdSpace+1,idx1));
 		if(dot)
 			preText="..."+preText;
 	}
 	
 	lastIdSpace=0;
 	count=0;
 	dot=false;
 	if((idx2 + (maxtext-(preText.length-3)))>_text.length){
 		lastIdSpace=_text.length;
	}else{
	 	for(i=idx2;i < _text.length; i++){
	 		count=count+1;
	 		if(count>(maxtext-(preText.length-3))){
	 			i=_text.length;
	 			if(lastIdSpace==0)
	 				lastIdSpace=_text.length;
	 		}else{
	 			if(_text.charAt(i)==" "){
	 				lastIdSpace=i;
	 			}
	 		}	
	 	}
	 	dot=true;
	}
 	
 	postText=_text.substring(idx2,lastIdSpace);
 	if(dot)
 		postText=postText+"...";
 	
 	return (preText+wordm+postText);
 }
 
 function checkStrongTag(_text){
 	var idx=0;
 	var idx2=0;
 	var tag1="<strong>";
 	var tag2="</strong>";
 	var pres="";
 	var posts="";
 	while(idx>-1){
 		idx=_text.toLowerCase().indexOf(tag1,idx);
 		if(idx>-1){
 			idx2=_text.toLowerCase().indexOf(tag2,idx); 			
 			if(idx2>-1){
 				idx=idx2+tag2.length;
 				
 			}else{
 				pre=_text.substring(0,idx);
 				post=_text.substring(idx+tag1.length,_text.length);
 				_text=pre+post;
 				idx=idx+tag1.length;
 				if(idx>_text.length){
 					idx=-1;
 				}
 			}
 		}
 	}
 	return _text;
 }
 
 
   
 function updateNavigation(numTotItem,keyword_search,numPage,scope,sort)
 {	
 
 	var maxPage = 10
 	var totPage = Math.floor((numTotItem - 1) / _searchproperties['pagesize']) + 1
 	var begin_page = 0
 	var end_page = 0
 	var str = ''
 	var numPage = Number(numPage)
 	if (totPage >1){
 	       
 		/*~~~~~~~~~ begin page ~~~~~~~~~*/
 		if(numPage<maxPage)
 			begin_page = 1
 		else if(numPage%maxPage == 0)
 			begin_page = (numPage+1)-maxPage
 		else
 			begin_page = (numPage-(numPage%maxPage))+1
 		/*~~~~~~~~~ end page ~~~~~~~~~*/
 		if(numPage<maxPage)
 			end_page = maxPage
 		else if(numPage%maxPage == 0)
 			end_page = numPage
 		else
 			end_page = numPage+(maxPage-(numPage%maxPage))
 
 		if(end_page>totPage) end_page = totPage
 		/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 		
 		//alert('totPage:'+totPage+' numPage:'+numPage+' begin_page:'+begin_page+' end_page:'+end_page)
 		
 		var previous = (begin_page!='1')?'<a href="javascript:gotoPage(\''+keyword_search+'\','+eval(begin_page-1)+',\''+scope+'\',\''+sort+'\')" class="back"><span>prev</span>&nbsp;&nbsp;&nbsp;&nbsp;</a>': ''
 		for (i = begin_page; i <= end_page; i++)
 		{
 			if (i == numPage) str += '<span>'+i+'</span>'
 			else str += '<a href="javascript:gotoPage(\''+keyword_search+'\','+i+',\''+scope+'\',\''+sort+'\')" title="vai alla pagina '+i+'">'+i+'</a>'
 		}
 		var next = (i<totPage)?'<a href="javascript:gotoPage(\''+keyword_search+'\','+eval(end_page+1)+',\''+scope+'\',\''+sort+'\')" class="fw"><span>next</span>&nbsp;&nbsp;&nbsp;&nbsp;</a>':''
 		var pagination = previous+str+next
 		return pagination;	
 	}
	else{
	  var pagination = '';
 	  return pagination;
	}
 }
 
 function updateNavigationArrow(numTotItem,keyword_search,numPage,scope,sort)
 {	
 
 	var maxPage = 10
 	var totPage = Math.floor((numTotItem - 1) / _searchproperties['pagesize']) + 1
 	var begin_page = 0
 	var end_page = 0
 	var str = ''
 	var numPage = Number(numPage)
 	if (totPage >1){
 	       
 		/*~~~~~~~~~ begin page ~~~~~~~~~*/
 		
 		begin_page = numPage
 		/*~~~~~~~~~ end page ~~~~~~~~~*/
 		end_page = totPage;
 		/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 		
 		//alert('totPage:'+totPage+' numPage:'+numPage+' begin_page:'+begin_page+' end_page:'+end_page)

 		
 		var previous = (begin_page!='1')?'<a class="link_Prev" title="Vai alla pagina precedente" href="javascript:gotoPage(\''+keyword_search+'\','+eval(numPage-1)+',\''+scope+'\',\''+sort+'\')">&laquo;</a>': '';
 		var str = '<span class="txt_Pagination"><span class="txt_Current_Page">'+begin_page+'</span> di <span class="txt_Total_Pages">'+end_page+'</span></span>';
 		var next = (numPage<totPage)?'<a href="javascript:gotoPage(\''+keyword_search+'\','+eval(numPage+1)+',\''+scope+'\',\''+sort+'\')" class="link_Next" title="Vai alla pagina successiva">&raquo;</a>':'';
 		var pagination = previous+str+next;
 		return pagination;	
 	}
	else{
	  var pagination = '';
 	  return pagination;
	}
 }
 
 function gotoPage(keyword_search,numPage,scope,sort)
 {	
 	if(sort!="" && sort!='undefined'){	
 		var src = _searchproperties['searchpage']+'?q='+keyword_search+'&scope='+scope+'&sort='+sort+'&numPage='+numPage;
	}else{
		var src = _searchproperties['searchpage']+'?q='+keyword_search+'&scope='+scope+'&numPage='+numPage;
	}
 	document.location.href=src
 }

 function toPublishDate(publishDate){20090522135842
	var day = publishDate.substring(6,8);
	var month = Month(publishDate.substring(4,6));
	var year = publishDate.substring(0,4);
	var datepub = 'Pubblicato il '+day+' '+month+' '+year;
	return datepub;
 }
 
 
 function Month(month){
  switch (month) {
  case '01': return 'gennaio';
  case '02': return 'febbraio';
  case '03': return 'marzo';
  case '04': return 'aprile';
  case '05': return 'maggio';
  case '06': return 'giugno';
  case '07': return 'luglio';
  case '08': return 'agosto';
  case '09': return 'settembre';
  case '10': return 'ottobre';
  case '11': return 'novembre';
  case '12': return 'dicembre';
  }
}


var MALICIOUSCHAR = "<>%;/(*";

function checkHexString(stringget){
	/*
	%22
	%3C
	script
	%3E
	alert(
	*/
	if(stringget.toUpperCase().indexOf("%22")>-1){
		return true;	
	}else if(stringget.toUpperCase().indexOf("%3C")>-1){
		return true;	
	}else if(stringget.toUpperCase().indexOf("script")>-1){
		return true;	
	}else if(stringget.toUpperCase().indexOf("%3E")>-1){
		return true;	
	}else if(stringget.toUpperCase().indexOf("alert(")>-1){
		return true;	
	}/*else if(stringet.toUpperCase().indexOf()>-1){
		return true;	
	}else if(stringet.toUpperCase().indexOf()>-1){
		return true;	
	}*/
	return false;
}


function checkInjection(stringget){
	if(checkString(stringget,MALICIOUSCHAR)){
		return false;
	}else if(checkHexString(stringget)){
		return false;
	}
	return true;
}

function checkString(theString,universe){
	var currentChar;
	for(i=0;i<theString.length;i++){
		currentChar=theString.charAt(i);
		if (universe.indexOf(currentChar)>-1) return true;
	}
	return false;
}


function replaceAccento(txt) {
  return txt.replace(new RegExp("%C3%A0", 'g'),"%E0").replace(new RegExp("%C3%A8", 'g'),"%E8").replace(new RegExp("%C3%A9", 'g'),"%E9").replace(new RegExp("%C3%AC", 'g'),"%EC").replace(new RegExp("%C3%B2", 'g'),"%F2").replace(new RegExp("%C3%B9", 'g'),"%F9");
}
 
 $j(document).ready(function(){
 
   if(_GET.q != undefined){
       
	   if(_GET.q==''){ 	
 		alert("Inserisci la/e parola/e che vuoi ricercare!"); 		
 		return false;
 	  } 	

	   var _getq = replaceAccento(_GET.q)
	   
       var searchstring = "?q="+_getq+"&sort=date&mode=ki&pagenumber="+numPage+"&maxresults="+_searchproperties['maxresults']+pagesize+scope+sort;		
        
        var injection = false;
        
        if(!checkInjection(unescape(searchstring))){
        	injection=true;
	    }
        	var contentIds = [];
	        //alert(searchstring)
			//http://91.211.156.138/Mediaset/related
	        //$j.getJSON(_searchproperties['searchpage']+searchstring+"&callback=?",
	        //$j.getJSON("http://217.26.90.239/Mediaset/matching"+searchstring+"&callback=?",  
			  $j.getJSON("http://91.211.156.138/Mediaset/matching"+searchstring+"&callback=?",
			
	        function(data){   	
	        {
		  try
	          {
	          	var maxitem = (data.totalResults)
	          	var querystring = unescape(replaceAccento(_GET.q))							
				
	          	if(!injection){
		        	if(maxitem>0){
		        		//var _result = $j('<div id="haicercato">Hai cercato: <span>'+(querystring.replace(/\+/g, " "))+'</span></div>').appendTo($j('#results'));
		        		var srcurl = document.location.href;
		        		
		        		var indexpos = srcurl.indexOf("&numPage");
		        		if(indexpos>-1)
		        			srcurl = ""+srcurl.substring(0,indexpos);
		
					
		        		$j('#qRicerca').html(querystring.replace(/\+/g, " "));
		        		if(sort!=""){
		        			//var _result = $j('<div id="haicercato">Hai cercato: <span>'+(querystring.replace(/\+/g, " "))+'</span></div>').appendTo($j('#results'));
		        			//srcurl = srcurl.replace("&sort=date","");        			
		        			//var _result = $j('<div id="haicercato">Hai cercato: <span>'+(querystring.replace(/\+/g, " "))+'</span>   Corpus Name : <span>'+_GET.scope+'</span><br>Risultati ordinati per <span>DATA</span>. <a href="'+srcurl+'">Ordina per <span>RILEVANZA</span></a></div>').appendTo($j('#results'));	
		        		}else{
		        			//var _result = $j('<div id="haicercato">Hai cercato: <span>'+(querystring.replace(/\+/g, " "))+'</span>   Corpus Name : <span>'+_GET.scope+'</span><br>Risultati ordinati per <span>RILEVANZA</span>. <a href="'+srcurl+'&sort=date">Ordina per <span>DATA</span></a></div>').appendTo($j('#results'));	
		        		}
		        		
			        	$j.each(data.matchRecords, function(i,matchRecord){
			          		var _result = $j('<li/>').appendTo($j('#results'));
			         	 	
			          	 	var _documentProperties = {};	
			           	 	var _text = '';    
			           		$j.each(matchRecord.documentProperties, function(j,documentProperty){
				         		_documentProperties[documentProperty.name]=documentProperty.value;
				         		
			        	  	});
			        	  			var _text = ""
			        	  			var endprev = 0;
			        	  			
			        	  			/*
			        	  			if (matchRecord.matchSentences[0].tags){
			        	  			 $j.each(matchRecord.matchSentences[0].tags, function(y,tag){
			        	  			 	//alert(endprev+' - '+tag.begin+' - '+tag.end)
			        	  				var current = matchRecord.matchSentences[0].text.substring(endprev,tag.begin);
				 		 	    		current += '<strong>'+matchRecord.matchSentences[0].text.substring(tag.begin,tag.end)+'</strong> '
				 		 	    		endprev = tag.end;
		 		 	    		
				 			    		_text += current;
				 			   	
			        	  			});
			        	  			}
			        	  			*/
			        	  			_text += matchRecord.matchSentences[0].text.substring(endprev)
			        	  			_text = _text.replace(/(\&amp;nbsp;|\&amp;#160;)+/gi, " ");
			        	  			//_text += '...';
			        	  			if(_text.length>(maxtext+20)){
				        	  		_text = manageText(_text);
				        	  		}	
			        	  			
			        	  	//video id managemnt: id is from position 20
							var currentItemId = _documentProperties['GUID'].substring(20).replace(/^[0]+/g,"");
							var currentvotesId;
							if (currentItemId != null && currentItemId.length > 0)
								{
								contentIds.push(currentItemId);
								currentvotesId="visitscounter_"+currentItemId;
								}
							else 
								currentvotesId="";	
			        	  			
			        	  	//gestione thumb
			        	  	var _thumb = $j('<div />');
			        	  		_thumb.attr('class', 'box_Img');
			        	  	
			        	  	var _imgThumb = $j('<a href="'+_documentProperties['Document name']+'"><img src="'+_documentProperties['THUMBNAIL']+'" alt="'+_documentProperties['TITOLO']+'" img="116" /></a>');			        	  	
			        	  	_imgThumb.appendTo(_thumb);
			        	  	_thumb.appendTo(_result);
			        	  	
			        	  	var _divDescription = $j('<div />');
			        	  	_divDescription.attr('class', 'box_Description');

				        
					       	var _title = $j('<h2/>');
					       	_title.attr('class', 'tit_Article');

				      	 	var _link = $j('<a>'+_documentProperties['TITOLO']+'</a>').appendTo(_title);
				      	        _link.attr('href', _documentProperties['Document name']);
				      	        _title.appendTo(_divDescription);
				      	        
				      	      var _divParagraph = $j('<div />');
				      	    _divParagraph.attr('class', 'txt_Paragraph');
				      	    
				      	  var _linkDesc = $j('<a>'+_documentProperties['SOTTOTITOLO']+'</a>').appendTo(_title);
				      	    _linkDesc.attr('href', _documentProperties['Document name']);
				      	   _linkDesc.appendTo(_divParagraph);
				      	   _divParagraph.appendTo(_divDescription);
						   						   						 
						   
						   
				      	   //La property seguente da recuperare è _documentProperties['CATEGORYPATH']
						   var _userinfo = _documentProperties['CATEGORYPATH'].split(';');
						   if(_userinfo.length == 2){
								var _divBoxInfo = $j('<div ><span class="txt_Author"><strong>by</strong> <a href="http://www.16mm.it/Video/profile/profile_'+ _userinfo[0]+'.shtml" -->'+_userinfo[1]+'<a></span><span class="txt_View"><span style="display:none;" id="span'+currentvotesId+'"><strong>visite</strong></span>&nbsp;<span id="'+currentvotesId+'">&nbsp;</span></span></div>');
								_divBoxInfo.attr('class', 'box_Info');
								_divBoxInfo.appendTo(_divDescription);
							}
				      	  
				      	 	_divDescription.appendTo(_result);
				      	        
				         	//$j('<p class="snippet">'+_text +'</p>').appendTo(_result);
				         	//var dateContent = toPublishDate(_documentProperties['Creation date']);
				         	//$j('<div class="meta">'+ _documentProperties['Document name']+' - '+dateContent+'</div>').appendTo(_result);
				         	
				         	/*var dateContent = toPublishDate(_documentProperties['Creation date']);
				         	$j('<div class="meta">'+dateContent+'</div>').appendTo(_result);*/
				         	
				         	$j('#loadingvideo').css('display','none');		
				         	
			          		});
			          	/*~~~~PAGINAZIONE~~~~~~~~~~*/
			          	if(test='false'){
			          		//alert(Math.ceil (Math.ceil (2)));
			          		//alert(numPage);
			          		var pagination = updateNavigationArrow(maxitem,_GET.q,numPage,_GET.scope,_GET.sort)
			          		if(pagination!='')
			          		//$j('<div id="searchfooter">'+pagination+'</div>').appendTo($j('#results'));
			          			$j('#boxPaging').html(pagination);
			        	}
			        	/*~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
						
							//visits counter, single call
						if (contentIds != null && contentIds.length > 0) {  //multiple videos
							var idParams = '';
							
							for(var i=0; i<contentIds.length; i++) {
								idParams = idParams + "&ContentKey="+contentIds[i];
							}
							
							$j.ajax({
							  url: "/community/GetContentData",
							  dataType: 'json',
							  data: "Domain=VRT"+idParams+"&Counter=views&Output=yes&OutFormat=json",
							  success: function(data) {	
								for (var i=0; i<data.Contents.length; i++) {
									var theid = data.Contents[i].ContentKey;
									var thevotes = data.Contents[i].Fields[0].Votes;
									if(thevotes != ''){
											$j("#spanvisitscounter_"+theid).show();
											$j("#visitscounter_"+theid).text(thevotes);
											}
									else {
											$j("#spanvisitscounter_"+theid).show();
											$j("#visitscounter_"+theid).text("0");
										}								  
								}
							  }	  
							});
						}
					 		
							
		        	}
		        	else{
						$j('#qRicerca').html(querystring.replace(/\+/g, " "));
		        		var _result = $j('<div id="err">Siamo spiacenti ma la ricerca di <span>'+(querystring.replace(/\+/g, " "))+'</span> non ha prodotto alcun risultato</div>').appendTo($j('#results'));
		        		$j('#loadingvideo').css('display','none');		
		        	}
	        	}else{
	        		var _result = $j('<div id="err">Siamo spiacenti ma non è possibile effettuare la ricerca richiesta</div>').appendTo($j('#results'));
	        		$j('#loadingvideo').css('display','none');		
	        	}
	         }
          catch(er){
  		txt+="Error: " + er.message + "\n\n";
                alert(txt);
  	  }
	  }	
        });
		
   }
        
  });
