(function($) {
	
	jQuery.fn.resize = function(maxSize)
	{
		var ratio = $(this).width()/$(this).height();
		if(ratio >= 1)	// szerokoĹ›Ä‡ >= wysokoĹ›ci
		{
			$(this).css('width', maxSize+'px');
			$(this).css('heiht', maxSize/ratio+'px');
		}
		else	// wysokoĹ›c > szerokoĹ›ci
		{
			$(this).css('height', maxSize+'px');
			$(this).css('width', maxSize*ratio+'px');
		}
	};
	
	jQuery.fn.myCorners = function(settings){
		
		settings = jQuery.extend({
			extension: '.gif',
			lastpart: '-ship',
			folder: '/images/corners/',
			lt: false,
			rt: false,
			lb: false,
			rb: false,
			all: false,
			top: false,
			bottom: false,
			left: false,
			right: false,
			zeropos: false
		}, settings);
		$(this).each(function(){
			if($.browser.msie){
				if(parseInt(jQuery.browser.version) <7)
					return;
			}
			if(settings.lt || settings.top || settings.left || settings.all){
				var element = $('<div class="corner corner-LT"></div>');
				var path = settings.folder+settings.ident+'-LT'+settings.lastpart+settings.extension;
				element.css('background-image', 'url("'+path+'")');
				
				if(settings.zeropos){
					element.css('left', '0');
					element.css('top', '0');
				}
				
				$(this).append(element);
				
			}
			
			if(settings.rt || settings.top || settings.right || settings.all){
				var element = $('<div class="corner corner-RT"></div>');
				var path = settings.folder+settings.ident+'-RT'+settings.lastpart+settings.extension;
				element.css('background-image', 'url("'+path+'")');
				
				if(settings.zeropos){
					element.css('right', '0');
					element.css('top', '0');
				}
				
				$(this).append(element);
			}
			
			if(settings.lb || settings.bottom || settings.left || settings.all){
				var element = $('<div class="corner corner-LB"></div>');
				var path = settings.folder+settings.ident+'-LB'+settings.lastpart+settings.extension;
				element.css('background-image', 'url("'+path+'")');
				
				if(settings.zeropos){
					element.css('left', '0');
					element.css('bottom', '0');
				}
				
				$(this).append(element);
			}
			
			if(settings.rb || settings.bottom || settings.right || settings.all){
				var element = $('<div class="corner corner-RB"></div>');
				var path = settings.folder+settings.ident+'-RB'+settings.lastpart+settings.extension;
				element.css('background-image', 'url("'+path+'")');
				
				if(settings.zeropos){
					element.css('right', '0');
					element.css('bottom', '0');
				}
				
				$(this).append(element);
			}
		});
	};
	
	jQuery.fn.validate = function()
	{
		var element = $(this);
		var name = $(element).val();
		$.post('/validation/register', {
			field : $(element).attr('name'),
			val : $(element).val(),
			pass : $("#password").val(),
			type : $('#reg_type').length > 0 ? $('#reg_type').val() : 'user'
		}, function(data) {
			//var nast = element.next();
			$(element).siblings('div').remove();
			var nast = $('<div class="registration-notification"></div>');
			element.after(nast);
			//nast.html(data.icon);
			$(nast).css('font-weight', 'bold');
			$(nast).css('color', '#FFFFFF');
			if (data.answer == false) {
				$(nast).html(data.errors);
				$(nast).css('background-color', 'red');
			}
			else
			{
				$(nast).text("OK");
				$(nast).css('background-color', '#80c330');
			}
		}, "json");
	};

	jQuery.fn.ajaxValidate = function(settings) {
		settings = jQuery.extend( {
			min_length : 3,
			base : '/validation/',
			method : ''
		}, settings);
		var timer = new Array();
		$(this).keyup(function() {
			var addr = settings.base + settings.method;
			var element = $(this);
			var n = $(this).attr('name');
			clearTimeout(timer[n]);
			timer[n] = setTimeout("$(\"input[name='"+n+"']\").validate()", 500);
			//validate(element);
		});
	};
	
	
	
	
	jQuery.fn.singleRankChooser = function(settings) {
		settings = jQuery.extend(
				{
					element_id : "modal_window",
					custom_action : function(){},
					title : 'Rank',
					input_name : 'ship_rank_id'
				}, settings);
		// replace select with textbox + hidden elem
		var rank_input = $('<input type="text" />');
		var new_hidden = $('<input type="hidden" name="'+$(this).attr('name')+'"/>');
		var parent_elem = $(this).parent();
		var elem = $(this);
		
		$(this).after(rank_input).after(new_hidden);
		if($(this).val()){
			new_hidden.val($(this).val());
			if($(this).val()=='0')
			    {
				rank_input.val('Click to choose rank').css('color','#AAA');
			    }
			    else
			    {
				rank_input.val($(this).children("option[value='" + $(this).val() + "']").html());
			    }
		}
		$(this).remove();
		
		var timer = 0;
		
		rank_input.click(function() {
		    $.get('/main/select_rank/view', function(box){
			box = $(box);
			box.find('#select_rank_cancel').click(function(){
				elem.focus();
				box.dialog('close');
			});
			
			var onListUpdate = function(){
			    box.find("a.rank_pos").click(function() {
				parent_elem.children("input[type=text]").val($(this).text().replace(new RegExp("\\([0-9]+\\)"), '')).css('color','#000').focus();
				parent_elem.children("input[name=" + settings.input_name + "]").val($(this).attr('rank_id'));
				if(settings.custom_action)
				{
					settings.custom_action($(this).attr('rank_id'), $(this).text());
					$("body").append($('<input type="hidden" id="submit_lock" value="1" />'));
				}
				parent_elem.children("input[type=hidden]").change();
				$(box).dialog('close');
			    });
			};
		
			$(box).find("#rank_name_part").keyup(function(){
			    var rank_name = $(this).val();
			    clearTimeout(timer);
			    timer = setTimeout(function(){
				$.get('/main/select_rank', {name:rank_name},
				    function(response){
					var list = $(box).find(".rank_list");
					list.empty();
					list.append(response);
					onListUpdate();
				    }   
				);
			    }, 500);
			});
			
			$(box).find('#rank_proposition').hint();
			onListUpdate();
			
			box.dialog({
			    modal: true,
			    autoOpen: true,
			    width: 900,
			    title: 'Rank',
			    dialogClass : 'rank_chooser',
			    close: function(){$(this).dialog('destroy');}
			});
		    });
		});

	};
	

	jQuery.fn.singleDialogDropdown = function(settings) {
		var element_name = $(this).attr('name');
		var new_element = $('<input type="text" value="Click here"/>');
		var hidden_element = $('<input type="hidden" name="'+element_name+'"/>');
		
		settings = jQuery.extend(
				{
					remove_button : false, //ustawia, czy dostÄ™pny ma byÄ‡ przycisk "czyszczenia"
					elements_name : element_name, // nazwa elementu
					back_element : hidden_element, // element zwrotny
					back_pres : new_element, // element "prezentacyjny"
												// wyĹ›wietlajacy nazwe
					back_pres_val : '', // wartosc domyslna elementu
										// prezentacyjnego
					/*buttons : {
						"" : function() {
							var selected = $(this).find(
									"input[name='" + settings.elements_name
											+ "']:checked");
							var id_elem = selected.attr('element_id');
							settings.back_element.val(id_elem);
							settings.back_pres.val($(this).find(
									"label[for='" + selected.attr('id') + "']")
									.html());
							$(this).dialog("close");
						}
					},*/
					style : null,
					actions : function(){},
					hidden_class : null
				}, settings);
		
		
		//settings.back_pres.val(settings.back_pres_val);
		if(settings.style != null)
			$(new_element).css(settings.style);
		if(settings.hidden_class != null)
			$(hidden_element).addClass(settings.hidden_class);
		$(this).after(new_element).after(hidden_element);
		if($(this).val()){
			hidden_element.val($(this).val());
			if($(this).val()=='0')
			    new_element.val('Click to choose ship type').css('color','#AAA');
			else
			    new_element.val($(this).children("option[value='" + $(this).val() + "']").html()).css('color','#000');
		}
		if(settings.remove_button != false){
			var remove_btn = $('<a href="#">Delete</a>');
			remove_btn.click(function(){
				
				settings.back_element.val('');
				settings.back_element.change();
				settings.back_pres.val('-');
				settings.back_pres.change();
			});
			
			settings.back_pres.after(remove_btn);
		}
		
		$(this).remove();
		new_element.click(function() {
			var sc = $(document).scrollTop()
			$.ajaxShow(settings, settings.href);
			settings.actions();
			$(document).scrollTop(sc)   // fix IE7 scrolldown
		});

	};


	jQuery.fn.dialogDropdown = function(settings) {
		return this.each(function(){
			$(this).singleDialogDropdown(settings);
		});
	};

	jQuery.fn.ajaxDialog = function(settings) {

		$(this).click(function() {

			var address = $(this).attr('href');
			$.ajaxShow(settings, address);

			return false;
		});

		return jQuery;

	};

	jQuery.ajaxShow = function(settings, address) {
		// Settings
		settings = jQuery.extend( {
			dialogClass : 'top_dialog',
			position : 'top',
			hide : 'slide',
			modal : true,
			resizable : false,
			draggable : false,
			element_id : "modal_window",
			load : function(){}
		}, settings);
		elem = $('<div id="' + settings.element_id + '"></div>');
		elem.dialog(settings);

		$.ajax( {
			url : address,
			success : function(msg) {

				elem.empty().append($(msg));
				if (settings.callback != null) {
					settings.callback(elem);
				}
				settings.load();
			}

		});

		return jQuery;

	};

	jQuery.fn.ajaxReload = function(settings) {
		settings = jQuery.extend( {
			callback : null
		}, settings);
		$(this).click(function() {

			var address = $(this).attr('href');

			$.post(address, {}, function(data) {
				for (d in data) {
					$('#' + d).html(data[d]);
				}
				if (settings.callback != null) {
					settings.callback();
				}
				myship_basics();
			}, "json");

			return false;
		});

		return jQuery;
	};
})( jQuery );	


