/*
v1.03 Copyright (c) 2006 Stuart Colville <@
http://muffinresearch.co.uk/archives/2006/04/29/getelementsbyclassname-deluxe-edition/

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated 
documentation files (the "Software"), to deal in the Software without restriction, including without limitation 
the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, 
and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial 
portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 
TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 
IN THE SOFTWARE.
*/
  
function getElementsByClassName(strClass, strTag, objContElm) {
  strTag = strTag || "*";
  objContElm = objContElm || document;    
  var objColl = objContElm.getElementsByTagName(strTag);
  if (!objColl.length &&  strTag == "*" &&  objContElm.all) objColl = objContElm.all;
  var arr = new Array();                              
  var delim = strClass.indexOf('|') != -1  ? '|' : ' ';   
  var arrClass = strClass.split(delim);    
  for (var i = 0, j = objColl.length; i < j; i++) {                         
    var arrObjClass = objColl[i].className.split(' ');   
    if (delim == ' ' && arrClass.length > arrObjClass.length) continue;
    var c = 0;
    comparisonLoop:
    for (var k = 0, l = arrObjClass.length; k < l; k++) {
      for (var m = 0, n = arrClass.length; m < n; m++) {
        if (arrClass[m] == arrObjClass[k]) c++;
        if ((delim == '|' && c == 1) || (delim == ' ' && c == arrClass.length)) {
          arr.push(objColl[i]); 
          break comparisonLoop;
        }
      }
    }
  }
  return arr; 
}

// To cover IE 5 Mac lack of the push method
Array.prototype.push = function(value) {this[this.length] = value; };


var kickIt;
var to;
var startPointLo = 15;
var startPointHi = 90;
var increment = 15;
var closeThis = '';

function slide(openThis) {
  if (kickIt) {
    clearTimeout(kickIt);
  }
  kickIt = setTimeout("slider('" + openThis + "')", 400);
}

function slider(openThis) {
  if (closeThis.length < 1) {
    var findOpenBox = getElementsByClassName('drawer opened', 'div');
    for (var i = 0, j = findOpenBox.length; i < j; i++) {
      closeThis = findOpenBox[i].getAttribute('id');
    }
  }

  if (openThis == closeThis) {

  } else {
    changeHeight(openThis, closeThis);
  }

  closeThis = openThis;
}

function changeHeight(openThis, closeThis) {
  if (startPointLo > 104 | startPointHi < 1) {
    document.getElementById(openThis).setAttribute('className', 'drawer opened');
    document.getElementById(closeThis).setAttribute('className', 'drawer');
    document.getElementById(openThis).setAttribute('class', 'drawer opened');
    document.getElementById(closeThis).setAttribute('class', 'drawer');

    //alert('opened: ' + openThis + " " + document.getElementById(openThis).getAttribute('class'));

    startPointLo = 15;
    startPointHi = 90;

    return;
  }

  startPointLo = startPointLo + increment;
  startPointHi = startPointHi - increment;

  var opening = document.getElementById(openThis + "-content");
  opening.style.height = startPointLo + 'px';

  var closing = document.getElementById(closeThis + "-content");
  closing.style.height = startPointHi + 'px';

  var playItAgainSam = "changeHeight('" + openThis + "', '" + closeThis + "');";
  to = setTimeout(playItAgainSam, 0);
}

// Button Rollover Code
function rollOver(imgID, imgName) {
  if (navigator.appName== "Netscape" && parseInt(navigator.appVersion) >= 3)
    document.images[imgID].src = imgName;
  else if (navigator.appName != "Netscape" && parseInt(navigator.appVersion) >= 4) 
    document.images[imgID].src = imgName;
}

// Button Rollover Code 2
function rollOver2(imgID, imgName) {
    document.getElementById(imgID).setAttribute('src', imgName);
}

// Redirect for Season Overview filter
function goThere(){
  var list = document.filterLocation.eventFilter;
  location = list.options[list.selectedIndex].value;
}
function goThereEventDetail(){
  var list = document.eventDetailSelectLocation.eventLocation;
  location = list.options[list.selectedIndex].value;
}


function refreshPkgInfo(returnLocation){
  var list = document.chgChosenPackage.chgPackage;

  var strReturnLocation = returnLocation + '&packageid=' + list.options[list.selectedIndex].value;

  location = strReturnLocation;
}


// toggleTab for Event Detail pages
var prevTabID = 'Description';

