Array.prototype.unique =
function() {
var a = [];
var l = this.length;
for(var i=0; i<l; i++) {
  for(var j=i+1; j<l; j++) {
	// If this[i] is found later in the array
	if (this[i] === this[j])
	  j = ++i;
  }
  a.push(this[i]);
}
return a;
};

(function(){
var InvDet = function()
{
	var private = {};
	var public = {};
	
	private.siWidth;
	
	private.intvsro=null;
	
	private.useravatar=null;
	
	private.lastuser = null;
	
	private.detecting = false;
	
	private.init = function()
	{
		$('#id').width( 440 );
		$('#d').click(private.detect);
		$('#sir').width(1);
		$('#rob').hover(private.robOver, private.robOut);
		$('#sro').hover(private.sroOver, private.sroOut);
		$('#id').keyup(private.onUserKeyUp);
		$('#uhc').html(public.countHistory());
		$('#id').focus();
		private.cacheImages();
		var m1='ma';
		var m2='il';
		var x = "hello";
		var d = "invisible-detector.net";

		$('#eaddr').html(x+'@'+d).attr('href',m1+m2+'to:'+x+'@'+d);
	}
	
	private.updateButtons = function()
	{
		var sro = $('#sro');
		
		sro.find('a:eq(0)').attr('href','avatar.php?u='+private.lastuser);
		sro.find('a:eq(1)').attr('href','http://www.facebook.com/search.php?q='+private.lastuser+'@yahoo.com');
		sro.find('a:eq(2)').attr('href','ymsgr:sendIM?'+private.lastuser);
	}
	
	private.detect = function()
	{
		if(private.detecting) return;
		
		private.lastuser = $('#id').val();
		
		private.detecting = true;
		
		if(!private.lastuser) return;
		
		private.showPreloading();
		
		private.saveUserToHistory();
		private.updateButtons();
		private.useravatar = new Image();
		private.useravatar.src = "http://img.msg.yahoo.com/avatar.php?yids="+$('#id').val()+"&format=png";
		$("#ua").attr("src", private.useravatar.src);
		$.get('detect.php', {u:$('#id').val()}, private.showRezult);
	}
	
	private.onUserKeyUp = function(e)
	{
		if(e.keyCode == 39 && private.lasthint)
		{
			$('#id').val(private.lasthint);
			private.showHint(false);
			private.detect();
			return;
		}
		
		if(e.keyCode == 13 )
		{
			private.detect();
			private.showHint(false);
			return;
		}
		
		var users = private.getHistoryUsers();
		var ui = $('#id').val();
		var found = false;
		for(var i=0;i < users.length; i++)
		{
			if(users[i].indexOf( ui ) == 0 && users[i].length != ui.length  && ui.length != 0)
			{
				private.showHint(users[i]);
				found = true;
			}
		}
		if(!found)
		{
			private.showHint(false);
		}
	}
	
	public.clearHistory = function()
	{
		if(localStorage)
		{
			localStorage['users'] = "";
			$('#uhc').html(public.countHistory());
		}
	}
	
	public.countHistory = function()
	{
		return private.getHistoryUsers().length;
	}
	
	private.getHistoryUsers = function()
	{
		var users = [];
		
		if(localStorage)
		{
			if(localStorage['users'])
			{
				if(localStorage['users'].indexOf(',') != -1)
				{
					users = localStorage['users'].split(',');
				}
				else
				{
					users = [localStorage['users']];
				}
			}
		}
		
		return users;
	}
	
	private.saveUserToHistory = function()
	{
		if(localStorage)
		{
			var users = private.getHistoryUsers();
			
			users.push(private.lastuser);
			users = users.unique();
			localStorage['users'] = users.join(',');
			
			$('#uhc').html(public.countHistory());
		}
	}
	
	private.inputclone = null;
	
	private.showHint = function(u)
	{
		private.lasthint = u;
		if(!private.inputclone && u != false)
		{
			private.inputclone = $("#id").clone();
			private.inputclone.attr("id","idclone");
			private.inputclone.css("zIndex","499");
			private.inputclone.css('color','#d6d6d6');
			private.inputclone.insertBefore($('#id'));
		}
		
		if(!u && private.inputclone)
		{
			private.inputclone.remove();
			private.inputclone = null;
		}
		
		if(private.inputclone)
		private.inputclone.val(u);
	}
	
	private.robOver = function()
	{
		$('#sro').show();
		$('#rob').addClass('robo');
		clearTimeout(private.intvsro);
	}
	
	private.robOut = function()
	{
		private.intvsro = setTimeout(private.hideSro, 20);
	}
	
	private.sroOver = function()
	{
		clearTimeout(private.intvsro);
	}
	
	private.sroOut = function()
	{
		private.intvsro = setTimeout(private.hideSro, 20);
	}
	
	private.hideSro = function()
	{
		$('#sro').hide();
		$('#rob').removeClass('robo');
	}
	
	private.showPreloading = function()
	{
		$('#id').animate({'left':45,width:400}, 500);
		$("#sir").animate({width:1},500,function(){
			$(this).hide();
			$('#sip').width(1).show().animate({width:32},50);
			$('#sir').animate({width:1},500);
		});
	}
	
	private.showRezult = function(s)
	{
		var color = "#E90000";
		switch(s)
		{
			case "invisible":color="#F99B9B";break;
			case "online":color="#00BF52";break;
		}
		$('#id').animate({'left':5,width:440}, 500);
		$('#sip').animate({width:1},500,function(){
			$(this).hide();
			$('#sir>span').html(s).css('color',color);
			$('#sir').width(1).show().animate({'width':130}, 500);
			$('#id').animate({'left':145,width:300}, 500,function(){
				private.detecting = false;
			});
		});
		return;
		
	}
	
	
	private.cacheImages = function()
	{
		new Image().src = "static/eye.png";
		new Image().src = "static/ajax-loader.gif";
	}
	
	$(document).ready(private.init);
	
	return public;
}

window['invdet'] = new InvDet();

})();
