$(document).ready(function(){
						   
    var urlMedia = 'http://resources.motogp.com/';	
	var urlLocation = 'http://www.motogp.com/';
	var urlServices = 'http://services.motogp.com/';
	var numElemPage = 20; //number of elementes by page for search request
	var initPage = 1;//Ini page to show
	
	function init (){
		//init form values - pager
		$("#search input[@name=num]").val(numElemPage);		
		$("#search input[@name=pagenum]").val(initPage);	
		return;
		//	Con esto hacemos que el search aparezca solo una vez la pagina se haya cargado
		//$("#archiveForm").slideDown("slow");
		//$("#searchParams").slideDown("slow");
		
	}
	
	
	
	
    function var_dump(obj) {
		 var out ='';
		for (var i=0; i< obj.length; i++){
			if ($(obj[i]).val() != undefined)
			out += $(obj[i]).name()+'  '+$(obj[i]).val()+'\n';
		}
		return out;
   }//end function var_dump

	function showError (msg){
		output = '<span class= "error">'+msg+'</span>'
		 $('#searchResults').html(output);
		 $('#searchResults').show();		
		
	}

   
   function showSynonyms (data){
	 // 
	 var is_Syn =false;
	  var output = '';
		if (data.length > 0) {output ='Other search posibilities...'; is_Syn=true}
							 
		$.each(data,function(i,item) {
			output += '<a href="#" name="'+item.q+'">'+item.q+'</a>';			  
		});
		
		$('#searchSynonyms').html(output);
		
		$("#searchSynonyms a").click(function () { 
			 doSearch($(this).html())
			  return false;
		});
		
		if (is_Syn){
			$('#searchSynonyms').slideDown();
		}
		
		
   
   }
	
	function showResults (data){
		 var url;
		 var description;
		 var elemLi;
		 var title;
		 var typeRes;
		 var year;
		 var output='<ul>';
			$.each(data,function(i,item) {
				var currentInd = i;
				//FIXME: esto es un parseo temporal		
				
				//FIXME: Controlar si no hay resultados o si hemos de poner un mensaje de not available
				$.each(item.elements,function(j,itemResult) {																  
										  
					if (item.elements[j].name=='U') url= item.elements[j].value;	
					if (item.elements[j].name=='S' ) description= item.elements[j].value;
					if (description == undefined )description='';
					//FIXME: parche toni año
					if (item.elements[j].name=='FCB') year= item.elements[j].value;
					//FIXME: parche toni -- tipo de contenido
					if (item.elements[j].name=='JWX') typeRes= item.elements[j].value;
					
					if (item.elements[j].name=='T')	title = item.elements[j].value;
			
					/*if (title != undefined && title != ''){					
						title = description;
					}*/



			     });
					if (title == undefined || title == ''){					
						title = description;
					}				
						elemLi= '<li><img alt="" src="'+urlMedia+'files/imagesweb/search/'+typeRes+'_icon.jpg"/> <a href="'+url+'">'+year+' - '+title+'</a><span class="description">'+description+'</span></li>';				
				
				output+=elemLi;
				
				title='';
				typeRes='';
				year='';
				description='';
				url='';
				
				
            });
			
			//FIXME use MSG from server
			if (data.length == 0) output ='<li>No results</li>';
			
			
		 output+='</ul>';
		 $('#searchResults').html(output);
		// if (data.length > 0)	 $('#filterResults').slideDown();
		$('#filterResults').slideDown();
		 $('#searchResults').show();
		 
		 
	}
	
	
	
	function showPager (numResults,currentPage){
		 var i;
		 var output = '';
		 var numPages = Math.ceil(numResults / numElemPage);
		 var margin = 4;
		 var firstPage = Math.max(1,currentPage-margin);
		 var lastPage = Math.min(Number(currentPage)+margin,Number(numPages));
		 
		 
		 output += '<ul>';
	 	 if (firstPage > 1)output += '<li>...</li>';
		 
		 for (i = firstPage; i <= lastPage; i++){
			 if (i == currentPage){
		 	 	output += '<li>'+i+'</li>';
			 }else{
				 output += '<li><a href="">'+i+'</a></li>';
			}
		 }	
		 
		
		  if (lastPage < Number(numPages))output += '<li>...</li>';	
		 output += '</ul>';
		 
		 
		$('#pagerResults').html(output);
		$('#pagerResults').show();
		
		//pager
		$("#pagerResults a").click(function () { 
			changePage ($(this).html());
			return false;
		});		
			
		
		
		

	}
	
	function changePage (newPage){
		
		$("#search input[@name=num]").val(numElemPage);		
		$("#search input[@name=pagenum]").val(newPage);		
		$("#search input[@name=start]").val(((newPage-1)*numElemPage)+1);	
		//alert($("#search input[@name=start]").val());
		doSearch();
		return false;
	}
	

	function doSearch(stringToSearch){
		var errorMessage;
		 if (typeof stringToSearch == "string") {			
			$("#search input[@name=queryString]").val($.URLDecode(stringToSearch));	
		}
		/*hide data layers*/
		$('#searchSynonyms').hide();
		//$('#filterResults').hide();
		
		$('#pagerResults').hide();
		
		var allInputs = $("#search :input[@name!=search]");	

		
		var output = function (data){
			$("#searching").hide();
			//aqui deberíamos parsear el xml y agregar el resultado a un DIV
			$('#searchResults').html('Aqui van los resultados de la busqueda <br /> ');
			
			/*CHECK IF SERVER IS ONLINE -- parche TOni :)*/
			if (jsonPath(data, "$[0].elements[?(@.name=='ET')]"))
				errorMessage = jsonPath(data, "$[0].elements[?(@.name=='ET')]")[0]['value'];
			else
				errorMessage = '';
				
			
		  	if (errorMessage == ""){
				/**SYNONYMS**/
				var arraySynonyms = new Array();
				$.each(jsonPath(data, "$[0].elements[?(@.name=='Synonyms')].elements[?(@.name=='OneSynonym')].attributes"),function(i,item) {					
						arraySynonyms[i] = item;
				});		   
				showSynonyms (arraySynonyms);	
				
				
				/**RESULTS**/
				var arrayResults = new Array();
				$.each(jsonPath(data, "$[0].elements[?(@.name=='RES')].elements.[?(@.name=='R')]"),function(i,item) {
						arrayResults[i] = item;			        
				});		
			   showResults (arrayResults);
			   
			   /**Estimated**/	
				var numRes = jsonPath(data, "$[0].elements[?(@.name=='RES')].elements.[?(@.name=='M')]")[0]['value'];
				var currentPage = $('#search input[@name=pagenum]').val();
				showPager (numRes,currentPage);
			}else{
				showError (errorMessage);
			}
			

		}

		$.getJSON(urlServices+'search/result?&jsoncallback=?',allInputs,output);
		$('#searchResults').hide();
		$('#filterResults').hide();
		$("#searching").show();

		

		return false;
	
			
	  }		
	  
	  function doSearchFromBlock(){
		  //alert('/MotoGP+Search+Engine#'+$("#searchFromBlock :input[@name=queryString]"));
		  window.location.href = urlLocation+$("#searchFromBlock input[@name=lang]").val()+'/MotoGP+Search+Engine#queryString='+$("#searchFromBlock input[@name=queryString]").val();	
		  return false;
	  }
	  
	/**get value from some GET param in URL*/
	function getGet( name ){
		var regexS = "[\\?&#]"+name+"=([^&#]*)";
		var regex = new RegExp ( regexS );
		var tmpURL = window.location.href;
		var results = regex.exec( tmpURL );
		if( results == null )
			return"";
		else
			return results[1];
	}		



	//formulario cuyo id comience por 'statistics'
	$("form[@id=search]").bind('submit', function (){
		$("#search input[@name=num]").val(numElemPage);		
		$("#search input[@name=pagenum]").val(1);		
		$("#search input[@name=start]").val(1);								   
		doSearch();
		return false;
	});
	//desde el bloque
	$("form[@id=searchFromBlock]").bind('submit', doSearchFromBlock);
	//New search filtering
	$("#filterResults a").click(function () { 
		$("#search input[@name=num]").val(numElemPage);		
		$("#search input[@name=pagenum]").val(1);		
		$("#search input[@name=start]").val(1);											  
										  
		var contentFilter =$(this).attr("class");
		$("#search input[@name=content]").val(contentFilter);	
		 doSearch()
		 return false;
	});	
	

	
	if (getGet( 'queryString' )!= ""){
		doSearch(getGet( 'queryString' ));
	}
	
	
	
	
	$(init);

  });
  

	
		
