/* Copyright 2012 Adostudio
 * Website: http://www.adostudio.it
 * Email: info@adostudio.it
 * Author: Andrea Dell'Orco
 */

var $j = jQuery.noConflict();

// var
var marginBottom = 200;

var hoverMenu = 0;
var toggleMenu = 0;
var timerMenu;
var moover;
var oldMoover = 0;
var rel = 0;
var starter = new Array();
var speedBlock = new Array();
var sidebar;

var isHome;
var windowH;

var documentH;

var blocksEl=new Array();

//redy
$j(document).ready(function() {
	isHome=($j("#welcome").length>0? true : false);
	sidebar = $j("#sideBar");
	windowH=$j(window).height();
	
	adaptSlider();
	 postThumbSize();
	if(!isHome) sidebarAnimation();

	preloadSlider()

		
		
	//ogni volta che avviene un resize, reimposta
	$j(window).resize(function() {
		adaptSlider();
		postThumbSize();


	
	});
	
	var mooverEl= $j("#moover");
	
	var sliderLi=$j("#slider li");
	
	
	

	windowH=$j(window).height();
	/*if(isHome){
	blocksEl[0]=$j("#welcome", "#slideDown");
	blocksEl[1]=$j("#blogBlock", "#slideDown");
	blocksEl[2]=$j("#quoteBlock", "#slideDown");
	blocksEl[3]=$j("#aboutBlock", "#slideDown");
	blocksEl[4]=$j("#poetryBlock", "#slideDown");
	speedBlock[0]=1;
	speedBlock[1]=2;
	speedBlock[2]=4;
	speedBlock[3]=2.5;
	speedBlock[4]=3.7;
	for(var i in blocksEl){
		starter[i]=blocksEl[i].position().top;
	}
	}*/
	//quando scrolla
	$j(window).scroll(function() {
		
		
		moover=mooverEl.offset().top;
		//$j(".homeOverlay").css('height',($j("#poetryBlock").offset().top+$j("#poetryBlock").height()+190)+"px");

		
		//arriva ad un punto che non muove più i div(risolve bug scrolling)
		if(moover + windowH >$j(document).height())return;

		//muove  il bg
		
			//algoritmo di movimento (si ferma otlre i 100px)
			/*if(isHome){
				t = -moover * 0.1;
				if(t < -200)t = -200;
				sliderLi.stop().animate({"top" : t + "px"},1000,"swing");
			}*/
			
			rel = moover - oldMoover;
		//muove i blocchi 
		/*
		
		documentH=$j(document).height();
		if(isHome) {
			for(var i in blocksEl){
				blocksEl[i].css("top", parseInt((starter[i] - (moover * speedBlock[i]))) + "px");
			}
			
		}*/
		oldMoover = moover;
			/* if($j("#welcome").length < 1)sidebarAnimation(); */

	});
	//animazione sidebar

	function sidebarAnimation() {
		if(sidebar.length > 0) {
			sidebarTop = sidebar.position().top;
			if(sidebarTop == undefined)
				sidebarTop = 0;
			paddingTop = sidebar.css("padding-top");

			if(paddingTop == undefined)
				paddingTop = 0;
			else
				paddingTop = parseInt(paddingTop.replace("px", ""));
			sidebarSize = sidebar.outerHeight();
			sidebarOff = sidebar.offset().top;
			topSiderbar = $j("#topSidebar").offset().top;

			if((moover - topSiderbar >= 0) && (sidebarOff + sidebarSize < $j(document).height())) {
				if(moover + sidebarSize + 50 < $j(document).height()) {
					sidebarTop = moover - topSiderbar;
					if(sidebarTop <= 1)
						sidebarTop = 0;
				} else {
					sidebarTop = $j(document).height() - sidebarSize - topSiderbar - 50;
					if(sidebarTop <= 1)
						sidebarTop = 0;

				}

				sidebar.stop().animate({
					"top" : sidebarTop + "px"
				}, 1000,"easeInOutQuart");
				//sidebar.css("top",sidebarTop+"px");

			}
			if(moover - topSiderbar < 0) {
				sidebar.stop().animate({
					"top" : "0"
				}, 1000,"easeInOutQuart");
				//sidebar.css("top","0");
			}
		}
	}

	//animazione menù
	$j("#navigationBar ul li a").hover(function() {
		yPos = $j(this).position().top;
		width = $j(this).width();
		menuPointerEl=$j("#menuPointer");
		if(hoverMenu == 0) {
			menuPointerEl.css("width", (width + 30) + "px");
			menuPointerEl.css("top", yPos + "px");
			menuPointerEl.fadeTo(1000,0.85);
			hoverMenu = 1;
		} else {
			animateCursor(yPos, width);
		}
		toggleMenu = 1;
	}, function() {
		toggleMenu = 0;
		clearTimeout(timerMenu);
		timerMenu = setTimeout('mouseOutMenu()', 5);

	});
	if(!isHome)	scrollDistance = 250;
	//if(isHome)	scrollMouse();

	//faccio apparire i blocchi
	if(!isHome)showBlocks();
	
	//slide home

	//animazione opacità immagini
	$j(".postThumb").hover(function() {
		$j(this).find("img").stop().animate({
			opacity : 1
		}, 300);
	}, function() {

		$j(this).find("img").stop().animate({
			opacity : 0.7
		}, 300);
	});
	$j(".content a img:not(.noStyle)").hover(function() {
		$j(this).stop().animate({
			opacity : 1
		}, 300);
	}, function() {
		if($j(this).parents("#webGalleryHome,#socialBlock").length>0) op=0.5; else op=0.7;
		$j(this).stop().animate({
			opacity : op
		}, 300);
	})
});

