var SPEED = 200
// var EASE = "easeout"
var READY = false
var POSTS
var DEFAULT_SEARCH = "SUCHEN..."
var CURRENT_POST
var DIRECTION = "right"
var DEBUG = false;
var STATE = "index"
var T
var EXTRA_TABS
var DISQUS_LOADED = false;
var TWITTER_USERNAME   
var IS_CONTENTS = true;       
var IS_CUSTOMIZE = true

function addPreloader(){                   
	if (window.parent != window && window.location.toString().indexOf("safe.tumblr.com") >= 0) {
		IS_CUSTOMIZE = true;
	}else{
		IS_CUSTOMIZE = false
		document.write('<div id="preloader"><div class="inner"><span class="anim"></span> Moment...</div></div>');
	}
}                                                       
addPreloader();

function setup(){ 
	
	if($.browser.webkit){
		$("body").addClass("css3")
		$("body").addClass("webkit")				
	}else if($.browser.mozilla){
		$("body").addClass("css3")
		$("body").addClass("mozilla")		
	}else if($.browser.msie){
		$("body").addClass("ie")
	}         
	                   
	if(!IS_CUSTOMIZE){
		$("#ctrls").removeClass("hide")		
	}
	$(".ie .leftArrow, .ie .rightArrow").remove()
	
	if(DEBUG){
		// log.toggle()
	}        
	
	if(STATE == "permalink"){
		READY = false;
	}                        
	
	if(POSTS.length == 1 && POSTS[0] == ""){
		$("body").addClass("isPage")
		$("body").addClass("permalink")		
		STATE = "permalink"
		$("#post_ .pagination .left a").attr("href", "/")
	}
	
	_debug("setup()")
	_debug("state:"+STATE)
	
	$("#posts .regular .media").remove()
	$(".remove").remove()
	$(".postThumb").each(function(){
		var id = $(this).attr("id") 
		if($(this).hasClass("quote") || $(this).hasClass("chat") || $(this).hasClass("regular") || $(this).hasClass("link")){
			$("#"+id+" .media").remove()
		}
	})                
	
	$('#toc .inner').masonry({ columnWidth:200, singleMode: true });
	$(".postThumb .media img").load(function(){
		var id = $(this).parent().parent().attr("id")
		refreshGrid()
	})             
	                                               
	_debug(".addSizeClass .length: "+$(".addSizeClass").length)     
	
	if($(".addSizeClass").length <= 0){
		onLoaded()   		
	}else{
		$(".addSizeClass").load(function(){
			_debug("div.addSizeClass.loaded()")
			if($(this).width() >= $(this).height()){
				$(this).addClass("widerPhoto")
			}else{
				$(this).addClass("tallerPhoto")
			}
			if(!READY){
				onLoaded() 
			}
			clearTimeout(T)
		})    
		T = setTimeout("onLoaded()", 2000) 
	}
	
	$("#searchBox").val(DEFAULT_SEARCH)
	$("#searchBox").focus(function(){
		if($(this).val() == DEFAULT_SEARCH){
			$(this).val("")
		}
	})                                
	
	$("#searchBox").blur(function(){
		if($(this).val() == ""){
			$(this).val(DEFAULT_SEARCH)
		}
	})
	
	$(".search .button").click(function(){
		$("#searchForm").submit()
	})
	
	$("#posts .photoset").each(function(){
		setupPhotoset($(this).attr("id").replace("post_", ""))
	})        
	
	$("#posts .video").each(function(){
		setupVideo($(this).attr("id").replace("post_", ""))
	})
	
	if(!$("body").hasClass("permalink")){   
		if(!IS_CUSTOMIZE){
			SWFAddress.addEventListener(SWFAddressEvent.CHANGE, history); 			
		}
		$("span.leftArrow").click(function(){
			previousPost()
		})           
		$("span.rightArrow").click(function(){
			nextPost()
		})               
	}else{
		$(".tab").click(function(){
			showTab($(this).attr("id").replace("TabButton", ""))
			return false
		})
	}
	
	$(".postThumb").each(function(){
		var id = $(this).attr("id")
		var caption = $("#"+id+" .data .caption").text()
		if(caption != ""){
			if(caption.indexOf(".") >= 0){
				$("#"+id+" .copy .caption").html(caption.substring(0, caption.indexOf("."))+".")
			}else{
				$("#"+id+" .copy .caption").html(caption)
			}
			if($(this).hasClass("hasAlbumArt")){
				$("#"+id+" .copy").remove();
			}
			if($(this).hasClass("audio") && !$(this).hasClass("hasAlbumArt")){
				$("#"+id+" .media").remove()
			}
		}else{
			// $("#"+id+" .copy .caption").remove()
		}
	})
	
	if(TWITTER_USERNAME != "" && TWITTER_USERNAME){
		getTwitterStatus();
	}
}
function setAddress(){
	_debug("setAddress()")
	var id = $(this).attr("id").replace("openAbove_", "")
	window.location = "#/post/"+id
	/*
	$("html, html body").animate({
		scrollTop:130
	}, 300)	
	*/                
	//$("#pagination .left a").href()
	return false
}
function refreshGrid(){
	_debug("refreshGrid()")
	$('#toc .inner').masonry({ columnWidth:200, singleMode: true });
}     
function history(hash){ 
	_debug("history("+hash+")")
	if(!READY || IS_CUSTOMIZE){
		return
	}
	var id = SWFAddress.getValue().replace("/post/","")       
   loadPost(id)  	
}

