//==================================================================================================
//FUNCTION SET ORDER FOR ALL CONFERENCE INTERVALS
//==================================================================================================

function set_conferences_array_order()
{
	var min_id_interval_start = 100;
	var first_conference_id = -1;

	var nr_conferences_total = conferences_array.length;		
	
	
	var conferences_array_order = new Array();
	var selected_already_confere_id_array = new Array(); //selected alreay ids from the original conference vector

	


	first_conference_id = get_min_interval_order(nr_conferences_total, selected_already_confere_id_array);
	

	if(first_conference_id >= 0)
	{	
		

		var nr_selected_already_confere_id_array = selected_already_confere_id_array.length;
		
		var t = 0;



		while( (nr_selected_already_confere_id_array <= nr_conferences_total) && (t<nr_conferences_total) && (first_conference_id >= 0) )
		{


			//TO KEEP THE MAXIMUM OF THE END INTERVAL FOR THE OVERLAPPING CONFERENCES
			var conference_array_current_to_search = new Array();			
			conference_array_current_to_search[0] = new Array();
			conference_array_current_to_search[0]["id_interval_start"] = conferences_array[first_conference_id]["id_interval_start"];
			conference_array_current_to_search[0]["id_interval_end"] = conferences_array[first_conference_id]["id_interval_end"];
			conference_array_current_to_search[0]["conference_id"] = first_conference_id;
			//la asta ma raportez mereu
			

			var conference_array_current = new Array();
			conference_array_current[0] = new Array();
			conference_array_current[0]["id_interval_start"] = conferences_array[first_conference_id]["id_interval_start"];
			conference_array_current[0]["id_interval_end"] = conferences_array[first_conference_id]["id_interval_end"];
			conference_array_current[0]["conference_id"] = first_conference_id;




			var nr_conferences_array_order = conferences_array_order.length;
			
			var nr_intervals_overlapping = create_user_conferences_array(conference_array_current, conference_array_current_to_search, nr_conferences_total, selected_already_confere_id_array);	
			
			//alert(nr_intervals_overlapping);
			//return false;

			//$("mouse_pos_x").innerHTML = "nr_intervals_overlapping="+nr_intervals_overlapping;

			if(nr_intervals_overlapping > 0)
			{
				var nr = 0;
				while( (nr_intervals_overlapping !=0) && (nr < 10) )
				{
					nr_intervals_overlapping = create_user_conferences_array(conference_array_current, conference_array_current_to_search, nr_conferences_total, selected_already_confere_id_array);

					
					nr ++;
				}


				conferences_array_order[nr_conferences_array_order] = new Array();	
				conferences_array_order[nr_conferences_array_order]["id_interval_start"] = conference_array_current[0]["id_interval_start"];
				conferences_array_order[nr_conferences_array_order]["id_interval_end"] = conference_array_current_to_search[conference_array_current_to_search.length-1]["id_interval_end"];

				conferences_array_order[nr_conferences_array_order]["conference_id"] = new Array();

				conferences_array_order[nr_conferences_array_order]["conference_overlapping_conf"] = new Array();
				conferences_array_order[nr_conferences_array_order]["nr_overlapping_intervals"] = new Array();


				//CONPLETING THE OVERLAPPING CONFERENCE IDS-------------------------------------------------------------------------------------------------
				var nr_max_overlapping_sim = 0;

				for(var j=0; j<conference_array_current.length; j++)
				{
					conferences_array_order[nr_conferences_array_order]["conference_id"][j] = conference_array_current[j]["conference_id"];


					var nr_overlapping_current = 0;

					conferences_array_order[nr_conferences_array_order]["conference_overlapping_conf"][conference_array_current[j]["conference_id"]] = new Array();
					//array-ul de id-uri cu care se suprapune ala curent in jos

					for(var k=j+1; k<conference_array_current.length; k++)
					{
						if( (conference_array_current[k]["id_interval_start"] >= conference_array_current[j]["id_interval_start"]) &&  (conference_array_current[k]["id_interval_start"] < conference_array_current[j]["id_interval_end"]) )
						{
							conferences_array_order[nr_conferences_array_order]["conference_overlapping_conf"][conference_array_current[j]["conference_id"]][nr_overlapping_current] = conference_array_current[k]["conference_id"];

							nr_overlapping_current = nr_overlapping_current+1;			

						}
					}

					conferences_array_order[nr_conferences_array_order]["nr_overlapping_intervals"][conference_array_current[j]["conference_id"]] = nr_overlapping_current;

					if(nr_overlapping_current >= nr_max_overlapping_sim)
					{
						nr_max_overlapping_sim = nr_overlapping_current;
					}


				}

				conferences_array_order[nr_conferences_array_order]["nr_overlapping_intervals_max"] = nr_max_overlapping_sim;
				//----------------------------------------------------------------------------------------------------------------------------------------



			}
			else
			{

				conferences_array_order[nr_conferences_array_order] = new Array();	
				conferences_array_order[nr_conferences_array_order]["id_interval_start"] = conference_array_current[0]["id_interval_start"];
				conferences_array_order[nr_conferences_array_order]["id_interval_end"] = conference_array_current[0]["id_interval_end"];

				conferences_array_order[nr_conferences_array_order]["conference_id"] = new Array();
				conferences_array_order[nr_conferences_array_order]["conference_id"][0] = conference_array_current[0]["conference_id"];

				conferences_array_order[nr_conferences_array_order]["conference_overlapping_conf"] = new Array();
				conferences_array_order[nr_conferences_array_order]["nr_overlapping_intervals"] = new Array();

				conferences_array_order[nr_conferences_array_order]["nr_overlapping_intervals_max"] = 0;

			}


			first_conference_id = get_min_interval_order(nr_conferences_total, selected_already_confere_id_array);
			

			nr_selected_already_confere_id_array = selected_already_confere_id_array.length;
			t++;

			//$('conference_current').innerHTML = conference_array_current_to_search[0]["conference_id"];


		}//while( (nr_selected_already_confere_id_array < nr_conferences_total) && (t<10) )


		//----------------------------------------------------------------------------------------------------

		//$('mouse_pos_x').innerHTML = print_r_conferences_array_order(conferences_array_order);
		

		redo_conference_drawing(conferences_array_order);
		
		

		

	}//if(first_conference_id >= 0)

	

}
//==================================================================================================
//==================================================================================================


