var mainCarousel;
var rand = 0;
var isSlide = false;
var timer = null;
var delay = 3;
var autoPlay = false;
var scrollOffset = 1;

function refreshAds(){
    rand = Math.ceil(Math.random() * 1000000000);
    $(".ad").each(function (i) {
        old = this.innerHTML;
        old = old.replace(/;ord=\d+/g, ';ord='+rand);
        this.innerHTML = old;
    });
    //invoke a GA page view
    if ((typeof pageTracker != "undefined")&&
        (pageTracker._trackPageview)) {
        pageTracker._trackPageview();
    } 
}

function slideScroll(dir){
    //alert(dir);
    var animate = true;
    scrollOffset += dir;
    if (scrollOffset == maincarousel_idsList.length){
        scrollOffset = 1;
        animate = false;
    }
    else if (scrollOffset == 0){
        scrollOffset = maincarousel_idsList.length-1;
        animate = false;
    }
    if (timer != null) timer = null;
    mainCarousel.scroll(scrollOffset, animate);
    loadMainImage(maincarousel_idsList[scrollOffset]);
    return false;
}

function loadMainImage(id){
    var curImage = $('#large-photo img#imgmainpicture');
    var height = Math.max(parseInt(curImage.attr('height'))+17, 200);
    $('#large-photo').css('height',height); 
    curImage.fadeOut(500);
    $.getJSON(
        '/ajaxfunctions.php',
        {
            action: 'getdataforimgid',
            ids: id,
            size: 'm'
        },
        function(data) {
            data = data[0];
            //calculate width/height
            var width = 610;
            var inHeight = 300;
            if (data['res_x']<width){
                width = data['res_x'];
                inHeight = data['res_y'];
            }
            else {
                inHeight = Math.round(width/data['res_x']*data['res_y']);
            }
            
            // define a new image
            curImage.attr('src',data.url);
            curImage.attr('width', width);
            curImage.attr('height', inHeight);
            $('#large-photo a').attr('href', data['link']);
    
            // empty the wrapper and insert the new image
            curImage.load(function(){
                curImage.fadeIn(300);
                if (isSlide && timer==null){
                    timer = setTimeout('slideScroll(1)', delay * 1000);
                }
                $('#large-photo').css('height','1%');
            })
        }
    );
    setTimeout('refreshAds()', 1000)
}

//carousel related functions
function maincarousel_itemLoadCallback(carousel, state)
{
    var first = Math.max(carousel.first-1, 1);
    var last = Math.min(carousel.last+1, maincarousel_idsList.length);
    
    // Check if the requested items already exist
    if (carousel.has(first, last)) {
        return;
    }
    
    var idsArr = maincarousel_idsList.slice(first, last+1);
    var ids = idsArr.join('_'); 
    $.getJSON(
        '/ajaxfunctions.php',
        {
            action: 'getdataforimgid',
            ids: ids,
            size: 't'
        },
        function(data) {
            maincarousel_itemAddCallback(carousel, first, last, data);
        }
    );
};

function maincarousel_itemAddCallback(carousel, first, last, data)
{
    for (var i = 0; i < data.length; i++) {
        var carPos = first+i;
        if (carousel.has(carPos)) {
            continue;
        }

        if ((carPos) > (maincarousel_idsList.length-1)) {
            break;
        }

        carousel.add(carPos, maincarousel_getItemHTML(data[i], carPos));
        //$('ul#maincarousel li.jcarousel-item-'+carPos+' a').click(pauseAutoPlay);
	$('ul#maincarousel li.jcarousel-item-'+carPos+' a').click(onThumbClick);
    }
};

function maincarousel_getItemHTML(item, pos)
{
    var link = maincarousel_linksList[pos];
    ret =  '<a href="' + link + '">';
    ret += '<img src="' + item.url + '" alt="' + item.title + '" title="' + item.title + '" />';
    ret += '</a>';
    return ret;
};

function startAutoPlay()
{
    if (isSlide == false){
        $('#slide_toggle').html('Pause');
        slideScroll(1);
        isSlide = true;
    }
}

function pauseAutoPlay()
{
    if (isSlide == true){
	    $('#slide_toggle').html('Auto Play');
		clearTimeout(timer);
		timer = null;
		isSlide = false;
	}
}
function onThumbClick(event){
    pauseAutoPlay();
    idx = $(this).parent().attr('jcarouselindex');
    idx = parseInt(idx);
    id = maincarousel_idsList[idx];
    location.hash = id;
    loadMainImage(id);
    return false;
}

//initiation
jQuery(document).ready(function() {
    jQuery('#maincarousel').jcarousel({
        start: scrollOffset,
        scroll: 1,
        size: maincarousel_idsList.length-1,
        //itemVisibleOutCallback: {onAfterAnimation: function(carousel, item, i, state, evt) { carousel.remove(i); }},
        itemLoadCallback: maincarousel_itemLoadCallback,
        initCallback: function(carousel){mainCarousel = carousel;}
    });
    
    $('#slide_next').click(function(){
        if (timer != null) return false;
        slideScroll(1);
        //alert('next');
        return false;
    });
    
    $('#slide_prev').click(function(){
        if (timer != null) return false;
        slideScroll(-1);
        return false;
    });
    
    $('#slide_toggle').click(function(){
        if(isSlide == false){
            startAutoPlay();
        }
        else {
            pauseAutoPlay();
        }
        return false;
    });
    
    //auto start the slide show
    if (autoPlay){
        $('#large-photo img#imgmainpicture').load(function(){
            setTimeout('startAutoPlay()', delay * 1000);
            $(this).unbind('load');
        });
    }
});
