// JavaScript Document

var browser = navigator.userAgent.toLowerCase();
var browserIE = ( browser.indexOf("msie") != -1 );
var browserFirefox = ( browser.indexOf("firefox") != -1 );
if ( browserFirefox )
{
    document.write('<style type="text/css" media="print">'); 
    document.write('div#footer a { margin-left: -0.5em; padding-left: 0; }'); 
    document.write('b { margin-left: -0.5em; padding-left: 0; }</style>'); 
    document.write('</style>'); 
}

/*
 * --------------------------------------------------------------------------------
 */

function f_element( p_index, p_deliminator, p_string ) {
  /* 
   * JavaScript version of OpenVMS DCL F$ELEMENT lexical
   */
  var currIndex = p_string.indexOf(p_deliminator);
  var i = 0;
  var outChar = '';
  var outPoint = 0;
  var outString = p_string;
  var trackIndex = 0;

  if ( currIndex >= 0 ) {
      while ( ( trackIndex != p_index ) && ( currIndex != -1 ) ) {
        outPoint = ++currIndex;
        currIndex = p_string.indexOf(p_deliminator,outPoint);
        trackIndex++;
      } // end while ( ( trackIndex != p_index ) && ( currIndex != -1 ) )
      if ( trackIndex != p_index ) {
        outString = p_deliminator;
      } else {
        outString = '';
        for ( i=outPoint; i<p_string.length; i++ ) { 
          outChar = p_string.charAt(i);
          if ( outChar == p_deliminator ) {
            break;
          } else {
            outString = ( outString + outChar );
          } // end if ( outChar == p_deliminator )
        } // for ( i=outPoint; i<p_string.length; i++ )
      } // end if ( trackIndex != p_index )
    } else if ( p_index >= 1 )
      outString = p_deliminator;
    // end if ( currIndex >= 0 )
  
  return outString;
  } // end f_element function
  
/*
 * --------------------------------------------------------------------------------
 */

function replace(p_string,p_text,p_by) {
// Replaces p_text with p_by in p_string
// From:  http://tech.irt.org/articles/js037/
    var strLength = p_string.length, txtLength = p_text.length;
    if ((strLength == 0) || (txtLength == 0)) return p_string;

    var i = p_string.indexOf(p_text);
    if ((!i) && (p_text != p_string.substring(0,txtLength))) return p_string;
    if (i == -1) return p_string;

    var newstr = p_string.substring(0,i) + p_by;

    if (i+txtLength < strLength)
        newstr += replace(p_string.substring(i+txtLength,strLength),p_text,p_by);

    return newstr;
}  // end replace function

/*
 * --------------------------------------------------------------------------------
 * The following functions control the left column menu display
 * --------------------------------------------------------------------------------
 */

function displayOptionTD( pPageId, pOption, pColumn ) {
  tdClass = ""
  pageName = f_element( 0, '.', pPageId );
  pageType = '.'+f_element( 1, '.', pPageId );
  OptionName = f_element( 0, "<", pOption );
  if ( pageType == '..' )
     pageType = '.html';
  if ( pPageId == 'index' )
    pageFile = homePage 
  else 
    pageFile = ( pageName + pageType );
  /* pageFile = '#' */
  if ( PgID == pageName ) {
    aValue = 'class="URHere" title="You are here"'
	  tdClass = ' class="URHere"'
	}
  else
    aValue = ( 'href="' + pageFile + '" title="Link to the ' + OptionName + ' page"' );
  if ( pColumn != null )
     tdClass = ( tdClass + f_element((tdClass==""),"-","- ") + 'width="50%"' );
  if ( pColumn == null )
    document.write('<tr><td' + tdClass + '><a ' + aValue + '>' + pOption + '</a></td></tr>\n')
  else if ( pColumn == 1 )
    if ( pPageId == 'empty' )
      document.write('<tr><td></td>')
	else
      document.write('<tr><td' + tdClass + '><a ' + aValue + '>' + pOption + '</a></td>')
  else
    if ( pPageId == 'empty' )
      document.write('<td></td></tr>\n')
	else
      document.write('<td' + tdClass + '><a ' + aValue + '>' + pOption + '</a></td></tr>\n');
  return;
}

