// jQuery shuffle plugin
(function($){
  $.fn.shuffle = function() {
    return this.each(function(){
      var items = $(this).children();
      return (items.length)
        ? $(this).html($.shuffle(items))
        : this;
    });
  }
 
  $.shuffle = function(arr) {
    for(
      var j, x, i = arr.length; i;
      j = parseInt(Math.random() * i),
      x = arr[--i], arr[i] = arr[j], arr[j] = x
    );
    return arr;
  }
})(jQuery);

//
var MOVIEART = MOVIEART || {};
MOVIEART.YOUTUBE = function(){
	this.url = this.url.replace(".com/",".com/moogaloop.swf?clip_id=");
	
	return '<object width="640" height="320"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="'+this.url+'&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=cccccc&amp;fullscreen=1" /><embed src="'+this.url+'&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=cccccc&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="640" height="320"></embed></object>';
}
MOVIEART.LABELS = MOVIEART.LABELS || {};

MOVIEART.distribute_columns = function(){
	MOVIEART.TOP_MODULES = jQuery("#columns > div > div.module-wrapper");
	MOVIEART.TOP_MODULES.each(function(i) {
		// return;
		i = i+1;
		jQuery(this).css({
			position:"absolute",
			left:(i*(640+((i>0) ? 78 : 0)))+'px',
			top:'0px',
			width:'640px'
		})
	})

}
MOVIEART.get_scroll_offset = function() {
	var elm = "html";
	if(jQuery.browser.safari){
		var elm = "body";
	}
	return jQuery(elm).get(0).scrollLeft;
};


MOVIEART.changeInputType = function(elm,to){
	try {
			var tempVal = elm.value; // NS6 fix.
			var iType = elm.type; // Opera 7 fix.
			if(elm.type != to) {elm.type = to;};
			elm.value = tempVal; // NS6 fix.
			if(window.opera && iType != to) {elm.focus();};
		}catch(e){
		return;
		}
	}
MOVIEART.serialize = function(form) {
	var params = {};
	jQuery(form).find(":input").each(function() {
		var elm = jQuery(this);
		var label = elm.parents("label:eq(0)");
		var val = elm.val();
		if(elm.is(":radio") || elm.is(":checkbox")){
			if(!elm.is(":checked")){
				val = ""
			}
		}
		
		if(MOVIEART.LABELS[this.id]){
			if(elm.val() == MOVIEART.LABELS[this.id]){
				val = ""
			}
		}
		if(params[this.name]){
			
			if(typeof(params[this.name]) == "string"){
				params[this.name] = [params[this.name]];
			}
			params[this.name].push(val);
		}else {
			params[this.name] = val;
		}
	})
	return params;
};
MOVIEART.fix_images = function(stop) {
	console.info(this);
	console.info(jQuery(this).width());
	if(jQuery(this).width()>478){
		jQuery(this).width('100%').css("display","block");
	}
	if(stop){
		return;
	}
	
}
MOVIEART.setupZoom = function(startPoint) {
	var startPoint = startPoint || jQuery("#contents div.zoom");
	startPoint
	.mouseover(function(e) {
		var elm = jQuery(e.target);
		if(elm.is("abbr,img,div.controls,object,embed")){
			clearTimeout(MOVIEART.gallery_timeout);
		}
			jQuery(this).find("div").fadeIn("fast");

		
		
	})
	.mouseout(function(e) {
		var elm = jQuery(this);
		MOVIEART.gallery_timeout = setTimeout(function() {
			elm.find("div").fadeOut("fast");
		}, 100);
		
	})
	.click(function(e) {
		target = jQuery(e.target);
		if(target.is("abbr")){
			var gallery = target.parents("div.gallery:eq(0)");
			var active_link = gallery.find("li.active");
			// var next = active_link.nextAll("li");
			// var previous = active_link.prevAll("li");

			if(target.is(".previous")){
				var link = active_link.prev("li").eq(0).find("a");
				if(!link.length){
					var link = gallery.find("li:last").find("a");
					// var link = active_link.nextAll("li:last").find("a");
				}
					try {
						MOVIEART.EVENTS[link.attr("rel")].call(MOVIEART,link)
 					}
					catch(e){
						console.error(e);
					}
				
			}else {
				var link = active_link.next("li").find("a");
				if(!link.length){
					var link = gallery.find("li:eq(0)").find("a");
				}
					try {
						MOVIEART.EVENTS[link.attr("rel")].call(MOVIEART,link);
					}
					catch(e){
						console.error(e);
					}
				
			}
		}
	})
};
MOVIEART.setupLabels = function(startPoint){
	var readyClass = "labelReady";
	var startPoint = jQuery(startPoint) || jQuery("body");
	startPoint.find("label.to_input:not(."+readyClass+")")
			.each(function(i,elm){
				jQuery(elm).addClass(readyClass);
				var target = jQuery("#"+elm.htmlFor);
				if(target.is(":text") || target.is(":password") || target.is("textarea")){
					MOVIEART.LABELS[elm.htmlFor] = jQuery(elm).find("span:eq(0)").html();
					if(!target.val()){
						target.val(jQuery(elm).find("span:eq(0)").html());
					}
					if(target.is(":password")){
						MOVIEART.changeInputType(target.get(0),'text')

						target.focus(function(e){
							MOVIEART.changeInputType(this,'password')
						})
						
						target.blur(function(e){
								jQuery(this).val(jQuery.trim(jQuery(this).val()));
							if(!jQuery(this).val()){
								MOVIEART.changeInputType(this,'text')
							}
						})
					}
					
					target.focus(function(e){
						if(MOVIEART.LABELS[this.id] == jQuery(this).val()){
							jQuery(this).val("");
						}
					})
					
					target.blur(function(e){
						jQuery(this).val(jQuery.trim(jQuery(this).val()));
						if(!jQuery(this).val()){
							jQuery(this).val(MOVIEART.LABELS[this.id])
						}
					})
					
				 }
			})
}

