  Date.prototype.getWeek = function() {
    var determinedate = new Date();
    determinedate.setFullYear(this.getFullYear(), this.getMonth(), this.getDate());
    var D = determinedate.getDay();
    if(D == 0) D = 7;
    determinedate.setDate(determinedate.getDate() + (4 - D));
    var YN = determinedate.getFullYear();
    var ZBDoCY = Math.floor((determinedate.getTime() - new Date(YN, 0, 1, -6)) / 86400000);
    var WN = 1 + Math.floor(ZBDoCY / 7);
    return WN;
  }

  function showFlier(img){
    var flierDiv = document.createElement('div');
    flierDiv.id = "flierDiv";
    flierDiv.innerHTML = '<img id="flierDivImg" src="' + img + '" /><div>click anywhere to close</div>';
    document.body.appendChild( flierDiv );
    setFlierCenter();
    flierDiv.onclick = function(){ closeFlier(); };
  }
  var maxLoops = 0;
  function setFlierCenter(){
    maxLoops++;    
    if( document.getElementById('flierDivImg') && document.getElementById('flierDivImg').width > 1 ){
      var img = document.getElementById('flierDivImg');
      if( typeof(img.width) == 'number' ){
        img.style.marginLeft = img.width/2*-1 + 'px';
      }else{
        img.style.left = '40px';
      }
    }else{
      setTimeout( setFlierCenter, 20 );
      console.log('maxloops=', maxLoops);
    }      
  }
  function closeFlier(){
    if( document.getElementById('flierDiv') ){
      var flierDiv = document.getElementById('flierDiv');
      document.body.removeChild(flierDiv);
    }
  }

  function showVenues(){
    var venue = '';
    var venueDiv = document.getElementById('sf_karaoke_venue_list_div');
    var venueHTML  = '<table class="calendar"><thead><tr><th>flier</th><th>venue name</th><th>KJ</th><th>site</th><th>time</th><th>days</th><th>address</th></tr></thead><tbody>';
    for( var i=0; i<calns.venueShowList.length; ++i ){
      venue = calns.venueShowList[i];
      //map:[0'club name',1'times',2'kj',3'flier',4'site',5'facebook group',6'map',7'days',8'hood'],
      //0pics  1venue(8) name  2site  3time  4dates  5address
      venueHTML += i % 2 ? '<tr>' : '<tr class="altrow">';
      venueHTML += '<td>' + calns.venue[venue][3] + '</td><td>' + calns.venue[venue][0] + '<div class="smallFont">' + calns.venue[venue][8] + '</div>' + '</td><td>' + calns.venue[venue][2] + '</td><td>'  + calns.venue[venue][4] + '</td><td>'  + calns.venue[venue][1] + '</td><td><em>'  + calns.venue[venue][7] + '</em></td><td>'  + calns.venue[venue][6] + '</td></tr>';
    }
    venueHTML += '</tbody></table>';
    venueDiv.innerHTML = venueHTML;
  }
  
  function showWeek( kj, id ){
    id = typeof(id) == 'undefined' ? 'sf_karaoke_7day_calendar' : id;
    if( document.getElementById(id) ){
      var weekCal = document.getElementById(id);
      var now = new Date();
      var weekNumber = now.getWeek();
      var weekDay = now.getDay();
      var dayOffset = weekNumber % 2 ? weekDay + 7 : weekDay;
      var calDay = [], calEvent = [];
      var dayString = '';
      var weekCalHTML  = '<table class="calendar"><thead><tr><th>day</th><th>venues</th><th>time</th><th>KJ</th><th>flier</th><th>web</th><th>facebook</th></tr></thead><tbody>';
      var rowCount = 0, today = 'today';
      for( var i=0; i<7; ++i ){
        console.log('dayOffset=',dayOffset, ', i=', i);
        if( typeof(kj) == 'string' && calns[kj] ){
          calDay = calns[kj][i + dayOffset];
        }else{
          calDay = calns.calDays[i + dayOffset];
        } 
        console.log('calDay=',calDay)
        dayString = ' ' + (now.getMonth()+1) + '/' + (now.getDate());
        now.setDate(now.getDate() + 1);
        for( var j=0; j<calDay.length; ++j ){
          calEvent = calDay[j];
          if( calEvent[1] != '' ){
            weekCalHTML += rowCount++ % 2 ? '<tr class="'+today+'">' : '<tr class="altrow '+today+'">';
            weekCalHTML += '<th>' + calEvent[0] + '</th>';
            for( var l=0; l<6; ++l ){
              weekCalHTML += '<td>' + calns.venue[calEvent[1]][l] + '</td>';
            }
            weekCalHTML += '</tr>';
          }
        }
        today = '';
      }
      weekCalHTML += '</tbody></table>';
      weekCal.innerHTML = weekCalHTML;
    }
  }
  
  function hostingYears(){
    var today = new Date();
    document.getElementById('hostingYears').innerHTML = today.getFullYear() - 2001;
  }

  function showToday(){
    var days = {
      Sun: 'Sunday',
      Mon: 'Monday',
      Tue: 'Tuesday',
      Wed: 'Wednesday',
      Thu: 'Thursday',
      Fri: 'Friday',
      Sat: 'Saturday'      
    };
    var day = '';
    var now = new Date();
    var weekNumber = now.getWeek();
    var weekDay = now.getDay();
    var dayOffset = weekNumber % 2 ? weekDay : weekDay;
    var calDay = [], calEvent = [];
    var dayString = '';
    var weekCal = document.getElementById('sf_karaoke_today');
    var weekCalHTML  = '<div class="calendar"><div class="fl">Todays karaoke hot spot(s) in San Francisco:</div><div class="fr"><a href="http://kjpaul.com/7_day_karaoke_calendar.html">7 day karaoke calendar</a></div><div class="cb"></div></div><table class="calendar"><thead><tr><th>Today is</th><th>venues</th><th>time</th><th>KJ</th><th>flier</th><th>web</th><th>group</th></tr></thead><tbody>';
    var rowCount = 0, today = 'today';
    for( var i=0; i<1; ++i ){
      calDay = calns.calDays[i+dayOffset];
      dayString = ' ' + (now.getMonth()+1) + '/' + (now.getDate());
      now.setDate(now.getDate() + 1);

      for( var j=0; j<calDay.length; ++j ){
        calEvent = calDay[j];
        weekCalHTML += rowCount++ % 2 ? '<tr class="'+today+'">' : '<tr class="altrow '+today+'">';
        day = typeof(calEvent[0]) == 'string' && calEvent[0].length == 3 ? days[calEvent[0]] : '';
        weekCalHTML += '<th>' + day + '</th>';
        for( var l=0; l<6; ++l ){
          weekCalHTML += '<td>' + calns.venue[calEvent[1]][l] + '</td>';
        }
        weekCalHTML += '</tr>';
      }
      today = '';
    }
    weekCalHTML += '</tbody></table>';
    weekCal.innerHTML = weekCalHTML;
  }

  var maxloop = 0;
  function init_index(){
    if( document.getElementById('sf_karaoke_7day_calendar') ){
      showWeek();
      setTimeout( function(){ hostingYears(); }, 100 );
    }else if(maxloop<10){
      setTimeout( function(){ init_index(); }, 100 );
    }
    maxloop++;
  }
  function init_bars(){
    if( document.getElementById('sf_karaoke_venue_list_div') ){
      showVenues();
    }else if(maxloop<10){
      setTimeout( function(){ init_bars(); }, 100 );
    }
    maxloop++;
  }
