var identifyTarget;
var identifyCode = '';
var t;

function enableCategories()
{
	$('#categories').addClass('active');
}

function disableCategories()
{
	$('#categories').removeClass('active').find('.icons:visible').fadeOut('fast');
}

function enableCategoriesx()
{	
  document.getElementById('categoriesx').style.display='';
}

function disableCategoriesx()
{

  document.getElementById('categoriesx').style.display='none';
}


function storeCode()
{
	var newcode = '';

	jQuery.each($('#identify .icon'), function(key, value){
		var source = $(value).find('img').attr('src');

		if ( typeof(source) == 'string' ) 
		{
			var re = new RegExp("^.*/([0-9]+).png$");

			newcode += String(source).replace(re,'$1');
		}
	});

	if (window.console && window.console.firebug) 
	{
		console.log('Buzub: '+newcode);
	}

	if ( newcode.length >= 8 ) //need at least two icons selected (8 digits in ID)
	{
		$.ajax({		
			url: '/identify/submit',
			type: 'POST',
			data: ({icons: newcode}),
			dataType: 'json',
			success: function(response){
				var buzub_match = $('#identify .buzub_match');

				if ( buzub_match.length )
				{
					//if (response.success && response.redirect_url) {
					if (response.success) {
						buzub_match.addClass('enabled');

						if ( buzub_match.is('a') ) 
						{
							//we found a match!
							//buzub_match.attr('href', response.redirect_url);
							buzub_match.attr('href', '/identify/redirect/'+newcode);
							update_share_description('user',newcode);
						}
					} else {
						buzub_match.removeClass('enabled');

						if ( buzub_match.is('a') ) 
						{
							//no match
							buzub_match.attr('href', '#');
							update_share_description('claim',newcode);
						}
					}
				}

				var buzub_nomatch = $('#identify .buzub_nomatch');

				if ( buzub_nomatch.length )
				{
					if (response.success) {
						buzub_nomatch.removeClass('enabled');

						if ( buzub_nomatch.is('a') ) 
						{
							buzub_nomatch.attr('href', '#');
							update_share_description('claim',newcode);
						}
					} else {
						buzub_nomatch.addClass('enabled');
						update_share_description('claim',newcode);

						/*if ( buzub_nomatch.is('a') )
						{
							buzub_nomatch.attr('href', '/signup/account');
						}*/
					}
				}
			},
			error: function(XMLHttpRequest, textStatus, errorThrown){
				var buzub_nomatch = $('#identify .buzub_nomatch');

				if ( buzub_nomatch.length )
				{
					buzub_nomatch.addClass('enabled');

					if ( buzub_nomatch.is('a') ) 
					{
						buzub_nomatch.attr('href', '/signup/account');
					}
				}
			}
		});
	}
}

function update_share_description(type,icons){
	switch(type){
		case 'user':
			$("#fb_share_ID").attr('href','http://api.addthis.com/oexchange/0.8/forward/facebook/offer?url=http://buzub.com/user/'+icons);
			break;
		case 'claim':
			$("#fb_share_ID").attr('href','http://api.addthis.com/oexchange/0.8/forward/facebook/offer?url=http://buzub.com/claim/'+icons);
			break;
	}
}

function redirect(url){
	location.href = url.replace('/identify/redirect/','/user/');
	return true;
}

function clearTarget()
{
	identifyTarget.find('a').html('');

	storeCode();
}

function nextTarget()
{
	identifyTarget = identifyTarget.removeClass('selected').next('.icon').addClass('selected');

	if ( !identifyTarget.length ) 
	{
		disableCategories();
	}
}

function selectIcon(code)
{
	identifyTarget.find('a').html('<img src="/images/icons/default/screen/'+code+'.png" />');

	nextTarget();
	storeCode();
}

/* Identify Form */

