/**
 * @author samuelme
 */
var main = function(){
	
	var current_gallery = [];
	var slideShowID;
	var slideShowOn = false;
	var sortElseArray = [];
	var sortOnArray = [];
	var total_ele = 0;
	
	return {
		init : function(){
			
			$(document).ready(function(){
				
				twitter.init();
				
				$('#contact,#about').click(function(){
					
					$(window).scrollTo( $('#footer'), 800 );
					
					return false;
				});
				
				$("#body ul li div.big em,#body ul li ul li.small em").fadeOut('fast');
				
				$('#sort li a').unbind('click').bind('click',click_sort);
				
				$("a.clicktag").hover(
			      function () {
				  	if($.browser.msie){
						$(this).children('em').css({display:"block"}).stop().animate({opacity:.70},400,"linear");
					}else{
						$(this).children('em').css({display:"block"}).stop().animate({opacity:1},400,"easeInOutSine");
					}
			      }, 
			      function () {
			        $(this).children('em').stop().animate({opacity:0},400,"easeInOutSine");
			      }
			    );
				
				$("li.small a").hover(
			      function () {
			        $(this).children('em').css({display:"block"}).stop().animate({opacity:.75},400,"easeInOutSine");
			      }, 
			      function () {
			        $(this).children('em').stop().animate({opacity:0},400,"easeInOutSine");
			      }
			    );
				
				$('.playvideo, .playslide').hover(function(){
					$(this).stop().animate({opacity:.7},200,"easeInOutSine");
				},function(){
					$(this).stop().animate({opacity:1},200,"easeInOutSine");
				});
				
				var trigger = $('.small').children('a');
				$('#dialog').jqm({modal: false, trigger: trigger ,onShow: onShowMedia, onHide: onHideMedia,overlay:85 });
				$('#dialog').jqmAddTrigger('.playvideo');
				$('#dialog').jqmAddTrigger('.clicktag');
				$('#dialog').jqmAddTrigger('.playslide');
				$('#dialog').jqmAddTrigger($('.small').children('a'));
				
				$('.playvideo').click(function(){return false});
				
				$('a.playvideo').each(function(){
					if($(this).attr('href')=="video/"){
						$(this).unbind('click').bind('click',function(){
							return false;
						}).remove();
					}
				});
				
				$('a.clicktag').each(function(){
					if($(this).attr('href')=="video/"){
						
						$(this).attr('rel','slideShow');
						
					}
				});
				
				
				
				

			});
		}
	}
	
	function click_sort(){
		
					
			$('#sort li a').unbind('click').bind('click',function(){
				return false;
			})
			
			sortElseArray = [];
			sortOnArray = [];
			var $old_portfolio = $('#portfolio');
			
			var sort_tag = $.trim($(this).text()).toLowerCase();
			
		
			$old_portfolio.children('li.portItem').each(function(){
				var flag_okay = false;
				$(this).children('h4.interactive').children('em').each(function(){
					var port_tag = $.trim($(this).text()).toLowerCase();
			
					if(port_tag == sort_tag){
						flag_okay = true;
						
					}
					
				});
				
				if(flag_okay){
					sortOnArray.push($(this).clone(true).hide());
				}else{
					sortElseArray.push($(this).clone(true).hide());
				}
					
				
			});
			
			var total_array = $.merge(sortOnArray,sortElseArray);
			var $portfolio = $('<ul></ul>').hide().appendTo('#body');
			total_ele = total_array.length+1;
			$(total_array).each(function(i){
				$portfolio.append(total_array[i]);
				u.debug(total_array[i]);
			});
			
			$('#dialog').jqmAddTrigger('.playvideo');
			$('#dialog').jqmAddTrigger('.clicktag');
			$('#dialog').jqmAddTrigger('.playslide');
			$('#dialog').jqmAddTrigger($('.small').children('a'));
			$old_portfolio.remove();
			
			$portfolio.attr('id','portfolio');
			$portfolio.show();
			u.fadeIn(total_array);
			
			var _this = $(this);
			var t = setTimeout(function(){
				
				$('#sort li a').unbind('click').bind('click',click_sort);
				
			},((total_array.length+1)*175));
			
			return false;
	}
	
	function onHideMedia(hash){
		current_gallery = [];
		clearInterval ( slideShowID );
		$('#loader').fadeOut('slow',function(){$(this).hide();});
		

		hash.w.fadeOut('1000',function(){ hash.o.fadeOut('500',function(){
			hash.o.remove();$('.left, .right').show();$("#togglePlayPause").attr('style','');
			if(slideShowOn != false){$('#togglePlayPause').trigger('click');}
			}); });
		
	}
	
	function onShowMedia(hash){
		
		var $trigger = $(hash.t);
		var mediaType = $trigger.attr('rel');
		$('#loader').fadeIn('fast');
		
		
		
		switch(mediaType){
			case "video":
				handelVideo(hash);
			break;
			
			case "image":
				handelImage(hash);
			break;
			
			case "slideShow":
				handleSlideShow(hash);
			break;
		}
		
		
	}
	

	function handelVideo(hash){
		$('#loader').hide();
		var project_title = $(hash.t).siblings('h2').text();
		var vid_src = $(hash.t).attr('href');
		var autoP = $(hash.t).attr('title');
		var $flashHolder = $('<div id="flashHolder"> </div>');
		$('#dialog').fadeOut('fast').fadeIn('fast');
		$('#mediaHolder').empty().append($flashHolder);
		$('.left, .right').hide();
		$("#togglePlayPause").hide();
		$('.toolbar').children('h3').text(project_title);
		$('.toolbar').children('p').html('Video<span> - </span>');
		
		//add swf
		var flashvars = {};
		flashvars.vid = "../../"+vid_src;
		flashvars.autoPlay = autoP;
		var params = {};
		params.allowfullscreen = "true";
		var attributes = {};
		attributes.id = "video";
		swfobject.embedSWF("lib/swf/videoPlayer.swf", "flashHolder", "832", "493", "9.0.0", "lib/swf/expressInstall.swf", flashvars, params, attributes);
	}
	
	function handelImage(hash){
		

		var project_title = $(hash.t).parent().parent().siblings('.big').children('h2').text();
		var img_url = $(hash.t).attr('href');
		var total_images = ($(hash.t).parent().siblings('.small').size()+1);
		var current_image_array = $(hash.t).siblings('h4').text().split(/Image/);
		var current_image = current_image_array[1];
		
		
		//get the first thumbnail
		current_gallery.push({src:img_url,place:1,total:total_images});
		
		//get all the images after the current thumb
		$(hash.t).parent().nextAll('.small').children('a').each(function(){
			var url =$(this).attr('href');
			var temp_place_arr = $(this).siblings('h4').text().split(/Image/);
			var image_place = temp_place_arr[1];
			current_gallery.push({src:url,place:image_place,total:total_images});
		});
		
		//get all the images before the current thumb
		$(hash.t).parent().prevAll('.small').children('a').each(function(){
			var url =$(this).attr('href');
			var temp_place_arr = $(this).siblings('h4').text().split(/Image/);
			var image_place = temp_place_arr[1];
			current_gallery.push({src:url,place:image_place,total:total_images});
		});
		
		
		
		
		$('.toolbar').children('h3').text(project_title);
		$('.toolbar').children('p').html('image '+current_image+' of '+total_images+'<span>-</span>');
		
		var image = new Image();
	 	image.src = img_url;
		var $image = $(image);
		$image.attr('rel',(current_image+"|"+total_images));
		
		$('#mediaHolder').empty();
		$('#mediaHolder').append($image);
		
		
		image.onload = function(e){
			
			$('#loader').hide();
			$('.left, .right').attr('style','');
			
			$('#dialog').hover(function(){
				
					$('.left, .right').stop().animate({opacity:1},200,"easeInOutSine");
					$('#togglePlayPause').stop().animate({opacity:1},200,"easeInOutSine");
				},function(){
					$('.left, .right').stop().animate({opacity:0},200,"easeInOutSine");
					$('#togglePlayPause').stop().animate({opacity:0},200,"easeInOutSine");
				});
			$('.left, .right').stop().animate({opacity:0},0,"easeInOutSine");
			$('#togglePlayPause').stop().animate({opacity:0},0,"easeInOutSine");
			$('#dialog').fadeOut('fast').fadeIn('fast');
			
		}
		$('#togglePlayPause').unbind('click').click(function(){
			
			if(slideShowOn == false){
				slideShowOn = true;
				$('.right').trigger('click', [true]);
				slideShowID = setInterval(function(){
					
					$('.right').trigger('click', [true]);
					
				},3000);
				$(this).css({"background-position":"-312px -500px"});
				
			}else{
				clearInterval ( slideShowID );
				slideShowOn = false;
				$(this).attr('style','');
			}
			
			return false;
		});
		setupGallery(current_gallery,img_url,false);
		
		
		
		
		
	}
	
	
	function handleSlideShow(hash){
		
		
		
		var project_title = $(hash.t).siblings('h2').text();
		var total_images = ($(hash.t).parent().siblings('ul').children('.small').size());
		var current_image = 1;
		
		$('#mediaHolder').empty();
		$('.toolbar').children('h3').text(project_title);
		$('.toolbar').children('p').html('image 1 of '+total_images+'<span>-</span>');
		
		$(hash.t).parent().siblings('ul').children('.small').children('a').each(function(){
			var url =$(this).attr('href');
			var temp_place_arr = $(this).siblings('h4').text().split(/Image/);
			var image_place = temp_place_arr[1];
			current_gallery.push({src:url,place:image_place,total:total_images});
		});
		
		
		var image = new Image();
	 	image.src = current_gallery[0].src;
		var $image = $(image);
		$image.attr('rel',(current_image+"|"+total_images));
		
		$('#mediaHolder').empty();
		$('#mediaHolder').append($image);
		
		
		image.onload = function(e){
			$('#loader').hide();
			
			$('.left, .right').attr('style','');
			
			$('#dialog').hover(function(){
				
					$('.left, .right').stop().animate({opacity:1},200,"easeInOutSine");
					$('#togglePlayPause').stop().animate({opacity:1},200,"easeInOutSine");
				},function(){
					$('.left, .right').stop().animate({opacity:0},200,"easeInOutSine");
					$('#togglePlayPause').stop().animate({opacity:0},200,"easeInOutSine");
				});
				
			$('.left, .right').stop().animate({opacity:0},0,"easeInOutSine");
			$('#togglePlayPause').stop().animate({opacity:0},0,"easeInOutSine");
			$('#dialog').fadeOut('fast').fadeIn('fast');
			
		}
		
		$('#togglePlayPause').unbind('click').click(function(){
			
			if(slideShowOn == false){
				slideShowOn = true;
				$('.right').trigger('click', [true]);
				slideShowID = setInterval(function(){
					
					$('.right').trigger('click', [true]);
					
				},3000);
				$(this).css({"background-position":"-312px -500px"});
				
			}else{
				clearInterval ( slideShowID );
				slideShowOn = false;
				$(this).attr('style','');
			}
			
			return false;
		}).css({"background-position":"-312px -500px"});
		slideShowOn = true;
		setupGallery(current_gallery,current_gallery[0].src,slideShowOn);
		
	}
	
	function setupGallery(image_array,currentImage,autoPlay){
		
		for (var i=0; i<image_array.length; i++) {
			
			if(image_array[i].src != currentImage){
				var image = new Image();
	 			image.src = image_array[i].src;
				var $image = $(image);
				$image.hide().css({zIndex:i}).attr('rel',(image_array[i].place+"|"+image_array[i].total));
				$('#mediaHolder').append($image);
			}
			
			
		};
		
		var currentImg = -1;
		var nextImage = 0;
		var totalImgs = image_array.length;
		
		
		
		$('#mediaHolder img').css({position:""});
		
		$('.right').unbind('click').click(function(event, keepAlive){
			
				u.debug(keepAlive);
				
				nextImage++;
				currentImg++;
				
				if(nextImage >= totalImgs){
					nextImage = 0;
				}
				if(currentImg == totalImgs){
					currentImg = 0;
				}
				
				var img_info = 	$('#mediaHolder img:eq(' + nextImage + ')').attr('rel').split('|');
				$('.toolbar').children('p').html('image '+img_info[0]+' of '+img_info[1]+'<span>-</span>');
				
				$('#mediaHolder img:eq(' + currentImg + ')').fadeOut('slow');
				$('#mediaHolder img:eq(' + nextImage + ')').fadeIn('slow');
				
				u.debug('about display: '+$('#mediaHolder img:eq(' + nextImage + ')').attr('src'));
				u.debug('fading out: '+$('#mediaHolder img:eq(' + currentImg + ')').attr('src'));
				
				
				if(keepAlive != true){
					
					 clearInterval ( slideShowID );
					if(slideShowOn != false){
					 	$('#togglePlayPause').trigger('click');
					 }
					 slideShowOn = false;
				}
				
				return false;
		});
		$('.left').unbind('click').click(function(event, keepAlive){
			
				u.debug("nextImage: "+nextImage);
				u.debug("currentImg: "+currentImg);
				
				if(nextImage < 0){
					nextImage = totalImgs-1;
				}
				if(currentImg < 0){
					currentImg = totalImgs-1;
				}
				
				
				
				var img_info = 	$('#mediaHolder img:eq(' + currentImg + ')').attr('rel').split('|');
				$('.toolbar').children('p').html('image '+img_info[0]+' of '+img_info[1]+'<span>-</span>');
				
				$('#mediaHolder img:eq(' + nextImage + ')').fadeOut('slow');
				$('#mediaHolder img:eq(' + currentImg + ')').fadeIn('slow');
				
				nextImage--;
				currentImg--;
				
				if(keepAlive != true){
					 
					 clearInterval ( slideShowID );
					 
					 if(slideShowOn != false){
					 	$('#togglePlayPause').trigger('click');
					 }
					 slideShowOn = false;
				}
				
				
				/*
u.debug('index display: '+nextImage);
				u.debug('about display: '+$('#mediaHolder img:eq(' + nextImage + ')').attr('src'));
				u.debug('index fading: '+currentImg);
				u.debug('fading out: '+$('#mediaHolder img:eq(' + currentImg + ')').attr('src'));
				
*/
				return false;
		});
		
		
		if(autoPlay === true){
			
			slideShowID = setInterval(function(){
				
				$('.right').trigger('click', [true]);
				
			},3000);
		}
		
		
		
	}
	
}()

main.init();



	
		

	
	
  

