
//Post Case
var PostModule = function(mobile, muse, moreModule, hoverModule) {
	
	var animating = false;
	
	var getEventTarget = function(e) {  
		e = e || window.event;  
		return e.target || e.srcElement;
	}
	
	var showSame = function (value) {
		target = value.parentNode;
		target = target.parentNode;
		target = target.parentNode;
		target = target.parentNode;
	
		var classArray = $(target).attr('class').split(" ");
		
		for ( var classId in classArray ) {
			var className = classArray[classId];	
			if ( className.search("category") > -1 ) 
				moreModule.viewCategory(className, $(target).attr('id'));
					
		}
	}
	
	var postInteractionHandler = function(event) {
	
		var line = getEventTarget(event);

		switch ( line.getAttribute('class') ) { 
			case "button button-more-info":
			case "button button-more-info over":
			case "button button-more-info over down":
				togglePostInfo(line);
				break;	
			case "button button-related":
			case "button button-related over":
			case "button button-related over down":
				showSame(line);
				break;
			case "button button-share":
			case "button button-share over":
			case "button button-share over down":
				toggleShare(line);
				break;
			case "button button-facebook":
			case "button button-facebook over":
			case "button button-facebook over down":
				toggleShare(line);
				break;
			case "button button-twitter":
			case "button button-twitter over":
			case "button button-twitter over down":
				toggleShare(line);
				break;
			case "button button-cl":
			case "button button-cl over":
			case "button button-cl over down":
				openUpShared(line);
				break;
		}
	}
	
	var openUpShared = function(line) {
	
		value = line.parentNode;
		value = value.parentNode;
		value = value.parentNode;
		value = $(value.parentNode);
		
		var html = 	'<div class="lightbox-copy">' +
					'  <div class="lightbox-copy-bar">Copy link</div>' +
					'  <div class="lightbox-copy-bar-close"></div>' +
					'  <input class="lightbox-copy-input" autocomplete="off" spellcheck="false">'
					'</div>';
					
		$('.home').append(html);
		
		$('.lightbox-copy').css('top', $(window).scrollTop() + 140);
		$('.lightbox-copy').css('left', ($(window).width() - $('.lightbox-copy').width()) / 2);
		
		$('.lightbox-copy-input').val('http://test.muse.nl/#item-' + value.attr('id').substr(5) );
		$('.lightbox-copy-input').select();		

		$('.lightbox-overlay').bind('click', function(event) {
			handleCopy(event);
		});
		$('.lightbox-copy-bar-close').bind('click', function(event) {
			handleCopy(event);
		});
	}
	
	var handleCopy = function(event) {
		var target = $(getEventTarget(event));
			if ( target.hasClass('lightbox-overlay') || target.hasClass('lightbox-copy-bar-close') ) {
			$('.lightbox-overlay').fadeOut('fast', function() {
				$('.lightbox-overlay').remove();
				//muse.disableScroll(false);
			});
			$('.lightbox-copy').fadeOut('fast', function() {
				$('.lightbox-copy').remove();
			});
		}
	}
	
	var toggleShare = function (value) {
		target = value.parentNode;
		target = target.parentNode;
		id = target.parentNode.parentNode;
		id_split = $(id).attr("id").split('-');
		
		if($(value).hasClass('button-twitter')){
			window.open('http://www.twitter.com/share?text=CHECK:&url=http://test.muse.nl/#' + $(id).attr("id"));
		}
		else if($(value).hasClass('button-facebook')){
			window.open('http://www.facebook.com/sharer.php?u=test.muse.nl/?item=' + id_split[1]);
		}
		
		$(target).children().each(function(){
        	var div = $(this);
			if ( div.hasClass('share') ) {
				if ( div.hasClass('show') ) {
					div.removeClass('show');
				} else {
					div.addClass('show');
				}
			}
		});
	}
	
	
	var openPost = function ( target, first ) {
			
	var openThePost = function(target, first){
			if ( $(target).hasClass('post-close') ) return;
		
			for ( var i = 0; i < 6; i++ ) {
				if ( $(target).hasClass('post') || $(target).hasClass('customPost') ) {
					break;
				} else {
					target = target.parentNode;
				}
			}
			
			if ( !$(target).hasClass('open') ) {
				$(target).addClass('open')
			} else {
				var headerHeight = $('#header').height();
				if ( first == false ) $.scrollTo({ top:($(target).offset().top - headerHeight), left:0}, 'slow');
				//return;
				if($(target).hasClass('customPost')){
					if ( first == true ) $.scrollTo({ top:($(target).offset().top - headerHeight), left:0}, 'slow');	
				}
			}
	
			//if ( first == false ) $.scrollTo({ top:($(target).offset().top), left:0}, 'slow'); 
			$(target).children().children().each(function(){
				var div2 = $(this);
				if (div2.hasClass('post-icon') ) {
					div2.fadeOut(300);
				}
			});
			$(target).children().children().each(function(){
				var div = $(this);
				if (div.hasClass('post-slider') ) { 
					div.slideDown('slow', function() {
						 
					});
					div.children().delay(400).fadeIn(500);
				}
				
				if (div.hasClass('post-close') ) {
					div.delay(300).fadeIn(500);
				}
				
				if (div.hasClass('case-options') ) {
					
					div.delay(400).fadeIn(600);
				}
				
				var hrElement = div.parent().parent().children('.posthr');
				
				if (hrElement.hasClass('posthr') ) {
					hrElement.css('margin-top', '77px');
				}
				
				if (div.hasClass('post-brand') ) {
					div.fadeOut(300);
				}
				
				if (div.hasClass('post-info') ) {
					div.animate({
						marginTop: '-21px',
						marginLeft: '10px'
					}, 500);
								
					div.children().each(function(){
						var div2 = $(this);
						if (div2.hasClass('post-readmore') ) div2.delay(150).fadeOut(400);
						if (div2.hasClass('textShort') ) div2.delay(150).fadeOut(400);

							var headerHeight = $('#header').height() - 5;
							if ( first == true ) $.scrollTo({ top:($(target).offset().top  - headerHeight), left:0}, 'slow');    			
					});
				}	
			})
	}
			var allOpenPosts = $('.post.open');

			if(allOpenPosts.length == 0){
				openThePost(target, first);
			} else {
				closeAllPost();
				setTimeout(function(){
					openThePost(target, first);
				},750)
			};		
  	}
  	
  	var closePost = function ( target ) {
    	for ( var i = 0; i < 6; i++ ) {
			if ( $(target).hasClass('post') ) {
				break;
			} else {
				target = target.parentNode;
			}
		}
		
		$(target).children().children().each(function(){
			var div2 = $(this);
			if (div2.hasClass('post-icon') ) {
        		div2.delay(300).fadeIn(400);
        	}
			
		});
    	$(target).children().children().each(function(){
        	var div = $(this);        	
        	
        	if (div.hasClass('post-slider') ) { 
        		div.delay(300).slideUp('slow');
        		div.children().fadeOut(400);
        	}
        	
        	if (div.hasClass('post-close') ) {
        		div.fadeOut(300);
        	}
        	
        	if (div.hasClass('case-options') ) {
        		div.delay(100).fadeOut(250);
        	}
			
			var hrElement = div.parent().parent().children('.posthr');
			
			if (hrElement.hasClass('posthr') ) {
				hrElement.css('margin-top', '57px');
			}
			//if (div.hasClass('post-text-hide') ) {
        	//	div.delay(150).fadeOut(400);
        	//}
			
        	//if (div.hasClass('post-icon') ) {
        	//	div.delay(300).fadeIn(300);
        	//}
			if (div.hasClass('post-brand') ) {
        		div.delay(150).fadeIn(300);
        	}
        	
        	if (div.hasClass('post-info') ) {
        		div.delay(300).animate({
    				marginTop: '-21px',
					marginLeft: '170px'
  				}, 400);
  				
  				div.children().each(function(){
        			var div2 = $(this);
        			if (div2.hasClass('post-readmore') ) div2.delay(500).fadeIn(400);
					if (div2.hasClass('textShort') ) div2.delay(500).fadeIn(400);
        			//if (div2.hasClass('post-text-hide') ) div2.delay(150).fadeOut(400);
					//if (div2.hasClass('textLong') ) div2.delay(150).fadeOut(400);
					
        		});
  			}	
  		});
  		
		if ( $(target).hasClass('open') ) $(target).removeClass('open');
  	}
  	
	
	var closeAllPost = function(){
		
		var allOpenPosts = $('.post.open');
			for(var i=0; i < allOpenPosts.length; i++){
				var aop = allOpenPosts[i];
				aop.className = "post";
				
		///////////////////////////////////////////////////////////////////////////		
		
				$(aop).children().children().each(function(){
					var div2 = $(this);
					if (div2.hasClass('post-icon') ) {
						div2.delay(10).fadeIn(400);
					}
					
				});
				$(aop).children().children().each(function(){
					var div = $(this);        	
					
					if (div.hasClass('post-slider') ) { 
						div.delay(10).slideUp('slow');
						div.children().fadeOut(10);
					}
					
					if (div.hasClass('post-close') ) {
						div.fadeOut(10);
					}
					
					if (div.hasClass('case-options') ) {
						div.delay(10).fadeOut(150);
					}
					
					var hrElement = div.parent().parent().children('.posthr');
			
					if (hrElement.hasClass('posthr') ) {
				hrElement.css('marginTop', '57px');
			}
					/*
					if (div.hasClass('post-text-hide') ) {
						div.delay(150).fadeOut(400);
					}
					*/
					//if (div.hasClass('post-icon') ) {
					//	div.delay(300).fadeIn(300);
					//}
					if (div.hasClass('post-brand') ) {
						div.delay(10).fadeIn(100);
					}
					
					if (div.hasClass('post-info') ) {
						div.delay(10).animate({
							marginTop: '-21px',
							marginLeft: '170px'
						}, 100);
						
						div.children().each(function(){
							var div2 = $(this);
							if (div2.hasClass('post-readmore') ) div2.delay(10).fadeIn(100);
							if (div2.hasClass('textShort') ) div2.delay(10).fadeIn(100);
							//if (div2.hasClass('post-text-hide') ) div2.delay(150).fadeOut(400);
							//if (div2.hasClass('textLong') ) div2.delay(150).fadeOut(400);
							
						});
					}	
  				});
				
			}
		
	}
	
	
  	var hoverPost = function ( option, target ) {
  		for ( var i = 0; i < 6; i++ ) {
			if ( $(target).hasClass('post') ) {
				break;
			} else {
				target = target.parentNode;
			}
		}
		
		if ( $(target).hasClass('open') ) return;
		
		$(target).children().each(function(){
        	var div = $(this);
        	if (div.hasClass('postHolder')) { //|| div.hasClass('post-info')
        		switch ( option ) {
        			case 'over':
        				if ( div.css('opacity') > 0.43 && div.css('opacity') < 0.45 ) {        			
        					//div.fadeTo('fast', 1);
							div.animate({  
								opacity: 1,
								"filter":'alpha(opacity=100)',
								"-ms-filter":'progid:DXImageTransform.Microsoft.Alpha(Opacity=100)' 
							}, 100, "swing"); 	
        				}
        				break;
					case 'out':
						    //div.fadeTo('fast', 0.44);			
        					div.animate({  
								opacity: '1',
								"filter":'alpha(opacity=100)',
								"-ms-filter":'progid:DXImageTransform.Microsoft.Alpha(Opacity=100)'   
							}, 100, "swing");
						
						break;
        		}
        	}
		});
  	}
	
	var toReturn = {
		init: function(){		
			$('#wrapper').bind('click', function(event) {
				if ( $(getEventTarget(event)).attr('class').search('post') > -1 || $(getEventTarget(event)).attr('class').search('customPost') > -1) {
					$('.share').each(function(){
        				var div = $(this);
        				if ( div.hasClass('show') ) 
							div.removeClass('show');
        			});
        		}
			});
		},
		goto: function(target) {
			openPost(target, true);
		},
		open: function(target) {
			openPost(target, true);
		},		
		close: function(target) {
			closePost(target);
		},
		over : function(target) {
			hoverPost('over', target);
		},	
		out : function(target) {
			hoverPost('out', target);
		},	
		interact: function(event) {
			postInteractionHandler(event);
		},
		resize: function() {
			$('.lightbox-copy').css('left', ($(window).width() - $('.lightbox-copy').width()) / 2);
		}
	}
	return toReturn;
}
