var t_search_result, current_page;

var query_expr, query_lang, query_type;

var t_text_elements_by_position = new Array();
var t_image_elements_by_position = new Array();
var t_video_elements_by_position = new Array();

var num_el_in_text=0;
var num_el_in_image=0;
var num_el_in_video=0;

var num_current_ajax_call = 0;

var t_query_enabled = new Array();

var id_request = -1;

var AjaxSearchObject = {

    handleSuccess:function(o){
		refreshCallAjax(-1);
		processData(o.responseText);
		
    },

    handleFailure:function(o){
        // Failure handler
		refreshCallAjax(-1);
    },

    processResult:function(o){
        // This member is called by handleSuccess
		refreshCallAjax(-1);
    },

    startRequest:function(ql, qe, qf, p, qt) {
		refreshCallAjax(1);
        YAHOO.util.Connect.asyncRequest('POST', 'http://www.web-pulse.fr/api.php', callbackSearch, 'q='+escape(qe)+'&ql='+escape(ql)+'&qf='+escape(qf)+'&p='+escape(p)+'&id_request='+id_request+"&qt="+qt);

    }

};

/*
 * Define the callback object for success and failure
 * handlers as well as object scope.
 */
var callbackSearch = {
    success:AjaxSearchObject.handleSuccess,
    failure:AjaxSearchObject.handleFailure,
    scope:AjaxSearchObject
};


var AjaxKeyWordStoreObject = {

    handleSuccess:function(o){
		try{
			eval(o.responseText);			
		}catch(e){
			//alert('Oooops! Une erreur est survenue !');	
			return;
		}			
		
		var list = t_crawler_type[query_type];
				
		YAHOO.util.Dom.get('chiffres_number_crawler').innerHTML = list.length;

		for(var i=0; i<list.length; i++){
			AjaxSearchObject.startRequest( query_lang , query_expr, list[i], 1, query_type );
		}			

    },

    handleFailure:function(o){
    },

    processResult:function(o){
    },

    startRequest:function(qs) {
        YAHOO.util.Connect.asyncRequest('POST', 'api.php', callbackKeyWordSearch , "keywordstore=" + escape(qs) );
    }
};

/*
 * Define the callback object for success and failure
 * handlers as well as object scope.
 */
var callbackKeyWordSearch = {
    success:AjaxKeyWordStoreObject.handleSuccess,
    failure:AjaxKeyWordStoreObject.handleFailure,
    scope:AjaxKeyWordStoreObject
};

function onMouseOverEl(e, obj)
{
    var classe = YAHOO.util.Dom.get(obj.id ).className;  

	YAHOO.util.Dom.get(obj.img_id).src = YAHOO.util.Dom.get(obj.img_id).alt + "-over.gif";
	
    if(classe == 'cellule_resultat_text'){
        YAHOO.util.Dom.get(obj.id ).className = 'cellule_resultat_text_hover';     
    }
    else if(classe == 'cellule_resultat_image'){
        YAHOO.util.Dom.get(obj.id ).className = 'cellule_resultat_image_hover';    
    }
    else if(classe == 'cellule_resultat_video'){
        YAHOO.util.Dom.get(obj.id ).className = 'cellule_resultat_video_hover';  
    }
}

function onMouseOutEl(e, obj)
{
   
    var classe = YAHOO.util.Dom.get(obj.id ).className;  

	YAHOO.util.Dom.get(obj.img_id).src = YAHOO.util.Dom.get(obj.img_id).alt+".gif";

    if(classe == 'cellule_resultat_text_hover'){
       YAHOO.util.Dom.get(obj.id ).className = 'cellule_resultat_text';     
    }
    else if(classe == 'cellule_resultat_image_hover'){
        YAHOO.util.Dom.get(obj.id ).className = 'cellule_resultat_image';    
    }
    else if(classe == 'cellule_resultat_video_hover'){
        YAHOO.util.Dom.get(obj.id ).className = 'cellule_resultat_video';  
    }    
}

