$(document).ready(function() {
    // hide all countries and cities by default
    $("#countries ul, #cities ul").hide();
    // show Europe or first non Europe Country
    var found = false;
    var continent_id = 1;
    while (found == false) {
    	var continent_div = $('#continentcountries'+continent_id);
    	if (continent_div.length > 0) {
			continent_div.show();
			found = true;
		}
		else {
			continent_id++;
		}
		if (continent_id == 100) {
			found = true;
		}
    }
    //$('#continentcountries1').show();
    // show UK or first non UK country
    var found = false;
    var country_id = 1;
    while (found == false) {
	    var country_div = $('#countrycities'+country_id);
		if (country_div.length > 0) {
			country_div.show();
			found = true;
		}
		else {
			country_id++;
		}
		if (country_id == 100) {
			found = true;
		}
    }
    $('#continent1 > a, #country'+country_id+' > a').addClass("active");
    // add show/hide icon
    $('#countries li, #continents li').prepend("<img src=\"/gfx/home-show.gif\" />");
    // change it to show for Europe and London
    $('#continent1 img, #country'+country_id+' img').attr("src", "/gfx/home-current.gif");
    
    // click events for continents
    $('#continents > ul').click(function(event) {
        var target = $(event.target);
        if (target[0].nodeName.toLowerCase() == "li") {
            var list = target;
        }
        else {
            var list = target.parent();
        }
        var continent_link = $('a:first', list);
        if (continent_link.hasClass('active')) {
            return true;
        }
        else {
            var id = list.attr("id").replace("continent", "");        
            toggleContinents(id);
            return false;
        }
    });    
    
    // click events for countries
    $('#countries > ul').click(function(event) {
        var target = $(event.target);
        if (target[0].nodeName.toLowerCase() == "li") {
            var list = target;
        }
        else {
            var list = target.parent();
        }
        var country_link = $('a:first', list);
        if (country_link.hasClass('active')) {
            return true;
        }
        else {
            var id = list.attr("id").replace("country", "");
            toggleCountries(id);
            return false;
        }
    });    
    
});

var slidespeed = 500;

function toggleContinents(continent) {
    // change the active class and image
    toggleActive(continent, "continent", "continents");
    $('#countries img').hide();
    // hide all countries
    $('#countries').slideUp(slidespeed, function() {
       $('ul[id^=continentcountries]').hide();
        // show the ones in the continent
        var countries = $('#continentcountries'+continent); 
        countries.show();
        $('#countries').slideDown(slidespeed);
        // get first country in continent and show it
        var first_country = $('li:first', countries).attr("id").replace("country","");
        toggleCountries(first_country, true);        
        $('#countries img').show();
    });
    $('#cities').slideUp(slidespeed);
}

function toggleCountries(country, continent) {
    // change the active class    
    toggleActive(country, "country", "countries");
    // hide all cities
    if (continent) {
        $('ul[id^=countrycities]').hide();
        // show the ones in the country
        var cities = $('#countrycities'+country);
        cities.show();
        $('#cities').slideDown(slidespeed);
        $('#countries img').show();
    }
    else {
        $('#cities').slideUp(slidespeed, function() {
            $('ul[id^=countrycities]').hide();
            // show the ones in the country
            var cities = $('#countrycities'+country);
            cities.show();
            $('#cities').slideDown(slidespeed);
        });        
    }
}

function toggleActive(id, single, plural) {
    $('#'+plural+' a.active').removeClass('active');
    $('a', '#'+single+id).addClass('active');
    $('a', '#'+single+id).addClass('active');
    $('img', '#'+plural).attr('src',  "/gfx/home-show.gif");
    $('img', '#'+single+id).attr('src',  "/gfx/home-current.gif");
}