var months = new Array("January","February","March","April","May","June","July",
                       "August","September","October","November","December");
var weekdays = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");
var today = new Date();
var current_month = today.getMonth() + 1;
var current_day   = today.getDate();
var current_year  = today.getFullYear();
var current_timestamp = today.getTime();

var promo_ids = new Array("mon","tue","wed","thu","fri","sat","sun");

/** ------------------------------------------------------------------
 * Homepage Promo Functions
 * -------------------------------------------------------------------
 */
function setPromoImage(el,image,alt,title) {
  for (var i = 0; i < promo_ids.length; i++) {
    document.getElementById(promo_ids[i]).removeAttribute("class");
  } 

  dom.get(el).setAttribute("class", "active");

  if (dom.get("promo_image").childNodes.length > 0) {
    for (var i = 0; i < dom.get("promo_image").childNodes.length; i++) {
      dom.get("promo_image").removeChild(dom.get("promo_image").childNodes[i]);
    }
  }

  var promo_image = document.createElement("img");
      promo_image.setAttribute("src",image);
      promo_image.setAttribute("border",0);
      promo_image.setAttribute("alt",alt);
      promo_image.setAttribute("title",title);

  dom.get("promo_image").appendChild(promo_image);
  dom.get(el).style.backgroundPositionY = "-64px";
}

function resetPromoImage(el) {
  for (var i = 0; i < promo_ids.length; i++) {
    document.getElementById(promo_ids[i]).removeAttribute("class");
  } 

  if (dom.get("promo_image").childNodes.length > 0) {
    for (var i = 0; i < dom.get("promo_image").childNodes.length; i++) {
      dom.get("promo_image").removeChild(dom.get("promo_image").childNodes[i]);
    }
  }

  dom.get(el).style.backgroundPositionY = "0px";
}

function setActivePromo(el, main_image) {
  for (var i = 0; i < promo_ids.length; i++) {
    document.getElementById(promo_ids[i]).removeAttribute("class");
  } 

  el.setAttribute("class", "active");

  document.getElementById("promo_image").src = this.promo_images[main_image];
}

function getCurrentPromoNumber() {
  var current_promo_number = null;

  var promo_blurb_lis = document.getElementById("promo_blurbs").getElementsByTagName("ul")[0].getElementsByTagName("li");

  for (var i = 0; i < promo_blurb_lis.length; i++) {
    if (promo_blurb_lis[i].getAttribute("class") == "active") {
      current_promo_number = i;
      break;
    }
  }

  return current_promo_number;
}

function playSlideshow() {
  var slideshow_image = dom.get("slideshow_image");

  var next_image = this.current_image + 1;
  if (next_image > slideshow_images.length - 1) {
    next_image = 0;
  }

  this.current_image = next_image;

  dom.get("slideshow_image").src   = slideshow_images[this.current_image].src;
  dom.get("slideshow_image").alt   = slideshow_images[this.current_image].alt;
  dom.get("slideshow_image").title = slideshow_images[this.current_image].title;
}

/** -----------------------------------------------------------------
 * Main Navigation functions
 * ------------------------------------------------------------------
 */
function showDropdown(el) {
  hidedropdowns();
  var dropdown_div = el.parentNode.getElementsByTagName("div")[0];
  if(dropdown_div) {
    dropdown_div.style.display = "block";
    dropdown_div.style.visibility = "visible";
  }

  if (el.parentNode.getAttribute("class") != "current") {
    el.parentNode.setAttribute("class","active");
  }
}

function hidedropdowns() {
  var current_tab = getCurrentTab();

  var main_nav_lis = document.getElementById("main_nav").getElementsByTagName("ul")[0].getElementsByTagName("li");

  for (var i = 0; i < main_nav_lis.length; i++) {
    if (i != (main_nav_lis.length - 1)) {
      if (main_nav_lis[i].getAttribute("class") != "current") {
        main_nav_lis[i].removeAttribute("class");
      }
    }

    var dropdown_div = main_nav_lis[i].getElementsByTagName("div");

    if(dropdown_div[0]) {
      if (dropdown_div[0].getAttribute("class") == "dropdown") {
        dropdown_div[0].style.display = "none";
        dropdown_div[0].style.visibility = "hidden";
      }
    }
  }

  if (current_tab != null) {
    main_nav_lis[current_tab].setAttribute("class","current");
  }
}