function loadPost(ID){  
	_debug("loadPost("+ID+")")
	
	if(!READY || IS_CUSTOMIZE){
		return
	}       
	   
	if(ID == "/"){ 
		
		IS_CONTENTS = true
		
		$(".post").addClass("hide")

		$("#contents").css({
			"right":150,
			"opacity":0
		})                    
		
		$("#contents").removeClass("hide")

		$("#contents").animate({
			"right":0,
			"opacity":1
		}, SPEED, function(){
			refreshGrid()
		})                
		
		// $(".leftArrow").addClass("hide")
		if($("#home ul.pagination li.left").length <= 0){
			$(".leftArrow").addClass("hide")
		}                                 
		if($("#home ul.pagination li.right").length <= 0){
			$(".rightArrow").addClass("hide")
		}
		
		DIRECTION = "right"
		
		return
	}               
	
	CURRENT_POST = ID    
	
	$(".leftArrow").removeClass("hide")
	$(".rightArrow").removeClass("hide")  
	                
	N = -1
	// N = POSTS.indexOf(CURRENT_POST)
	for(var i = 0; i<POSTS.length; i++){
		if(POSTS[i] == CURRENT_POST){
			N = i
			break
		}
	}     
	if(N <= -1){
		return
	}
	
	if(N == POSTS.length-1 && $("#home ul.pagination li.right").length <= 0){
		$(".rightArrow").addClass("hide")
	}
	
	$(".panel").each(function(){
		if($(this).attr("id") != "post_"+String(ID) && !$(this).hasClass("hide")){
			$(this).addClass("hide")
		}
	})
	
	IS_CONTENTS = false

	switch(DIRECTION){ 
		case "right":
			if(!$("#contents").hasClass("hide")){
				$("#contents").animate({
					"right":2000
				}, SPEED, function(){
					$(this).addClass("hide")
				})
			}

			$("#post_"+ID+"").css({
				"left":150,
				"opacity":0
			})

			$("#post_"+ID).removeClass("hide")

			$("#post_"+ID+"").animate({
				"left":0,
				"opacity":1
			}, SPEED)    
		break
		case "left":
			if(!$("#contents").hasClass("hide")){
				$("#contents").animate({
					"left":150
				}, SPEED, function(){
					$(this).addClass("hide")
				})
			}

			$("#post_"+ID+"").css({
				"right":150,
				"opacity":0
			})

			$("#post_"+ID).removeClass("hide")

			$("#post_"+ID+"").animate({
				"right":0,
				"opacity":1
			}, SPEED)    
		break
	}
	
	
	
}

function onLoaded(){
	_debug("onLoaded()")
	if(IS_CUSTOMIZE){
		return
	}                  
	
	$(".panel").addClass("hide")
	READY = true;
	
	if(STATE != "permalink"){
		var id = SWFAddress.getValue().replace("/post/","")
		loadPost(id) 	
		$.mapKey("left", function(){
			previousPost();
		});
		$.mapKey("right", function(){
			nextPost()
		})
		
	}else{
		_debug("should be removing the hide class...")
		$(".post:first").removeClass("hide")
		$("#post_").removeClass("hide")
		
		switch(window.location.hash){
			case "#notes":
			showTab("notes")
			break
			case "#disqus_thread":
			showTab("comments")
			break
		}
		_debug("window.location.hash: "+window.location.hash)
	}      
	
	setTimeout(function(){
		$("#preloader").animate({
			opacity:0
		}, 400, function(){
			$("#preloader").remove()        			
		})
	}, 400)
}