function displayOptionLI( p_pageId, p_item, p_subMenu ) {
  pageName = f_element( 0, '.', p_pageId );
  pageType = '.'+f_element( 1, '.', p_pageId );
  itemName = f_element( 0, '<', p_item );
  if ( pageType == '..' )
     pageType = '.html';
  if ( p_pageId == 'index' )
    pageFile = homePage 
  else 
    pageFile = ( pageName + pageType );

  var aOpen = ( '<a href="' + pageFile + '" title="Link to the ' + itemName + ' page">'  );
  var liOpen = '<li>';
  var aClose = '</a>'
  
  if ( PgID == pageName )
    aOpen = '<a class="urhere" title="You are here">';
  if ( p_pageId == 'index' )
    liOpen = '<li class="leftItem">';
  if ( p_pageId == '' )
    liOpen = ( '\t' + liOpen )
  if ( !p_subMenu )
    aClose = ( aClose + '</li>' );

  document.write(liOpen + aOpen + p_item + aClose + '\n');

  return;
}

function displayOption( pMenuType, pPageId, pOption, pColumn ) {
  if ( pMenuType == "table" )
    displayOptionTD( pPageId, pOption, pColumn )
  else
    displayOptionLI( pPageId, pOption );
  }

function displayMenu(pType) {
  menuType = ( pType != "list" ) ? "table" : pType;
  optionSeperator = "<li>&nbsp;|&nbsp;</li>\n";
  
  if ( pType == "list" ) {
    document.write('<table border="0" align="center" cellspacing="0" cellpadding="0"><tr><td>\n');
    document.write('<ul id="nav">\n');
  } else {
    document.write('<table id="menu" cellpadding="0" cellspacing="1" align="center" width="100%" border="0">\n');
    document.write('<tbody>\n');
  }
  
  displayOption( menuType, "index", "Home<br />&nbsp;"  );
  displayOption( menuType, "kidconcerts", "Children's Concerts"  );
  displayOption( menuType, "workshops", "Teacher Workshops" );
  displayOption( menuType, "recordings", "Mr.&nbsp;Nick CD's" );
  displayOption( menuType, "biography", "About Mr.&nbsp;Nick" );
  displayOption( menuType, "sendmsgform.php?id=1", "Contact<br />&nbsp;" );
  
  if ( pType == "list" ) {
    document.write('</ul>\n');
    document.write('</table>\n');
  } else {
    document.write('</tbody>\n');
    document.write ('</table>\n');
  }
  return;
}

/*
 * --------------------------------------------------------------------------------
 */

function getPassedValue(p_id) {
  /* 
   * +++
   *
   * Function Name: getPassedValue
   *        Author: Alvin Orzechowski MyFirstWebPage.net
   * Creation Date: 15-Aug-2004
   *      Abstract: To return the passed value or the specified portion of it
   *   Description: 
   *    Parameters: p_id - Value found to the left of an equal sign.  If this is
   *                    found, this function will return the value found to the
   *                    right of the equal sign.  If this parameter is not 
   *                    provided, this function will return the whole value 
   *                    passed.
   *       History: 
   * 
   * ---
   */

  // [ getPassedValue Constants ]
  var passedValue = unescape(location.search.substring(1));

  // [ getPassedValue Variables ]
  var allSubValues = location.search.substring(1,location.search.length).split('&');
  var i;
  var idValue = passedValue;
  var subValue;

  // [ getPassedValue Main Line ]
  for (i=0; i<allSubValues.length; i++) {
    subValue = allSubValues[i].split('=');
    if ( subValue[0] == p_id ) {
      idValue = unescape(subValue[1]);
      i = allSubValues.length;
    } // end if ( subValue[0] == p_id )  
  } // end for (i=0; i<allSubValues.length; i++)

  // [ getPassedValue End of Job ]
  return idValue;

} // end getPassedValue function

