// script for dealing with cookies
// The constructor function: creates a cookie object for the specified
// document, with a specified name and optional attributes.
// Arguments:
//   document: The Document object that the cookie is stored for. Required.
//   name:     A string that specifies a name for the cookie. Required.
//   hours:    An optional number that specifies the number of hours from now
//             that the cookie should expire.
//   path:     An optional string that specifies the cookie path attribute.
//   domain:   An optional string that specifies the cookie domain attribute.
//   secure:   An optional Boolean value that, if true, requests a secure cookie.
//
function Cookie(document, name, hours, path, domain, secure)
{
    // All the predefined properties of this object begin with '$'
    // to distinguish them from other properties which are the values to
    // be stored in the cookie.
    this.$document = document;
    this.$name = name;
    if (hours)
        this.$expiration = new Date((new Date()).getTime() + hours*3600000);
    else this.$expiration = null;
    if (path) this.$path = path; else this.$path = null;
    if (domain) this.$domain = domain; else this.$domain = null;
    if (secure) this.$secure = true; else this.$secure = false;
}

// This function is the store() method of the Cookie object.
function _Cookie_store()
{
    // First, loop through the properties of the Cookie object and
    // put together the value of the cookie. Since cookies use the
    // equals sign and semicolons as separators, we'll use colons
    // and ampersands for the individual state variables we store 
    // within a single cookie value. Note that we escape the value
    // of each state variable, in case it contains punctuation or other
    // illegal characters.
    var cookieval = "";
    for(var prop in this) {
        // Ignore properties with names that begin with '$' and also methods.
        if ((prop.charAt(0) == '$') || ((typeof this[prop]) == 'function')) 
            continue;
        if (cookieval != "") cookieval += '&';
        cookieval += prop + ':' + escape(this[prop]);
    }

    // Now that we have the value of the cookie, put together the 
    // complete cookie string, which includes the name and the various
    // attributes specified when the Cookie object was created.
    var cookie = this.$name + '=' + cookieval;
    if (this.$expiration)
        cookie += '; expires=' + this.$expiration.toGMTString();
    if (this.$path) cookie += '; path=' + this.$path;
    if (this.$domain) cookie += '; domain=' + this.$domain;
    if (this.$secure) cookie += '; secure';

    // Now store the cookie by setting the magic Document.cookie property.
    this.$document.cookie = cookie;
}
// This function is the load() method of the Cookie object.
function _Cookie_load()
{
    // First, get a list of all cookies that pertain to this document.
    // We do this by reading the magic Document.cookie property.
    var allcookies = this.$document.cookie;
    if (allcookies == "") return false;

    // Now extract just the named cookie from that list.
    var start = allcookies.indexOf(this.$name + '=');
    if (start == -1) return false;   // Cookie not defined for this page.
    start += this.$name.length + 1;  // Skip name and equals sign.
    var end = allcookies.indexOf(';', start);
    if (end == -1) end = allcookies.length;
    var cookieval = allcookies.substring(start, end);

    // Now that we've extracted the value of the named cookie, we've
    // got to break that value down into individual state variable 
    // names and values. The name/value pairs are separated from each
    // other by ampersands, and the individual names and values are
    // separated from each other by colons. We use the split method
    // to parse everything.
    var a = cookieval.split('&');    // Break it into array of name/value pairs.
    for(var i=0; i < a.length; i++)  // Break each pair into an array.
        a[i] = a[i].split(':');

    // Now that we've parsed the cookie value, set all the names and values
    // of the state variables in this Cookie object. Note that we unescape()
    // the property value, because we called escape() when we stored it.
    for(var i = 0; i < a.length; i++) {
        this[a[i][0]] = unescape(a[i][1]);
    }

    // We're done, so return the success code.
    return true;
}

// This function is the remove() method of the Cookie object.
function _Cookie_remove()
{
    var cookie;
    cookie = this.$name + '=';
    if (this.$path) cookie += '; path=' + this.$path;
    if (this.$domain) cookie += '; domain=' + this.$domain;
    cookie += '; expires=Fri, 02-Jan-1970 00:00:00 GMT';

    this.$document.cookie = cookie;
}

// Create a dummy Cookie object, so we can use the prototype object to make
// the functions above into methods.
new Cookie();
Cookie.prototype.store = _Cookie_store;
Cookie.prototype.load = _Cookie_load;
Cookie.prototype.remove = _Cookie_remove;

//===================================================================
//  The code above is the definition of the Cookie class.
//  The code below is a sample use of that class.
//===================================================================

