// JavaScript Document
// Event.observe(window, 'load', init);


// -----------------------------------------------------------------------------
// Globals
// Major version of Flash required
var requiredMajorVersion = 8;
// Minor version of Flash required
var requiredMinorVersion = 0;
// Minor version of Flash required
var requiredRevision = 0;
// the version of javascript supported
var jsVersion = 1.0;

// Detect Client Browser type
var isIE  = (navigator.appVersion.indexOf("MSIE") !== -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") !== -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") !== -1) ? true : false;
//var isIE8  = (navigator.appVersion.indexOf("MSIE 8.0") !== -1) ? true : false;
//var isIE7  = (navigator.appVersion.indexOf("MSIE 7.0") !== -1) ? true : false;
var isIE6  = (navigator.appVersion.indexOf("MSIE 6.0") !== -1) ? true : false;
// -----------------------------------------------------------------------------

function isValid(stringValue, required, dataType, arg4) {
    if (required === "0" && isEmptyString(stringValue))
    {
        // it's not required, so empty is ok...
        return true;
    }
    else if (required === "1" && isEmptyString(stringValue))
    {
        // it's required, so empty is NOT ok...
        return false;
    }
    else
    {
        // whether it's required or not, make sure the data is correct...
        switch (dataType)
        {


        case "email":
            return isMatch(stringValue, /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/);

		}
    }
}
function isMatch(stringValue, regexString)
{
    var regex = new RegExp(regexString);
    var matches = regex.exec(stringValue);
    return (matches !== null && stringValue === matches[0]);
}

function init() {
	// Init IE6 specific code
	if (isIE6) {
		nav_init();
	}

	// Set horizontal scrollbar
	if (screen.width < 1024) {
		$$("html").each (
			function (element) {
				$(element).setStyle({overflow: 'auto'});
			}

		);
	}

	// Search button?
	searchbutton_init();

	// Weather Widget
	weather_init();

	// Expanding content sections
	expander_init();

	// Shadow borders
	applyShadowBorder("big");

	// Fancy Tables
	applyTableStyle();

	// Add crap to the menus
	menuTweaks();
	
	// lodging updates..
	attachReadMoreToggler();
	if ($$('body.lodging-main, body.hoa-detail').length == 0) {
		calendars_init();
	}

	// Apply the modal windows - for large product pictures
	// Probably needs tweaks for other purposes
	//document.getElementsByClassName('modal').each(function(link){
	$$('a.modal').each(function(link){
		new Control.Modal(link, {fade: true, overlayDisplay: true});
	});

    if (document.getElementById('gallery')) {
        document.currentAlbum = document.getElementById('gallery').title;
        new Control.Modal("gallery", {opacity: 0.74, fade: true,overlayDisplay:	true});
	}
	$$('a.gallery-link').each(function(e){//alert(e.title);
        document.currentAlbum = e.title;
        new Control.Modal(e, {opacity: 0.74, fade: true,overlayDisplay:	true});
	});
	if (typeof(page) !== "undefined") {
		page.init();
	}
}

function disableAutoComplete () {

	$$('input.autoCompleteOff').each(function(element){
		element.setAttribute("autocomplete", "off");
	});
}
function weather_init() {

	if (document.getElementById('weatherWidget') !== null) {
		var hasRightVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);

		// Mac tweak
		//if (Client.OS === "Mac") { $('weatherWidget').setStyle({left: '577px'}); }
		if(hasRightVersion) {



				var so = new SWFObject(weatherWidgetFlashUrl, "mymovie", "320", "38", "8", "transparent");
				so.addParam("quality", "high");
				so.addParam("wmode", "transparent");
				so.addParam("salign", "t");
				so.write("weatherWidget");

		  }
	  }
}

function oldFlashMessage(element) {
var alternateContent = '<p>&nbsp;<\/p>'
			    + '<p>&nbsp;<\/p>'
			    + '<p>&nbsp;<\/p>'
			    + '<p>&nbsp;<\/p>'
			    + '<p>&nbsp;<\/p>'
			    + '<p><strong>An old version of the Flash plugin was detected.<\/strong><\/p>'
			    + '<p class="small"><a href="http://www.macromedia.com/go/getflash/">Please upgrade your Flash plugin.<\/a><\/p>';

			    $(element).innerHTML=alternateContent;

}

