var wh = 1;
var ww = 1;
var ih = 1;
var iw = 1;
var ir = 1.0;

$(window).resize(function(){
	checkYoSelf();
});

$('html').keydown(function(eve){
	var carousel =  $('.carousel');
	if (eve.keyCode == '37') {
		eve.preventDefault();
		carousel.trigger("prevElement");
	}else if(eve.keyCode == '39') {
		eve.preventDefault();
		carousel.trigger("nextElement");
	}else if(eve.keyCode == '35') {
		eve.preventDefault();
		carousel.trigger("lastElement");
	}else if(eve.keyCode == '36') {
		eve.preventDefault();
		carousel.trigger("firstElement");
	}
});


function checkYoSelf(){
	wh = $(window).height();
	ww = $(window).width();

	wr = wh / ww;
    
	$('#cycle img').each(function(ind){
	    var me = $(this);

        var ir = 1;

        if(me.data("ir")){
            ir = me.data("ir");  
        }else{
    	    var ih = me.height();
    	    var iw = me.width();
    	    ir = ih / iw;
            me.data("ir", ir);
        }

    	if(wr < ir){
			var hdiff = Math.floor((ir * ww) - wh);
			me
				.css({width : ww + "px"})
				.css({height : (ir * ww) + "px"})
				.css("top", -1 * Math.floor(hdiff / 2) + "px")
				.css("left", 0 + "px")
		    ;
    	}else{
            var wdiff = Math.floor(((1/ir) * wh) - ww);
			me
				.css({width : ((1/ir) * wh) + "px"})
				.css({height : wh + "px"})
				.css("left", -1 * Math.floor(wdiff / 2) + "px")
				.css("top", 0 + "px")
		    ;
    	}
    	if(!me.is(":visible")) me.fadeIn(200);
    });

	$('#cycle').each(function(ind){
	    var me = $(this);
	    me
	        .width(ww + "px")
	        .height(wh + "px");
	        
	    //me.css("left", ind * ww + "px");
    });
}

function fadeInText(){
	$('.tk').fadeIn(400);	
}

$(function(){
	$('.tk').fadeOut(0);

	$('#cycle img').fadeOut(0);

	var caro = $('.carousel');
	var frame = $('.frames');
	caro.each(carousel);
	
	
	var next = $('#next');
	var prev = $('#prev');


	if(caro.length > 0){
		if(prev.length > 0){
			prev.css("left", (frame.position().left - 65) + "px");
		}
		if(next.length > 0){
			next.css("left", (frame.position().left + frame.width() + 15) + "px");		
		}
		var topPosi = frame.position().top + Math.floor(frame.height() / 2);
		next.css("top", topPosi);
		prev.css("top", topPosi);
	}
	
	var de = $('#description');
	if(de.length > 0){
		de.css("top", (600 - de.height()) + "px");
	}

	setTimeout("checkYoSelf();", 200);	

});

function carousel(){
	if($('body').hasClass('bio')) return;
    var me = $(this);
    var me2 = $('.imagenavi');
    var carousel = null;
    var navicarousel = null;
    
    var next = $('#next');
    var prev = $('#prev');
    
    me.children().wrapAll(
        $('<div>').addClass('carousel_wrap')
    );

    me2.children().wrapAll(
        $('<div>').addClass('imagenavicarousel')
    );
    
    
    me2.append($('<div>').addClass('selector'));
    var selector = me2.find('.selector');
    carousel = me.find('.carousel_wrap');
    navicarousel = me2.find('.imagenavicarousel');
    
	navicarousel.find('.img_thumb').css("opacity", 0.5);
	navicarousel.children().first().css("opacity", 1).addClass("sel");
	
	navicarousel.css("width",
		navicarousel.children().length *
		(
			navicarousel.children().first().width() + 
			parseInt(navicarousel.children().first().css("margin-left")) + 
			parseInt(navicarousel.children().first().css("margin-right"))
		) + "px"
	);
    me.data("itemCount", me.find('.img').length);
  	me.data("index", 1);


    me.bind('nextElement', function(){
        var indx = me.data("index");
		me.trigger('scroll_to', indx + 1);
    });

    me.bind('prevElement', function(){
        var indx = me.data("index");
		me.trigger('scroll_to', indx - 1);
    });
    
    me.bind('firstElement', function(){
		me.trigger('scroll_to', 1);
    });

    me.bind('lastElement', function(){
		me.trigger('scroll_to', me.data("itemCount"));
    });
    
    me.bind('scroll_to', function(event, nextIndx, delay){
    	_nextIndx = nextIndx;
        if(_nextIndx < 1){
            _nextIndx = me.data("itemCount");
        }else if(_nextIndx > me.data("itemCount")){
            _nextIndx = 1;
		}
        var nextElem = me.find('.img');
        
        var nextElemNavi = me2.find('.img_thumb');

		delay = (delay ? delay : 500);

		if(delay == 0){
			nextElemNavi.parent().find('.sel').css("opacity", 0.5);			
		}else{
			nextElemNavi.parent().find('.sel').animate({"opacity": 0.5}, delay);		
		}
		nextElemNavi.removeClass('sel');
		
		if(nextElem.length < _nextIndx) return;
		if(nextElemNavi.length < _nextIndx) return;

		nextElem = $(nextElem[_nextIndx - 1]);
		nextElemNavi = $(nextElemNavi[_nextIndx - 1]);

		var scrollNaviTo = 
			nextElemNavi.position().left - 4 * (
				nextElemNavi.width() + 
				parseInt(nextElemNavi.css("margin-left")) + 
				parseInt(nextElemNavi.css("margin-right"))
			)
		;
		
		if(scrollNaviTo < 0) scrollNaviTo = 0;
		
		nextElemNavi.addClass('sel');

		if(delay == 0){
	        carousel.parent().scrollLeft(nextElem.position().left);
	        navicarousel.parent().scrollLeft(scrollNaviTo);
	        selector.css("left", nextElemNavi.position().left);
	        nextElemNavi.css("opacity", 1);
		}else{
	        carousel.parent().animate({scrollLeft: nextElem.position().left}, delay);	
	        navicarousel.parent().animate({scrollLeft: scrollNaviTo}, delay);	
	        selector.animate({"left": nextElemNavi.position().left}, delay);
	        nextElemNavi.animate({"opacity": 1}, delay);
		}
		
		var de = $('#description');
		de.fadeOut(200, function(){
			de.text(nextElem.attr("alt"));
			de.css("top", (600 - de.height()) + "px");
			de.fadeIn(200);
		});
        me.data("index", _nextIndx);    	
    });

	navicarousel.find('.img_thumb').click(function(eve){
		var im = $(this);
		me.trigger(
			"scroll_to",
			parseInt(
				im.attr("id").replace("img_thumb", "")
			)
		);
	});

	prev.click(function(){me.trigger('prevElement'); return false;});
	next.click(function(){me.trigger('nextElement'); return false;});
}
