var selected = -1;

function showCloseButton(id)
{
    if($('#'+id+' .image')[0])
    {
        $('#'+id+' .close').css('display','block');
        $('#'+id+' .close')[0].onclick = function(){
            $('#'+id+' .view')[0].onclick();
        }
    }
}

function hideCloseButton(id)
{
    $('#'+id+' .close').css('display','none');
}

function togglePreview(id, url, width, height)
{
    if(projects[id].type == 'flash')
    {
    	if(swfobject.getObjectById(id+'_preview'))
        {
            hideCloseButton(id);
            hidePreview(id);
        }
        else
        {
            showCloseButton(id)
            showPreview(id, url, width, height);
        }
	}
	else if(projects[id].type == 'html')
    {
    	var previewAvailable = false;
    	
    	if($('#'+id+'_preview')[0])
        {
        	previewAvailable = true;
        }
        else
        {
        	previewAvailable = false;
        }
    	
    	if($('#'+id+'_preview')[0])
        {
            hideCloseButton(id);
            hidePreview(id);
        }
        else
        {
            showCloseButton(id)
            showPreview(id, url, width, height);
        }
	}
	
}

function hidePreview(id)
{
	if(projects[id].type == 'flash')
    {
    	swfobject.removeSWF(id +'_preview');
    }
    else if(projects[id].type == 'html')
    {
    	$('#'+id + '_preview').remove();
    }
    
    with($('#'+id +' .view'))
    {
        css('-moz-box-shadow', '1px 2px 4px white inset');
        css('-webkit-box-shadow', '1px 2px 4px white inset');
        
        css('backgroundImage', 'url(images/bg_pattern.png)');
        css('backgroundColor', '#48577D');
        html('view');
    }
    
    $('#'+id+' .image').css('backgroundImage', 'url(images/'+id+'.jpg)');
    $('#'+id+' .image').css('backgroundColor', 'silver');
    $('#'+id+' .image').css('-moz-box-shadow', '5px 0 20px black inset');
    $('#'+id+' .image').css('-webkit-box-shadow', '5px 0 20px black inset');

    $('#'+id+' .description').css('margin-left', '265px');
    $('#'+id+' .directions').css('display', 'none');
    
    //if(projects[id].width >= $('#'+id).width() / 1.5)
    //{	
    	$('#'+id+' .image').css('min-width','250px');
    	$('#'+id+' .image').css('min-height','150px');
    	$('#'+id+' .image').css('margin','10px');
    //}
}

function showPreview(id, url, width, height)
{
    if(!$('#'+id+'_preview')[0])
    {
        $('#'+id+' .image').append('<div id="'+id+'_preview"><\/div>');
    }
    
    with($('#'+id +' .view'))
    {
        css('-moz-box-shadow', '1px 2px 4px white inset');
        css('-webkit-box-shadow', '1px 2px 4px white inset');
        
        css('backgroundImage', 'url(images/bg_pattern_red.png)');
        css('backgroundColor', '#822');
        html('close');
    }
    
    $('#'+id+' .image').css('backgroundImage', 'none');
    $('#'+id+' .image').css('backgroundImage', 'url(images/ajax-loader.gif)');
    $('#'+id+' .image').css('backgroundPosition', 'center');
    $('#'+id+' .image').css('backgroundColor', 'transparent');
    $('#'+id+' .image').css('-moz-box-shadow', 'none');
    $('#'+id+' .image').css('-webkit-box-shadow', 'none');
    $('#'+id+' .description').css('margin-left', (parseInt(projects[id].width) + 20) + 'px');
    $('#'+id+' .directions').css('display', 'block');
    
    if(projects[id].type == 'flash')
    {
        var flashvars = {};
        var params = 
        {
            wmode: 'opaque'
        };
        var attributes = {};
        swfobject.embedSWF(url, id + '_preview', width, height, '9.0.0','expressInstall.swf', flashvars, params, attributes);
        
        function callbackFn(e)
        {
        	//$('#'+id+' .image').css('backgroundImage', 'none');
        }
    }
    else if(projects[id].type == 'html')
    {
    	$('#'+id+'_preview').html('<iframe id="iframe" src="'+projects[id].url+'" style="border: none; width:100%; height: '+projects[id].height+'px"></iframe>');
    }
    
    if(projects[id].width >= $('#'+id).width() / 2)
    {	
    	$('#'+id+' .description').after($('#'+id+'_preview'));
    	$('#'+id+' .description').css('margin','0');
    	$('#'+id+' .image').css('min-width','0');
    	$('#'+id+' .image').css('min-height','0');
    	$('#'+id+' .image').css('margin','0');
    	$('#'+id+'_preview iframe').css('width','100%');
    	$('#'+id+' .description .directions').css('display','none');
    	
    	$('#'+id+'_preview').css('width','100%');            	
    }
    
}

$.getJSON('search.php', function(data) {
  projects = data.projects;
  start();
});