function getCurrentTab() {
  var current_tab = null;

  var main_nav_lis = document.getElementById("main_nav").getElementsByTagName("ul")[0].getElementsByTagName("li");

  for (var i = 0; i < main_nav_lis.length; i++) {
    if (main_nav_lis[i].getAttribute("class") == "current") {
      current_tab = i;
      break;
    }
  }

  return current_tab;
}


/** -----------------------------------------------------------------
 * League Specific
 * ------------------------------------------------------------------
 */
function setActiveLeague(el) {
  if (el.getAttribute("class") != "current") {
    el.setAttribute("class","active");
  }
}

function resetActiveLeague(el) {
  if (el.getAttribute("class") != "current") {
    el.removeAttribute("class");
  }
}

/** -----------------------------------------------------------------
 * Blog Specific
 * ------------------------------------------------------------------
 */
function blog_showList(elId) {
  if (dom.get(elId).style.display == "none" || dom.get(elId).style.display == "") {
    dom.get(elId).style.display = "block";
    dom.get(elId).style.visibility = "visible";
  } else {
      dom.get(elId).style.display = "none";
      dom.get(elId).style.visibility = "hidden";
  }
}

/** -----------------------------------------------------------------
 * Event Specific
 * ------------------------------------------------------------------
 */
function showMiniCalendar() {
  if (dom.get("events_calendar_container")) {
    if(dom.get("events_calendar_container").style.display == "" ||
       dom.get("events_calendar_container").style.display == "none") {
      dom.get("events_calendar_container").style.display = "block";
    } else {
        dom.get("events_calendar_container").style.display = "none";
    }
  }
}

function setEventsCalendarNav(month,day,year) {
  if (!month) { month = current_month; }
  if (!day)   { day   = current_day;   }
  if (!year)  { year  = current_year;  }

  var start_date = new Date(months[month-1] +" "+ day +", " + year);
  var start_timestamp = start_date.getTime();
  var one_day = 1000 * 60 * 60 * 24;
  var seven_days = start_timestamp + (7 * one_day);

  var prev_week_start_timestamp = start_timestamp - (one_day * 7);
  var prev_week_date            = new Date(prev_week_start_timestamp);
  var prev_week_month           = prev_week_date.getMonth() + 1;
  var prev_week_day             = prev_week_date.getDate();
  var prev_week_year            = prev_week_date.getFullYear();
  var prev_week                 = prev_week_month +","+ prev_week_day +","+ prev_week_year;

  var next_week_start_timestamp = start_timestamp + (one_day * 7);
  var next_week_date            = new Date(next_week_start_timestamp);
  var next_week_month           = next_week_date.getMonth() + 1;
  var next_week_day             = next_week_date.getDate();
  var next_week_year            = next_week_date.getFullYear();
  var next_week                 = next_week_month +","+ next_week_day +","+ next_week_year;

  var events_navigation = "";
  for (var i = start_timestamp; i < seven_days; i = i + one_day) {
    var nav_date = new Date(i);
    var nav_month = nav_date.getMonth() + 1;
    var nav_day = nav_date.getDate();
    var nav_year = nav_date.getFullYear();
    if (nav_month < 10) { nav_month = "0"+ nav_month; }
    if (nav_day < 10) { nav_day = "0"+ nav_day; }

    var div_class = "";
    if (parseInt(nav_month) == parseInt(month) && 
        parseInt(nav_day) == parseInt(day) && 
        parseInt(nav_year) == parseInt(year)) {
      div_class = " current_day";
    }

    events_navigation += "\n              <div class=\"events_navigation_date"+ div_class +"\">";
    events_navigation += "\n                <a href=\"/events/"+ nav_month +"/"+ nav_day +"/"+ nav_year +"\">";
    events_navigation += "\n                  <span class=\"weekday\">"+ weekdays[nav_date.getDay()] +"</span><br />";
    events_navigation += "\n                  <span class=\"month\">"+ months[nav_date.getMonth()].substring(0,3) +"</span><br />";
    events_navigation += "\n                  <span class=\"day\">"+ nav_day +"</span></a>";
    events_navigation += "\n              </div>";   
  }

  dom.get("events_navigation_button_previous").getElementsByTagName("a")[0].setAttribute("onclick","setEventsCalendarNav("+ prev_week +")");
  dom.get("events_navigation_dates").innerHTML = events_navigation;
  dom.get("events_navigation_button_next").getElementsByTagName("a")[0].setAttribute("onclick","setEventsCalendarNav("+ next_week +")");
}

