var Contact = {}

Contact._validate_contact_form = function(current_form)
{
	var validated = true;
	
	/* Email */
	if(!Validation.is_email(current_form.contact_email.value) || !Validation.is_filled(current_form.contact_email.value))
	{
		current_form.contact_email.className = 'contact_field_error'; 
		validated = false;
	}
	else
	{
		current_form.contact_email.className = 'contact_field'; 		
	}

	/* Message */
	if(!Validation.is_filled(current_form.contact_message.value))
	{
		current_form.contact_message.className = 'contact_textarea_error'; 
		validated = false;
	}
	else
	{
		current_form.contact_message.className = 'contact_textarea'; 		
	}
	
	return validated;
}

Contact.timeout_select_city = function()
{
	var city = $('input_autocomplete_city').value;
	
	var req = new AJAX.Request
	(
		Request.get('basepath') + '/' + CURRENT_LANG + '/' + Request.get('module') + '/api_select_city/', 
		{
			method : 'POST',
			json : true,
			parameters: 
			[
				'city=' 		+ escape(city)
			],
			onComplete : function(response)
			{
				Contact.responseJSON = response.responseJSON;
				Contact._select_city();
			}
		}
	);			
}


Contact.select_city = function(current_link)
{
	setTimeout('Contact.timeout_select_city();',200);
}

Contact._select_city = function()
{	
	Contact.results_levels_1 	= Contact.responseJSON.selected_city_title;
	Contact.results_levels_2 	= '';	
	Contact.paging_index = 1;
	Contact._fill_contacts();
}

Contact.submit_contact_form = function(current_form)
{
	if(Contact._validate_contact_form(current_form) == true)
	{
		var req = new AJAX.Request
		(
			Request.get('basepath') + '/' + CURRENT_LANG + '/contact/api_send_contact_email/', 
			{
				method : 'POST',
				json : true,
				parameters: 
				[
					'contact_name=' 		+ escape(current_form.contact_name.value), 
					'contact_email=' 		+ escape(current_form.contact_email.value), 
					'contact_phone=' 		+ escape(current_form.contact_phone.value), 					
					'contact_subject=' 		+ escape(current_form.contact_subject.value), 					
					'contact_message=' 		+ escape(current_form.contact_message.value), 					
					'contact_id=' 			+ escape(current_form.contact_contact_id.value)										
				],
				onComplete : function(response)
				{
					Contact.responseJSON = response.responseJSON;
					Contact._submit_contact_form();
				}
			}
		);	
	}
}

Contact._submit_contact_form = function()
{
	if(Contact.responseJSON)
	{
		$('form_contact').innerHTML = $('div_contact_email_sended').innerHTML;
		$('contact_popup').style.height = '200px';
	}
}

Contact.restore_contact_form = function()
{
	if (typeof(window['contactFormSelect']) != "undefined")
	{
		$('contact_from_list').value 			= 0;
	}
}

Contact.contact_list_form = function(current_link)
{
	var contact_id 		= current_link.getAttribute('contact_id');
	var contact_title 	= current_link.getAttribute('contact_title');
	DOM.hide(Contact.popup_contacts_div);
	Contact.show_contact_form(contact_id,contact_title);	
}


Contact.show_contact_form = function(contact_id,contact_name)
{	
	if ($('contact_popup').style.display == "none")
	{
		Contact.contact_form_innerHTML = $('contact_popup').innerHTML;
		$('title').style.display = "none";
		$('title_clear').style.height = "68px";
		$('clearsite').style.display = "block";
		$('contact_popup').style.display = "block";
		$('clearsite').style.width = document.documentElement.scrollWidth + "px";
		
		if(contact_id == null)
		{
			spacer 			= '';
			contact_name 	= '';
			contact_id 		= 0;
		}
		else
		{
			spacer 			= ' - ';
		}

		$('contact_popup_title_person').innerHTML = spacer + contact_name;
		document.contact_form.contact_contact_id.value = contact_id;

		if (document.documentElement.scrollHeight < document.documentElement.clientHeight)
		{
			$('clearsite').style.height = document.documentElement.clientHeight + "px";
		}
		else
		{
			$('clearsite').style.height = document.documentElement.scrollHeight + "px";
		}

		DOM.center($('contact_popup'));
	}
	else
	{		
		$('contact_popup').innerHTML = Contact.contact_form_innerHTML;
		
		if ($('clearsite'))
		{
			$('clearsite').style.display 	= "none";
			$('clearsite').style.width 		= "0px";
			$('clearsite').style.height 	= "0px";
		}
		else if ($('video_clearsite'))
		{
			$('video_clearsite').style.display 	= "none";
			$('video_clearsite').style.width 	= "0px";
			$('video_clearsite').style.height 	= "0px";
		}
		
		$('contact_popup').style.display 	= "none";
		$('title').style.display 			= "block";
		$('title_clear').style.height 		= "0px";
	}
}