function toggleTab(TabID) {
  document.getElementById('tab' + prevTabID).className = 'option';
  document.getElementById('eventDetail' + prevTabID).className = 'displayNone';


  //APPLY THE ACTIVE STYLE TO THE SELECTED TAB
  document.getElementById('tab' + TabID).className = 'optionOn';
  document.getElementById('eventDetail' + TabID).className = 'displayBlock';

  prevTabID = TabID;
}

function toggleBlanket(url) {
  var blanket = document.getElementById('leavingBlanket');
  var lbDisplay = blanket.className;
  var getTheATag = document.getElementById('linkContinueLeaving');
  
  if (lbDisplay == 'displayNone') {
    blanket.className = 'displayBlock';
    getTheATag.setAttribute('href', url);
  } else {
    blanket.className = 'displayNone';
  }
}

function toggle(divId) {
  var getElement = document.getElementById(divId);
  
  if (getElement.className == 'displayNone') {
    getElement.className = 'displayBlock';
  } else {
    getElement.className = 'displayNone';
  }
}




function toggleCalendarDetail(perfID) {
  var getDetailDiv = document.getElementById('calDetail' + perfID);
  var getDetailDivClass = getDetailDiv.className;

  if (getDetailDivClass.match('displayNone')) {
    var findOpenCalDetail = getElementsByClassName('calDetailRel displayBlock', 'div');
    if (findOpenCalDetail.length > 0) {
      for (var i = 0, j = findOpenCalDetail.length; i < j; i++) {
        var getOpenCalDetailById = document.getElementById(findOpenCalDetail[i].getAttribute('id'));
        getOpenCalDetailById.className = getOpenCalDetailById.className.replace('displayBlock', 'displayNone');
      }
    }
    getDetailDiv.className = getDetailDivClass.replace('displayNone', 'displayBlock');
  } else {
    getDetailDiv.className = getDetailDivClass.replace('displayBlock', 'displayNone');
  }
}

// toggleTabs
function toggleTabs(tabSection, tabID) {
//  var prevOnTabID = 'Parking';
  var prevOnTabID = getElementsByClassName('optionOn upsell');
  var prevOnTabIDStr = '';

  for (var i = 0, j = prevOnTabID.length; i < j; i++) {
    prevOnTabIDStr = prevOnTabID[i].getAttribute('id').substring(tabSection.length + 'Tab'.length);
  }

  document.getElementById(tabSection + 'Tab' + prevOnTabIDStr).className = 'option';
  document.getElementById(tabSection + prevOnTabIDStr).className = 'displayNone';


  //APPLY THE ACTIVE STYLE TO THE SELECTED TAB
  document.getElementById(tabSection + 'Tab' + tabID).className = 'optionOn ' + tabSection;
  document.getElementById(tabSection + tabID).className = 'displayBlock';
}


function sumDonationAmt() {
  var totalDiv = document.getElementById('donationTotal');
  var sumTotal = 0.00;
  var findDonationFields = getElementsByClassName('donationAmount', 'input');

  for (var i = 0, j = findDonationFields.length; i < j; i++) {
    sumTotal += Number(findDonationFields[i].value);
  }
  totalDiv.innerHTML = '$ ' + sumTotal.toFixed(2);
}


function minGCAmt() {
  var minAmt = Number(10);
  var gcAmt = Number(document.getElementById('gcAmt').value);
  var gcMin10 = 'Gift certificate amounts need to be a minimum of $10';
  var gcNumFormat = 'Gift certificate amounts must be entered in number format (i.e. 25.00)';

  if (isNaN(gcAmt)) {
    document.getElementById('gcAlert').className = 'formlabelalert';
    document.getElementById('gcAlert').innerHTML = gcNumFormat;
  } else {
    if (gcAmt < minAmt) {
      document.getElementById('gcAlert').className = 'formlabelalert';
      document.getElementById('gcAlert').innerHTML = gcMin10;
    } else if (gcAmt >= minAmt) {
      document.getElementById('gcAlert').className = 'displayNone';
    }
  }
}


/* Character count for Contact us textarea */
function counterUpdate(opt_countedTextBox, opt_countBody, opt_maxSize) {
  var countedTextBox = opt_countedTextBox ? opt_countedTextBox : "counttxt";
  var countBody = opt_countBody ? opt_countBody : "countBody";
  var maxSize = opt_maxSize ? opt_maxSize : 1024;

  var field = document.getElementById(countedTextBox);

  if (field && field.value.length >= maxSize) {
    field.value = field.value.substring(0, maxSize);
  }
  var txtField = document.getElementById(countBody);
  if (txtField) { 
    txtField.innerHTML = opt_maxSize - field.value.length;
  }
}