// Create the cookie we'll use to save state for this web page.
// Since we're using the default path, this cookie will be accessible
// to all web pages in the same directory as this file or "below" it.
// Therefore, it should have a name that is unique among those pages.
// Note that we set the expiration to 10 days in the future.
// var visitordata = new Cookie(document, "name_color_count_state", 240);

var visitdata = new Cookie(document, "epage",null,"/");

// First, try to read data stored in the cookie. If the cookie is not
// defined, or if it doesn't contain the data we need, then query the
// user for that data.
if (!visitdata.load() || !visitdata.spage || !visitdata.id) {
// put some values in place
// spage = window.location.href
// rpage = document.referrer
// id = parseInt(Math.random() * 10000000,10) + '-' + Date.UTC(d.getFullYear(),d.getMonth(),d.getDate(),d.getHours(),d.getMinutes(),d.getSeconds(),d.getMilliseconds())
// track this client thru site 

    var d = new Date();

    visitdata.spage = window.location.href;
    visitdata.rpage = document.referrer;
    visitdata.id = parseInt(Math.random() * 10000000,10) + '-' + Date.UTC(d.getFullYear(),d.getMonth(),d.getDate(),d.getHours(),d.getMinutes(),d.getSeconds(),d.getMilliseconds());
}

//store the data
    visitdata.store();

// end of cookie code

// convert the url query string into an array
function read_query()
   {
   var a_query = unescape(document.location.search.substring(1,document.location.search.length)).split('&');
   var a_out = new Array();
   for (var i=0; i<a_query.length; i++)
     {
     var p = a_query[i].split('=');
     a_out[i] = { name:p[0], value:p[1] };
     }
   if (!a_out.length) return false;
   return a_out;
   }

// return the value to (a) from the query string
function get_param(a)  // a is the name of the parameter
   {
   var a_query = read_query();  // get paramater array
   if (a_query)
     for (var n=0; n<a_query.length; n++)
     {
       if (a_query[n].name==a) return a_query[n].value;
     }
   return false;
   }
var today = new Date();
today.setDate(today.getDate()+1); 
var mm = parseInt(get_param('sm'));
if (isNaN(mm)) mm=today.getMonth()+1;

var dd = parseInt(get_param('sd'));
if (isNaN(dd)) dd=today.getDate();

var yy = parseInt(get_param('sy'));
if (isNaN(yy)) yy=today.getFullYear();

var pp = parseInt(get_param('pp'));
if (isNaN(pp)) pp=2;

var nts = parseInt(get_param('nts'));
if (isNaN(nts)) nts=4;

var amonths = new Array();
amonths[0] = new Array('January',1);
amonths[1] = new Array('February',2);
amonths[2] = new Array('March',3);
amonths[3] = new Array('April',4);
amonths[4] = new Array('May',5);
amonths[5] = new Array('June',6);
amonths[6] = new Array('July',7);
amonths[7] = new Array('August',8);
amonths[8] = new Array('September',9);
amonths[9] = new Array('October',10);
amonths[10] = new Array('November',11);
amonths[11] = new Array('December',12);

function checkFirstNight() {
	var todayDate = new Date();
	var testDate = new Date();

	testDate.setDate(document.detail.sd.options[document.detail.sd.options.selectedIndex].text);
	testDate.setMonth(document.detail.sm.options.selectedIndex); // January = 0
	testDate.setFullYear(document.detail.sy.options[document.detail.sy.options.selectedIndex].text); 

	if (todayDate.getTime()-testDate.getTime()==0 ){
		alert('Sorry but we don\'t allow same day reservations due to the limited time for exchange of payments, keys, instructions, etc.');
		return false;
	}
	
	if (todayDate.getTime()>testDate.getTime() ){
		alert('Sorry but your arrival night cannot be before today.');
		return false;
	}
		return true;

}

document.writeln('<form name="detail" method="get" action="/search/availability.asp">');
document.writeln('<table width="75%" border="0" align="center" cellpadding="3">');

document.writeln('<tr>');
document.writeln('<td colspan="2">');
document.writeln('<hr>');
document.writeln('</td>');
document.writeln('</tr>');

if (typeof(aComplex) != 'undefined') {
// we only want a complex list if there is an array of then
	document.writeln('<tr>');
	document.writeln('<td>');
	document.writeln('<div align="right">');
	document.writeln('<font face="Arial" color="#0000cc" size="2">Select the Complex&nbsp;&nbsp;</font>');
	document.writeln('</div>');
	document.writeln('</td>');
	document.writeln('<td>');
	document.writeln('<div align="left">');
	document.writeln('<select name="cid" onChange="javascript:showBrowseLink();">');
	document.write('<option value="0">All available units in this resort</option>');

	for ( var x=0; x<aComplex.length; x++) {
		document.write('<option value="' + aComplex[x][0] + '"');
		if (aComplex[x][0] == cid) document.write(' selected');
			document.writeln('>' + aComplex[x][1] + '</option>');
	}
	document.writeln('</select></div></td></tr>');
}