Contact.show_contacts_list = function(current_link)
{
	var imploded_contacts = current_link.getAttribute('imploded_contacts');
	
	var req = new AJAX.Request
	(
		Request.get('basepath') + '/' + CURRENT_LANG + '/' + Request.get('module') + '/api_show_contacts_list/', 
		{
			method : 'POST',
			json : true,
			parameters: 
			[
				'imploded_contacts=' 	+ escape(imploded_contacts) 					
			],
			onComplete : function(response)
			{
				Contact.responseJSON_contacts = response.responseJSON;
				Contact._show_contacts_list();
			}
		}
	);	
}

Contact._show_contacts_list = function()
{
	Contact.popup_contacts_div			= $('showcontacts');
	var contacts_popup 					= Contact.responseJSON_contacts.contacts;
	Contact.popup_contacts_container 	= document.getElementById('showcontacts_block');
	Contact.popup_contacts_model 		= document.getElementById('contact_popup_model');

	Contact.popup_contacts_container.innerHTML = '';	
	
	for(var i = 0; i < contacts_popup.length; i++)
	{
		/*
		 *  Affecting values
		*/
		$('contact_popup_model_title').innerHTML 		= contacts_popup[i].title;
		$('contact_popup_model_phone').innerHTML 		= contacts_popup[i].phone;
		$('contact_popup_model_fax').innerHTML 			= contacts_popup[i].fax;
		$('contact_popup_model_first_name').innerHTML 	= contacts_popup[i].first_name;		
		$('contact_popup_model_last_name').innerHTML 	= contacts_popup[i].last_name;		
		$('contact_popup_model_link_1').setAttribute('contact_id',contacts_popup[i].contact_id);
		$('contact_popup_model_link_2').setAttribute('contact_id',contacts_popup[i].contact_id);		
		$('contact_popup_model_link_1').setAttribute('contact_title',contacts_popup[i].first_name + ' ' + contacts_popup[i].last_name);									
		$('contact_popup_model_link_2').setAttribute('contact_title',contacts_popup[i].first_name + ' ' + contacts_popup[i].last_name);				
		
		current_block = Contact.popup_contacts_model.cloneNode(true);
		current_block.style.display = 'block';
		current_contact = contacts_popup[i];
		
		var divs = current_block.getElementsByTagName('div');
		
		Contact.popup_contacts_container.innerHTML += current_block.innerHTML;
	}
	
	DOM.center(Contact.popup_contacts_div, -200,-100);
	DOM.show(Contact.popup_contacts_div);
	Contact.onOffDivContacts('none',0);	
}

Contact.onOffDivContacts = function(displayDiv, theDivHeight)
{	
	if(displayDiv == 'none')
	{
		$('title').style.display = "none";
		$('title_clear').style.height = "68px";
		$('clearsite').style.display = "block";
		$('clearsite').style.width = document.documentElement.scrollWidth + "px";
		$('clearsite').style.height = document.documentElement.scrollHeight + "px";
	}
	else
	{
		$('clearsite').style.width = "0px";
		$('clearsite').style.height = "0px";
		$('title').style.display = "block";
		$('title_clear').style.height = "0px";
	}		
}

Contact.close_popup = function()
{
	DOM.hide(Contact.popup_contacts_div);
	Contact.onOffDivContacts('block',0);
}

