/*
Title:     the jQueryfied na3 v2 website
Author:    gc@gcmingati.net
**********************************************
*/
jQuery.extend( jQuery.easing,
{
	easeInOutExpo: function (x, t, b, c, d) {
		if (t==0) return b;
		if (t==d) return b+c;
		if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
		return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
	}
});

jQuery.fn.extend({ scramble :  function() {
    var i = this.size();
    if (!i) return this;
    while (--i) {
        var j = Math.floor(Math.random() * (i+1));
        var tmp1 = this.slice(i, i+1);
        this.slice(j, j+1).after(tmp1).insertAfter(tmp1);
    }
    return this;
}});


$(function(){ 
	
	$("#header li a:last").css({backgroundImage: 'none'});
	$("div#nicola img, ul#pubblicazioni li img, ul#events li a img, ul#video li a img, #projects-list li a img, #prj-gallery li a img").addClass("reflect");
	
	$("#email_link").each(function(i){ 
  	$(this).safe_mail("studio", "na3", "it", "E-mail");  
	});
	
	$("#prjcycle li, #na3cycle li, #projects-list-cycle li, #project-bigger-cycler li").scramble();
  $("#prjcycle").after('<div id="nav">').cycle({
        fx:     'fade',
        speed:   1000,
        timeout: 5000,
        pager:  '#nav'
    }); 	
	$("#na3cycle, #projects-list-cycle, #project-bigger-cycler").cycle({
        fx:     'fade',
        speedIn: 1000,
        speedOut: 300,
        timeout: 7500
   }); 	  
   
  var linksWidth = 0;
	$("#nav").find("a").each(function(n) {
		linksWidth += $(this).width();
		$("#nav").width(linksWidth);
	});
	
	
	$("#prjcycle li").find("a").each(function(n) {
			$(this).append("<span>" + $(this).find("img").attr("alt") + "<\/span>");											
	});
	$("#prjcycle li a").hover(function(){ 
	  $(this).find("span").toggleClass("go").text("View this project.");
	},function(){ 
	  $(this).find("span").toggleClass("go").text($(this).find("img").attr("alt"));
	});

	$("#notizie").cycle({
        fx:     'fade',
        speedIn: 1000,
        speedOut: 300,
        timeout: 7500,
        pause:  'true'
   }); 	
   
/* accordion: focuson, studioaccordion */
  	if(!$.browser.opera) { $("ul#prjcats ul, #studioaccordion ul ul").hide(); } //workaround for Opera
  $("ul#prjcats>li>a, #studioaccordion>ul>li>a, #vertgal>ul>li>a:not(#prjup)").click(function() {
  	$(this).addClass("current");
  	var $subnav = $(this).next();
		if($subnav.is(":visible")) {
		$subnav.slideUp("fast").prev().removeClass("current");
		return false;
		}
		if(!$subnav.is(":visible")) {
		$("ul#prjcats li ul:visible, #studioaccordion ul li ul:visible, #vertgal ul li ul:visible").slideUp("fast").prev().removeClass("current");
		$subnav.slideDown("fast");
		return false;
		}
	});

/* modifica il testo di a#tgl +/- in scheda progetto */
$("a#tgl").toggle(function(){ 
  $(this).find("span").html("&#43;")
},function(){ 
 $(this).find("span").html("&#45;")
});

/* adds images relatively positioned on top of other thumbz */
$("ul#events li.events-gal-starter a").prepend('<img class="tb-larger" src="images/opengal.gif" alt="open gallery of images" />');
$("ul#video li a").prepend('<img class="tb-larger" src="images/playvid.gif" alt="launch video" />');

/* 
Projects lists: accordion and sliders (constants and functions).
*/
var tz_gap = 5;
var tz_step = 180 + tz_gap;
var tz_page = 5;

function getPxVal(jqobj, styleattr){
	return parseInt(jqobj.css(styleattr).replace("px", ""));
}
function getMargLeftVal(jqobj){
	return getPxVal(jqobj, "marginLeft");
}
function scrollThumbz(more, jqobj, callback){
	var parentList = jqobj.parent().prev().filter("ul");
	//var scramount = (tz_page * tz_step) * ((more)? -1 : 1);
	var listItems = parentList.find("li").size();
	var minOffset = 0;
	var maxOffset = -(listItems - tz_page);
	var offset = getMargLeftVal(parentList) / tz_step ;
	if (!callback){
		var newOffset = offset + (tz_page * ((more)? -1 : 1));
		if (newOffset > minOffset)
			newOffset = minOffset;
		if (newOffset < maxOffset)
			newOffset = maxOffset;
	
		parentList.filter("ul:not(:animated)").animate({ marginLeft: (newOffset * tz_step) }, 750, "easeInOutExpo", 
			function() { scrollThumbz(more, jqobj, true) }
		);
	}else{	
		$("a.lessthumbz").css({display: ((offset >= minOffset)?"none":"")});
		$("a.morethumbz").css({display: ((offset <= maxOffset)?"none":"")});
	}
}

/* 
Projects lists: accordion and sliders.
*/

	if(!$.browser.opera) { $("#projects-list ul ul").hide(); } //workaround for Opera
  $("#projects-list>ul>li>a").click(function() {
  	$(this).addClass("current");
  	var $subnav = $(this).next(); 	
  	//set proper width to $subnav
  	subListItems = $subnav.find("li").size();
  	$subnav.width(subListItems*tz_step);

   	//check if current $subnav has more than 5 list items; if so, add .controls div
   	if(subListItems > 5){
		$(this).next().after("<div class='controls'><a href='#' class='morethumbz' title='scroll right'>&rarr;</a><a href='#' class='lessthumbz' title='scroll left'>&larr;</a></div>");
   	}
		if($subnav.css("marginLeft") == 0+"px"){
				$("a.lessthumbz").css({display: "none"})
		}
		if(getMargLeftVal($subnav) <= -($subnav.width()-(tz_page*tz_step))){
				$("a.morethumbz").css({display: "none"})
		}
		
		
		// -->> morethumbz
		$("a.morethumbz").click(function () {
			scrollThumbz(true, $(this));
			return false;
		});
		// <<-- lessthumbz
		$("a.lessthumbz").click(function () { 
			scrollThumbz(false, $(this));
			return false;
		});
		if($subnav.is(":visible")) {
		$subnav.slideUp("fast").prev().removeClass("current");
		//$(".controls").css({display: "none"});
		$(".controls").remove();
		//$subnav.next().filter("div").remove();
		return false;
		}
		if(!$subnav.is(":visible")) {
		$("#projects-list ul li ul:visible").slideUp("fast").prev().removeClass("current");
		$("#projects-list ul li ul:visible").next().remove();
		$subnav.slideDown("fast");
		return false;	
		}		
	});
	$("#projects-list img, #prj-gallery img, #events img, #video img").hover(function(){ 
		$(this).css({opacity: "0.7"});
		if($.browser.msie) {$(this).css({cursor: "pointer"});}
		},function(){ 
	  $(this).css({opacity: "1"})
	});
	if($.browser.msie) {
		$("#projects-list li a").click( function() { 
			document.location.href = $(this).attr("href");
			 } );
		}

/* 
ENDs projects lists accordion and sliders 
*/

/* contacts page with gmaps */
$("#map").height("274px");
$("#expmap").toggle( 
    function () { 
    	$(this).addClass("max").text("Contrai la mappa");
      $("#map").animate( { height:"548px"}, { "duration": 750, "easing": "easeInOutExpo" }) 
      $("#map-container").animate( { height:"549px"}, { "duration": 750, "easing": "easeInOutExpo" }) 
    }, 
    function () { 
    	$(this).removeClass("max").text("Espandi la mappa");     	
      $("#map").animate( { height:"274px"}, { "duration": 750, "easing": "easeInOutExpo" }) 
      $("#map-container").animate( { height:"275px"}, { "duration": 750, "easing": "easeInOutExpo" }) 
    } 
  ); 


}); // ends ready