//fa apparire i blocchi
function showBlocks(base){
	if (base==undefined)base=500;
	var nBlock = $j(".hidden").length;
	if(nBlock<1) {
		showRibbons();
		return true;
	}
	var cBlock = 0;
	var blockArr=$j(".hidden").toArray();
	for(var i in blockArr){
		cBlock++;
		random = 500 + Math.floor(Math.random() * 1001);
		sp = 1000;
		
		$j(blockArr[i]).css({
			opacity : 0.0,
			visibility : "visible"
		}).delay(random).animate({
			opacity : 1.0
		}, function() {
		if(i==nBlock-1)	showRibbons();
		});
	}
}

//slidehome
function slideHome() {
	
	
	
	
	showBlocks();

	/*

	$j("#slideDown").delay(0).animate({
		"margin-top" : "0px",
		opacity : 1
	}, 3000, function() {
		
	})*/
}

function showRibbons() {

	if(!isHome) delay=1000; else delay=500;
	$j("#socialRibbon").delay(delay).animate({
		"margin-top" : "0px"
	}, 1000, "easeOutCubic");
	$j("#mailRibbon").delay(delay+400).animate({
		"margin-top" : "0px"
	}, 800, "easeOutCubic");
}

//funzione a parte dell'animazione del menù
//quando il mouse esce
function mouseOutMenu() {
	if(toggleMenu == 0) {
		current = $j("#navigationBar ul li a.currentPage");
		if(current.length < 1) {
			$j("#menuPointer").fadeOut(function() {
				hoverMenu = 0;
			});
			return
		}
		yPos = current.position().top;
		width = current.width();
		animateCursor(yPos, width);
	}
}

//muove i blocchi
function mooving(element,index, speed) {
	

	t = starter[index] - (moover * speed);
	//if(element=="#aboutBlock"&&t<300) alert(starter[element]+"-("+moover+"*"+speed+")="+t);

	if(moover + windowH > documentH) {moover = documentH - windowH;}
	element.css("top", parseInt(t) + "px");

}

function animateCursor(yPos, width) {
	$j("#menuPointer").stop().animate({
		"width" : (width + 30) + "px",
		"top" : yPos + "px",
		opacity : 0.85
	}, 200);

}