document.writeln('<tr>');
document.writeln('<td>');
document.writeln('<div align="right">');
document.writeln('<font face="Arial" color="#0000cc" size="2">Number of Occupants&nbsp;&nbsp;</font>');
document.writeln('</div>');
document.writeln('</td>');
document.writeln('<td>');
document.writeln('<div align="left">');
document.writeln('<select onchange="javascript:testval(document.forms[0].pp.options[document.forms[0].pp.selectedIndex].text);" name="pp">');
					for (var x=1; x<46; x++) {
						document.write('<option');
						if (x == pp) document.write(' selected');
						document.writeln('>' + x + '</option>');
						}

document.writeln('</select>');
//document.writeln('<font face="Arial" color="#0000cc" size="3"><font size="1">(<b>Exclude Infants</b> - Who do not require a bed.)</font></font>');
document.writeln('</div>');
document.writeln('</td>');
document.writeln('</tr>');
document.writeln('<tr>');
document.writeln('<td>');
document.writeln('<div align="right">');
document.writeln('<font face="Arial" color="#0000cc" size="2">First Night of Occupancy&nbsp;&nbsp;</font>');
document.writeln('</div>');
document.writeln('</td>');
document.writeln('<td><div align="left">');
			    document.writeln('<select name="sm">');
				for (var x=0; x<12; x++){				  				  				  				  				  				  				  				  				  				  				  
				  document.write('<option value="' + amonths[x][1] + '"');
				  if (mm == amonths[x][1]) document.write(' selected');
				  document.writeln('>' + amonths[x][0] + '</option>');
				  }
				  document.writeln('</select>&nbsp;');
				  
				  document.writeln('<select name="sd">');
					for ( var x=1; x<32; x++) {
						document.write('<option');
						if (dd == x) document.write(' selected');
						document.writeln('>' + x + '</option>');
						}
						document.writeln('</select>&nbsp;');
						
					document.writeln('<select name="sy">');
					for ( var x=2004; x<2011; x++) {
						document.write('<option');
						if (yy == x) document.write(' selected');
						document.writeln('>' + x + '</option>');
						}
						document.writeln('</select>');				
					
document.writeln('<a name="calposition1" id="calposition1"></a>');
document.writeln('<a href="#" onclick="javascript:selectDate();" return false;" name="anchor1" id="anchor1"><img src="/images/forms/cal.gif" width="30" height="20" border="0" alt="Select First Night"></a>');
document.writeln('</div></td>');
document.writeln('</tr>');
document.writeln('<tr>');
document.writeln('<td>');
document.writeln('<div align="right">');
document.writeln('<font face="Arial" color="#0000cc" size="2">Number of Nights&nbsp;&nbsp;</font>');
document.writeln('</div>');
document.writeln('</td>');
document.writeln('<td>');
document.writeln('<div align="left">');
	document.writeln('<select name="nts">');
	for ( var x=1; x<120; x++) {
		document.write('<option');
		if (nts == x) document.write(' selected');
	document.writeln('>' + x + '</option>');
	}
	document.writeln('</select>');			
						
document.writeln('</div>');
document.writeln('</td>');
document.writeln('</tr>');



document.writeln('<tr>');
document.writeln('<td colspan="2">');
document.writeln('<div align="center">');
document.writeln('<input type="button" value="View a List of Available Units" onclick="if (checkFirstNight()) { this.form.submit(); }" >');

document.writeln('<input type="hidden" value="' + wr + '" name="wr">');
document.writeln('<input type="hidden" value="' + sr + '" name="sr">');
document.writeln('<input type="hidden" value="' + zn + '" name="zn">');
document.writeln('<input type="hidden" value="' + resort + '" name="resort">');

if (typeof(ownerid) != 'undefined') {
// this code to allow filtering for single owner units at selected resort
	document.writeln('<input type="hidden" value="' + ownerid + '" name="ownerid">');
}

document.writeln('</div>');
document.writeln('</td>');
document.writeln('</tr>');
document.writeln('<tr>');
document.writeln('<td colspan="2">');
document.writeln('<hr>');
document.writeln('</td>');
document.writeln('</tr>');
document.writeln('</table>');
document.writeln('</form>');