/**
 * Form Validations
 */
function validateForm(formId) {
  var form = dom.get(formId);
  switch(formId) {
    case "contact_us_form":
      // Assume its valid
      var valid_form = true;

      // get the field objects
      var name    = form.name;
      var email   = form.email;
      var subject = form.subject;
      var message = form.message;

      // test each field for content
      // for the email fields test that the email is a valide email format.
      if (name.value == "" || name.value == null) {
        dom.get("name").style.border = "1px solid #dd1c1c";
        valid_form = false;
      } else {
          dom.get("name").style.border = "none";
      }

      if (email.value == "" || email.value == null || !(echeck(email.value))) {
        dom.get("email").style.border = "1px solid #dd1c1c";
        valid_form = false;
      } else {
          dom.get("email").style.border = "none";
      }

      if (subject.value == "" || subject.value == null) {
        dom.get("subject").style.border = "1px solid #dd1c1c";
        valid_form = false;
      } else {
          dom.get("subject").style.border = "none";
      }

      if (message.value == "" || message.value == null) {
        dom.get("message").style.border = "1px solid #dd1c1c";
        valid_form = false;
      } else {
          dom.get("message").style.border = "none";
      }

      return valid_form;
      break;

    case "reserve_form":
      // Assume its valid
      var valid_form = true;

      // get the field objects
      var name    = form.name;
      var email   = form.email;
      var date    = form.date;
      var purpose = form.purpose;

      // test each field for content
      // for the email fields test that the email is a valide email format.
      if (name.value == "" || name.value == null) {
        dom.get("name").style.border = "1px solid #dd1c1c";
        valid_form = false;
      } else {
          dom.get("name").style.border = "none";
      }

      if (email.value == "" || email.value == null || !(echeck(email.value))) {
        dom.get("email").style.border = "1px solid #dd1c1c";
        valid_form = false;
      } else {
          dom.get("email").style.border = "none";
      }

      if (date.value == "" || date.value == null) {
        dom.get("date").style.border = "1px solid #dd1c1c";
        valid_form = false;
      } else {
          dom.get("date").style.border = "none";
      }

      if (purpose.value == "" || purpose.value == null) {
        dom.get("purpose").style.border = "1px solid #dd1c1c";
        valid_form = false;
      } else {
          dom.get("purpose").style.border = "none";
      }

      return valid_form;
      break;
  }
}

/**
 * DHTML email validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
 */
function echeck(str) {
  var at="@"
  var dot="."
  var lat=str.indexOf(at)
  var lstr=str.length
  var ldot=str.indexOf(dot)
  if (str.indexOf(at)==-1){
     return false
  }

  if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
     return false
  }

  if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
      return false
  }

  if (str.indexOf(at,(lat+1))!=-1){
     return false
  }

  if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
    return false
  }

  if (str.indexOf(dot,(lat+2))==-1){
    return false
  }

  if (str.indexOf(" ")!=-1){
    return false
  }

  return true          
}