//==================================================================================================
//FUNCITON GET OVERLAPPING INTERVALS
//==================================================================================================
function create_user_conferences_array(conference_array_current, conference_array_current_to_search, nr_conferences_total, selected_already_confere_id_array)
{

	

   //SELECT ALL THE INTERVALS WITH id_interval_start >= current_interval_start AND  < curent interval_end AND NOT IN ALREADY SELECTED
	var nr_intervals_selected = 0;
	var max_id_interval_end = 0;
	var max_conference_id_selected = -1;

	for(var i=0; i<nr_conferences_total; i++)
	{

		if( selected_already_confere_id_array[i] == i )
		{
			//alert("arealdy selected");			
		}	
		else
		{
			var nr_conference_array_current_to_search = conference_array_current_to_search.length;
			

	
			if(  (conferences_array[i]["id_interval_start"] - conference_array_current_to_search[nr_conference_array_current_to_search-1]["id_interval_start"] >= 0) &&  (conferences_array[i]["id_interval_start"] - conference_array_current_to_search[nr_conference_array_current_to_search-1]["id_interval_end"] < 0) ) //overlapping condition
			{
				//alert("start seletat="+conferences_array[i]["id_interval_start"]+" mai mic ca="+conference_array_current_to_search[nr_conference_array_current_to_search-1]["id_interval_end"]+" mai mare ca= "+conference_array_current_to_search[nr_conference_array_current_to_search-1]["id_interval_start"]);

				nr_intervals_selected ++;

				selected_already_confere_id_array[i] = i;

				var  nr_conference_array_current = conference_array_current.length;
				conference_array_current[nr_conference_array_current] = new Array();					
				conference_array_current[nr_conference_array_current]["id_interval_start"] = conferences_array[i]["id_interval_start"];
				conference_array_current[nr_conference_array_current]["id_interval_end"] = conferences_array[i]["id_interval_end"];
				conference_array_current[nr_conference_array_current]["conference_id"] = i;
				

				if(conference_array_current[nr_conference_array_current]["id_interval_end"] >= max_id_interval_end)
				{
					max_id_interval_end = conference_array_current[nr_conference_array_current]["id_interval_end"];
					max_conference_id_selected = i;

				}

			}

		}


	}//for(var i=0; i<nr_conferences_total; i++)

	


	if(max_conference_id_selected != -1)
	{
		//UPDATING THE CURRENT TO SEARCH ARRAY
		conference_array_current_to_search[nr_conference_array_current_to_search] = new Array();
		conference_array_current_to_search[nr_conference_array_current_to_search]["id_interval_start"] = conferences_array[max_conference_id_selected]["id_interval_start"];
		conference_array_current_to_search[nr_conference_array_current_to_search]["id_interval_end"] = conferences_array[max_conference_id_selected]["id_interval_end"];
		conference_array_current_to_search[nr_conference_array_current_to_search]["conference_id"] = max_conference_id_selected;

	}
	
	

	return nr_intervals_selected;

	


}
//==================================================================================================
//==================================================================================================



//==================================================================================================
//FUNCTION GET THE CONFERENCE WITH THE SMALLEST INTERVAL START ID
//==================================================================================================
function get_min_interval_order(nr_conferences_total, selected_already_confere_id_array)
{
	var min_id_interval_start = 100;
	var first_conference_id = -1;

	//GET THE MINIM OF THE INTERVAL ID --------------------------------------------------------
	for(var i=0; i<nr_conferences_total; i++)
	{
		if(selected_already_confere_id_array[i] == i)
		{

		}
		else
		{
		
			if(conferences_array[i]["id_interval_start"] <= min_id_interval_start)
			{
				min_id_interval_start = conferences_array[i]["id_interval_start"];
				first_conference_id = i;
			}
		}

	}
	selected_already_confere_id_array[first_conference_id] = first_conference_id; 		
	//----------------------------------------------------------------------------------------

	return first_conference_id;
}
//==================================================================================================
//==================================================================================================