jsVersion = 1.1;
// JavaScript helper required to detect Flash Player PlugIn version information
function JSGetSwfVer(i){
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	if (navigator.plugins !== null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
      		var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			descArray = flashDescription.split(" ");
			tempArrayMajor = descArray[2].split(".");
			versionMajor = tempArrayMajor[0];
			versionMinor = tempArrayMajor[1];
			if ( descArray[3] !== "" ) {
				tempArrayMinor = descArray[3].split("r");
			} else {
				tempArrayMinor = descArray[4].split("r");
			}
      		versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0;
            flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
      	} else {
			flashVer = -1;
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") !== -1) flashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") !== -1) flashVer = 3;
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") !== -1) flashVer = 2;
	// Can't detect in all other cases
	else {

		flashVer = -1;
	}
	return flashVer;
}
// If called with no parameters this function returns a floating point value
// which should be the version of the Flash Player or 0.0
// ex: Flash Player 7r14 returns 7.14
// If called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
 	reqVer = parseFloat(reqMajorVer + "." + reqRevision);
   	// loop backwards through the versions until we find the newest version
	for (i=25;i>0;i--) {
		if (isIE && isWin && !isOpera) {
			versionStr = VBGetSwfVer(i);
		} else {
			versionStr = JSGetSwfVer(i);
		}
		if (versionStr === -1 ) {
			return false;
		} else if (versionStr !== 0) {
			if(isIE && isWin && !isOpera) {
				tempArray         = versionStr.split(" ");
				tempString        = tempArray[1];
				versionArray      = tempString .split(",");
			} else {
				versionArray      = versionStr.split(".");
			}
			versionMajor      = versionArray[0];
			versionMinor      = versionArray[1];
			versionRevision   = versionArray[2];

			versionString     = versionMajor + "." + versionRevision;   // 7.0r24 === 7.24
			versionNum        = parseFloat(versionString);
        	// is the major.revision >= requested major.revision AND the minor version >= requested minor
			if ( (versionMajor > reqMajorVer) && (versionNum >= reqVer) ) {
				return true;
			} else {
				return ((versionNum >= reqVer && versionMinor >= reqMinorVer) ? true : false );
			}
		}
	}
	return (reqVer ? false : 0.0);
}

function menuTweaks() {
	$$("#restaurantMenu h1").each(
		function(element) {
			 newHTML = "<img src='/ui/img/menuBgLeft.gif' style='padding-right: 7px;' />"+element.innerHTML+"<img src='/ui/img/menuBgRight.gif'  style='padding-left: 7px;' />";
			 // For some reason IE adds a !@#$ hard return
			 newHTML = newHTML.replace(/<br>|<BR>/,'');
			 element.innerHTML = newHTML;

		}
	);
	if($('restaurantMenu')) {
		new Insertion.Bottom($('restaurantMenu'), "<br /><img class='menuBottom' src='/ui/img/menuBottom.gif' />");
	}
}
function applyTableStyle () {


	$$('table.fancyTable').each(
		function(element) {
			var colSpan = 0;
			var tableRows =  $(element).getElementsByTagName('tr');


			if (tableRows.length > 0) {
				// Create the header
				$(tableRows[0]).addClassName('header');

				// Create the footer
				$(tableRows[tableRows.length-1]).addClassName('footer');

				// Mark the right most row
				for (var i=0;i<tableRows.length;i++ ) {

						// Loop through the cells
						tableCells = $(tableRows[i]).immediateDescendants();
						if($(tableCells[tableCells.length-1])) {
							$(tableCells[tableCells.length-1]).addClassName('rightMost');
						}
						colSpan = tableCells.length;

				}
			}
		}
	);


}

function formbutton_init () {
	// This fixes IE6's idiotic transparency handling for
	// form buttons.
	$('save').src="";
	$('back').src="";

}

function searchbutton_init() {
    // Create mouse overs for go button on search form
    if (document.getElementById('searchButton') !== null) {
        Event.observe('searchButton', "mouseover", function(evt) {Event.element(evt).src='/ui/img/searchButtonOn.gif'});
        Event.observe('searchButton', "mouseout", function(evt) {Event.element(evt).src='/ui/img/searchButton.gif'});
    }
}


// JavaScript Document

function expander_init() {

	// Attach click events to all expander divs
	$$('div.expander').each(
		function(element) {
			Event.observe(element, "click", expander_click );
		}
	);

	// Attach click events to all expander divs
	$$('div.extra').each(
		function(element) {
			Event.observe(element, "click", extra_click );
		}
	);
}

function expander_click(event) {
	var elementClicked = Event.element(event);

	var extra;
	var expander;

	if (elementClicked.match('div.expander')) {
		extra = elementClicked.next('div.extra');
		expander = elementClicked;
	}
	else {
		extra = elementClicked.up('div.expander').next('div.extra');
		expander = elementClicked.up('div.expander');
	}

	toggleExpander(expander, extra);

}