Contact.select_valuation = function(current_link)
{
	var valuation_id 		= current_link.getAttribute('valuation_id');
	var is_parent 			= current_link.getAttribute('is_parent');
	
	if(is_parent == 1)
	{
		Contact.results_levels_1 	= current_link.innerHTML;
		Contact.results_levels_2 	= '';
	}
	else
	{
		Contact.results_levels_2 	= current_link.innerHTML;
	}	

	var req = new AJAX.Request
	(
		Request.get('basepath') + '/' + CURRENT_LANG +  '/' + Request.get('module') + '/api_select_valuation/', 
		{
			method : 'POST',
			json : true,
			parameters : 
			[
			 	'valuation_id=' 	+ escape(valuation_id),
			 	'is_parent=' 		+ escape(is_parent)				
			],
			onComplete : function(response)
			{
				Contact.responseJSON = response.responseJSON;
				Contact._select_valuation();
			}
		}
	);
}

Contact.select_country = function(current_link)
{
	var country_id 				= current_link.getAttribute('country_id');
	Contact.results_levels_1 	= current_link.innerHTML;
	Contact.results_levels_2 	= '';
	
	var req = new AJAX.Request
	(
		Request.get('basepath') + '/' + CURRENT_LANG +  '/' + Request.get('module') + '/api_select_country/', 
		{
			method : 'POST',
			json : true,
			parameters : 
			[
			 	'country_id=' 			+ escape(country_id)
			],
			onComplete : function(response)
			{
				Contact.responseJSON = response.responseJSON
				Contact._select_country();
			}
		}
	);
}
												
Contact._select_country = function()
{	

	if(Contact.responseJSON.selected_country > 0)
	{
		Contact.refresh_country_selected(Contact.responseJSON.selected_country);			
	}

	Contact.paging_index = 1;
	Contact._fill_contacts();
}

Contact._select_valuation = function()
{	
	if(Contact.responseJSON.selected_valuation > 0)
	{ 
		Contact.refresh_valuation_selected(Contact.responseJSON.selected_valuation,Contact.responseJSON.is_parent);					
	}

	Contact.fill_sub_valuation_block();
	Contact.paging_index = 1;
	Contact._fill_contacts();
}


Contact._fill_contacts = function()
{	
	Contact.fill_paging_contacts();
	Contact.fill_contacts_block();
	Contact.display_contacts_block_level();
}

Contact.display_contacts_block_level = function()
{
	if(Contact.results_levels_2 == '')
	{
		var result_level_text = Contact.results_levels_1; 
	}
	else
	{
		var result_level_text = Contact.results_levels_1 + ' - ' + Contact.results_levels_2; 		
	}
	
	$('results_levels').innerHTML = result_level_text;	
}


Contact.fill_paging_contacts = function()
{
	Contact.paging_per_page = PHPVars.get('paging');
	
	try
	{
		if(Contact.responseJSON)
		{
			var nb_contacts 	= Contact.responseJSON.contacts.length;		
		}
		else
		{
			var nb_contacts 	= 0;			
		}
	}
	catch(e)
	{
		var nb_contacts 	= 0;
	}

	
	if(nb_contacts == 0)
	{
		Contact.paging_nb = 0;	
	}
	else
	{
		Contact.paging_nb = Math.ceil(nb_contacts / Contact.paging_per_page);	
	}	

	
	Contact.container_paging 			= document.getElementById('results_paging_top');
	Contact.container_paging_bottom 	= document.getElementById('results_paging_bottom');
	Contact.paging_model 				= document.getElementById('paging_model');
	
	Contact.container_paging.innerHTML = '';
	Contact.container_paging_bottom.innerHTML = '';

	if(Contact.paging_nb == 1)
	{
		return true;	
	}

	for(var i = 1; i <= Contact.paging_nb; i++)
	{
		if(i == Contact.paging_index)
		{
			current_block = document.createElement('div');
			current_block.className = 'contact_paging_selected';			
			current_block.innerHTML = '<span class="contact_paging_selected">' +  i + '</span>';
		}
		else
		{
			Contact.paging_model.firstChild.setAttribute('paging_index',i);		
			Contact.paging_model.firstChild.innerHTML = i; 				
			current_block = Contact.paging_model.cloneNode(true);						
			current_block.style.display = 'inline';			
		}
		
		if(Contact.paging_nb > i)
		{
			separator = ' | ';
		}
		else
		{
			separator = '';	
		}
		
		Contact.container_paging.innerHTML += current_block.innerHTML + separator;
		Contact.container_paging_bottom.innerHTML += current_block.innerHTML + separator;
	}
}