function adaptSlider() {
	//if($j("#welcome").length>0)$j("#overlayWrapper.homeOverlay").css('height',($j(window).height()+((1440-$j(window).height())*0.7*($j(window).height()/1000)))+"px");
	//if($j("#welcome").length>0)$j("#overlayWrapper.homeOverlay").css('height',($j(window).height()+((1/($j(window).height())))*250000)+"px");
	//if(isHome)$j("#overlayWrapper.homeOverlay").css('height', (windowH + Math.pow(390000 / windowH, 0.545) * 10) + "px");
	var sliderImg=$j("#slider img").toArray();

	for(var i in sliderImg){

		imgSize = new Array($j(sliderImg[i]).attr("width"), $j(sliderImg[i]).attr("height"));
		//array
		rapporto = imgSize[0] / imgSize[1];
		docSize = new Array($j(window).width(), $j(window).height());

		if(rapporto > 0)
			newSize = new Array(docSize[0], docSize[0] / rapporto);
		else
			newSize = new Array(docSize[1] * rapporto, docSize[1]);
		if(newSize[1] < docSize[1]) {
			newSize[1] = docSize[1];
			newSize[0] = newSize[1] * rapporto;
		}

		if(newSize[1] - docSize[1] < marginBottom) {
			newSize[1] = docSize[1] + marginBottom;
			newSize[0] = newSize[1] * rapporto;
		}
		$j(sliderImg[i]).css('width', parseInt(newSize[0]+"px"));
		$j(sliderImg[i]).css('height', parseInt(newSize[1]+"px"));
	}
}

//Gestisco lo scrollin del mouse (animazione finestra)
var scrollDistance = 200;
function scrollMouse() {
	var intOverallDelta = 0;
	$j("html, body").mousewheel(function(objEvent, intDelta) {
		if(intDelta > 0) {
			objEvent.preventDefault()
			$j('html, body').stop().animate({
				scrollTop : "-=" + scrollDistance
			}, 800);
		} else if(intDelta < 0) {
			objEvent.preventDefault();
			$j('html, body').stop().animate({
				scrollTop : "+=" + scrollDistance
			}, 800);
		}
	});
}

var slide = 1;
function slider() {
	$j("#slider li").css("visibility","visible");
	$j("#slider img").css({
		opacity : 0.0,
	});
	$j("#img1").delay(100).animate({
		opacity : 1
	}, 500, function() {
		$j("#divLoader").remove();
		if($j("#slider img").length > 1)
			slideTimer = setTimeout("changeSlide(slide)", delaySlide);
		if(isHome)slideHome();
	});
}

var delaySlide = 12000;
var slideTimer;
function changeSlide(pre) {
	max = $j("#slider img").length
	$j("#img" + pre).parent("li").css("z-index", 0);

	if(pre == max)
		curr = 1;
	else
		curr = pre + 1;
	$j("#img" + curr).parent("li").css("z-index", 1);
	$j("#img" + curr).animate({
		opacity : 1
	}, 2000, function() {

		$j("#img" + pre).css({
			opacity : 0
		});
		slideTimer = setTimeout("changeSlide(curr)", delaySlide);
	});
}

//adatto le anteprime dei post
function postThumbSize() {
	$j(".postThumb img").each(function() {
		w = $j(this).attr("width");
		h = $j(this).attr("height");
		ratio = w / h;
		newW = $j(this).parent("a").width();
		newH = parseInt(newW / ratio);
		$j(this).css("width", newW + "px");
		$j(this).css("height", newH + "px");
	});

	$j(".content img").each(function() {
		w = $j(this).attr("width");
		h = $j(this).attr("height");
		if(w==undefined)w=$j(this).width();
		if(h==undefined)h=$j(this).height();
		if(w==0)w=1; if(h==0)h=1;
		ratio = w / h;
		innerWidth = $j(".content").innerWidth() * 0.96;
		if(w <= innerWidth)
			return;
		newW = innerWidth;
		newH = parseInt(newW / ratio);
		$j(this).css("width", newW + "px");
		$j(this).css("height", newH + "px");
	});
}

//smart preload
// $(document).smartpreload({ images: ['paths separati da virgola'], oneachimageload: onimageload, onloadall: onallimagesloaded });
function unique_requestid() {
var timestamp = Number(new Date()).toString();
var random = Math.random() * (Math.random() * 100000 * Math.random() );
var unique = new String();
unique = timestamp + random;
return unique;
}