function mysearch()
{
	reload_flash( 0 );
	display_text_results();	

	t_search_result = new Array();
    
    query_expr = YAHOO.util.Dom.get('query').value;
    query_lang = YAHOO.util.Dom.get('language').value;
    query_type = YAHOO.util.Dom.get('media').value;

    if(YAHOO.util.Dom.get('query').value.length >0)  
    {
		AjaxKeyWordStoreObject.startRequest(query_expr);
		if(!YAHOO.util.Dom.get('agglo').checked)
		{
			video_container = YAHOO.util.Dom.get('container_video');
			image_container = YAHOO.util.Dom.get('container_image');
			text_container = YAHOO.util.Dom.get('container_text');
			
			while (video_container.firstChild) {
			  video_container.removeChild(video_container.firstChild);
			}
			
			while (image_container.firstChild) {
			  image_container.removeChild(image_container.firstChild);
			}
			
			while (text_container.firstChild) {
			  text_container.removeChild(text_container.firstChild);
			}	

            num_el_in_text = 0;
            num_el_in_image = 0;
            num_el_in_video = 0;    
			t_text_elements_by_position = new Array();
			t_image_elements_by_position = new Array();
			t_video_elements_by_position = new Array();
			

			YAHOO.util.Dom.setStyle( YAHOO.util.Dom.get('ajax_loader') , 'visibility', 'visible');
			
			for(key in t_query_enabled){
				t_query_enabled[key] = false;
			}
			
		}

		t_query_enabled[escape(query_expr)+"_"+query_lang+"_"+query_type] = true;
		for(var i=0; i<t_crawler_type[query_type].length; i++){
			t_number_result_by_crawler[ t_crawler_type[query_type][i] ] = 0;     
		}	
		
		refresh_display();
    }
}

function refreshCallAjax( number )
{
	num_current_ajax_call += number;
	
	if(num_current_ajax_call == 0){	
		YAHOO.util.Dom.setStyle( YAHOO.util.Dom.get('ajax_loader') , 'visibility', 'hidden');
		reload_flash( 100 );
	}
}

function EmergencyStop()
{
	//reload_flash( 100 );
	
	stop_flash();
	YAHOO.util.Dom.setStyle( YAHOO.util.Dom.get('ajax_loader') , 'visibility', 'hidden');
	
	for(key in t_query_enabled){
		t_query_enabled[key] = false;	
	}
}

function processData(data)
{
	var crawler, position, content, new_div_element;
    var empty = true;
    
	try{
	    eval(data);
	}catch(e){
		//alert('Oooops! Une erreur est survenue !');	
		//alert(data);
		return;
	}
	//alert(typeof(result) + ' -> ' + result.crawler);
    if(typeof(result) != "undefined" && result != null)
    {
		if(typeof(result.crawler) != 'undefined')
        {  
			if(typeof(t_query_enabled[result.key]) != 'undefined' && t_query_enabled[result.key])
			{				
				if(typeof(result.text) != 'undefined' && result.text != null)
				{
					var t_text = result.text;
					for(var i=0;i<t_text.length;i++){                   
						add_to_container('text', t_text[i].position, t_text[i].content, result.crawler); 
						empty = false;
					}
				}
				
				if(typeof(result.image) != 'undefined' && result.image != null)
				{
					var t_image = result.image;
					for(var i=0;i<t_image.length;i++){
						add_to_container('image', t_image[i].position, t_image[i].content, result.crawler); 
						empty = false;
					}
				}
				
				if(typeof(result.video) != 'undefined' && result.video != null)
				{
					var t_video = result.video;
					for(var i=0;i<t_video.length;i++){
						add_to_container('video', t_video[i].position, t_video[i].content, result.crawler); 
						empty = false;
					}
				}  
				
				if(!empty)
				{
					if((t_number_result_by_crawler[result.crawler] < max_result_by_crawler) && (result.current_page+1 <= t_max_page_by_query[result.crawler]) ){
						AjaxSearchObject.startRequest( query_lang , query_expr, result.crawler, result.current_page+1 , query_type);  
					}  
					else{
						t_number_result_by_crawler[result.crawler] = max_result_by_crawler;	
						refresh_display();
					}
				}  
				else{
					t_number_result_by_crawler[result.crawler] = max_result_by_crawler;	
					refresh_display();
				}				
			}
		}
    }
}