/*
 * --------------------------------------------------------------------------------
 */

function include_rpc(script_filename, p1) {
  /* 
   * +++
   *
   * Function Name: include_rpc
   *        Author: Stoyan Stefanov, phpied.com (original)
   *                Alvin Orzechowski, MyFirstWebPage.net (modifications)
   * Creation Date: 20-Mar-2007
   *      Abstract: To call and execute a server script
   *   Description: 
   *    Parameters: script_filename - the name of the script to be called 
   *                                  (required)
   *                p1 - value to be passed (optional)
   *       History: 
   * 
   * ---
   */

  // [ include_rpc Constants ]
  var html_doc = document.getElementsByTagName('head').item(0);
  var js = document.createElement('script');
  
  // [ include_rpc Main Line ]
  if ( p1 != null )
      script_filename += ( '?' + p1 );
  js.setAttribute('language', 'javascript');
  js.setAttribute('type', 'text/javascript');
  js.setAttribute('src', script_filename);
  html_doc.appendChild(js);
  return;
} // end include_rpc function

/*
 * --------------------------------------------------------------------------------
 * addLoadEvent will execute a JavaScript command/function when a page is
 * brought up in a browser.  Ordinarily only one such command/function can be
 * performed at that time, but addLoadEvent overrides that limitation.
 * --------------------------------------------------------------------------------
 */

function addLoadEvent(func) {
// Multiple onload function created by: Simon Willison
// http://simon.incutio.com/archive/2004/05/26/addLoadEvent
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    } else {
        window.onload = function() {
            if (oldonload) {
                oldonload();
            }
            func();
        }
    }
}

/*
 * --------------------------------------------------------------------------------
 */

/*
 * --------------------------------------------------------------------------------
 * The following functions are used to change a class when a page loads
 * --------------------------------------------------------------------------------
 */

function getElementsByClass(searchClass,tag) {
  // Source: http://www.dustindiaz.com/getelementsbyclass/
	var classElements = new Array();
	if ( tag == null )
		tag = '*';
	var els = document.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp('(^|\\\\s)'+searchClass+'(\\\\s|$)');
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
  }

/*
 * --------------------------------------------------------------------------------
 */

function takeYear(theDate) {
  // Source: http://www.quirksmode.org/js/introdate.html
	x = theDate.getYear();
	var y = x % 100;
	y += (y < 38) ? 2000 : 1900;
	return y;
  }

/*
 * --------------------------------------------------------------------------------
 */

function today_yyyymmdd() {
  /* 
   * ++
   * Name: today_yyyymmdd
   * Author: Alvin Orzechowski, MyFirstWebPage.net
   * Creation Date: 25-Jul-2008
   * Abstract: To return today's date in YYYYMMDD form.
   * Description: 
   * Parameters: None
   * History:
   * --
   */
  // [ today_yyyymmdd Constants ]
  var today = new Date();

  // [ today_yyyymmdd Variables ]
  var dd = ( today.getDate() );
  var mm = ( today.getMonth() + 1 );
  var yyyy = ( takeYear(today) + '' );
  var yyyymmdd = '';

  // [ today_yyyymmdd Main Line ]
  if ( mm <= 9 )
    mm = ( '0' +  mm.toString() );

  if ( dd <= 9 )
    dd = ( '0' +  dd.toString() );

  yyyymmdd = ( yyyy + mm + dd );
  // alert('Today: '+yyyymmdd);

  return yyyymmdd;
  } // end today_yyyymmdd function

/*
 * --------------------------------------------------------------------------------
 */