MOVIEART.DESCRIPTION = function(){
	
	return '<dl><dt>'+this.title+'</dt><dd>'+this.description+'</dd></dt>';
	// '<object width="478" height="389"><param name="movie" value="http://www.youtube.com/v/wdyV7iYgGC8&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/wdyV7iYgGC8&hl=en&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="478" height="389"></embed></object>'
	// http://uk.youtube.com/watch?v=wdyV7iYgGC8
}
MOVIEART.fix_navigation = function(init) {
	return;
	if(jQuery.browser.msie){
				var h = jQuery("#navigation").height();
				// if(init){
				// 	jQuery("#navigation").get(0).style.top = 0+'px';
				// 	jQuery("#navigation").get(0).style.left = 0+'px';
				// }else {
					if(jQuery("#easteregg").length){
						jQuery("#navigation").get(0).style.top = (parseInt(document.body.style.top)*-1-h)+'px';
						jQuery("#navigation").get(0).style.left = (parseInt(document.body.style.left)*-1)+'px';	
					}else {
						jQuery("#navigation").get(0).style.top = (parseInt(document.documentElement.scrollTop));
						jQuery("#navigation").get(0).style.left = (parseInt(document.documentElement.scrollLeft));
					}
					
				// }
	}
};
String.prototype.capitalizeWord = function(){
	return this.charAt(0).toUpperCase() + this.slice(1).toLowerCase();
};
MOVIEART.clearBlur = function() {
	if(jQuery("#columns.faded").length){
		jQuery("#columns > div > div.module-wrapper").filter(".active").removeClass("active");
		jQuery("#columns > div > div.module-wrapper").fadeTo("fast",1);
		jQuery("#columns.faded").removeClass("faded");
	}
};
MOVIEART.makeBlur = function(elm) {
	if(jQuery.browser.msie && jQuery.browser.version.substr(0) == 6){
		return;
	}
	jQuery("#columns").addClass("faded");
	jQuery("#columns > div > div.module-wrapper").filter(".active").removeClass("active");
	elm.css({opacity:1}).addClass("active");
	jQuery("#columns > div > div.module-wrapper").filter(":not(.active)").fadeTo("fast",0.3);
	
};
MOVIEART.scrollTo = function(elm, callback,axis){

	var offset = elm.offset();
	
	
	if(elm.is(".module, .module-wrapper")){
				MOVIEART.makeBlur(elm);
				window.dontClear = true;
	}
	var module = elm;
	var callback = jQuery.isFunction(callback) ? callback : function(){};

	
	if(axis == "y"){
		offset.scrollTop = offset.top;
		// offset.scrollLeft = false;
	}else if(axis == "x"){
		offset.scrollTop = 0;
		offset.scrollLeft = offset.left - 30
	}else if(axis == "xy"){
		offset.scrollTop = offset.top;
		offset.scrollLeft = offset.left - 30
	}else {
		offset.scrollTop = 0;
		offset.scrollLeft = offset.left - 30
	}
	
	var elm = jQuery("html");
	if(jQuery.browser.safari){
		elm = jQuery("body");
	} else if(jQuery.browser.msie){
		elm = jQuery(document.documentElement);
	}
	
	elm.animate(offset,{
		duration:"normal",
		complete:function(){
			callback.call(this, module)
		}
		
		});
};
MOVIEART.scrollToEasterEgg = function(elm, callback,axis){
		var offset = elm.offset();
		var callback = jQuery.isFunction(callback) ? callback : function(){};
		
		var axis = axis ? axis.toLowerCase() : "";
		offset.left = (offset.left-20)*-1;
		offset.top =  (offset.top-50)*-1;
		
		offset.left += 80;
		offset.top += 1;
		
		// console.info(offset);
		// if(jQuery.browser.msie){
			offset.top = parseInt(offset.top)+10;
		// };
		if(!jQuery.browser.safari){
			offset.left = "+="+offset.left;
			offset.top = "+="+(offset.top+jQuery("#navigation").height()-60);
		}
		if(axis == "x"){
			offset.top = '+=0';
		}else if(axis == "y"){
			offset.left = '+=0';
		}
			// offset.step = MOVIEART.fix_navigation;

		// console.info(offset);
		var elm = jQuery("body");
		if(!jQuery("#easteregg").length){
			offset.scrollLeft = offset.left.replace("+=","");
			offset.scrollTop = offset.top.replace("+=","");
			offset.left = offset.top = 0;
			elm = jQuery("html");
			if(jQuery.browser.safari){
				elm = jQuery("body");
			}
			else if(jQuery.browser.msie){
				elm = jQuery(document.documentElement);
			}
		}
		elm.animate(offset,{
			duration:"normal",
			complete:callback
			});	
	
	
}
MOVIEART.toggle_menu = function(target) {
  return;
	var html = jQuery("#navigation div.menus:visible").length == 0 ? MOVIEART.LOCALIZATIONS['close_menu'] : MOVIEART.LOCALIZATIONS['open_menu'];
	jQuery(target).html(html);
	jQuery("#navigation div.menus").slideToggle("fast");
};
MOVIEART.keyScroll = function(e) {
	// 
	if(jQuery(e.target).is(":input")){
		e.stopPropagation();
		return true;
	}

	e.which = !!e.which ? e.which : e.keyCode;
	var arrows = { 37:'left', 38:'up', 39:'right',40:'down'};
	var is_arrow = !!(e.which >=37 && e.which <= 40);
	if(e.which == 32){
		MOVIEART.toggle_menu(jQuery("#navigation > p.close a:eq(0)"));
		return false;
	}
	if(is_arrow){

		var arrow = arrows[e.which];

		var offset = 320;
		if(e.shiftKey){
			offset = offset*2;
		}
		var left = 0;
		var top = 0;
		if(e.which%2!=0){
			if(arrow == 'left'){

				offset = offset*(-1);
			}
			left = offset;
		}else {
			if(arrow == 'up'){

				offset = offset*(-1);
			}
			top = offset;
		}
				// alert('arrow');
		MOVIEART.scrollToPos(top,left);
		return false;
	// e.stopPropagation();
	}
}
MOVIEART.scrollToPos = function(top,left){
			// alert('arrow2');
		var offset = {};
		
		var elm = jQuery("html");		

		if(jQuery.browser.safari){
			elm = jQuery("body");
		}
		if (jQuery.browser.msie) {
			elm = jQuery(document.documentElement);
		};
	

		if(left !== 0) {
			offset.scrollLeft = elm.get(0).scrollLeft + left;
		}		
		if(top != 0){
			offset.scrollTop = elm.get(0).scrollTop + top;
		}
		
		elm.animate(offset,{
			duration:"normal"
			});	
		
	
}
MOVIEART.EVENTS = {
	feed: function(target){
		window.open(target.attr('href'),'feedwin');
	}, 
	video: function(target){
	// Need to start video module
	//#video_box .thumbs .container width
	$("#video_box,#lightbox").fadeIn('fast');
	var container = $('#video_box .thumbs .container').html(''),
	videos = target.closest('div');
	container.html(videos.html());
	container.width(videos.children().length*120);
	container.find('a[href='+target.get(0).href+']').click();
	},
	read_more: function(target){
		target.parents('div.entry-content:eq(0)').find('> div.more').slideDown('normal');
		target.hide('slow');
	},
	image: function(target){
		target.parents("ul:eq(0)").find("li.active").removeClass("active").end().end().parent().addClass("active");
		if(target.parents("div:eq(0)").is(".gallery")){
			target.parents("div:eq(0)").find("div.description").slideUp("fast",0);
			target.parents("div:eq(0)").find("div.zoom").fadeTo("fast",0, function(){
				jQuery(this).find(">:not(div)")
				.remove()
				.end()
				.append("<img src='"+target.get(0).href+"' />").fadeTo("fast",1);
			})
			// MOVIEART.scrollTo(target.parents("div.gallery:eq(0)").find("div.zoom"))
		target.parents("div:eq(0)")
			.find("div.zoom:not(:visible)")
				.slideDown("slow")
			.end()
			.find("div.description")
				.html(MOVIEART.DESCRIPTION.apply({title:target.attr("title"), description:target.find("img").attr("alt")}))
				.slideDown("slow",function() {
						target.parents("div.entry-content:eq(0)").find("div.gallery.hide").prev("h4").andSelf().slideDown("fast").removeClass("hide");
					MOVIEART.scrollTo(target.parents("div.gallery:eq(0)").find("div.zoom"),false,"y");
				})
		}
	},
	open_post: function(target){
		var entry = target.parents("div.hentry:eq(0)");
		entry.find("div.entry-content:eq(0), div.send-to-friend:eq(0)").slideToggle("fast");
		entry.toggleClass("active");
	},
	send_to_friend: function(target){
		MOVIEART.setupLabels(target.parents("div:eq(0)").find("form").slideToggle("fast"));
		return false;
	},
	paginate: function(target){
		MOVIEART.EVENTS.load_content(target);
	},
	scroll_to_module: function(target, callback){
			var module;
			var module_index;
			var is_sub = target.closest('ul').is('.sub-visible');

			if(target.parents("ul:last").is('.directors')){
				
				module = "directors";
				// module_index = jQuery("#"+module).find(">div.module").length-1;
				module_index = 0;
				
			}else {
				
				module = target.parents("ul:last").get(0).className;
				
				if(is_sub){
					module_index = target.parents("li:eq(1)").prevAll("li").length;
					
				}else {
					module_index = target.parents("li:eq(0)").prevAll("li").length;
				}
				if( module == "directors") {
					module_index += 1
				}
				if('module' == 'news'){
					module_index = 0
				}
			}
			if(module == 'news'){
				module = $('#module-posts');
			}else {
				module = jQuery("#"+module).children("div.module,div.module-wrapper").eq(module_index);	
			}
			
			try {
				MOVIEART.scrollTo(module, callback);
			}catch(e){
				console.error(e);
			}
	},
	load_content: function(target, params) {
		var params = params || {};
		var elm = target.get(0);
		var cat = elm.className.replace(/cat-/gim,"");
		var module = target.parents("div.module:eq(0)");
		var is_sub = target.parents("ul.sub:eq(0)").length;
		var load_in_box = target.parents("ul:last").is(".directors");
		console.info(load_in_box);
		var url = elm.href;
		if(target.parents("div#navigation:eq(0)").length){

			params.from = 'navigation';
			params.module = target.parents("ul:last").get(0).className;
			if(params.module.toLowerCase() == "news"){
				console.info(params.module)
				return;
				
			}
			var module_index = target.parents("li:eq(0)").prevAll("li").length%jQuery("#"+params.module).children("div.module, .module-wrapper").length;	
			if (params.module == 'directors') {
				module_index += 1;
			};
			if(load_in_box){
				params.module = 'directors'
				// module_index = jQuery("#"+params.module).find(">div.module").length-1
				module_index = 0;
			}
			if(target.parents("ul.sub-visible").length){
				// module_index = target.parents("li:eq(0)").parent().parent().prevAll("li").length%jQuery("#"+params.module).find(">div.module").length;	
				// params.load_sub = target.parents("li:eq(0)").prevAll("li").length;
				// url = target.parents("ul:eq(0)").parent().find("a:eq(0)").attr("href");
			}
			
			
			
			module = jQuery("#"+params.module).children("div.module, .module-wrapper").eq(module_index);
			// alert('hi');
			if(!load_in_box){
				return;
			}
			// Posso assumir que daqui para frente o target.is('.load_in_box')
			//Agora so preciso declarar module com um valor certo
			
		}		
		
		if(is_sub){
			if(target.is(".active")){
				return;
			}
			var new_module = target.parents("div.module:eq(0)").find("div.module:eq(0)");
			if(new_module.length){
				module = new_module;
			}
			
			target.parents("ul.sub:eq(0)").find("a.active").removeClass("active");
			target.addClass("active");
		}
		var container = module.find("div.container:eq(0)");
		var contents = module.find("div.contents:eq(0)");
		
		
		if(cat){
			params.cat = cat;
		}
		params.action = "load_content";
		params.xhr = '1';
		jQuery.ajax({
			url: url,
			dataType:"html",
			data: params,
			beforeSend: function(){
				module.find(".loader:eq(0)").fadeIn("fast");
				// MOVIEART.content_transition(container, contents);
			},
			success: function(html){
				contents.html(html);
				module.find(".loader:eq(0)").fadeOut("fast");
				
				// MOVIEART.content_transition(container, contents, html);
			}
		})
		
	}
};


	
	MOVIEART.content_transition = function(container, contents, html) {
		container.html(html);
		contents.animate({
			height: container.height()
		},"fast")
		contents.fadeIn("fast");
		container.fadeTo("fast",0.1,function() {
			jQuery(this).css("visibility","hidden");
		});
		container.html(contents.html());
		contents.hide();
		container.css({visibility:"visible",opacity:1});
		
	};
	
	MOVIEART.scroll = function(e) {
		// var wheelData = e.detail ? e.detail * -1 : e.wheelDelta / 40;
		// console.info(wheelData);
	};