(function($j) {
	$j.fn.extend({
		smartpreload : function(options) {
			var settings = $j.extend({
				images : null,
				oneachimageload : null,
				onloadall : null
			}, options);
			return this.each(function() {
				var loadcounter = 0;
				for(var i = 0; i < settings.images.length; i++) {
					unicId=unique_requestid();
					var img = $j('<img id="id'+unicId+'"/>').addClass('preloading').css('display', 'none').attr('src', settings.images[i]+"#"+unicId).load(function() {
						loadcounter++;
						if(settings.oneachimageload != null)
							settings.oneachimageload($j(this).attr('src'));
						if(loadcounter == settings.images.length) {
							if(settings.onloadall != null)
								settings.onloadall();
						}
					});
				}
			});
		}
	});
})(jQuery);

//preloadSlider
var varPreload = 0;
function preloadSlider() {

	var slideSrc = new Array();
	$j("#slider ul li img").each(function() {

		slideSrc.push($j(this).attr("src"));

	})

	$j(document).smartpreload({
		images : slideSrc,
		oneachimageload : onimageload
	});
}

function onimageload() {(varPreload == 0 ? slider() : true);
	varPreload = 1;
	return;
}

//scroll to
function scrollTo(anc, speed, offMarg, callback) {
	if(speed < 1)
		speed = 2000;
	offMarg = parseInt(offMarg);
	target = $j(anc);
	$j('html, body').animate({
		scrollTop : target.offset().top + offMarg
	}, speed);

	if(callback && typeof (callback) === "function") {
		callback();
	}
}

//rimuove problema sfarffallio home
function adaptScrolling() {

}

//function email avoid spam
// Email.js version 5
var tld_ = new Array()
tld_[0] = "com";
tld_[1] = "org";
tld_[2] = "net";
tld_[3] = "it";
var topDom_ = 13;
var m_ = "mailto:";
var a_ = "@";
var d_ = ".";

function mail(name, dom, tl, params) {
	var s = e(name, dom, tl);
	document.write('<a href="' + m_ + s + '" '+params+'>' + s + '</a>');
}

function mail2(name, dom, tl, params, display) {
	document.write('<a href="' + m_ + e(name, dom, tl)+'" '+params+'>' + display + '</a>');
}

function e(name, dom, tl) {
	var s = name + a_;
	if(tl != -2) {
		s += dom;
		if(tl >= 0)
			s += d_ + tld_[tl];
	} else
		s += swapper(dom);
	return s;
}

function swapper(d) {
	var s = "";
	for(var i = 0; i < d.length; i += 2)
	if(i + 1 == d.length)
		s += d.charAt(i)
	else
		s += d.charAt(i + 1) + d.charAt(i);
	return s.replace(/\?/g, '.');
}




function playList(){
	
      $j(function() { 
        // Setup the player to autoplay the next track
        var a = audiojs.createAll({
          trackEnded: function() {
            var next = $j('ol li.playing').next();
            if (!next.length) next = $j('ol li').first();
            next.addClass('playing').siblings().removeClass('playing');
            audio.load($j('a', next).attr('data-src'));
            audio.play();
          }
        });
        
        // Load in the first track
        var audio = a[0];
            first = $j('ol a').attr('data-src');
        $j('ol li').first().addClass('playing');
        audio.load(first);

        // Load in a track on click
        $j('ol li').click(function(e) {
          e.preventDefault();
          $j(this).addClass('playing').siblings().removeClass('playing');
          audio.load($j('a', this).attr('data-src'));
          audio.play();
        });
        // Keyboard shortcuts
        $j(document).keydown(function(e) {
          var unicode = e.charCode ? e.charCode : e.keyCode;
             // right arrow
          if (unicode == 39) {
            var next = $j('li.playing').next();
            if (!next.length) next = $j('ol li').first();
            next.click();
            // back arrow
          } else if (unicode == 37) {
            var prev = $j('li.playing').prev();
            if (!prev.length) prev = $j('ol li').last();
            prev.click();
            // spacebar
          } else if (unicode == 32) {
            audio.playPause();
          }
        })
      });
    
}