function modifyEventClassClass() {
  /* 
   * ++
   * Name: modifyEventClassClass
   * Author: Alvin Orzechowski, MyFirstWebPage.net
   * Creation Date: 25-Jul-2008
   * Abstract: To change the eventClass class from any HTML div tag whose id
   *           attribute is less than today's yyyymmdd value.
   * Description: 
   * Parameters: None
   * History:
   *           - 
   * --
   */
  // [ modifyEventClassClass Constants ]

  var allDates = getElementsByClass('eventClass', 'div');
  var allOnlyCurrent = getElementsByClass('onlyCurrent');
  var currentDate = today_yyyymmdd();
  var docBody = document.getElementsByTagName('body');
  var emptySchedule = document.getElementById('emptySchedule');
  var explainEventMark = document.getElementById('explainEventMark');
  var goBack = document.getElementById('goBack');
  var goTopSide = document.getElementById('goTopSide');
  var textArea = document.getElementById('textArea');
  var mainArea = document.getElementById('main');
  var listExplanation = document.getElementById('listExplanation');
  var displayAllEvents = ( getPassedValue('alldates') == 'show' );
  var displayNoEvents = ( getPassedValue('alldates') == 'hide' );
  var displayPreviousEvents = ( getPassedValue('showdates') == 'previous' );
  var displayThisDate = false;
  // var allH3Tags = document.getElementById('headerSection').getElementsByTagName('h3');

  // [ modifyEventClassClass Variables ]
  var datesDisplayed = 0;

  // [ modifyEventClassClass Main Line ]

    for (i=0; i<allDates.length; i++) {
	  displayThisDate = !displayNoEvents;
	  if ( displayThisDate && !displayAllEvents ) {
	    if ( !displayPreviousEvents && ( allDates[i].id < currentDate ) )
	      displayThisDate = false;
	    if ( displayPreviousEvents && ( allDates[i].id >= currentDate ) ) 
	      displayThisDate = false;
      }
	  if ( displayThisDate ) {
	    datesDisplayed++;
      } else
	    allDates[i].style.display = 'none';
    } // end for (i=0; i<allDates.length; i++)
    
  // alert('datesDisplayed: '+datesDisplayed);
    
  if ( ( datesDisplayed == 0 ) || ( displayPreviousEvents ) )
    if ( explainEventMark != null )
      explainEventMark.style.display = 'none';
  
  if ( ( datesDisplayed == 0 ) && ( !displayPreviousEvents ) ) {
    emptySchedule.style.display = 'block';
    // textArea.className = 'defaultHeight';
    // explainEventMark.style.display = 'none';
    } else {
	    if ( displayPreviousEvents ) {
		    /*
		    for ( i=0; i<allH3Tags.length; i++ ) {
			    if ( ( allH3Tags[i].innerHTML == "Upcoming Performances" ) || ( allH3Tags[i].innerHTML == "Performance Schedule" ) ) {
				    allH3Tags[i].innerHTML = 'Previous Performances';
				    break;
			    }
		    } // end for ( i=0; i<allH3Tags.length; i++ )
		    */
        for ( i=0; i<allOnlyCurrent.length; i++ )
          allOnlyCurrent[i].style.display = 'none';
		    docBody[0].style.backgroundColor = '#999999';
		    mainArea.style.border = '1px solid #000000';
		    if ( listExplanation != null )
                listExplanation.style.display = 'block';
		    if ( goBack != null )
                goBack.style.display = 'block';
	    }
     }
/*      
   if ( datesDisplayed >= 5 )
     goTopSide.style.display = 'block';
*/  
  return; 
  } // end modifyEventClassClass function
  
/*
 * --------------------------------------------------------------------------------
 */
 
/*
 * --------------------------------------------------------------------------------
 * MyFirstWebPage.net specific functions
 * Leave this section at the end
 * --------------------------------------------------------------------------------
 */

function get_mfwpnLogo(pTM) {
  var mfwpnLogo = '<span class="MFWPNlogo">' +
  '<span style="color: #000000;">My</span>' +
  '<span style="color: #ff0000;">First</span>' +
  '<span style="color: #00ff00;">Web</span>' +
  '<span style="color: #0000ff;">Page</span>' +
  '<span style="color: #000000;">.net';

  if ( pTM == 'tm' )
    mfwpnLogo = ( mfwpnLogo + '&#153;' );
  mfwpnLogo = ( mfwpnLogo + '</span></span>' );

return mfwpnLogo;
} // end get_mfwpnLogo function