// rollovers

left_arrow_off = new Image();
left_arrow_off.src = "/images/button.photo_skip_left.gif";
left_arrow_on = new Image();
left_arrow_on.src = "/images/button.photo_skip_leftON.gif";

right_arrow_off = new Image();
right_arrow_off.src = "/images/button.photo_skip_right.gif";
right_arrow_on = new Image();
right_arrow_on.src = "/images/button.photo_skip_rightON.gif";

home_menu1_off = new Image();
home_menu1_off.src = "/images/homemenu.kayaker.off.jpg";
home_menu1_on = new Image();
home_menu1_on.src = "/images/homemenu.kayaker.on.jpg";

home_menu2_off = new Image();
home_menu2_off.src = "/images/homemenu.starfish.off.jpg";
home_menu2_on = new Image();
home_menu2_on.src = "/images/homemenu.starfish.on.jpg";

home_menu3_off = new Image();
home_menu3_off.src = "/images/homemenu.kids-at-beach.off.jpg";
home_menu3_on = new Image();
home_menu3_on.src = "/images/homemenu.kids-at-beach.on.jpg";

home_menu4_off = new Image();
home_menu4_off.src = "/images/homemenu.lighthouse.off.jpg";
home_menu4_on = new Image();
home_menu4_on.src = "/images/homemenu.lighthouse.on.jpg";

function popwindow(imageurl, winname, winfeatures) {
  window.open(imageurl,winname,winfeatures); 
}
function setLocation(url) {
  window.location=url; 
}
function changeAvailabilityDisplay(current_set, next_set) {
  setElementClass(current_set, 'avail_off');
  setElementClass(next_set, 'avail_on');
}
// useful functions
function setImage(imgName, newStateImage){
  document.getElementById(imgName).src = eval(newStateImage+".src");
}
function setElementClass(ele_id, changeto_class) {
  document.getElementById(ele_id).className = changeto_class;
}
sfHover = function() {
	var sfEls = document.getElementById("nav_top").getElementsByTagName("TD");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
			this.className+=" sfhover";
		}
		sfEls[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
		}
	}
}
if (window.attachEvent) window.attachEvent("onload", sfHover);

function showAvailList(window_id) {
  // first close current availitem
  var cur_window_name = "avail_list" + window_id;
  if (last_avail_item > 0) {
    var last_window_name = "avail_list" + last_avail_item;
    // close last window
    setElementClass(last_window_name, "avail_list");
  }
  setElementClass(cur_window_name, "avail_list_on");
  last_avail_item = parseInt(window_id);
}
function hideAvailList(window_name) {
  setElementClass(window_name, "avail_list");
}


if (typeof $ != 'undefined') {
  $(document).ready(function() {
    // Strip the host name down, removing subdomains or www.
    var host = window.location.host.replace(/^(([^\/]+?\.)*)([^\.]{4,})((\.[a-z]{1,4})*)$/, '$3$4');
    var subdomain = window.location.host.replace(/^(([^\/]+?\.)*)([^\.]{4,})((\.[a-z]{1,4})*)$/, '$1');

    // Determine what subdomains are considered internal.
    //if (Drupal.settings.extlink.extSubdomains) {
    if (1) {
      var subdomains = "([^/]*)?";
    }
    else if (subdomain == 'www.' || subdomain == '') {
      var subdomains = "(www\.)?";
    }
    else {
      var subdomains = subdomain.replace(".", "\.");
    }

    // Build regular expressions that define an internal link.
    var internal_link = new RegExp("^https?://" + subdomains + host, "i");

    // Find all links which are NOT internal and begin with http (as opposed
    // to ftp://, javascript:, etc. other kinds of links.
    // When operating on the 'this' variable, the host has been appended to
    // all links by the browser, even local ones.
    // In jQuery 1.1 and higher, we'd us a filter method here, but it is not
    // available in jQuery 1.0 (Drupal 5 default).
    var external_links = new Array();
    var mailto_links = new Array();
    $("a").each(function(el) {
      try {
        var url = this.href.toLowerCase();
        if (url.indexOf('http') == 0 && !url.match(internal_link)) {
          external_links.push(this);
        }
        else if (url.indexOf('mailto:') == 0) {
          mailto_links.push(this);
        }
      }
      // IE7 throws errors often when dealing with irregular links, such as:
      // <a href="node/10"></a> Empty tags.
      // <a href="http://user:pass@example.com">example</a> User:pass syntax.
      catch(error) {
        return false;
      }
    });
    
    var extlink_class = 'ext';
    if (extlink_class) {
      // Apply the "ext" class to all links not containing images.
      if (parseFloat($().jquery) < 1.2) {
        $(external_links).not('[img]').addClass(extlink_class);
      }
      else {
        $(external_links).not($(external_links).find('img').parents('a')).addClass(extlink_class);
      }
    }
    
    var mailto_class = 'mail';
    if (mailto_class) {
      // Apply the "mailto" class to all mailto links not containing images.
      if (parseFloat($().jquery) < 1.2) {
        $(mailto_links).not('[img]').addClass(mailto_class);
      }
      else {
        $(mailto_links).not($(mailto_links).find('img').parents('a')).addClass(mailto_class);
      }
    }
    
    var extlink_target = '_blank';
    if (extlink_target) {
      // Apply the target attribute to all links.
      $(external_links).attr('target', extlink_target);
    }
  });
}