(function($){
    $.fn.blink = function(options)
	{
		var defaults = {delay:500};
		var options = $.extend(defaults, options);
		
		return this.each(function()
		{
			var obj = $(this);
			setInterval(function()
			{
				if($(obj).css("visibility") == "visible")
				{
					$(obj).css('visibility','hidden');
				}
				else
				{
					$(obj).css('visibility','visible');
				}
			}, options.delay);
		});
	};
})( jQuery );



(function( $ ){

	/**
	 * Okno do dodawania ogloszen o prace
	 */

	$.fn.addJob = function(options){
		options = jQuery.extend( {
			    callback : function(data){
			    },
			    okCondition : function(){
				var valid = true;
				$(box).find('.required_field').remove();
				if($(box).find('#title').val().length == 0)
				{
					$(box).dialog('option', 'position', [0,0]);
					window.scrollTo(0,0);
                                        $(box).find('#title').css('border','1px solid red');
					valid = false;
				}
				var selector_checked = $(box).find('input[name="nationality[]"]:checked').length;
				if (selector_checked == 0)
				{
					$(box).dialog('option', 'position', [0,0]);
					window.scrollTo(0,0);
                                        $(box).find('.nationality_id > td').children().find('.nats_outer').css('border','1px solid red');
					valid = false;
				}
				if (!radio)
				{
                                    var selector_checked = $(box).find('input[type="radio"]:checked').length;
                                    if(selector_checked==0)
                                    {
                                        $(box).find('.type_of_ship >td ').children().find('.type_outer').css('border','1px solid red');
                                        window.scrollTo(0,0);
                                        valid = false;
                                    }
				}
				return valid;
			    },
                            request_redirect:false
		    }, options);

		var radio = false;
		var box = $(this);
                var wait_for_ship;
                
                
                /*var update_ships = function(){
                    if( (wait_for_ship)&&(our_tab) )
                    {
                        var timestamp = $('#ship_chooser').find('input[name="time"]').val();
                        $.get('/wall/check_new_ships/'+timestamp,function(data){
                            $('#ship_chooser').find('input[name="time"]').remove();
                            $(data).insertBefore('#ship_chooser .add-other-ship');
                            $(box).parents().find('.ship-small-thumb').each(function(){
                                $(this).mouseenter(function(){ship_hover($(this))});
                                $(this).mouseleave(function(){ship_hover_out($(this))});
                                $(this).find('.ship-small-thumb-photo a').click(function(){ship_photo_click($(this))});
                            })
                        })
                    }
                    if(wait_for_ship)
                        setTimeout(function(){update_ships();}, 2000);
                }*/
                
		if($(box).find('#title').val().length != 0)
			$(box).find('#title').next().next().hide();
		if ($(box).find('input[name="nationality[]"]:checked').length != 0 )
			$(box).find('input[name="nationality[]"]:checked').parent().next().hide();

		$(this).find('.send_btn').click(function(){
			if(options.okCondition()){
			    $(box).find("#photo-add").remove();
				var data = $(box).find('form');
                                var reload = $(box).find('input[name="reload"]').val();
				$.post(data.attr('action'), data.serialize(),function(response){
                                    $(box).parents().find('#ship_chooser').dialog('close');
				    $(box).parents().find('#ship_chooser').dialog('dispose');
				    $(box).parents().find('#ship_chooser').remove();
                                    if( (reload=='true')||(options.request_redirect) )
				    {
						$(box).dialog('close');
						$(box).dialog('dispose');
						$(box).remove();
						window.location.replace("/");  //default wall page
				    }
                                    else
                                    {
					options.callback(response);
                                        $(box).dialog('close');
                                        $(box).dialog('dispose');
                                        $(box).remove();
					$('.21popup').clone().confirmBox();
                                    }                             
				});
			}
			return false;
		});


		$(box).dialog({
			modal : true,
			width: '100%',
			minHeight: 150,
			resizable : false,
			dialogClass : 'confirm-box-dialog job-add-dialog'
		});
                
                /**
                 * Hack na błędy z tlem przy tworzeniu oferty
                 */
		
		var h = $(window).height()*0.8;
		$(box).find('.confirm-box-content form').height(h).css('overflow-y','scroll').css('overflow-x','hidden').css('position','relative');

		$(box).find('.confirm-box-x > div > a').click(function(){
                    
                    	var data = $(box).find('form');    
                        var reload = $(box).find('input[name="reload"]').val();
			$(box).parents().find('#ship_chooser').dialog('close');
			$(box).parents().find('#ship_chooser').dialog('dispose');
			$(box).parents().find('#ship_chooser').remove();
		    	$(box).dialog('close');
			$(box).dialog('dispose');
			$(box).remove();
                        if(reload=='true')
                            location.reload();

		});


		$(box).find('input[name="nationality[]"]').live('change',function(){
			var selector_checked = $(box).find('input[name="nationality[]"]:checked').length;
			if (selector_checked == 0)
			{
			    //$(this).parent().parent().parent().parent().find('th > span').show();
                            $(this).parents('.nationality_id').find('th > span').show();
			}
			else
			{
                            $(this).parents('.nationality_id').find('th > span').hide();
                            $(this).parents('.nationality_id > td').children().children().css('border','0px none gray');
			}
		});

		$(box).find('input[name="type_of_ship"]').live('change',function(){
			radio = true;
                        $(this).parent().css('border','0px none gray');
			$(this).parents('.type_of_ship').find('th > span').hide();
		});

		$(box).find('#title').live("keyup change",function(){
		    if($(this).val().length != 0)
                    {
                        $(this).css('border','1px inset #F0F0F0');
			$(this).parents('.title').find('th > span').hide();
                    }
		    else
			$(this).parents('.title').find('th > span').show();
		})

		$(box).find('#preview-offer').click(function(){
		    if(!options.okCondition()) return false;
		    var f = $(box).find('form');
		    var data = $(f).serialize();
		    $.ajax({
			    url: $(box).find('#set-preview-link').val(),
			    data: {data: data},
			    type: 'POST',
			    dataType: 'JSON',
			    success: function(jid){

				   window.open($(box).find('#preview-link').val()+jid, $(box).find('#title').val());
			}
		    });
		});

		$(box).find('#name_of_ship').click(function(){
		    $(box).parents().find('#ship_chooser').dialog('open');
		    //$(box).parent().next().clone().appendTo($(document.body));
		});

		$(box).find('#ship_chooser').dialog({
		    title: $('#ship_chooser').attr('title'),
		    autoOpen: false,
		    modal: true,
		    width: 725,
		    height: 550,
		    resizable: false
		});

		/*var ship_hover = function(param){
		    $(param).css('background-position', '-' + $(param).width() + 'px 0');
		    };
                var ship_hover_out = function(param){
		    $(param).css('background-position', '0 0');
		};*/
                
                var ship_photo_click = function(param){
                    
                    var thumb = $(param).parent();
		    $(box).parents().find('#name_of_ship').val(thumb.find('.ship-small-thumb-name').val());
		    $(box).parents().find('#name_of_ship').next().val(thumb.find('.ship-small-thumb-id').val());

		    $.get($(box).parents().find('#ship-job-thumb-link').val() + '/' + thumb.find('.ship-small-thumb-id').val(), function(data){
                        data = $(data);                     
                        
                    /*data.find('#edit-ship').click( function(){
                        var url = $(this).attr('url');
                        var imo = $(this).attr('imo');
                        var button = this;
                        $('#imo-info').propertyChanger({
			url:url,
			title: 'Edit ship',
			width: 800,
			height: 'auto',
			captcha: true,
                        close : function(data){
                            var name_of_ship = $('#ship-edit').find('input[name="name"]').val();
                            $(button).parents().find('.job_offer_ship').find('.ship-name > a').html(name_of_ship);
                            $(button).parents().find('.job_offer_ship').find('input[name=name_of_ship]').val(name_of_ship);
                        },
			onLoaded : function(data){
				$(data).find('select[name=type]').dialogDropdown({
					title: "Type of ship",
					href: '/main/select_type_of_ship/' + imo,
					width: 950,
					style: {'width':"250px", 'padding':'3px 0px', 'font-family':'Verdana', 'float':'left'},
					hidden_class: "input_text"
				});
			}
                        });
                    });*/

                    var ship_imo = data.find('#add-ship-photo').find('input').val();
                    data.find('#photo-add').photoAdder({
                        title: 'Add photo',
                        show_btn: data.find('.add_photo'),
                        autoOpen : 0,
                        success : function(variable) {
                                $.post('wall/get_new_photo/'+ship_imo, function(d) {
                                    data.find('.ship-strip-thumb').replaceWith(d);
                                    data.find('#add-ship-photo').remove();
                                });
                        }
                    });
                    
                    $('#add-photo-author-me').click(function(){
                        var user_name = $(this).next().val();
                        $(this).prev().val(user_name);
                    });
	
                    $('#add-photo-ship-name').click(function(){
                        $(this).siblings('input[type=text]').val($(this).siblings('input[type=hidden]').val());
                    });
	
                    $('#add-photo-ship-tag').click(function(){
                            var input = $(this).parent().siblings('input[type=text]');
                            input.val($(this).text()+ ' ' + input.val());
                    });      
                    
			$(box).find('#name_of_ship').siblings('.ship-job-thumb').remove();
			$(box).find('#name_of_ship').parent().append(data);
			$(box).find('input[name="ship_id"]').val(thumb.find('.ship-small-thumb-id').val());
			$(box).find('#remove-ship').show();
		    });
		    
		    $(param).parents().find('#ship_chooser').dialog('close');
		    $(param).parents().find('#ship_chooser').dialog('dispose');
                    wait_for_ship = false;
		    //$(param).parents().find('#ship_chooser').remove();

		    /*var zindex = parseInt($(param).parents().find('#ship_chooser').parent().css('z-index'))+1;
		    $(box).parent().css('z-index',zindex);*/
		    
                };
                
                /*$(box).parents().find('.ship-small-thumb').each(function(){
                    $(this).mouseenter(function(){ship_hover($(this))});
                    $(this).mouseleave(function(){ship_hover_out($(this))});
                    $(this).find('.ship-small-thumb-photo a').click(function(){ship_photo_click($(this))});
                });
               
                $(box).parents().find('#ship_chooser .add-other-ship a').click(function(){
                    wait_for_ship = true;
                    our_tab=false;
                    update_ships();
                });

		$(box).parents().find('#our-ship-searchbox').keyup(function(){
			var text = $(this).val();
			if(text.length)
				$(box).parents().find('#ship_chooser .ship-small-thumb').each(function(){
					var name = $(this).find('.ship-small-thumb-name').text();
					if($(this).find('.ship-small-thumb-name').text().match(new RegExp('.*'+text+'.*', 'i')))
						$(this).show();
					else
						$(this).hide();
				});
			else
				$(box).parents().find('#ship_chooser .ship-small-thumb').show();
		});*/
		
		var myDelay = (function(){
		    var timer = 0;
		    return function(callback, ms){
		    clearTimeout (timer);
		    timer = setTimeout(callback, ms);
		    };
		})();
		
		$(box).parents().find('#all-ship-searchbox').keyup(function(){
			$(box).parents().find(".results_left .ships").css('display','none');
			$(box).parents().find(".results_left .waiter").css('display','block');
			
			var text = $(this).val();
			var url = $(this).attr('link');
			if(text.length)
			    myDelay(function(){
				$.post(url, {txt: text},function(data){
				    $(box).parents().find(".results").html(data);
				    $(box).parents().find(".results_left .waiter").css('display','none');
				    $(box).parents().find(".results_left .ships").css('display','block');
				})
			}, 500 );		    

		});
	    
		$(box).find(".ship-row").each().live("click",function(event){
		    $(box).parents().find(".results_right > .ship").toggle();
		    $(box).parents().find(".results_right .waiter-bg").toggle();
		    var url = $(box).parents().find('#all-ship-searchbox').attr('link')+'/'+$(this).attr('imo');
		    $.post(url, function(data){
			$(box).parents().find(".results_right > .ship").html(data);
			$(box).parents().find(".results_right .waiter-bg").toggle();
			$(box).parents().find(".results_right > .ship").toggle();
		    })
		});
		
		$(box).find(".ship-row").each().live({
		    mouseenter: function(){$(this).css('border-right','20px solid #aaa'); $(this).find('.hint').css('display','inline');},
		    mouseleave: function(){$(this).css('border-right','1px solid #ccc'); $(this).find('.hint').css('display','none');}
		   }
		);

		/*
		$(box).find(".ship-row").each().live("focus",function(){
		    $(this).css('border-bottom','5px solid #ccc');
		    console.log($(this).css('border-bottom'));
		})
		$(box).find(".ship-row").each().live("blur",function(){
		    $(this).css('border-bottom','0px solid none');
		    console.log($(this).css('border-bottom'));
		})*/
		
		$(box).find(".add_ship_offer").live({
		    mouseenter: function(){$(this).css('background-position','0px 34px')},
		    mouseleave: function(){$(this).css('background-position','0px -1px')},
		    click: function(){ship_photo_click($(this));}
		    }
		);
		/*
		$(box).find(".add_ship_offer_ships").live('click',function(){
		    var url = $(this).attr('href');
		    var dis = $(this);
		    $.get(url,function(){
			ship_photo_click(dis)
		    })
		    return false;
		})*/

		$(box).parents().find('#remove-ship').click(function(){
			$(this).siblings('input[name=ship_id]').val(0);
			$(this).parents().find('#name_of_ship').val("");
			$(this).siblings('.ship-job-thumb').remove();
			$(this).hide();
		});

	    $(box).find('.chars_limited, textarea').keyup(function(){
		if($(this).siblings('input[name=maxchars]').length == 0) return;
		var maxlength = $(this).siblings('input[name=maxchars]').val();
		if($(this).val().length > maxlength)
			$(this).val($(this).val().substr(0, maxlength));
		var remaining = maxlength - $(this).val().length;
		$(this).next().text(remaining);
	    });
	}



	$.fn.ajaxHinter = function(options) {
		settings = $.extend({
			url : null,
			latency : 500,
			minChars : 0,
			afterResponse : function(){}
		}, options);
		
		var events = new Object();
		var resultContainer;
		var textBox;
		var requestTimeout;
		var hasFocus = 0;
		
		textBox = $(this);
		var resultContainerContainer = $('<div class="ajax-hinter-results-container"></div>');
		textBox.parent().append(resultContainerContainer);
		
		resultContainer = $('<div class="ajax-hinter-results"></div>');
		resultContainerContainer.append(resultContainer);
		
		events.requestHint = function(str) {
			if(str.length < settings.minChars) {
				resultContainer.empty();
				return false;
			}

			var data = {'q' : str};
			$.get(settings.url, data, function(response){
			    response = $(response);
			    events.responseRecieved(response);
			    settings.afterResponse(response);
			});
			return true;
		};
		
		events.textBoxUpdated = function() {
			clearTimeout(requestTimeout);
			requestTimeout = setTimeout(function() {events.requestHint($(textBox).val(), events.responseRecieved);}, settings.latency);
		};
		
		events.responseRecieved = function(response) {
			hasFocus = 1;
			$(resultContainer).empty().append(response).show();
			
			// if browser is msie 7 (or lower) and scrollbar exists 
			if($.browser.msie && parseInt($.browser.version) < 8
					&& $(resultContainer).find('.ajax-hinter-results-inner').height() > $(resultContainer).find('.ajax-hinter-results').height()) {
				var w = $(resultContainer).find('.ajax-hinter-results-inner').width();
				// remove the scrollbar width
				w -= $.scrollbarWidth();
				// if width is odd, make it even
				if(w % 2) {
					w -= 1;
				}
				$(resultContainer).find('.ajax-hinter-results-inner').width(w);
			}
			$(resultContainer).find('.ajax-hinter-result').hover(function(){
				$(this).addClass('ajax-hinter-result-hover');
			}, function(){
				$(this).removeClass('ajax-hinter-result-hover');
			}).click(events.elementChosen);
		};
		
		events.elementChosen = function() {
			textBox.siblings('.ajax-hinter-result').remove();
			var thumb = $(this).clone().unbind('click').click(function(){
				$(this).remove();
				textBox.show().focus();
			});
			resultContainer.hide();
			textBox.hide().after(thumb);
		};
		
		events.textBoxFocus = function() {
			hasFocus++;
			textBox.keyup();
		};
		
		events.textBoxBlur = function() {
			hasFocus--;
			if(hasFocus <= 0) {
				resultContainer.hide();
			}
		};
		
		events.resultsMouseEnter = function() {
			hasFocus++;
		};
		
		events.resultsMouseLeave = function() {
			hasFocus--;
		};
		
		resultContainer.mouseenter(events.resultsMouseEnter);
		resultContainer.mouseleave(events.resultsMouseLeave);
		
		textBox.keyup(events.textBoxUpdated);
		textBox.focus(events.textBoxFocus);
		textBox.blur(events.textBoxBlur);
	};

	$.fn.ajaxHinterUnbinder = function() {


	    var textBox = $(this);
	    var resultContainer = textBox.parent().find('.ajax-hinter-results-container');

	    if(resultContainer.lenght>0)
		resultContainer.remove();

	    textBox.unbind('keyup');
	    textBox.unbind('blur');
	    textBox.unbind('focus');
	};


})( jQuery );