MOVIEART.setup_directors = function() {
	return;
	directors = jQuery("#navigation").find("ul.directors");
	directors.clone().insertAfter(directors);
	split = Math.ceil(directors.find("li").length/2)
	directors.find("li:gt("+split+")").remove();
	directors.next("ul.directors")
		.find("li > ul > li:lt("+split+")")
		.remove()
		.end()
		.find("> li > span").css("visibility","hidden")
};

MOVIEART.navigate = function(target, origin) {

	if(jQuery(target).parents("ul:last").is(".languages")){
		return true;
	}
	
	var li = jQuery(target).closest('li');
	var sub_item = li.find("ul:eq(0)");
	if (sub_item.length &&  li.siblings().length ) {
		sub_item.slideToggle("fast").toggleClass("sub-visible");
		return false;
	};
	
	
	if(jQuery(target).is("a")){
		if(jQuery(target).parent().is(":not(p)")) {
			var li = jQuery(target).parents("li:eq(0)");


			jQuery("#navigation li.active").removeClass("active");
			
			
			
			
			
			
		}else {
			if(jQuery(target).parent().is("p.close")){
				MOVIEART.toggle_menu(target);
			}
		}
		// e.preventDefault();
		MOVIEART.EVENTS.scroll_to_module(jQuery(target), function(module) {
			if(origin){
				link = module.find("a").filter(function(){
					return this.href == origin.get(0).href;
				}).click();
			}
			MOVIEART.EVENTS.load_content(jQuery(target));
		});
		
		return false;
	}
	
		
}