function nextPost(){
	if(IS_CONTENTS){
		if($("#home ul.pagination li.right")){
			window.location = $("#home ul.pagination li.right a").attr("href")
		}
		return
	}
	
	_debug("nextPost()")
	if(!$("body").hasClass("index")){
		return
	}      
	DIRECTION = "right"
	var N
	var NEXT      
	if(CURRENT_POST != undefined){
		
		N = POSTS.indexOf(CURRENT_POST)

		if(N <= -1){
			
		}else if(N >= POSTS.length-1){
			var NEXT_PAGE = $("#home .pagination .right a").attr("href")
			if(NEXT_PAGE != null && NEXT_PAGE != undefined){
				window.location = NEXT_PAGE
			}
		}else{
			NEXT = POSTS[(N+1)]
		}
	}else{
		NEXT = POSTS[0]
	}          
	window.location = "#/post/"+String(NEXT)
}

function previousPost(){ 
	if(IS_CONTENTS){
		if($("#home ul.pagination li.left")){
			window.location = $("#home ul.pagination li.left a").attr("href")
		}
		return
	}

	_debug("previousPost()")
	if(!$("body").hasClass("index")){
		return
	}    
	var N
	var NEXT   
	DIRECTION = "left"
	if(CURRENT_POST != undefined){
		N = POSTS.indexOf(CURRENT_POST)
		if(N <= 0){
			window.location = "#"
			return
		}else{
			NEXT = POSTS[(N-1)]
		}
	}else{
		// this should never happen.
	}
	window.location = "#/post/"+String(NEXT)	
}       

function setupPhotoset(ID){
	_debug("setupPhotoset("+ID+")")
	$.getJSON("/api/read/json?id="+ID+"&callback=?", {}, function(D){
		var photos = D["posts"][0]["photos"]
		for(var i = 0; i<photos.length; i++){
			var thumb = photos[i]["photo-url-250"] // mm 100
			var caption = photos[i]["caption"]
			_debug(caption)
			if(STATE == "index"){
				$("#postThumb_"+ID+" .media .photoset").append("<div class=\"photosetThumb\" style=\"background-image:url('"+thumb+"')\"></div>");
			}
			$("#post_"+ID+" .thumbs").append("<div class=\"thumb\" id=\"p_"+ID+"_thumb_"+i+"\" style=\"background-image:url('"+thumb+"')\"></div>")
			
			var large = photos[i]["photo-url-500"]
			$("#post_"+ID+" .content .media .gallery .large").append("<div class=\"photo hide\" style=\"background-image:url('"+large+"');\" id=\"p_"+ID+"_large_"+i+"\"><div class=\"fill\"></div><img src=\""+large+"\" /><div class=\"caption\"><span>"+caption+"</span></div></div>")
			if(i == 0){
				$("#p_"+ID+"_large_0").removeClass("hide")
				$("#p_"+ID+"_thumb_0").addClass("selected")
			}
			if(caption == undefined || caption == ""){
				$("#p_"+ID+"_large_"+i+" .caption").remove()
			}
		}       
		$("#post_"+ID+" .thumbs .thumb").click(showPhotoInPhotoset)
		$("#post_"+ID+" .thumbs").append("<div class=\"clear_left\"></div>")
		$("#post_"+ID+" .thumbs").append("<div class=\"photoCaption\"><span class=\"number\">1/"+photos.length+"</span>&nbsp;"+photos[0]["caption"]+"</div>")
		$("#post_"+ID+" .gallery").removeClass("loading")
	})
}

function setupVideo(ID){
	_debug("setupVideo("+ID+")")
	var swf
	var embedCode     
	var vimeo_id
	if(STATE == "index"){
		$("#postThumb_"+ID+" .media .embed param").each(function(){
			if($(this).attr("name") == "movie"){
				swf = $(this).attr("value")
			}else if($(this).attr("name") == "flashvars"){
				var vid = $(this).attr("value")
				if(vid.indexOf("vimeo") > 0){
					vimeo_id = vid.substring(vid.indexOf("clip_id"), vid.indexOf("&")).replace("clip_id=", "")
				}
			}
		})
		embedCode = $("#postThumb_"+ID+" .media .embed").html()
	}else{
		$("#posts .post:first .videoPlayer param").each(function(){
			if($(this).attr("name") == "movie"){
				swf = $(this).attr("value")
			}
		})
		embedCode = $("#posts .post:first .videoPlayer").html()
	}
	var wR = /width="[0-9]*"/g;
	embedCode = embedCode.replace(wR, "width=\""+580+"\"")
	var hR = /height="[0-9]*"/g
	embedCode = embedCode.replace(hR, "height=\""+360+"\"")
	if(!swf){
		return
	}
	if(swf.indexOf("youtube.com") >= 0){
        var oldOpts = /rel=0/g;
        var newOpts = "rel=0&amp;hd=1&amp;color1=0xFFFFFF&amp;color2=0xFFFFFF";
		embedCode = embedCode.replace(oldOpts, newOpts)
		if(STATE == "index"){
			swf = swf.replace("http://www.youtube.com")
			swf = swf.replace("http://youtube.com")
			var youtube_id = swf.substring(swf.indexOf("/v/")+3, swf.indexOf("&"))
			var thumb_url = "http://i.ytimg.com/vi/"+youtube_id+"/0.jpg"
			$("#postThumb_"+ID+" .media .videoThumb .image").html("<img src=\""+thumb_url+"\" />");
		}
	}else if(swf.indexOf("vimeo.com") >= 0){ 
		if(STATE == "index"){               
			$.getJSON("http://vimeo.com/api/clip/"+vimeo_id+".json?callback=?", function(d){
				var thumb_url = d[0]["thumbnail_large"]
				//$("#thumb_"+id+" .video").prepend("<div class=\"bg rounded\" style=\"background-image:url('"+thumb_url+"');\"></div>")
				// return thumb_url
				$("#postThumb_"+ID+" .media .videoThumb .image").html("<img src=\""+thumb_url+"\" />");	
			})
		}
	}
	$("#post_"+ID+" .content .videoPlayer").html(embedCode)
	// alert(embedCode)
}

