var currentMapIndex = 0;
var numMaps = null;
var currentlyFading = false;
var autoPlay = true;
var autoSlideIntDelay = 6000;
var autoSlideDir = 'backward';
var autoSlideInt = setInterval('', 0);
var landingPage = true;

$(document).ready(function(){
	
	if (meetsRequirements()) {
	    $('.prev').click(function(){
	        autoSlidePause(); // put in manual control
	        prevMap();
	    });
	    $('.next').click(function(){
	        autoSlidePause(); // put in manual control
	        nextMap();
	    });
	    /*
	     $('.thumbs a').click(function () {
	     if($(this).hasClass('selected')){ return; }
	     var tmbId = $(this).attr('class').substring(4);
	     getMapIndex(tmbId);
	     })
	     */
	    numMaps = $('.map_data ul li').length;
	    $('.thumb_container').width(numMaps * 60 + 'px');
	    $('.map_nav .total_num').html(numMaps);
	    $('.map_nav .current_num').html(currentMapIndex + 1);
	    displayPins(getRandomArbitary(5, 12), '/resorts.php?rid=' + firstRid);
	    autoSlideInt = setInterval('autoSlide()', autoSlideIntDelay);
	    $('.playPause').click(function(){
	        if (autoPlay) {
	            autoSlidePause();
	        }
	        else {
	            autoSlidePlay();
	        }
	    });
	
	} else {
		$('#requirements').show();
	}
});

function autoSlidePause(){
    $('.playPause').html('<a href="javascript:;" class="play"></a>');
    clearInterval(autoSlideInt);
    autoPlay = false;
}

function autoSlidePlay(){
    $('.playPause').html('<a href="javascript:;" class="pause"></a>');
    autoSlideInt = setInterval('autoSlide()', autoSlideIntDelay);
    autoPlay = true;
}

function autoSlide(){
    if (currentMapIndex == 0) { // first
        autoSlideDir = 'forward';
        nextMap();
    }
    else 
        if (currentMapIndex == numMaps - 1) { // last
            autoSlideDir = 'backward';
            prevMap();
        }
        else {
            if (autoSlideDir == 'forward') {
                nextMap();
            }
            else {
                prevMap();
            }
        }
}

function nextMap(){
    if (currentlyFading) {
        return;
    }
    if (currentMapIndex == numMaps - 1) {
        return;
    }
    else {
        // get the map data
        var newMapData = getMapData(currentMapIndex + 2);
        var currentMapData = getMapData(currentMapIndex + 1);
        // fade all pins
        $('.pins .pin').fadeOut('slow', function(){
            $('.pins').empty();
        });
        // fade in the last .map div in the .maps container
        currentlyFading = true;
        $('.maps .map:last').fadeIn('slow', function(){
            // load the pins
            displayPins(getRandomArbitary(5, 12), currentMapData.resortHref);
            currentlyFading = false;
        });
        // add a new .map div as the last element in the .maps container		
        $('.trailmaps .resort').html('<a href="' + currentMapData.resortHref + '">' + currentMapData.name + '</a>');
        $('.maps').append('<div class="map" style="display: none;"><a href="' + newMapData.resortHref + '"><img src="' + newMapData.src + '" width="509" height="359" border="0" alt="' + newMapData.name + '" /></a></div>');
        // remove the first
        $('.maps .map:first').remove();
        currentMapIndex++;
        setCurrentThumbDisplay();
    }
}

