(function($) {
    $.fn.carousel3D = function(options) {
    
    var parentContainer = this;
    var settings = $.extend({
        speed: 800,
        perspectiveZoom : 80,
        sideOffset: 70,
        topOffset:0,
        emClass: "tdc-element",
        secondaryOpacity:0.9,
        states : []
    }, options);

    var emClass = settings.emClass;
    var elements = this.find("."+emClass);
    var mutex = false;
    this.find("."+emClass).css("position","absolute");
    this.find("."+emClass).css("display","block");
    $(this).css("position","relative");
    var lastEm = elements.length - 1;

    var initW = $(elements[1]).width();
    var initH = $(elements[1]).height();
    var initWS = initW * settings.perspectiveZoom/100;
    var initHS = initH * settings.perspectiveZoom/100;
	// TJ
    var initWST = initW * settings.perspectiveZoom/140;
    var initHST = initH * settings.perspectiveZoom/140;


	settings.states = [
		{height:initHS, width:initWS, top:(initH-initHS)/2+settings.topOffset, left:30, opacity:.85},
		{height:initH, width:initW, top:0, left:settings.sideOffset, opacity:100},
		{height:initHST, width:initWST, top:(initH-initHST)/2+settings.topOffset, left:220, opacity:0},
		{height:initHST, width:initWST, top:(initH-initHST)/2+settings.topOffset, left:0, opacity:.7}
	];
	
	/*
	settings.states = [
		{height:initHS, width:initWS, top:(initH-initHS)/2+settings.topOffset, left:30, opacity:.85},
		{height:initH, width:initW, top:0, left:settings.sideOffset, opacity:100},
		{height:initH, width:2, top:0, left:360, opacity:0},
		{height:initHST, width:initWST, top:(initH-initHST)/2+settings.topOffset, left:0, opacity:.7}
	];
	*/

	for(var j=4;j<=lastEm;j++){
        settings.states[j] = {height:0, width:0, top:(initH)/2, left:settings.sideOffset+initW/2, opacity:0};
    }
	
    function transit(direction) {
        mutex = true;

        $(elements).each(function(i){
            $(elements[i]).animate(settings.states[direction ? (i == 0 ? lastEm : i - 1) : (i == lastEm ? 0 : i + 1)], settings.speed, 'swing', function(){
				if (i==lastEm){
                    var prevState = elements;
                    elements = [];
                    elements[0] = prevState[direction ? 1 : lastEm];
                    elements[lastEm] = prevState[direction ? 0 : lastEm-1];
                    for(var j=1;j<lastEm;j++)
                        elements[j] = prevState[direction ? j+1 : j-1];
    
                    $(elements).each(function(){
                       $(elements[1]).css({zIndex: 200});
                       $(elements[2]).css({zIndex: 50});
                       $(elements[0]).css({zIndex: 100});
                       for(var j = 3; j<=lastEm;j++)
                           $(elements[j]).css({zIndex: 1});
                    });
                    mutex = false;
					
                }
				document.getElementById('areac_nome').innerHTML=textoareac[(elements[1].id)];
				document.getElementById('areac_dest_tipo').innerHTML=textoareact[(elements[1].id)];
				document.getElementById('areac_dest_titu').innerHTML=textoareac[(elements[1].id)];
				document.getElementById('areac_dest_desc').innerHTML=textoareacd[(elements[1].id)];
				document.getElementById('areac_dest_link').href=textoareacx[(elements[1].id)];
				document.getElementById('areac_int_link').href=textoareacx[(elements[1].id)];
				document.getElementById('areac_nome_big').style.display='block';
            });
        });
    
        setTimeout(function(){
            $(elements[0]).css({zIndex: direction ? 50 : 200});
            $(elements[1]).css({zIndex: 100});
            $(elements[2]).css({zIndex: direction ? 200 : 150});
			for (var j = 3; j<=lastEm;j++)
                $(elements[j]).css({zIndex: 160});
        }, settings.speed / 2);

    }

    $(elements).each(function(){
        $(this).click(function(e){
            if(mutex) {
                return;
            }
            if(this === elements[0]) {
                transit(false)
				document.getElementById('areac_nome_big').style.display='none';
            }
            else {
                transit(true)
				document.getElementById('areac_nome_big').style.display='none';
            }
        });
    });

    
	
    $('.hakunae').click(function(e){
		settings.speed = 2000;
		transit(true);
		document.getElementById('areac_nome_big').style.display='none';
    });
	
    $('.hakunad').click(function(e){
		settings.speed = 2000;
		transit(false);
		document.getElementById('areac_nome_big').style.display='none';
    });
	

    $(elements).each(function(i){
        $(elements[i]).animate(settings.states[i], settings.speed, 'swing')
        $(elements[1]).css({zIndex: 200});
        $(elements[2]).css({zIndex: 50}); 
		$(elements[0]).css({zIndex: 100});
        for (var j = 3; j<=lastEm;j++)
            $(elements[lastEm]).css({zIndex: 1});
		
		//jsdelay(2000);
		
		document.getElementById('areac_nome').innerHTML=textoareac[(elements[1].id)];
		document.getElementById('areac_dest_tipo').innerHTML=textoareact[(elements[1].id)];
		document.getElementById('areac_dest_titu').innerHTML=textoareac[(elements[1].id)];
		document.getElementById('areac_dest_desc').innerHTML=textoareacd[(elements[1].id)];
		document.getElementById('areac_dest_link').href=textoareacx[(elements[1].id)];
		document.getElementById('areac_int_link').href=textoareacx[(elements[1].id)];
		
		
		$('#areac_nome_big').fadeIn(1500);
    });
	

    return this;
};
})(jQuery);
$(document).ready(function(){
    $('#carouselthreed').carousel3D({
        speed: 800,
        perspectiveZoom: 70,
        sideOffset: 80,
        secondaryOpacity: .9,
        emClass:'tdc-element'
    })
});