function extra_click(event) {
	var elementClicked = Event.element(event);

	var extra;
	var expander;

	if (elementClicked.match('div.extra')) {
		extra = elementClicked;
		expander = elementClicked.previous('div.expander');
	}
	else {
		extra  = elementClicked.up('div.extra');
		expander = extra.previous('div.expander');
	}

	toggleExpander(expander, extra);
}


function expander_hover (event) {
	var elementHovered = Event.element(event);
	var element;

	if (elementHovered.match('div.expander_outer')) {
		element = elementHovered;
	}
	else {
		element = elementHovered.up('div.expander_outer');
	}

	if (!element.hasClassName('hover')) new Effect.Highlight(element, {startcolor:'#fff6e5', endcolor:'#ffffff'});

	element.addClassName('hover')
}


function expander_unhover (event) {
	var elementHovered = Event.element(event);
	if (elementHovered.match('div.expander_outer')) {
		elementHovered.removeClassName('hover');
	}
	else {
		elementHovered.up('div.expander_outer').removeClassName('hover');
	}
}




function toggleExpander(expander, extra) {

	if (extra.visible()) {

		Effect.BlindUp(extra, {
			afterFinish: function() {
				expander.addClassName('closed');
			}
		});
		extra.removeClassName("open");

	}
	else {
		expander.removeClassName('closed');
		Effect.BlindDown(extra);
		extra.addClassName("open");
	}
}
// JavaScript Document

function nav_init() {
	$$("ul#leftNav li").each(
		function(element) {
			Event.observe(element, "mouseover", nav_mouseover);
			Event.observe(element, "mouseout", nav_mouseout);
		}
	);
}

function nav_mouseover(evt) {
	var elementClicked = Event.element(evt);

	if (elementClicked.match("a")) elementClicked = elementClicked.up('li');

	elementClicked.addClassName("over");
}

function nav_mouseout(evt) {
	var elementClicked = Event.element(evt);

	if (elementClicked.match("a")) elementClicked = elementClicked.up('li');

	elementClicked.removeClassName("over");
}
function applyShadowBorder(shadowType) {
	// get all elements that match the specified css selector
	$$(".shadow, .fancyTable").each(
		function(element) {
			// create the objects that make up the table wrapper
			var wrapTable = document.createElement('table');
			wrapTable.className = "shadowWrapper";
			var wrapTbody = document.createElement('tbody');

			var topRow = document.createElement('tr');
			var topLeftCell = document.createElement('td');
			topLeftCell.className = "topLeft_" + shadowType;
			var topMiddleCell = document.createElement('td');
			topMiddleCell.className = "topMiddle_" + shadowType;
			var topRightCell = document.createElement('td');
			topRightCell.className = "topRight_" + shadowType;

			var middleRow = document.createElement('tr');
			var middleLeftCell = document.createElement('td');
			middleLeftCell.className = "middleLeft_" + shadowType;
			var middleMiddleCell = document.createElement('td');
			middleMiddleCell.className = "middleMiddle_" + shadowType;
			var middleRightCell = document.createElement('td');
			middleRightCell.className = "middleRight_" + shadowType;

			var bottomRow = document.createElement('tr');
			var bottomLeftCell = document.createElement('td');
			bottomLeftCell.className = "bottomLeft_" + shadowType;
			var bottomMiddleCell = document.createElement('td');
			bottomMiddleCell.className = "bottomMiddle_" + shadowType;
			var bottomRightCell = document.createElement('td');
			bottomRightCell.className = "bottomRight_" + shadowType;

			// Build the table
			wrapTable.appendChild(wrapTbody);
			wrapTbody.appendChild(topRow);
			wrapTbody.appendChild(middleRow);
			wrapTbody.appendChild(bottomRow);

			// Build the Top row
			topRow.appendChild(topLeftCell);
			topRow.appendChild(topMiddleCell);
			topRow.appendChild(topRightCell);

			// Build the Middle row
			middleRow.appendChild(middleLeftCell);
			middleRow.appendChild(middleMiddleCell);
			middleRow.appendChild(middleRightCell);

			// Build the bottom row
			bottomRow.appendChild(bottomLeftCell);
			bottomRow.appendChild(bottomMiddleCell);
			bottomRow.appendChild(bottomRightCell);

			// duplicate the element to be shadowed and put it in the table
			var newElement = element.cloneNode(true);
			middleMiddleCell.appendChild(newElement);

			// replace the old image with the new div-wrapped version
			element.parentNode.replaceChild(wrapTable,element);
		}
	);

}

/* START PHOTO ALBUM */

document.currentAlbum = "";
var currentIndex = 0;
var defaultAlbum="";
var offset = 0;
var max = 0;
document.pgTimer = null;