function prevMap(){
    if (currentlyFading) {
        return;
    }
    if (currentMapIndex == 0) {
        return;
    }
    else {
        // get the map data
        var newMapData = getMapData(currentMapIndex - 2);
        var currentMapData = getMapData(currentMapIndex - 1);
        // fade all pins
        $('.pins .pin').fadeOut('slow', function(){
            $('.pins').empty();
        });
        // fade out middle .map div in the .maps container to display the 
        currentlyFading = true;
        $('.maps .map').eq(1).fadeOut('slow', function(){
            // load the pins
            displayPins(getRandomArbitary(5, 12), currentMapData.resortHref);
            currentlyFading = false;
        });
        // add a new .map div as the first element in the .maps container		
        $('.trailmaps .resort').html('<a href="' + currentMapData.resortHref + '">' + currentMapData.name + '</a>');
        $('.maps').prepend('<div class="map"><a href="' + newMapData.resortHref + '"><img src="' + newMapData.src + '" width="509" height="359" border="0" alt="' + newMapData.name + '" /></a></div>');
        // remove the last
        $('.maps .map:last').remove();
        currentMapIndex--;
        setCurrentThumbDisplay();
    }
}

function setCurrentThumbDisplay(){
    $('.thumbs div').removeClass('selected');
    $('.thumbs div.tmb_' + currentMapIndex).addClass('selected');
    // set the scroll
    var currentThumbRightPixel = (currentMapIndex + 1) * 60;
    var scrollRequired = currentThumbRightPixel - $('#map_thumbs').width();
    var currentScrollLeft = document.getElementById('map_thumbs').scrollLeft;
    if (scrollRequired > 0 && currentScrollLeft < scrollRequired) { // scroll it right
        document.getElementById('map_thumbs').scrollLeft = scrollRequired;
    }
    else 
        if ((currentThumbRightPixel - 60) < currentScrollLeft) {
            document.getElementById('map_thumbs').scrollLeft = currentThumbRightPixel - 60;
        }
    $('.map_nav .current_num').html(currentMapIndex + 1);
}

function getMapIndex(){

}

function getMapData(indx){
    return {
        src: $('.map_data ul li').eq(indx).children('a:last').attr('href'),
        name: $('.map_data ul li').eq(indx).children('a:first').html(),
        resortHref: $('.map_data ul li').eq(indx).children('a:first').attr('href')
    };
}

function displayPins(totalPins, theHref){
    var count = 0;
    if (arguments.length > 2) {
        count = arguments[2];
    }
    if (count == totalPins) {
        return;
    }
    var newPinHtml = '<a href="' + theHref + '" class="pin" style="top: ' + getRandomArbitary(10, 320) + 'px; left: ' + getRandomArbitary(10, 485) + 'px; display: none;"><img src="../images/icons/landing_' + (getRandomArbitary(0, 1) ? 'photo' : 'video') + '_pin.png" width="25" height="39" border="0" /></a>';
	//alert(newPinHtml);
    $('.pins').append(newPinHtml);
    $('.pins .pin:last').fadeIn('fast', function(){
        displayPins(totalPins, theHref, count + 1);
    });
}

function getRandomArbitary(min, max){
    return Math.floor(Math.random() * (max - min + 1)) + min;
}
// !!!! duplicated in global.js -  yes on purpose !!!!
function meetsRequirements() {
	// don't test cookies on the landing page
	if (typeof(landingPage) != 'undefined' && landingPage == true) {
		$.cookie('testcookiesenabled', null);
	    $.cookie('testcookiesenabled', 'enabled');
	    if ($.cookie('testcookiesenabled') == 'enabled') {
	    } else {
	    	$('.cookies_req').show();
	    	$.cookie('testcookiesenabled', null);
			return false;
	    }
	}
    if ($.browser.msie && parseInt($.browser.version) < 7 ) {
		$('.ieGreaterThan6_req').show();
		return false;
    }
    if ($.browser.safari) {
		var nonCompatibleVersions = ['416','417','418','419'];
		if ($.inArray(parseInt($.browser.version), nonCompatibleVersions) != -1) {
			$('.safariGreaterThan2_req').show();
			return false;
		}
    }
    if ($.browser.mozilla) {
		var nonCompatibleVersions = ['1.8','1.8.0','1.8.0.9'];
		if ($.inArray($.browser.version, nonCompatibleVersions) != -1) {
			$('.firefoxGreaterThan1_req').show();
			return false;
		}
    }
	return true;
}