Contact.paging = function(current_link)
{
	Contact.paging_index = current_link.getAttribute('paging_index');
	Contact._fill_contacts();
}

Contact.search_by = function(search_by_div)
{
	var prefix_div = 'searchby_';
	var container_div = 'container_';
	var current_div = prefix_div + search_by_div;	

	if(typeof(document.getElementById(current_div)) != 'undefined')
	{
		document.getElementById(prefix_div + 'location').className = 'searchby_location_off';
		document.getElementById(prefix_div + 'expertise').className = 'searchby_expertise_off';
		document.getElementById(current_div).className = 'searchby_' +  search_by_div + '_on';
		
		document.getElementById(container_div + 'location').style.display = 'none';
		document.getElementById(container_div + 'expertise').style.display = 'none';
		document.getElementById(container_div + search_by_div).style.display = 'block';	
		if (search_by_div == 'expertise')
		{
			document.getElementById('quicksearch').style.display = 'none';
		}
		else
		{
			document.getElementById('quicksearch').style.display = 'block';
		}
	}

	Contact.restore_results();
}

Contact.restore_results = function()
{
	Contact.result 			= document.getElementById('contacts_results');
	Contact.refresh_country_selected(null);
	Contact.refresh_valuation_selected(null,true);
	Contact.refresh_valuation_selected(null,false);
	Contact.results_levels_1 = '';
	Contact.results_levels_2 = '';
	Contact.display_contacts_block_level();
	Contact.responseJSON = Object();
	Contact.fill_contacts_block(true);
	Contact.fill_paging_contacts();
}

Contact.fill_contacts_block = function(is_restore)
{ 
	var contacts 			= Contact.responseJSON.contacts;
	Contact.result 			= document.getElementById('contacts_results');
	Contact.contact_model 	= document.getElementById('contact_model');

	Contact.result.innerHTML = '';	

	var start 			= (Contact.paging_index - 1) * Contact.paging_per_page;
	var end_cursor 		= (Contact.paging_index ) * Contact.paging_per_page;
	var end_contacts 	= (typeof(contacts) != 'undefined') ? contacts.length : 0;

	if(end_cursor < end_contacts)
	{
		var end = end_cursor;
	}
	else
	{
		var end = end_contacts;
	}	
		
	Contact.last_city = null;
	
	for(var i = start; i < end; i++)
	{
		/*
		 *  Affecting values
		*/
		$('label_box_phone').style.display 	   = (contacts[i].phone != '') ? 'block' : 'none';
		$('label_box_fax').style.display 	   = (contacts[i].fax != '') ? 'block' : 'none';		
		
		$('results_box_city').innerHTML 	   = contacts[i].city;
		$('results_box_title').title 		   = 'Office ID ' +  contacts[i].office_id;
		$('results_box_title').innerHTML 	   = contacts[i].office_title;		
		$('results_box_subregion').innerHTML   = contacts[i].subregion;
		$('results_box_country').innerHTML 	   = contacts[i].country;	
		$('results_box_city_cedex').innerHTML  = contacts[i].city_cedex;
		$('results_box_postal_code').innerHTML = contacts[i].postal_code;
		$('results_box_phone').innerHTML 	   = contacts[i].phone;	
		$('results_box_fax').innerHTML 		   = contacts[i].fax;			
		$('results_box_imploded_contacts').setAttribute('imploded_contacts',contacts[i].imploded_contacts);	

		current_block = Contact.contact_model.cloneNode(true);		
		current_block.style.display = 'block';
		current_contact = contacts[i];
		
		var divs = current_block.getElementsByTagName('div');
		
		if(contacts[i].imploded_contacts == "")
		{
			for(var j = 0; j < divs.length; j++)
			{
				if(divs[j].className == 'results_showcontacts')
				{
					divs[j].parentNode.removeChild(divs[j]);
					break;
				}
			}		
		}
		
		if(contacts[i].city == Contact.last_city)
		{
			current_block.removeChild(divs[0]);
		}

		if(typeof(contacts[i + 1]) == 'object' && contacts[i].city != contacts[i + 1].city)
		{
			current_block.className = 'results_box_spacer';	
		}
		else
		{
			current_block.className = 'results_box';	
		}

		Contact.last_city = contacts[i].city; 				
		result_box = document.createElement('div');
		result_box.className = 'result_box';
		result_box.appendChild(current_block);		
		Contact.result.appendChild(result_box);
		Contact.remove_id();	
	}
	
	if(start == end)
	{
		if(is_restore == true)
		{
			Contact.result.innerHTML = '';
		}
		else
		{
			no_results = document.createElement('div'); 
			no_results.className = 'no_results';
			no_results.innerHTML = innerHTML = PHPVars.get('no_result');
			Contact.result.appendChild(no_results);
		}

		$('results_num_results_span').innerHTML = '';
	}
	else
	{
		if(typeof(Contact.responseJSON.nb_results) == 'number')
		{
			var translated = (Contact.responseJSON.nb_results > 1) ? PHPVars.get('nb_results_contacts_1_more') : PHPVars.get('nb_results_contacts_1');
			$('results_num_results_span').innerHTML = ' | ' + Contact.responseJSON.nb_results + ' ' + translated;
		}
		else
		{
			$('results_num_results_span').innerHTML = '';			
		}
	}
}