var playing = false;

function albumPrev () {
    if (offset > 0) {
        offset = offset - 7;
        loadThumbs(document.currentAlbum);
    }
}

function albumNext() {
    if ((offset + 7) < max) {
        offset = offset + 7;
        loadThumbs(document.currentAlbum);
    }
}

function photoPrev() {
    if (currentIndex > 0) {
        currentIndex = currentIndex - 1;
        if ((currentIndex+1) === offset) {
            offset = offset - 7;
            loadThumbs(document.currentAlbum);
        }
        loadAlbum(document.currentAlbum, currentIndex);
    }
}

function photoNext() {

     if ((currentIndex +1 ) < max) {
        currentIndex = currentIndex + 1;

        if (currentIndex ===(offset + 7) ) {
            offset = offset + 7;
            loadThumbs(document.currentAlbum);
        }
        loadAlbum(document.currentAlbum, currentIndex);
     }
     else {
        playing = false;
        document.getElementById('albumPlay').className = "";
        clearTimeout(document.pgTimer);
     }

}

function albumPlay() {
    if (playing === false) {
        loadAlbum(document.currentAlbum, -1);
        playing = true;
        document.getElementById('albumPlay').className = "pause";
        doPlay();
    }
    else {
        playing = false;
        document.getElementById('albumPlay').className = "";
        clearTimeout(document.pgTimer);
    }
}

function doPlay() {
    if (playing === true) {
        photoNext();
        document.pgTimer = setTimeout("doPlay();", 5000);
    }
}

function showPhotoGallery(album) {

    if(album) document.currentAlbum = album;

}

function loadGallery(photoAlbumsData) {

    var currentIndex = 0;

    var offset = 0;
    var max = 0;
    var first=true;
    var albumList = document.createElement("ul");


    for (album in photoAlbumsData){
        var albumListItem = document.createElement("li");
        albumListItem.innerHTML = album;
        albumListItem.onclick = function() {loadAlbum(this.innerHTML);};
        albumList.appendChild(albumListItem);

        // Grab the default album
        if (first === true) {
                defaultAlbum = album;
                first = false;
        }
    }

    document.getElementById('pgList').appendChild(albumList);

    if (document.currentAlbum==="") {
    // Load the default album
    loadAlbum(defaultAlbum);

    }
    else {
        loadAlbum(document.currentAlbum);
    }
    $$("#pgList ul li").each(
        function(element) {
            if ( element.className ) element.className = "";

            if (element.innerHTML ===document.currentAlbum || element.innerHTML ===document.currentAlbum.replace('&', '&amp;')  ) {
                element.className = "selected";
            }
        }
    );
}


loadAlbum = function(albumName, photoIndex){
    // escaped ampersands will screw this up
    var unCorrectedAlbumName = albumName;
    albumName = albumName.replace("&amp;",'&');

    if(!photoIndex) {
        currentIndex = 0;
    }
    else {
        currentIndex = photoIndex;
    }

    if(document.currentAlbum !== ""){

        new Effect.Fade('pgStuff',{
            afterFinish: function() {
                document.getElementById('pgPhoto').style.backgroundImage = "url('"+photoAlbums[albumName].photos[currentIndex].url+"')";
                document.getElementById('pgPhotoTitle').innerHTML = photoAlbums[albumName].photos[currentIndex].title;
                document.getElementById('pgPhotoText').innerHTML = photoAlbums[albumName].photos[currentIndex].description;
                new Effect.Appear('pgStuff', { queue: 'end', from: 0, to: 1, duration: .9});


                max = photoAlbums[albumName].photos.length ;

                if (document.currentAlbum !== albumName) {
                    loadThumbs(albumName);

                    $$("#pgList ul li").each(
                        function(element) {
                            if ( element.className ) element.className = "";
                            //console.log(element.innerHTML + " " + unCorrectedAlbumName + " " + albumName);
                            if (element.innerHTML ===unCorrectedAlbumName  || element.innerHTML === albumName ) {

                                element.className = "selected";
                            }
                        }
                    );
                }


                var thumbArray = $$("img.pgThumb");
               	var idx = currentIndex - offset;
               	if (idx < 0) {
               		idx = 0;
               	} else if (idx >= thumbArray.length) {
               		idx = thumbArray.length -1;
               	}
                thumbArray.each(function(element, index){
                	if (index == idx) {
                    	element.style.borderColor="#eeb242";
                    } else {
                    	element.style.borderColor="#1d261c";
                    }
                });

                if (!thumbArray[idx]) {
                    loadThumbs(albumName);
                }

               	//thumbArray[idx].setStyle({ borderColor:'#eeb242' });
               	//alert(thumbArray[idx]);

                document.currentAlbum = albumName;




            }, to: 0.1, from: 1, duration: .9

        });


    }
    else {

         document.getElementById('pgPhoto').style.backgroundImage = "url('"+photoAlbums[albumName].photos[currentIndex].url+"')";
         document.getElementById('pgPhotoTitle').innerHTML = photoAlbums[albumName].photos[currentIndex].title;
         document.getElementById('pgPhotoText').innerHTML = photoAlbums[albumName].photos[currentIndex].description;
         max = photoAlbums[albumName].photos.length ;

        if (document.currentAlbum !== albumName) {
            loadThumbs(albumName);

            $$("#pgList ul li").each(
                function(element) {
                    if ( element.className ) element.className = "";
                     //console.log(element.innerHTML + " " + unCorrectedAlbumName + " " + albumName);
                    if (element.innerHTML ===unCorrectedAlbumName || element.innerHTML === albumName ) {
                        element.className = "selected";
                    }
                }
            );
        }


        var thumbArray = $$("img.pgThumb");
        thumbArray.each(function(element){
            element.style.borderColor="#1d261c";
        });

        if (!thumbArray[currentIndex - offset]) {
            loadThumbs(albumName);

        }


        thumbArray[currentIndex - offset].style.borderColor='#eeb242';

        document.currentAlbum = albumName;
    }


}