function start() 
{
    for (i = 0; i < $('.view').length; i++)
    {
        $('.view')[i].onclick = function()
        {
            var thisID = $(this).parent()[0].id;
            
            togglePreview(thisID, projects[thisID].url, projects[thisID].width, projects[thisID].height);
        };
        
        $('.holder h3')[i].onclick = function()
        {
            $('#'+$(this).parent().parent()[0].id + ' .view')[0].onclick();
        };
        
        var currentID = $('.holder')[i].id;
       	if(currentID != 'resume_holder')
       	{
	        if(projects[currentID].type == 'html')
	        {
	        	hidePreview(currentID);
	        }
	    }
    }
    
    $('#search').keyup(function(event) 
    {
    	if (event.keyCode == 38 || event.keyCode == 40 || event.keyCode == 39 || event.keyCode == 37)
		{
		//TODO: Get the list to reload if nothing is selected and the down key is pressed
    	/*
			if(selected != -1)
			{
				return;
			}
		*/
			return;
		}
		
    	
    	if($(this)[0].value != 'Search...')
		{
			$(this).css('color', '#000');
		}
    	
		$.post("search.php", { search: $('#search')[0].value },
		function(data)
		{

			$('.validation #results').css('display','block');
			
			if($.isEmptyObject(data.projects))
			{
				$('.validation #results').html('<div class="zebra0" style="text-align:center">no matching projects</div>');
				return;
			}
			
			$('.validation #results').html('');
			
			var zebra = 0;
			var number = 0;
			var year = 0;
			
			for (var key in data.projects) 
			{	
				if(number <= 5){
					if(year != data.projects[key].date)
					{
						$('.validation #results').append('<div class="miniyear">'+ data.projects[key].date +'</div>');
					}
					year = data.projects[key].date;
					
					$('.validation #results').append('<div id="'+ data.projects[key].pid +'_mini" class="mini zebra'+ zebra +'"><img src="images/'+ data.projects[key].image +'.jpg" /><span>'+ data.projects[key].title +'</span></div>');
					$('#'+ data.projects[key].pid +'_mini').data('title', data.projects[key].title);
					
					$('#'+ data.projects[key].pid +'_mini').click(function()
					{
						$('.validation #results').css('display','none');
						$('#search')[0].value = $(this).data('title');
						selected = -1;
						$('#search_form').submit();
					});
					
					
					(zebra)?zebra = 0:zebra = 1;
					number ++;
				}
			}
			
			$('.validation #results').append('<div id="tags"></div>');
			
			for(var key in data.tags)
			{
				$('.validation #tags').append('<span style="float:left" id="'+ data.tags[key].tag +'_tag"><img src="images/'+ data.tags[key].image +'" /></span>');
				$('#'+ data.tags[key].tag +'_tag').data('title', data.tags[key].tag);
				
				$('#'+ data.tags[key].tag +'_tag').click(function()
				{
					$('.validation #results').css('display','none');
					$('#search')[0].value = $(this).data('title');
					$('#search_form').submit();
				});					
			}
			
			
		}, "json");
	});
    
	$('#search').focus(function(e)
	{
		if($(this)[0].value == 'Search...')
		{
	    	$(this)[0].value = '';
	    	$(this).css('color', '#000');
	    }
	});  
	
	$('#search').blur(function(e)
	{  
		if($(this)[0].value == 'Search...')
		{
	    	$(this).css('color', '#ddd');
	    }
	    else if ($(this)[0].value == '')
	    {
	    	$(this).css('color', '#ddd');
	    	$(this)[0].value = 'Search...';
	    }
	    
	    selected = -1;
	    var list = $('.mini');
	    list.removeClass('result_hover');
	    //$('.validation #results').css('display','none');
	});
	
	
	$(document.documentElement).keyup(function (event) 
	{
		var list = $('.mini');
		
		if (event.keyCode == 38 || event.keyCode == 37) // UP || LEFT
		{
			(selected >= 0)?selected--:selected=list.length-1;
		}
		else if (event.keyCode == 40  || event.keyCode == 39) //DOWN || RIGHT
		{
			(selected < list.length-1)?selected++:selected=0;
		}
		else
		{
			selected = -1;
		}
		
		if(selected == -1)
		{
			list.removeClass('result_hover');
		}
		
		
		$.each(list, function(index, value)
		{
			if(list[selected] != list[index])
			{
				$(this).removeClass('result_hover');
			}
			else
			{
				$(this).addClass('result_hover');
			}
		});
	});
	
	$('#search_form').submit(function() 
	{
		var list = $('.mini');
		
		if(selected == -1)
		{
			//$(this).submit();
		}
		else if(selected != -1)
		{
			$.each(list, function(index, value)
			{
				if(list[selected] == list[index])
				{
					$('.validation #search')[0].value = $(this).data('title');
				}
			});
		}
		else
		{
			return false;
		}
	});
	
	$('#search').css('color', '#ddd');
	$('.validation #results').css('display','none');
};