function toggleBestAvailable() {
  document.getElementById('chooseSeatingOptions').className = 'displayNone';
  document.getElementById('chooseBestAvailable').className = 'displayBlock';
}


function clearEnews() {
  var defaultMsg = 'Enter your email address';
  var fieldValue = document.getElementById('enewsSignUp').value;

  if (fieldValue == defaultMsg) {
    document.getElementById('enewsSignUp').value = '';
  }
}


/* Printable version functions */

function getPrintStyle(ssTitle) {
  if (!document.getElementsByTagName("link")) {
    return;
  }
  var links = document.getElementsByTagName("link");
  var count = 0;
  var stylesheetArray = new Array();
  for (var i = 0; i < links.length; i++) {
    type = links[i].getAttribute("type");
    rel = links[i].getAttribute("rel");
    title = links[i].getAttribute("title");

    if ((type == "text/css") && (rel == "alternate stylesheet") && (title == ssTitle)) {
      stylesheetArray[count] = links[i];
      count++;
    }
  }
  return stylesheetArray;
}
function setPrintStyle(ssTitle) {
  var stylesheets = getPrintStyle(ssTitle);
  for (var i = 0; i < stylesheets.length; i++) {
    stylesheets[i].disabled = false;
  }
  
//  window.print();
}
function closePrintStyle(ssTitle) {
  var stylesheets = getPrintStyle(ssTitle);
  for (var i = 0; i < stylesheets.length; i++) {
    stylesheets[i].disabled = true;
  }
}


function togglePrices(location) {
  var getLocationObj = document.getElementById('loc_' + location);
  var getTogglerObj = document.getElementById('loc_' + location + '_toggler');


  if (getLocationObj.style.display == 'none') {
    getTogglerObj.innerHTML = '[-] close';
    getLocationObj.style.display = 'block';
  } else {
    getTogglerObj.innerHTML = '[+] open';
    getLocationObj.style.display = 'none';
  }
}

function makeAnonymous() {
  var getAckObj = document.getElementById('RecogName');

  if (document.donateOnline.anonymous.checked) {
    getAckObj.value = document.donateOnline.anonymous.value
  } else {
    getAckObj.value = '';
  }
}

function submitLoginOnEnter(field, e) {
  var keyCode;

  if(window.event) {
    keyCode = window.event.keyCode;
  } else if(e) {
    keyCode = e.which;
  }

  //if the key was the enter key, perform the necessary function
  if(keyCode == 13) {
    field.form.submit();
  }
}

function tpopup($url, zyx, wvu) {
  window.open($url,'seatchart','');
}

function checkQuantity(btn, formId) {
  var parentId = btn.parentNode.parentNode.parentNode.parentNode.parentNode.getAttribute('id');
  var io = parentId.indexOf('_') + 1;
  parentId = parentId.substring(io);

  if(document.getElementById(formId).tessitura_quantity.selectedIndex == '0') {
    alert('Please select a quantity before continuing.');
    document.getElementById('btn_' + parentId).style.display = 'block';
    document.getElementById('btndis_' + parentId).style.display = 'none';
  } else {
    document.getElementById(formId).submit();
  }
}

var enlarge = {
  height: { to: 362 }, 
  width: { to: 260 }
};

var shrink = {
  height: { to: 133 }, 
  width: { to: 100 }
};

function togglePhotoHolder(objId) {
  var browserName = navigator.appName;
  var browserVer = parseFloat(navigator.appVersion);

  var divObj = document.getElementById('lg_div_' + objId);

  var enlargeDiv = new YAHOO.util.Anim('lg_div_' + objId, enlarge, 0.1);
  var enlargeImg = new YAHOO.util.Anim('lg_img_' + objId, enlarge, 0.1);
  var shrinkDiv = new YAHOO.util.Anim('lg_div_' + objId, shrink, 0.1);
  var shrinkImg = new YAHOO.util.Anim('lg_img_' + objId, shrink, 0.1);

  if (divObj.style.height == '133px') {
    enlargeDiv.animate();
    enlargeImg.animate();
  } else {
    shrinkDiv.animate();
    shrinkImg.animate();
  }
}