var centralResAccommodations = [];
var centralResEstablishments = [];
var centralResInitialized = false;
var busy = null;

function addCentralResAccommodation(params) {
    if (centralResInitialized) {
        processAccommodation( params );
    }
    else {
        centralResAccommodations.push( params );
    }
}

function addCentralResEstablishment(params) {
    if (centralResInitialized) {
        processEstablishment( params );
    }
    else {
        centralResEstablishments.push( params );
    }
}

function initializeCentralRes() {
    while (centralResAccommodations.length > 0) {
        processAccommodation( centralResAccommodations.pop() );
    }

    while (centralResEstablishments.length > 0) {
        processEstablishment( centralResEstablishments.pop() );
    }
    
    centralResInitialized = true;
}

function processAccommodation(params) {
    if( params["key"] ) {
        if( params["calendar_div"] ) {
            loadCentralResCalendar( params["key"], params["calendar_div"] );
        }
        
        if( params["rates_div"] ) {
            loadCentralResRates( params["key"], params["rates_div"] );
        }
    }
}

function processEstablishment(params) {
    if( params["key"] ) {
        if( params["matrix_div"] ) {
            loadCentralResMatrix( params["key"], params["matrix_div"], params["seasonal_year"] );
        }
    }
}

function loadCentralResCalendar(accommodationId, divId) {
    var elScript = document.createElement('script');
    elScript.src = 'http://www.centralreservations.net/establishment/embedded_calendar?accommodation_id=' + 
                   accommodationId + '&div_to_update=' + divId;
    document.body.appendChild( elScript );
}

function loadCentralResRates(accommodationId, divId) {
    var elScript = document.createElement('script');
    elScript.src = 'http://www.centralreservations.net/establishment/embedded_rates?accommodation_id=' + 
                   accommodationId + '&div_to_update=' + divId;
    document.body.appendChild( elScript );
}

function loadCentralResMatrix(establishmentId, divId, seasonal_year) {
    var elScript = document.createElement('script');
    elScript.src = 'http://www.centralreservations.net/establishment/embedded_matrix?establishment_id=' + 
                   establishmentId + '&div_to_update=' + divId + '&seasonal_year=' + seasonal_year;
    document.body.appendChild( elScript );
}

function showCentralResCalendar(divId, calendar_content) {
    calendar_div = document.getElementById(divId);
    if( calendar_div != null ) {
        calendar_div.innerHTML = calendar_content;
    }
    return false;
}

function showCentralResRates(divId, rate_content) {
    rates_div = document.getElementById(divId);
    if( rates_div != null ) {
        rates_div.innerHTML = rate_content;
    }
    return false;
}

function showCentralResMatrix(divId, matrix_content) {
    matrix_div = document.getElementById(divId);
    if( matrix_div != null ) {
        matrix_div.innerHTML = matrix_content;
    }
    return false;
}

function changeCentralResMonth(url, containerid) {
    var ctrl = indicateBusy(containerid);
    var elScript = document.createElement('script');
    elScript.src = url;
    document.body.appendChild( elScript );
}

function changeCentralResSeason(url) {
    var elScript = document.createElement('script');
    elScript.src = url;
    document.body.appendChild( elScript );
}

function scrollToElement(theElement){
  var selectedPosX = 0;
  var selectedPosY = 0;
              
  while(theElement != null){
    selectedPosX += theElement.offsetLeft;
    selectedPosY += theElement.offsetTop;
    theElement = theElement.offsetParent;
  }
                        		      
  window.scrollTo(selectedPosX,selectedPosY);
}

function exclusiveCheck(which, how_many, Day)
{
  currentValue = which.checked
  for (i=0; i< how_many; i++) {
    element = document.getElementById(Day + "_" + i);
	if ( element )
		element.checked = false;
  }
  which.checked = currentValue;
}

function addJavascript(jsname,pos) {
    var th = document.getElementsByTagName(pos)[0];
    var s = document.createElement('script');
    s.setAttribute('type','text/javascript');
    s.setAttribute('src',jsname);
    th.appendChild(s);
}

function addStylesheet(url) {
    var fileref=document.createElement("link");
    fileref.setAttribute("rel", "stylesheet");
    fileref.setAttribute("type", "text/css");
    fileref.setAttribute("href", url);
    document.getElementsByTagName("head")[0].appendChild(fileref);
}

function addCssSnippet(cssCode) {
    var styleElement = document.createElement("style");
    styleElement.type = "text/css";

    if (styleElement.styleSheet) {
        styleElement.styleSheet.cssText = cssCode;
    } else {
        styleElement.appendChild(document.createTextNode(cssCode));
    }

    document.getElementsByTagName("head")[0].appendChild(styleElement);
}

function indicateBusy(containerId) {
    busy = getBusyOverlay(document.getElementById(containerId),{color:'black', opacity:0.4, text:'', style:'color:white'},{color:'#fff', size:64, type:'o'});
    return busy;
}

function clearBusy() {
    if( busy != null ) {
        busy.remove();
        busy = null;
    }
}

function cleanupCentralRes() {
    clearBusy();
}

addStylesheet( 'http://www.centralreservations.net/stylesheets/embedded.css' );
addJavascript( 'http://www.centralreservations.net/javascripts/cvi_busy_lib.js', 'head' );

if (window.addEventListener) {
    window.addEventListener( "load", initializeCentralRes, false );
    window.addEventListener( "unload", cleanupCentralRes, false );
}
else if (document.addEventListener) {
    document.addEventListener( "load", initializeCentralRes, false );
    document.addEventListener( "unload", cleanupCentralRes, false );
}
else if (window.attachEvent) {
    window.attachEvent( "onload", initializeCentralRes );
    window.attachEvent( "onunload", cleanupCentralRes );
}
else {
    alert( "Your browser is not compatible with our calendars. Please call Central Reservations at 1-800-422-3048 for availability." );
}