function _debug(message, level){
	if(!DEBUG){
		return
	}
	
	if(level == undefined || level == null){
		level = "info"
	}
	switch(level){
		case "info":
		// log.info(message)
		break
		default:
		// log.info(message)
	}
}

function showPhotoInPhotoset(){
	_debug("showPhotoInPhotoset")
	var id = $(this).attr("id")
	_debug("id:"+id)
	var postID = id.match(/p_[0-9]*/g)[0].replace("p_", "")
	var N = id.match(/thumb_[0-9]*/g)[0].replace("thumb_", "")
	// _debug("postID:"+postID)
	// _debug("N:"+N)
	// $("#post_"+postID+" .gallery").addClass("tweenSize")	
	$("#post_"+postID+" .gallery .large .photo").each(function(){
		// _debug($(this).attr("id"))
		if($(this).attr("id") == "p_"+postID+"_large_"+N){
			if($(this).hasClass("hide")){
				$(this).animate({
					opacity:.6
				}, 0)
				$(this).removeClass("hide")				
				$(this).animate({
					opacity:1
				}, 400)
				
				/*
				$("#post_"+postID+" .gallery").animate({
					height:$("#p_"+postID+"_large_"+N+" img:first").height()
				}, 150)
				*/
			}
		}else{
			$(this).addClass("hide")
		}
	})
	
	var position = Number(N)+1
	$("#post_"+postID+" .thumbs .photoCaption").html("<span class=\"number\">"+position+"/"+$("#post_"+postID+" .thumb").length+"</span>&nbsp;"+$("#p_"+postID+"_large_"+N+" .caption").text())
	
	
	$("#post_"+postID+" .thumb").each(function(){
		if($(this).attr("id") == id){
			$(this).addClass("selected")
		}else{
			$(this).removeClass("selected")			
		}
	})
}

function showTab(which){
	_debug("showTab("+which+")")
	for(var i = 0; i<EXTRA_TABS.length; i++){
		if(EXTRA_TABS[i] == which+"Tab"){
			$("#"+EXTRA_TABS[i]).removeClass("hide")
			$("#"+EXTRA_TABS[i]+"Button").addClass("selected")
		}else{
			$("#"+EXTRA_TABS[i]).addClass("hide")			
			$("#"+EXTRA_TABS[i]+"Button").removeClass("selected")			
		}
	}
	switch(which){
		case "comments":
		if(!DISQUS_LOADED){
			$("#commentsTab").html('<div id="disqus_thread"><noscript><a href="http://disqus.com/forums/'+DISQUS_USERNAME+'/?url=ref">View the discussion thread.</a></noscript></div><script type="text/javascript" src="http://disqus.com/forums/'+DISQUS_USERNAME+'/embed.js"></script>')
			DISQUS_LOADED = true;
		}
	}
}

function getTwitterStatus(){
	$.getJSON("http://twitter.com/statuses/user_timeline/"+TWITTER_USERNAME+".json?count=2&callback=?", function(D){
		$("#twitter .content").html(String(D[0]["text"]).linkify_tweet())
		$("#twitter").removeClass("hide")
	});	
}

String.prototype.linkify_tweet = function() {
	var tweet = this
	tweet = tweet.replace(/\b(https?:\/\/[^\s+\"\<\>]+)/igm, "<a href=\"$1\">$1</a>");
	tweet = tweet.replace(/(^|\s)@(\w+)/g, "$1<a href=\"http://www.twitter.com/$2\">@$2</a>");
	return tweet.replace(/(^|\s)#(\w+)/g, "$1<a href=\"http://search.twitter.com/search?q=%23$2\">#$2</a>");
};

$(window).ready(setup)