loadThumbs = function (albumName) {

    var thumbString = "";
    var thumbMax = offset+7;
    if (thumbMax > max) thumbMax = max;


    for (i = offset; i < thumbMax; i++) {
            thumbString = thumbString + '<img onclick="thumbClick(\''+albumName +'\',' + i + ');" class="pgThumb" src="' + photoAlbums[albumName].photos[i].thumb + '"/>';
    }
    document.getElementById('pgThumbs').innerHTML = thumbString;

}

closeGallery = function() {

    clearTimeout(document.pgTimer);
    Control.Modal.close();
}
thumbClick = function (album, i) {

    if (playing === true) return false;
    loadAlbum(album, i);

}
/**
 * stuff from old site for lodging pages...
 */
function openGuestBridgeWindow(siteId) {
	var url = 'http://res.guestbridge.com/r.asp?siteid=' + siteId;
	window.open(url, 'GuestBridgeWindow', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=800,height=640');
}

function openTrailMap() {
  width = 740;
  height = 500;
  scrolling = "no";
  features = "width="+width+","
           + "height="+height+","
           + "toolbar=no,"
           + "location=no,"
           + "status=no,"
           + "menubar=no,"
           + "scrollbars="+scrolling+","
           + "top="+(window.screen.height-height)/2+","
           + "left="+(window.screen.width-width)/2;
	window.open("/resources/images/trailmap/trail.jsp","win"+Math.round(Math.random()*1000),features);
}


function trailMapPopup(){
	window.open('/trail-map','DeerValleyTrailMap','width='+screen.width+', height='+screen.height+',scrollbars=no,location=no,toolbar=no,menubar=no, left=0,top=0,resizable=yes');
}

function topNavOver(navItemId) {
	var p = Element.positionedOffset($('topNav'+navItemId));
	//alert(p.left);
	var subNav = $('subNav'+navItemId);
	if (isIE6) { $$('form select').invoke('hide'); }
	if (subNav != null) {
		//alert('subNav.getWidth() = '+subNav.getWidth());
		//alert(subNav.getWidth() - 1130px);
//		if (isIE) {
//			subNav.setStyle({left: (p.left-55)+'px', top: p.top+22+'px'});
//		} else {
			if (p.left > 700) {
				subNav.setStyle({left: (p.left - subNav.getWidth() + 70)+'px', top: p.top+25+'px'});
			} else if (p.left > 500) {
				subNav.setStyle({left: (p.left - subNav.getWidth() + 250)+'px', top: p.top+25+'px'});
			} else if (p.left > 400) {
				subNav.setStyle({left: (p.left - subNav.getWidth() + 300)+'px', top: p.top+25+'px'});
			} else {
				subNav.setStyle({left: (p.left-16)+'px', top: p.top+25+'px'});
			}
//		}
	}
}
function topNavOut(navItemId) {
	var subNav = $('subNav'+navItemId);
	if (subNav != null)
		$('subNav'+navItemId).setStyle({left: '-9999px'});
	if (isIE6) { $$('form select').invoke('show'); }
}
function refreshCaptchaImage(imgElement) {
	$(imgElement).src = '/captcha.jpg?'+(new Date()).getTime();
}
function attachReadMoreToggler() {
	$$('a#toggler-bttn').each(function(toggler){
		Event.observe(toggler, 'click', function(evnt){
			Event.stop(evnt);
			var more = $('more');
			if (more.visible()) {
				Effect.BlindUp(more, { afterFinish: function() { toggler.addClassName('more'); toggler.removeClassName('less'); }});
			} else {
				Effect.BlindDown(more, { afterFinish: function() { toggler.addClassName('less'); toggler.removeClassName('more'); }});
			}
		});
	});
}
var t;
function slideshow(start, last) {
	if (start > last) start = 1;
	if (start < 1) start = last;
	//alert(start);
	var interval = 5000;
	var frame = start;
	var nextframe = start+1;
	//wtf???
	if (nextframe > last) nextframe = 1;
	if (nextframe < 1) nextframe = last;
	Effect.Appear('image'+frame,{duration:.5,from:0.0,to:1.0, afterSetup: function(){ setLabel(frame-1); } });
	t = setInterval(function() {
		Effect.Fade('image'+frame,{duration:1.0,from:1.0,to:0.0,afterSetup:function(){
			//alert(nextframe);
			//$('image'+frame).hide();
			Effect.Appear('image'+nextframe,{duration:1.0,from:0.0,to:1.0, afterSetup: function(){ setLabel(frame-1); } });
			frame = nextframe;
			//nextframe = (frame == last) ? start : nextframe+1;
			nextframe = (frame == last) ? 1 : nextframe+1;
			//nextframe++;
			//if (nextframe > last) nextframe = 1;
			//if (nextframe < 1) nextframe = last;
		}});
	},interval);
	return;
}
function restart_slideshow(current, start, last) {
	clearInterval(t);
	//if (start > last) start = 1;
	//if (start < 1) start = last;
	//alert(start);
	Effect.Fade('image'+current,{duration:1.0,from:1.0,to:0.0,afterSetup:function(){
		//$('image'+current).hide();
		slideshow(start, last);
	}});
	return;
}
function getCurrentSlide() {
	var id = 0;
	$$('div#slides img.slide').each(function(e){
		//alert(e.visible());
		if (e.visible()) {
			id = e.id;
			id = id.replace(/image/, '');
			id = parseInt(id);
		}
	});
	return id;
}
function formatDate(d) {
	var mm = (d.getMonth() + 1) + '';
	if (mm.length == 1) mm = '0' + mm;
	var dd = d.getDate() + '';
	if (dd.length == 1) dd = '0' + dd;
	var yyyy = d.getFullYear();
	return mm + '/' + dd + '/' + yyyy;
}
function calendars_init() {
	var startDate = null;
	var endDate = null;
	var altStartDate = null;
	var altEndDate = null;
	$$('img.calendar-bttn, body.info-request img.yui-cal, input#arrival, input#departure').each(function(e){
		Event.observe(e, 'click', function(evnt){
		
//			$$('#arrivalCalendar, #departureCalendar').each(function(calContainer){ calContainer.update(); });
		
			YAHOO.namespace("lodging.calendar");
			//alert(YAHOO.lodging.calendar.cal);// = new YAHOO.widget.Calendar("cal1","cal1Container");
			YAHOO.lodging.calendar.cal;

			function showNumberOfDays() {
				if (startDate != null && endDate != null) {
//					alert(startDate.getTime());
//					alert(endDate.getTime());
					var diff = new Date();
					diff.setTime(Math.abs(startDate.getTime() - endDate.getTime()));
					var days = Math.floor(diff.getTime() / (1000 * 60 * 60 * 24)); 
//					alert(days);
					$('nights').value = days;
				}
			}
			
            function resetHandler() {
                // Reset the current calendar page to the select date, or 
                // to today if nothing is selected.
                var selDates = YAHOO.lodging.calendar.cal.getSelectedDates();
                var resetDate;
    
                if (selDates.length > 0) {
                    resetDate = selDates[0];
                } else {
                    resetDate = YAHOO.lodging.calendar.cal.today;
                }
    
                YAHOO.lodging.calendar.cal.cfg.setProperty("pagedate", resetDate);
                YAHOO.lodging.calendar.cal.render();
            }
            
            function selectHandler(arr) {
            	alert(arr);
            }
			
			if (YAHOO.lodging.calendar.cal) {
				YAHOO.lodging.calendar.cal.hide();
			}
			
			if (e.id == 'arrival-bttn' || e.id == 'arrival') {
				//alert(startDate);
				YAHOO.lodging.calendar.cal = new YAHOO.widget.Calendar('cal1', 'arrivalCalendar', { title: 'Arrival Date', close: true });
				YAHOO.lodging.calendar.cal.selectEvent.subscribe(function(){
					if (YAHOO.lodging.calendar.cal.getSelectedDates().length > 0) {
						var selDate = YAHOO.lodging.calendar.cal.getSelectedDates()[0];
						startDate = selDate;
	                    $('arrival').value = formatDate(selDate);
					} else {
						$('arrival').value = '';
					}
					$('arrival').focus();
					$('departure').focus();
					YAHOO.lodging.calendar.cal.hide();
					showNumberOfDays();
				});
			} else if (e.id == 'departure-bttn' || e.id == 'departure') {
				var calConfig = { title: 'Departure Date', close: true };
				if (startDate != null) {
					var _pagedate = (startDate.getMonth() + 1) + '/' + startDate.getFullYear();
					calConfig = { title: 'Departure Date', close: true, pagedate: _pagedate };
				}
				YAHOO.lodging.calendar.cal = new YAHOO.widget.Calendar('cal2', 'departureCalendar', calConfig);
				YAHOO.lodging.calendar.cal.selectEvent.subscribe(function(){
					if (YAHOO.lodging.calendar.cal.getSelectedDates().length > 0) {
						var selDate = YAHOO.lodging.calendar.cal.getSelectedDates()[0];
						endDate = selDate;
	                    $('departure').value = formatDate(selDate);
					} else {
						$('departure').value = '';
					}
					$('departure').focus();
					//$('nights').focus();
					YAHOO.lodging.calendar.cal.hide();
					showNumberOfDays();
				});
			} else if (e.id == 'preferredArrival-bttn') {
				YAHOO.lodging.calendar.cal = new YAHOO.widget.Calendar('cal1', 'arrivalCalendar', { title: 'Arrival Date', close: true });
				YAHOO.lodging.calendar.cal.selectEvent.subscribe(function(){
					if (YAHOO.lodging.calendar.cal.getSelectedDates().length > 0) {
						var selDate = YAHOO.lodging.calendar.cal.getSelectedDates()[0];
						startDate = selDate;
	                    $('preferredArrivalDate').value = formatDate(selDate);
					} else {
						$('preferredArrivalDate').value = '';
					}
					YAHOO.lodging.calendar.cal.hide();
				});
			} else if (e.id == 'preferredDeparture-bttn') {
				var calConfig = { title: 'Departure Date', close: true };
				if (startDate != null) {
					var _pagedate = (startDate.getMonth() + 1) + '/' + startDate.getFullYear();
					calConfig = { title: 'Departure Date', close: true, pagedate: _pagedate };
				}
				YAHOO.lodging.calendar.cal = new YAHOO.widget.Calendar('cal2', 'departureCalendar', calConfig);
				YAHOO.lodging.calendar.cal.selectEvent.subscribe(function(){
					if (YAHOO.lodging.calendar.cal.getSelectedDates().length > 0) {
						var selDate = YAHOO.lodging.calendar.cal.getSelectedDates()[0];
						endDate = selDate;
	                    $('preferredDepatureDate').value = formatDate(selDate);
					} else {
						$('preferredDepatureDate').value = '';
					}
					YAHOO.lodging.calendar.cal.hide();
				});
			} else if (e.id == 'alternateArrival-bttn') {
				YAHOO.lodging.calendar.cal = new YAHOO.widget.Calendar('cal3', 'alternateArrivalCalendar', { title: 'Alternate Arrival Date', close: true });
				YAHOO.lodging.calendar.cal.selectEvent.subscribe(function(){
					if (YAHOO.lodging.calendar.cal.getSelectedDates().length > 0) {
						var selDate = YAHOO.lodging.calendar.cal.getSelectedDates()[0];
						altStartDate = selDate;
	                    $('alternateArrivalDate').value = formatDate(selDate);
					} else {
						$('alternateArrivalDate').value = '';
					}
					YAHOO.lodging.calendar.cal.hide();
				});
			} else if (e.id == 'alternateDeparture-bttn') {
				var calConfig = { title: 'Alternate Departure Date', close: true };
				if (altStartDate != null) {
					var _altdate = (altStartDate.getMonth() + 1) + '/' + altStartDate.getFullYear();
					calConfig = { title: 'Alternate Departure Date', close: true, pagedate: _altdate };
				}
				YAHOO.lodging.calendar.cal = new YAHOO.widget.Calendar('cal4', 'alternateDepartureCalendar', calConfig);
				YAHOO.lodging.calendar.cal.selectEvent.subscribe(function(){
					if (YAHOO.lodging.calendar.cal.getSelectedDates().length > 0) {
						var selDate = YAHOO.lodging.calendar.cal.getSelectedDates()[0];
						altEndDate = selDate;
	                    $('alternateDepatureDate').value = formatDate(selDate);
					} else {
						$('alternateDepatureDate').value = '';
					}
					YAHOO.lodging.calendar.cal.hide();
				});
			}
			YAHOO.lodging.calendar.cal.render();
			YAHOO.lodging.calendar.cal.show();
		});
	});
	$$('input#nights').each(function(e){
		Event.observe(e, 'blur', function(evnt){
			Event.stop(evnt);
			if ($('arrival').present()) {
				var arrivalDate = $F('arrival');
				var dateArray = arrivalDate.split('/');
				var d = new Date();
				d.setFullYear(dateArray[2], dateArray[0] - 1, dateArray[1])
				d.setDate(d.getDate() + parseInt($F('nights')));
				$('departure').value = formatDate(d);
				//$('departure').focus();
				//$('nights').focus();
			}
		});
	});
}
function lookupGroupSalesRep() {
	$('groupsalesrep').hide();
	new Ajax.Request('/lookup/groupsalesrep', { 
		parameters: { stateProvince : $F('stateProvince') }, 
		onComplete: function(t){ 
			//alert(t.responseText);
			$('groupsalesrep').update(t.responseText);
			$('groupsalesrep').appear({duration:0.3});
		} 
	});
}
function isValidDate(dateString) {
	var regex = new RegExp(/(?=\d)^(?:(?!(?:10\D(?:0?[5-9]|1[0-4])\D(?:1582))|(?:0?9\D(?:0?[3-9]|1[0-3])\D(?:1752)))((?:0?[13578]|1[02])|(?:0?[469]|11)(?!\/31)(?!-31)(?!\.31)|(?:0?2(?=.?(?:(?:29.(?!000[04]|(?:(?:1[^0-6]|[2468][^048]|[3579][^26])00))(?:(?:(?:\d\d)(?:[02468][048]|[13579][26])(?!\x20BC))|(?:00(?:42|3[0369]|2[147]|1[258]|09)\x20BC))))))|(?:0?2(?=.(?:(?:\d\D)|(?:[01]\d)|(?:2[0-8])))))([-.\/])(0?[1-9]|[12]\d|3[01])\2(?!0000)((?=(?:00(?:4[0-5]|[0-3]?\d)\x20BC)|(?:\d{4}(?!\x20BC)))\d{4}(?:\x20BC)?)(?:$|(?=\x20\d)\x20))?((?:(?:0?[1-9]|1[012])(?::[0-5]\d){0,2}(?:\x20[aApP][mM]))|(?:[01]\d|2[0-3])(?::[0-5]\d){1,2})?$/);
	var matches = regex.exec(dateString);
	return (matches != null && dateString == matches[0]);
}
function checkDateField(field) {
	if (isValidDate($F(field.id))) {
		$$('label[for='+field.id+'] span').each(function(e){ e.removeClassName('alert'); });
		return true;
	} else {
		$$('label[for='+field.id+'] span').each(function(e){ e.addClassName('alert'); });
		return false;
	}
}
function checkAvailabilityDates() {
	var n = 0;
	if (checkDateField($('arrival')))
		n++;
	if (checkDateField($('departure')))
		n++;
	return n == 2;
}
function showYuiCalendar() {
	//$('arrivaldate').clonePosition($('calendar'), { setWidth: false, setHeight: false, offsetLeft: 0, offsetTop: 15 });
	$('calendar').appear({duration:0.3})
}
function hideYuiCalendar() {
	$('calendar').fade({duration:0.2})
}
function showLodgingHelpInfo() {
	$('help_info').clonePosition($('dvr-lodging-banner-help'), { setWidth: false, setHeight: false, offsetLeft: -275, offsetTop: -5 });
}
function hideLodgingHelpInfo() {
	$('help_info').setStyle({'left':'-9999px'});
	//$('help_info').setStyle({'left':'-9999px'});
	//$('help_info').positionedOffset({-9999, -9999});
	//$('help_info').clonePosition($('dvr-lodging-banner-help'), { setWidth: false, setHeight: false, offsetLeft: -9999, offsetTop: -5 });
}
function toggleViewFeatures(elementId) {
	if ($(elementId).visible()) {
		$(elementId).fade({duration:0.3, afterFinish: function(){ $(element).down('iframe').src = ''; setAvailabilityTabContentHeight(); }});
	} else {
		$(elementId).appear({duration:0.2, afterSetup: function(){ setAvailabilityTabContentHeight(); }});
	}
}
function setAvailabilityTabContentHeight() {
	if ($('availability')) {
		var h = $('search-results').getHeight() + 25 + 'px';
		$('availability').up('div.tab-content-container').setStyle({minHeight:h});
	}
}