function clickDate(date_key) {
  var link = $('#td-' + date_key + ' a');
  var check = $('#check-' + date_key);
  
  if (check.is(':checked')) {
    // uncheck
    check.removeAttr("checked");
    // change link
    link.removeClass('avail-checkbox-on');
    link.addClass('avail-checkbox');
  }
  else {
    // check
    check.attr("checked","checked");
    // change link
    link.removeClass('avail-checkbox');
    link.addClass('avail-checkbox-on');
  }
}

// constructor for dateMonth objects
function date_month(m, d) {
  this.month = m;
  this.day = new Array();
  this.day[0] = d;
  return true;
}

function completeDateSelection() {
  // add selected date string to hidden field of parent
  var months = new Array();
  months[0]="N/A";
  months[1]="Jan";
  months[2]="Feb";
  months[3]="Mar";
  months[4]="Apr";
  months[5]="May";
  months[6]="Jun";
  months[7]="Jul";
  months[8]="Aug";
  months[9]="Sep";
  months[10]="Oct";
  months[11]="Nov";
  months[12]="Dec";
  
  var avail_months = new Array();
  
  var print_date_string = "";
  var input_date_string = "";
  $("input:checked").each( 
    function(){
      
      input_date_string = input_date_string + $(this).val() + ";";
      var split_date = $(this).val().split("-");
      // insert options into availability months array
      // first see if the month already exists
      var day = split_date[0];
      var month = split_date[1];
      
      var new_month = 1;
      // now add all valid items to dest list from given options_list array
      for (var i= 0; i < avail_months.length; i++) {
        // only add months that don't already exist
        if (avail_months[i].month == month) {
          new_month = 0;
          // the month exists, so let's put the date in the right place
          var new_days = new Array();
          var day_inserted = 0;
          for (var j= 0; j < avail_months[i].day.length; j++) {
            if ( day < avail_months[i].day[j]) {
              day_inserted = 1;
              new_days[j] = day;
              new_days[j+day_inserted] = avail_months[i].day[j];
            }
            else {
              new_days[j+day_inserted] = avail_months[i].day[j];
            }
          }
          
          if (day_inserted == 0) {
            new_days[new_days.length] = day;
          }
          avail_months[i].day = new_days;
        }
      }
      // it's a new month, so add to array
      if (new_month) {
        avail_months[avail_months.length] = new date_month(month, day);
      }
    }
  );
  
  // now build the print_date string
  for (var i= 0; i < avail_months.length; i++) {
    var month_index = parseInt(avail_months[i].month);
    print_date_string = print_date_string + months[month_index] + " ";
    for (var j= 0; j < avail_months[i].day.length; j++) {
      if ((j+1) == avail_months[i].day.length) {
        // if we're on the last one, don't put the comma
        print_date_string = print_date_string + avail_months[i].day[j] + "";
      }
      else {
        // otherwise put the comma
        print_date_string = print_date_string + avail_months[i].day[j] + ", ";
      }
      
    }
    if ((i+1) != avail_months.length) {
      print_date_string = print_date_string + "; ";
    }
  }
  
  $("#search-availability", top.document).val(input_date_string);
  if (print_date_string) {
    $("#availability-link", top.document).html(print_date_string);
  }
  
  top.Shadowbox.close();
}

function initDateSelector() {
  var dates = $("#search-availability", top.document).val().split(";"); 
  for (var i=0; i < dates.length; i++) {
    if (dates[i].length) {
      var link = $('#td-' + dates[i] + ' a');
      var check = $('#check-' + dates[i]);
      // check
      check.attr("checked","checked");
      // change link
      link.removeClass('avail-checkbox');
      link.addClass('avail-checkbox-on');
    }
  }
  
}