$(function() {

	// Identify

	identifyTarget = $('#identify .icon:first');
	identifyTarget.addClass('selected');

	$('#identify .icon a').click(function(){
		$(this).closest('#identify').find('.icon').removeClass('selected');

		identifyTarget = $(this).parent().addClass('selected');

		clearTarget();
		enableCategories();

		return false;
	});

	$('#categories').addClass('active');

  // Search
  
  $('input.search').keyup(function(){

    clearTimeout(t);
    t = setTimeout(function(){restoreExplanation(categories)},30000);

    // reset search
    var buzreset = document.getElementById('current_search_icons').value;
  	num_icons_r = buzreset.length/4;
    for(r=0;r<num_icons_r;r++){
  		start_r = r*4;
  		icon_r = buzreset.substr(start_r,4);
      document.getElementById('icons_'+icon_r).style.display='none';
  	}
  	 
    // replace search icon list before displaying search result    
    search_term = document.getElementById("search");
    
    if (search_term.value == ""){
      enableCategoriesx();
      $("#explanation").fadeIn();
    }else{
      $("#explanation").fadeOut();
      disableCategoriesx();
    }
        
    $.ajax({
      type : 'POST',
      url : '/search',
      dataType : 'json',
            data: {
                term : search_term.value
           },
           success : function(data){
                                    
                	var buzubid = data.msg;
                	document.getElementById('current_search_icons').value = buzubid;
                	num_icons = buzubid.length/4;
                	for(i=0;i<num_icons;i++){
                		start = i*4;
                		icon = buzubid.substr(start,4);
                    document.getElementById('icons_'+icon).style.display='';
                	}
                	
                  
                },
            error : function(XMLHttpRequest, textStatus, errorThrown) {

                $("#searchresult").html(' '); 
            
          }
     });
      
  	var categories = $('#searchme').closest('#categories');

		if ( categories.hasClass('active') )
		{
			var icons = $('#searchme').next('.icons');

			categories.find('.icons:visible').not(icons).hide();

			icons.fadeIn();
		}
		
  return false;
  });
  
    
	// Category menu

	$('#categories a.select-category').click(function(){ return false; });
	$('#categories a.select-category').mouseenter(function(){
		clearTimeout(t);
		var categories = $(this).closest('#categories');
		t = setTimeout(function(){restoreExplanation(categories)},30000);
		
		$("#explanation").fadeOut();
		
		var categories = $(this).closest('#categories');

		if ( categories.hasClass('active') )
		{
			var icons = $(this).next('.icons');

			categories.find('.icons:visible').not(icons).hide();

			icons.fadeIn();
		}

		return false;
	});
	
	$('#categories a.select-category').mouseleave(function(){
		clearTimeout(t);
		var categories = $(this).closest('#categories');
		t = setTimeout(function(){restoreExplanation(categories)},2000);	
	});

	$('#categories .icon a').click(function(){
		var metadata = $(this).parent().metadata();

		selectIcon(metadata.code);

		return false;
	});
	
	$('#categories .icon').mouseenter(function(){
		clearTimeout(t);
		var categories = $(this).closest('#categories');
		t = setTimeout(function(){restoreExplanation(categories)},30000);
		$(this).fadeTo('fast',0.5);
	});
	
	$('#categories .icon').mouseleave(function(){
		clearTimeout(t);
		var categories = $(this).closest('#categories');
		t = setTimeout(function(){restoreExplanation(categories)},2000);
		$(this).fadeTo('fast',1);
	});

	//pre-select ID if passed as GET var
	var buzubid = $.getQueryParam( 'buzubid' );
	num_icons = buzubid.length/4;
	for(i=0;i<num_icons;i++){
		start = i*4;
		icon = buzubid.substr(start,4);
		var metadata = $('#icon_'+icon).parent().metadata();
		selectIcon(metadata.code);
	}

});

function go(URL,tgt){
	if($('#identify .buzub_nomatch').hasClass('enabled') || $('#identify .buzub_match').hasClass('enabled')){
		if(tgt==1){window.open(URL);return false;}
		else{location.href = URL;}
	}
}

function restoreExplanation(categories){
	enableCategoriesx();
	categories.find('.icons:visible').hide();
	$("#explanation").fadeIn();
	$("#search").attr('value','');
}
