
function isDefined(variable) {
    return (typeof(window[variable]) == 'undefined')? false : true;
}

function loadEvents(fieldname) {
    //document.execCommand("BackgroundImageCache", false, true);
    setFocus(fieldname);
    initialiseImages();
    initialiseEventBar()
   
    if(isDefined("ajaxFunction")) {
        if(!ajaxFunction()) {
            alert("Ajax is not supported in your browser");
        }
    }
}

function setFocus(fieldname) {
    if (fieldname) {
        document.getElementById(fieldname).focus();
    }
}

var images = new Array();
var current_image = 0;
var next_image = 1;
var opacity = 100;      // initial opacity;
var linger = 4000;      // milliseconds to linger on an image
var interval = 50;      // milliseconds to wait between opacity steps
var step = 2;           // opacity step

function initialiseImages() {
    if(document.getElementById("imageContainer")) {
        images = document.getElementById("imageContainer").getElementsByTagName("img");
        setTimeout(pictureFade, linger);
    }
}

function pictureFade() {
    
    if(opacity == 0){
        current_image = ++current_image % images.length;
        next_image = ++next_image % images.length;
        opacity = 100;
        setTimeout(pictureFade, linger);
    }
    else {
        opacity -= step;
        if(opacity == 80) {
            switch(next_image) {
                case 2:
                case 3:
                case 4:
                    document.getElementById("image_credit").innerHTML = document.getElementById("peter_wiles").innerHTML;
                    break;
                default:
                    document.getElementById("image_credit").innerHTML = document.getElementById("richard_austin").innerHTML;
                break;
            }
        }
        images[current_image].style.opacity = opacity/100;
        images[current_image].style.filter = "alpha(opacity = " + opacity + ")";
        images[next_image].style.opacity = (100-opacity)/100;
        images[next_image].style.filter = "alpha(opacity= " + (100 - opacity) + ")";
        
        setTimeout(pictureFade, interval);
    }
}

function getComments() {
    show('comments');
    if(document.getElementById('comment_textarea')) {
        setFocus('comment_textarea');
    }
}

function show(object) {
    document.getElementById(object).style.display='block';
}

function hide(object) {
    document.getElementById(object).style.display='none';
}


/*
 |
 | Functions to handle the accommodation photogalleries and main image relacement
 |
*/

position = 0;

// This function is called by ajax when the listing panel has been loaded
function panelLoaded() {
    position = 0;
}


// Re-positions the strip of thumbnail images within the slider
// slide_ems  - is the amount to slide and should equal the horizontal spacing
// of the images.
// image_count - the number of images available for any particular accommodation
function slide_image(slide_ems, image_count) {
    
    if(slide_ems < 0) {
        position++;
        ems = slide_ems * position;
        document.getElementById("slider_thumbnails").style.left = ems + "em";
    }
    else {    
        position--;
        ems = -slide_ems * position;
        document.getElementById("slider_thumbnails").style.left = ems + "em";
    }
    
    if(position + 4 == image_count) {
        document.getElementById("right_arrow").style.visibility = 'hidden';
    }
    if(position == 0) {
        document.getElementById("right_arrow").style.visibility = 'visible';
        document.getElementById("left_arrow").style.visibility = 'hidden';
    }
    if(position == 1) {
        document.getElementById("left_arrow").style.visibility = 'visible';
    }

}

// Replaces the large image by the large version of the thumbnail that has been selected.
function replace(image) {
    large_image = image.src.replace('_thumb', '_large');
    document.getElementById("main_image").src = large_image;
}

// Replaces virtual tour.
function changeTour(tour) {
    
    code = "<object " +
                "id='virtual_tour' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' " +
                "codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab' " +
            ">" +
                "<param name='src' value='media/PurePlayer.swf' />" +
                "<param name='allowScriptAccess' value='sameDomain' />" +
                "<param name='allowFullScreen' value='true' />" +
                "<param name='flashvars' value='panorama=media/" + tour + "' />" +
                "<embed " +
                    "id='virtual_tour_embed' " + 
                    "allowScriptAccess='sameDomain' allowFullScreen='true' " +
                    "pluginspage='http://www.macromedia.com/go/getflashplayer' " +
                    "flashvars='panorama=media/" + tour + "' " +
                    "type='application/x-shockwave-flash' " +
                    "src='media/PurePlayer.swf' " +
                "/>" +
            "</object>";
    
    document.getElementById("virtual_tour_container").innerHTML = code;
    return true;
}

var event_months;
var event_html;
var event_tab;

function initialiseEventBar() {
    if(!document.getElementById("calendar_bar")) {
        return;
    }
    event_tab = document.getElementById("calendar_bar");
    event_tab = event_tab.getElementsByTagName("li");
    event_tab = event_tab[0];
    event_html = document.getElementById("event_panel").innerHTML;
    event_months = document.getElementById("event_panel");
    event_months = event_months.getElementsByTagName("ul");
    panel_height = document.getElementById("event_panel").scrollHeight;
    
}

function goToMonth(month, tab) {
    if(event_tab) {
        event_tab.className = "menu_left td_menu";
    }
    event_tab = tab.parentNode;
    event_tab.className = "menu_left menu_highlight";
    for(i=0; i<12; i++) {
        if(i < month - 1) {
            event_months[i].style.display = "none";
        }
        else {
            event_months[i].style.display = "block";
        }
    }
    document.getElementById("event_panel").style.height = panel_height + 'px';
}