//==================================================================================================
//==================================================================================================
//==================================================================================================
//FUNCTION REDO CONFERENCE DRAWING AFTER EACH ACTION
//==================================================================================================
function redo_conference_drawing(conferences_array_order)
{
	var nr_conference_blocks = conferences_array_order.length;

	//$('mouse_pos_x').innerHTML = nr_conference_blocks;

	for(i=0; i<nr_conference_blocks; i++)
	{
		var nr_elements_in_block = conferences_array_order[i]["conference_id"].length;
		if(nr_elements_in_block == 1)
		{
			var conference_id = conferences_array_order[i]["conference_id"][0];
			set_zIndex_for_conference_div(conference_id);

			conferences_array[conference_id]["element"].style.width = gridObj.dim_grid_width;
			conferences_array[conference_id]["element_content"].style.width = gridObj.dim_grid_width;
			conferences_array[conference_id]["element"].style.left = "2px";
			
			
			
		}
		else
		{			
			var nr_max_overlapping_sim = conferences_array_order[i]["nr_overlapping_intervals_max"] + 1;			

			
			var dim_conference_with = Math.floor(gridObj.dim_grid_width / (nr_elements_in_block+1) );

			//alert(gridObj.dim_grid_width+" - " +dim_conference_with);
			
			//alert(nr_elements_in_block);			
			for(var k=0; k<nr_elements_in_block; k++)
			{
					
				var padding_left = k * dim_conference_with;
				
				var conference_id = conferences_array_order[i]["conference_id"][k];								
				
				//alert("conference_id"+conference_id);
				
				//alert(conferences_array[conference_id]["element"].style.width);
				//alert(conferences_array[conference_id]["element_content"].style.left);
				
				
				conferences_array[conference_id]["element"].style.width = dim_conference_with*2;
				conferences_array[conference_id]["element_content"].style.width = dim_conference_with*2;
				conferences_array[conference_id]["element"].style.left = padding_left;					
					
				
				set_zIndex_for_conference_div(conference_id);	
				
				

			}

			

		}

	}//for(i=0; i<nr_conference_blocks; i++)


}

//==================================================================================================
//==================================================================================================
//==================================================================================================
//==================================================================================================






//==================================================================================================
//FUNCTION PRINT_R FOR CONFERENCE ARRAY
//==================================================================================================
function print_r_conferences_array_order(conferences_array_order)
{
	var nr_conferences_array_order = conferences_array_order.length;

	var my_string = "<ul>";

	for(var i=0; i<nr_conferences_array_order; i++)
	{
		 my_string= my_string + "<li>";
		 my_string= my_string + "<ul>";

		 my_string= my_string + "<li>Interval start=>"+conferences_array_order[i]["id_interval_start"]+"</li>";	
		 my_string= my_string + "<li>Interval end=>"+conferences_array_order[i]["id_interval_end"]+"</li>";	

		  my_string= my_string + "<li>";
		  my_string= my_string + "<ul>";

		 var nr_conferences = conferences_array_order[i]["conference_id"].length;

		 my_string= my_string + "<li>Nr conferinte in interval="+nr_conferences+"</li>"; 	

		 for(var j=0; j<nr_conferences; j++)
		 {
			my_string= my_string +"<li>Interval id "+j+" "+conferences_array_order[i]["conference_id"][j]+" - nr de intervale cu care se suprapune = "+conferences_array_order[i]["nr_overlapping_intervals"][conferences_array_order[i]["conference_id"][j]]+"</li>";
		 }

		 my_string= my_string +"</ul>";
		 my_string= my_string +"</li>";

		  my_string= my_string + "<li>Nr max suprapuneri="+conferences_array_order[i]["nr_overlapping_intervals_max"]+"</li>";


		 my_string= my_string +"</ul>";
		 my_string= my_string +"</li>";
	}

	var my_string= my_string + "</ul>";

	return my_string;

}
//==================================================================================================
//==================================================================================================

function print_r_conference_array_current_to_search(array_to_print)
{

	var nr_array_to_print = array_to_print.length;

	var my_string = "<ul>";

	for(var i=0; i<nr_array_to_print; i++)
	{
		 my_string= my_string + "<li>";
		 my_string= my_string + "<ul>";

		 my_string= my_string + "<li>Interval start=>"+array_to_print[i]["id_interval_start"]+"</li>";	
		 my_string= my_string + "<li>Interval end=>"+array_to_print[i]["id_interval_end"]+"</li>";	
		// my_string= my_string + "<li>Conference id=>"+array_to_print[i]["conference_id"]+"</li>";	

		 my_string= my_string + "</li>";
		 my_string= my_string + "</ul>";
	}

	var my_string= my_string + "</ul>";


}