$(document).ready(function() {
	$().contact();
	
	$("input#company").change(function() {
		$("ul.preload_companies").remove();
		var word = $(this).val();
		$.post(
			"index.php?content=contactsearch.ajax.php",
			{ method: "json", action: "preload_company", value: word },
			function(data){
				if (data != "") {
					$("input#company").after(data);

					$("a.company_preload").click(function(event) { 
						var id = $(this).attr("data-id");
						$.post(
							"index.php?content=contactsearch.ajax.php",
							{ method: "json", action: "load_contact_in_json", value: id },
							function(data) {
								var contact = eval("(" + data  + ")");
								var properties = ["company", "street", "zip", "city", "contactcountry_id", "phone", "fax", "web", "user_id"];
								for (property in contact) {
									if (in_array(properties, property)) {
										$("#"+property).val(contact[property]);
									}
								}
							}
						);

						return false; 
					});
				}
			}
		);
	});

	$("input.contact_fullname").change(function() {
		$("ul.preload_fullnames").remove();
		var word = $(this).val();
		var element = $(this);
		$.post(
			"index.php?content=contactsearch.ajax.php",
			{ method: "json", action: "preload_fullname", value: word },
			function(data){
				if (data != "") {
					element.after(data);

					$("a.fullname_preload").click(function(event) { 
						var id = $(this).attr("data-id");

						element.val($(this).html());
						$('input[type=hidden][data-id=' + element.attr('data-id') + ']').val(id);

						return false; 
					});
				}
			}
		);
	});

	$("input.contact_email").change(function() {
		$("ul.preload_emails").remove();
		var word = $(this).val();
		var element = $(this);
		$.post(
			"index.php?content=contactsearch.ajax.php",
			{ method: "json", action: "preload_emails", value: word },
			function(data){
				if (data != "") {
					element.after(data);

					$("a.email_preload").click(function(event) { 
						var id = $(this).attr("data-id");

						element.val($(this).text());
						$('input[type=hidden][data-id=' + element.attr('data-id') + ']').val(id);

						return false; 
					});
				}
			}
		);
	});
});

(function($) {
	$.fn.contact = function(settings) {
		settings = jQuery.extend({
			ajax_url:						"index.php?content=contactsearch.ajax.php",
			contact_searched:				"#contact_searched",
			contact_search_result:			"#contact_search_result",
			contact_id_checkbox:			"#contact_id_checkbox",
			contact_id_checkbox_nojquery:	"contact_id_checkbox",
			contact_id:						"#contact_id",
			contact_id_nojquery:			"contact_id",
			contacts:						"#contacts"
		});

		function Contact_Add() {
			var id = $(this).attr("id");
			var name = $(this).html();

			$(settings.contact_searched).val("");
			$(settings.contact_search_result).html("");

			if ($(settings.contact_id_checkbox + id).length != 0 ) {
				return false;
			}

			var checkbox = "<input type=\"checkbox\" id=\"" + settings.contact_id_checkbox_nojquery + id + "\" checked=\"true\" />";
			var span = "<span>&nbsp;" + name + "<br />";
			var hidden_id = "<input type=\"hidden\" name=\"" + settings.contact_id_nojquery + "[]\" id=\"" + settings.contact_id_nojquery + id + "\" value=\"" + id + "\" />"; 

			$(settings.contacts).append(checkbox);
			$(settings.contacts).append(span);
			$(settings.contacts).parents("form").append(hidden_id);

			$(settings.contacts + " input[@type=checkbox]").each(function(){
				$(this).click(Contact_Update);
			});
		}

		function Contact_Update() {
			var id = $(this).attr("id").replace(settings.contact_id_checkbox_nojquery, "");
			var cb_checked = $(settings.contact_id_checkbox + id).attr("checked");
	
			if (cb_checked != true) {
				$(settings.contact_id + id).val("");
			} else {
				$(settings.contact_id + id).val(id);
			}
		}

		$(settings.contact_searched).keyup(function(){
			var word = $(settings.contact_searched).val();
	
			$.post(settings.ajax_url,
				{ method: "json", action: "search", value: word },
				function(data){
					$(settings.contact_search_result).html(data);
					
					$(settings.contact_search_result + " a").each(function(){
						$(this).click(Contact_Add);
					});
				}
			);
		});
	}
})(jQuery);