function add_to_container(type, position, content, crawler)
{
    var div_container, new_div_element, num_element_in_div;
    
    if(t_number_result_by_crawler[crawler] >= max_result_by_crawler){
        return;
    }    
    
	//alert(content);
	
    //Create the container for the fisrt Item
    if( YAHOO.util.Dom.get('container_' + type + '_' + position) == null )
    {
        div_container = YAHOO.util.Dom.get('container_' + type);
        
        new_div_element = document.createElement('div');
        new_div_element.id = 'container_' + type + '_' + position;
       // new_div_element.innerHTML = "Type : "+type+", Position : "+position+"<br />";
        //YAHOO.util.Dom.setStyle(new_div_element, 'border', '2px solid black');
        div_container.appendChild(new_div_element);
		document.getElementById( 'container_' + type + '_' + position ).className = 'page_text';
    } 
    
    switch(type)
    {
        case 'image' :
            if(typeof(t_image_elements_by_position[position]) == "undefined"){
                t_image_elements_by_position[position] = num_el_in_image; 
                num_element_in_div = num_el_in_image; 
            }
            else{
                num_element_in_div = t_image_elements_by_position[position];
            }        
            break;
            
        case 'text' :
            if(typeof(t_text_elements_by_position[position]) == "undefined"){
                t_text_elements_by_position[position] = num_el_in_text; 
                num_element_in_div = num_el_in_text; 
            }
            else{
                num_element_in_div = t_text_elements_by_position[position]; 
            }        
            break;  
            
        case 'video' :
            if(typeof(t_video_elements_by_position[position]) == "undefined"){
                t_video_elements_by_position[position] = num_el_in_video; 
                num_element_in_div = num_el_in_video; 
            }
            else{
                num_element_in_div = t_video_elements_by_position[position];
            }
            break;     
    }
    
	div_container = YAHOO.util.Dom.get('container_'+type+'_' + position); 
    //Add a new element to the container
    
    new_div_element = document.createElement('div');
	var el_id = 'container_'+type+'_' + position + '_' + num_element_in_div;
    new_div_element.id = el_id;
    new_div_element.innerHTML = content;  
    div_container.appendChild(new_div_element);  
	
	var el_new = new YAHOO.util.Element( new_div_element ); 
	var logo_crawler = el_new.getElementsByClassName('logo_crawler');
	logo_crawler[0].id = 'logo_crawler_'+type+'_' + position + '_' + num_element_in_div;	
    

	
    switch(type)
    {
        case 'image' :
            document.getElementById(el_id).className = 'cellule_resultat_image';
            break;
            
        case 'text' :
            document.getElementById(el_id).className = 'cellule_resultat_text';
            break;  
            
        case 'video' :
            document.getElementById(el_id).className = 'cellule_resultat_video';		
            break;     
    }
	
    YAHOO.util.Event.addListener(YAHOO.util.Dom.get(el_id), "mouseover", onMouseOverEl, {id:el_id, img_id:'logo_crawler_'+type+'_' + position + '_' + num_element_in_div}); 
    YAHOO.util.Event.addListener(YAHOO.util.Dom.get(el_id), "mouseout", onMouseOutEl, {id:el_id, img_id:'logo_crawler_'+type+'_' + position + '_' + num_element_in_div}); 

    //Incremente the number of items 
    t_number_result_by_crawler[crawler]++;
	
	update_div_results_dimensions_params(type, position);
    
    switch(type)
    {
        case 'image' :
            t_image_elements_by_position[position]++;  
			num_el_in_image++;        
			YAHOO.util.Dom.get('chiffres_number_image').innerHTML = num_el_in_image;
			YAHOO.util.Dom.get('number_result_image').innerHTML = num_el_in_image;
            break;
            
        case 'text' :
            t_text_elements_by_position[position]++;
            num_el_in_text++;
			YAHOO.util.Dom.get('chiffres_number_text').innerHTML = num_el_in_text;
			YAHOO.util.Dom.get('number_result_text').innerHTML = num_el_in_text;
            break; 
            
        case 'video' :
            t_video_elements_by_position[position]++;
            num_el_in_video++;
			YAHOO.util.Dom.get('chiffres_number_video').innerHTML = num_el_in_video;
			YAHOO.util.Dom.get('number_result_video').innerHTML = num_el_in_video;
            break;                                   
    }
	YAHOO.util.Dom.get('chiffres_number_total').innerHTML = num_el_in_image + num_el_in_video + num_el_in_text; 
	
	refresh_display();
}

function refresh_display()
{
	//Change the percent
	var sum_result = 0;
	var list = t_crawler_type[query_type];
	for(var i=0; i<list.length; i++){
		sum_result += t_number_result_by_crawler[list[i]];     
	}

	var percent = Math.ceil( (sum_result / (max_result_by_crawler * t_crawler_type[query_type].length) )*100 );	
	reload_flash( percent );
	
	YAHOO.util.Dom.get('chiffres_number_video').innerHTML = num_el_in_video;
	YAHOO.util.Dom.get('number_result_video').innerHTML = num_el_in_video;
	YAHOO.util.Dom.get('chiffres_number_text').innerHTML = num_el_in_text;
	YAHOO.util.Dom.get('number_result_text').innerHTML = num_el_in_text;
	YAHOO.util.Dom.get('chiffres_number_image').innerHTML = num_el_in_image;
	YAHOO.util.Dom.get('number_result_image').innerHTML = num_el_in_image;			
	YAHOO.util.Dom.get('chiffres_number_total').innerHTML = num_el_in_text + num_el_in_image + num_el_in_video; 		
}