Contact.remove_id = function()
{	
	var spans_collection = Contact.result.getElementsByTagName('span');
	
	for(var i = 0; i < spans_collection.length; i++)
	{
		spans_collection[i].removeAttribute('id');
	}

	var spans_collection = Contact.result.getElementsByTagName('div');

	for(var i = 0; i < spans_collection.length; i++)
	{
		spans_collection[i].removeAttribute('id');
	}	
}

Contact.fill_sub_valuation_block = function()
{		
	sub_valuations 				= Contact.responseJSON.child_valuations;

	if(typeof(sub_valuations) == 'undefined')
	{
		return false;
	}

	Contact.result_ul 			= document.getElementById('sub_expertise_ul');
	Contact.valuation_model_li 	= document.getElementById('li_valuation_child_model');
	Contact.valuation_model_a 	= document.getElementById('a_valuation_child_model');	
	Contact.valuation_null 		= document.getElementById('li_valuation_child_null');
	
	Contact.result_ul.innerHTML = '';
	
	for(var i = 0; i < sub_valuations.length; i++)
	{
		current_valuation = sub_valuations[i];
		Contact.valuation_model_a.setAttribute('valuation_id',current_valuation.id);		
		Contact.valuation_model_a.innerHTML = current_valuation.valuation_name; 				
		current_block = Contact.valuation_model_li.cloneNode(true);				
		current_block.firstChild.id = 'sub_a_' + current_valuation.id; 				
		current_block.style.display = 'block';	
		Contact.result_ul.innerHTML += current_block.innerHTML;
	}

	if(sub_valuations.length == 0)
	{
		Contact.result_ul.innerHTML = Contact.valuation_null.innerHTML;
	}
}

Contact.refresh_country_selected = function(country_id)
{
	var elements_a = $('countries_ul').getElementsByTagName('a');

	for(var i = 0; i < elements_a.length; i++ )
	{
		current_a = elements_a[i];	
		
		if(country_id != null &&current_a.getAttribute('country_id') == country_id)
		{
			current_a.className = 'select_regions_on';
		}
		else
		{
			current_a.className = 'select_regions_off';			
		}
	}
}

Contact.refresh_valuation_selected = function(valuation_id,is_parent)
{
	if(is_parent == 1)
	{	
		var className = "select_expertise_";
		var current_ul = $('expertise_ul');
	}
	else
	{
		var className = "select_sub_expertise_";
		var current_ul = $('sub_expertise_ul');		
	}
		
	var elements_a = current_ul.getElementsByTagName('a');
	
	for(var i = 0; i < elements_a.length; i++ )
	{
		current_a = elements_a[i];	

		if(valuation_id != null && current_a.getAttribute('valuation_id') == valuation_id)
		{		
			current_a.className = className + 'on';
		}
		else
		{
			current_a.className = className + 'off';			
		}
	}
}