$(window).bind("load", function() { 

	/* reflections */
	$("div#nicola img.reflect").each(function(){
		$(this).reflect({height: 0.3, opacity: 0.5}); 
	});	
	$("ul#pubblicazioni li img.reflect, ul#events li a img.reflect, ul#video li a img.reflect, #projects-list li a img.reflect, #prj-gallery li a img:not('.gal-launcher')").each(function(){
  	$(this).reflect({height: 0.3, opacity: 0.3});
	});	

	if($.browser.opera) {$("#projects-list ul ul, ul#prjcats ul, #studioaccordion ul ul").hide();} // for Opera: images loaded? Reflect. And hide subnav.
	
	
	/* check category with document.location.search
	and simulate the click on a category link accordingly */		
	var checkCat = document.location.search.replace("?cat=","");
	checkAndOpenSubnav = function(){
		$("ul#" + checkCat).prev().trigger("click");
		}
	switch (checkCat)
	{
		case "public" :
			checkAndOpenSubnav();			
		break;
		case "residential" :
			checkAndOpenSubnav();		
		break;
		case "commercial" :
			checkAndOpenSubnav();		
		break;
		case "interiors" :
			checkAndOpenSubnav();		
		break;
		case "exhibit" :
			checkAndOpenSubnav();		
		break;
		case "design" :
			checkAndOpenSubnav();		
		break;
		default :
			return false;
	}
	
});